nx 22.5.2 → 22.5.4

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 (68) hide show
  1. package/.eslintrc.json +3 -1
  2. package/bin/nx.js +6 -0
  3. package/migrations.json +6 -0
  4. package/package.json +12 -12
  5. package/src/ai/set-up-ai-agents/set-up-ai-agents.d.ts.map +1 -1
  6. package/src/ai/set-up-ai-agents/set-up-ai-agents.js +3 -0
  7. package/src/command-line/import/command-object.d.ts.map +1 -1
  8. package/src/command-line/import/command-object.js +1 -1
  9. package/src/command-line/list/command-object.d.ts.map +1 -1
  10. package/src/command-line/list/command-object.js +6 -1
  11. package/src/command-line/list/list.d.ts +2 -0
  12. package/src/command-line/list/list.d.ts.map +1 -1
  13. package/src/command-line/list/list.js +5 -1
  14. package/src/command-line/nx-cloud/apply-locally/apply-locally.d.ts +5 -0
  15. package/src/command-line/nx-cloud/apply-locally/apply-locally.d.ts.map +1 -0
  16. package/src/command-line/nx-cloud/apply-locally/apply-locally.js +13 -0
  17. package/src/command-line/nx-cloud/apply-locally/command-object.d.ts +3 -0
  18. package/src/command-line/nx-cloud/apply-locally/command-object.d.ts.map +1 -0
  19. package/src/command-line/nx-cloud/apply-locally/command-object.js +15 -0
  20. package/src/command-line/nx-commands.d.ts.map +1 -1
  21. package/src/command-line/nx-commands.js +9 -7
  22. package/src/command-line/release/config/config.d.ts.map +1 -1
  23. package/src/command-line/release/config/config.js +11 -2
  24. package/src/command-line/release/utils/remote-release-clients/extract-repo-slug.d.ts +10 -0
  25. package/src/command-line/release/utils/remote-release-clients/extract-repo-slug.d.ts.map +1 -0
  26. package/src/command-line/release/utils/remote-release-clients/extract-repo-slug.js +61 -0
  27. package/src/command-line/release/utils/remote-release-clients/github.d.ts.map +1 -1
  28. package/src/command-line/release/utils/remote-release-clients/github.js +8 -13
  29. package/src/command-line/release/utils/remote-release-clients/gitlab.d.ts.map +1 -1
  30. package/src/command-line/release/utils/remote-release-clients/gitlab.js +4 -9
  31. package/src/command-line/release/utils/shared.d.ts +1 -1
  32. package/src/command-line/release/utils/shared.d.ts.map +1 -1
  33. package/src/command-line/release/utils/shared.js +23 -15
  34. package/src/command-line/watch/watch.js +4 -4
  35. package/src/core/graph/main.js +1 -1
  36. package/src/daemon/server/project-graph-incremental-recomputation.d.ts.map +1 -1
  37. package/src/daemon/server/project-graph-incremental-recomputation.js +13 -5
  38. package/src/migrations/update-22-7-0/add-polygraph-to-git-ignore.d.ts +3 -0
  39. package/src/migrations/update-22-7-0/add-polygraph-to-git-ignore.d.ts.map +1 -0
  40. package/src/migrations/update-22-7-0/add-polygraph-to-git-ignore.js +14 -0
  41. package/src/native/nx.wasm32-wasi.wasm +0 -0
  42. package/src/plugins/js/lock-file/project-graph-pruning.d.ts.map +1 -1
  43. package/src/plugins/js/lock-file/project-graph-pruning.js +3 -1
  44. package/src/plugins/js/project-graph/build-dependencies/target-project-locator.d.ts.map +1 -1
  45. package/src/plugins/js/project-graph/build-dependencies/target-project-locator.js +6 -3
  46. package/src/project-graph/nx-deps-cache.d.ts +10 -0
  47. package/src/project-graph/nx-deps-cache.d.ts.map +1 -1
  48. package/src/project-graph/nx-deps-cache.js +36 -0
  49. package/src/project-graph/plugins/isolation/isolated-plugin.d.ts.map +1 -1
  50. package/src/project-graph/plugins/isolation/isolated-plugin.js +42 -35
  51. package/src/project-graph/project-graph.d.ts.map +1 -1
  52. package/src/project-graph/project-graph.js +23 -4
  53. package/src/project-graph/utils/project-configuration-utils.js +1 -1
  54. package/src/tasks-runner/running-tasks/batch-process.d.ts +0 -3
  55. package/src/tasks-runner/running-tasks/batch-process.d.ts.map +1 -1
  56. package/src/tasks-runner/running-tasks/batch-process.js +0 -7
  57. package/src/utils/ignore.d.ts +5 -0
  58. package/src/utils/ignore.d.ts.map +1 -1
  59. package/src/utils/ignore.js +16 -0
  60. package/src/utils/package-manager.d.ts.map +1 -1
  61. package/src/utils/package-manager.js +22 -1
  62. package/src/utils/plugins/output.d.ts +29 -1
  63. package/src/utils/plugins/output.d.ts.map +1 -1
  64. package/src/utils/plugins/output.js +90 -1
  65. package/src/utils/plugins/plugin-capabilities.d.ts +1 -0
  66. package/src/utils/plugins/plugin-capabilities.d.ts.map +1 -1
  67. package/src/utils/plugins/plugin-capabilities.js +2 -0
  68. package/src/native/index.d.ts +0 -553
@@ -1 +1 @@
1
- {"version":3,"file":"project-graph-incremental-recomputation.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/daemon/server/project-graph-incremental-recomputation.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,QAAQ,EACR,OAAO,EACP,YAAY,EAEb,MAAM,4BAA4B,CAAC;AAKpC,OAAO,EACL,YAAY,EAIb,MAAM,mCAAmC,CAAC;AAe3C,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAEL,uBAAuB,EACxB,MAAM,uDAAuD,CAAC;AAS/D,UAAU,sBAAsB;IAC9B,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,mBAAmB,EAAE,YAAY,GAAG,IAAI,CAAC;IACzC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,iBAAiB,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IACrC,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,UAAU,EAAE,uBAAuB,GAAG,IAAI,CAAC;IAC3C,cAAc,EAAE,yBAAyB,GAAG,IAAI,CAAC;CAClD;AAGD,eAAO,IAAI,gBAAgB,EACvB;IACE,OAAO,EAAE,OAAO,CAAC;IACjB,iBAAiB,EAAE,QAAQ,EAAE,CAAC;IAC9B,cAAc,EAAE,yBAAyB,CAAC;CAC3C,GACD,SAAS,CAAC;AACd,eAAO,IAAI,0BAA0B,EAAE,YAAY,GAAG,SAAS,CAAC;AAChE,eAAO,IAAI,mBAAmB,EAAE,YAAY,GAAG,SAAS,CAAC;AAoBzD,wBAAsB,sCAAsC,IAAI,OAAO,CAAC,sBAAsB,CAAC,CAgF9F;AAED,wBAAgB,yBAAyB,CACvC,YAAY,EAAE,MAAM,EAAE,EACtB,YAAY,EAAE,MAAM,EAAE,EACtB,YAAY,EAAE,MAAM,EAAE,QAiDvB;AAED,wBAAgB,yCAAyC,CACvD,QAAQ,EAAE,CACR,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,uBAAuB,EACnC,KAAK,EAAE,KAAK,GAAG,IAAI,KAChB,IAAI,QAGV"}
1
+ {"version":3,"file":"project-graph-incremental-recomputation.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/daemon/server/project-graph-incremental-recomputation.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,QAAQ,EACR,OAAO,EACP,YAAY,EAEb,MAAM,4BAA4B,CAAC;AAKpC,OAAO,EACL,YAAY,EAKb,MAAM,mCAAmC,CAAC;AAe3C,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAEL,uBAAuB,EACxB,MAAM,uDAAuD,CAAC;AAS/D,UAAU,sBAAsB;IAC9B,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,mBAAmB,EAAE,YAAY,GAAG,IAAI,CAAC;IACzC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,iBAAiB,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IACrC,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,UAAU,EAAE,uBAAuB,GAAG,IAAI,CAAC;IAC3C,cAAc,EAAE,yBAAyB,GAAG,IAAI,CAAC;CAClD;AAGD,eAAO,IAAI,gBAAgB,EACvB;IACE,OAAO,EAAE,OAAO,CAAC;IACjB,iBAAiB,EAAE,QAAQ,EAAE,CAAC;IAC9B,cAAc,EAAE,yBAAyB,CAAC;CAC3C,GACD,SAAS,CAAC;AACd,eAAO,IAAI,0BAA0B,EAAE,YAAY,GAAG,SAAS,CAAC;AAChE,eAAO,IAAI,mBAAmB,EAAE,YAAY,GAAG,SAAS,CAAC;AAoBzD,wBAAsB,sCAAsC,IAAI,OAAO,CAAC,sBAAsB,CAAC,CAyF9F;AAED,wBAAgB,yBAAyB,CACvC,YAAY,EAAE,MAAM,EAAE,EACtB,YAAY,EAAE,MAAM,EAAE,EACtB,YAAY,EAAE,MAAM,EAAE,QAiDvB;AAED,wBAAgB,yCAAyC,CACvD,QAAQ,EAAE,CACR,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,uBAAuB,EACnC,KAAK,EAAE,KAAK,GAAG,IAAI,KAChB,IAAI,QAGV"}
@@ -45,6 +45,7 @@ async function getCachedSerializedProjectGraphPromise() {
45
45
  waitPeriod = 100;
46
46
  await resetInternalStateIfNxDepsMissing();
47
47
  const plugins = await (0, get_plugins_1.getPlugins)();
48
+ const previousPromise = cachedSerializedProjectGraphPromise;
48
49
  if (collectedUpdatedFiles.size == 0 && collectedDeletedFiles.size == 0) {
49
50
  if (!cachedSerializedProjectGraphPromise) {
50
51
  cachedSerializedProjectGraphPromise =
@@ -60,6 +61,7 @@ async function getCachedSerializedProjectGraphPromise() {
60
61
  cachedSerializedProjectGraphPromise =
61
62
  processFilesAndCreateAndSerializeProjectGraph(plugins);
62
63
  }
64
+ const graphWasRecomputed = cachedSerializedProjectGraphPromise !== previousPromise;
63
65
  const result = await cachedSerializedProjectGraphPromise;
64
66
  if (wasScheduled) {
65
67
  notifyProjectGraphRecomputationListeners(result.projectGraph, result.sourceMaps, result.error);
@@ -69,14 +71,20 @@ async function getCachedSerializedProjectGraphPromise() {
69
71
  ? result.error.errors
70
72
  : [result.error]
71
73
  : [];
72
- // Always write the daemon's current graph to disk to ensure disk cache
73
- // stays in sync with the daemon's in-memory cache. This prevents issues
74
- // where a non-daemon process writes a stale/errored cache that never
75
- // gets overwritten by the daemon's valid graph.
74
+ // Write the daemon's current graph to disk to ensure disk cache stays
75
+ // in sync with the daemon's in-memory cache. This prevents issues where
76
+ // a non-daemon process writes a stale/errored cache that never gets
77
+ // overwritten by the daemon's valid graph.
78
+ //
79
+ // When the graph was just recomputed, always write so the new graph is
80
+ // persisted. When serving the same graph from memory, use
81
+ // writeCacheIfStale to skip the write unless an external process has
82
+ // modified the file since this process last wrote it.
76
83
  if (result.projectGraph &&
77
84
  result.projectFileMapCache &&
78
85
  result.sourceMaps) {
79
- (0, nx_deps_cache_1.writeCache)(result.projectFileMapCache, result.projectGraph, result.sourceMaps, errors);
86
+ const writeFn = graphWasRecomputed ? nx_deps_cache_1.writeCache : nx_deps_cache_1.writeCacheIfStale;
87
+ writeFn(result.projectFileMapCache, result.projectGraph, result.sourceMaps, errors);
80
88
  }
81
89
  return result;
82
90
  }
@@ -0,0 +1,3 @@
1
+ import { Tree } from '../../generators/tree';
2
+ export default function addPolygraphToGitIgnore(tree: Tree): void;
3
+ //# sourceMappingURL=add-polygraph-to-git-ignore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-polygraph-to-git-ignore.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/migrations/update-22-7-0/add-polygraph-to-git-ignore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAG7C,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAAC,IAAI,EAAE,IAAI,QASzD"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = addPolygraphToGitIgnore;
4
+ const ignore_1 = require("../../utils/ignore");
5
+ function addPolygraphToGitIgnore(tree) {
6
+ if (!tree.exists('.gitignore')) {
7
+ return;
8
+ }
9
+ // Lerna users that don't use nx.json may not expect .nx directory changes
10
+ if (tree.exists('lerna.json') && !tree.exists('nx.json')) {
11
+ return;
12
+ }
13
+ (0, ignore_1.addEntryToGitIgnore)(tree, '.gitignore', '.nx/polygraph');
14
+ }
Binary file
@@ -1 +1 @@
1
- {"version":3,"file":"project-graph-pruning.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/plugins/js/lock-file/project-graph-pruning.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EACZ,wBAAwB,EACxB,uBAAuB,EACxB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AAEnF,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAI1D;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,YAAY,EACnB,iBAAiB,EAAE,WAAW,EAC9B,iBAAiB,GAAE,MAAsB,GACxC,YAAY,CA2Bd;AA0ED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,YAAY,EACnB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,4BAsBpB;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,YAAY,EACnB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACvC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAC,EACvD,OAAO,EAAE,mBAAmB,QAgB7B;AA+BD,wBAAgB,YAAY,CAC1B,KAAK,EAAE,YAAY,EACnB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACvC,OAAO,EAAE,mBAAmB,QAiD7B"}
1
+ {"version":3,"file":"project-graph-pruning.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/plugins/js/lock-file/project-graph-pruning.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EACZ,wBAAwB,EACxB,uBAAuB,EACxB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AAEnF,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAI1D;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,YAAY,EACnB,iBAAiB,EAAE,WAAW,EAC9B,iBAAiB,GAAE,MAAsB,GACxC,YAAY,CA2Bd;AA0ED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,YAAY,EACnB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,4BAsBpB;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,YAAY,EACnB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACvC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAC,EACvD,OAAO,EAAE,mBAAmB,QAgB7B;AA+BD,wBAAgB,YAAY,CAC1B,KAAK,EAAE,YAAY,EACnB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACvC,OAAO,EAAE,mBAAmB,QAmD7B"}
@@ -156,7 +156,9 @@ function rehoistNodes(graph, packageJsonDeps, builder) {
156
156
  closest = node;
157
157
  }
158
158
  });
159
- switchNodeToHoisted(closest, builder, invBuilder);
159
+ if (closest) {
160
+ switchNodeToHoisted(closest, builder, invBuilder);
161
+ }
160
162
  }
161
163
  });
162
164
  }
@@ -1 +1 @@
1
- {"version":3,"file":"target-project-locator.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/nx/src/plugins/js/project-graph/build-dependencies/target-project-locator.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,wBAAwB,EACxB,uBAAuB,EACxB,MAAM,kCAAkC,CAAC;AAO1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAYlE;;;;GAIG;AACH,KAAK,kBAAkB,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;AACrD,KAAK,0BAA0B,GAAG,GAAG,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC,CAAC;AAElE,KAAK,WAAW,GAAG;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAcF,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAGjE;AAED,qBAAa,oBAAoB;IAc7B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAI9B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,0BAA0B;IAnB7C,OAAO,CAAC,mBAAmB,CAAyC;IACpE,OAAO,CAAC,WAAW,CAAkD;IACrE,OAAO,CAAC,QAAQ,CAA0B;IAC1C,OAAO,CAAC,KAAK,CAAgD;IAC7D,OAAO,CAAC,kBAAkB,CAA6B;IACvD,OAAO,CAAC,yBAAyB,CAAoC;IACrE,OAAO,CAAC,gBAAgB,CAItB;gBAGiB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,EAC9C,aAAa,GAAE,MAAM,CACpC,MAAM,EACN,wBAAwB,CACpB,EACW,kBAAkB,GAAE,kBAA8C,EAClE,0BAA0B,GAAE,0BAA8D;IA8B7G;;;;;;OAMG;IACH,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAsEnE;;;;;;OAMG;IACH,wBAAwB,CACtB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GACnB,MAAM,GAAG,IAAI;IAoEhB;;;;OAIG;IACH,SAAS,CAAC,oBAAoB,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS;IAmB7D,iBAAiB,CACf,UAAU,EAAE,MAAM,GACjB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,SAAS;IA6B/D,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAehE,iCAAiC,CAC/B,eAAe,EAAE,MAAM,EACvB,GAAG,EAAE,MAAM,EACX,cAAc,EAAE,MAAM,GACrB,MAAM,GAAG,IAAI;IAgDhB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,UAAU;IAuBlB,OAAO,CAAC,2BAA2B;IAqDnC,OAAO,CAAC,wBAAwB;IAYhC,OAAO,CAAC,2BAA2B;IAsBnC,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,eAAe;IAkBvB,OAAO,CAAC,wBAAwB;IAKhC;;;;;;;;;OASG;IACH,OAAO,CAAC,eAAe;CA0DxB"}
1
+ {"version":3,"file":"target-project-locator.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/nx/src/plugins/js/project-graph/build-dependencies/target-project-locator.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,wBAAwB,EACxB,uBAAuB,EACxB,MAAM,kCAAkC,CAAC;AAO1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAYlE;;;;GAIG;AACH,KAAK,kBAAkB,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;AACrD,KAAK,0BAA0B,GAAG,GAAG,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC,CAAC;AAElE,KAAK,WAAW,GAAG;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAcF,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAGjE;AAED,qBAAa,oBAAoB;IAc7B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAI9B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,0BAA0B;IAnB7C,OAAO,CAAC,mBAAmB,CAAyC;IACpE,OAAO,CAAC,WAAW,CAAkD;IACrE,OAAO,CAAC,QAAQ,CAA0B;IAC1C,OAAO,CAAC,KAAK,CAAgD;IAC7D,OAAO,CAAC,kBAAkB,CAA6B;IACvD,OAAO,CAAC,yBAAyB,CAAoC;IACrE,OAAO,CAAC,gBAAgB,CAItB;gBAGiB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,EAC9C,aAAa,GAAE,MAAM,CACpC,MAAM,EACN,wBAAwB,CACpB,EACW,kBAAkB,GAAE,kBAA8C,EAClE,0BAA0B,GAAE,0BAA8D;IA8B7G;;;;;;OAMG;IACH,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IA2EnE;;;;;;OAMG;IACH,wBAAwB,CACtB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GACnB,MAAM,GAAG,IAAI;IAoEhB;;;;OAIG;IACH,SAAS,CAAC,oBAAoB,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS;IAmB7D,iBAAiB,CACf,UAAU,EAAE,MAAM,GACjB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,SAAS;IA6B/D,6BAA6B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAehE,iCAAiC,CAC/B,eAAe,EAAE,MAAM,EACvB,GAAG,EAAE,MAAM,EACX,cAAc,EAAE,MAAM,GACrB,MAAM,GAAG,IAAI;IAgDhB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,UAAU;IAuBlB,OAAO,CAAC,2BAA2B;IAqDnC,OAAO,CAAC,wBAAwB;IAYhC,OAAO,CAAC,2BAA2B;IAsBnC,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,eAAe;IAkBvB,OAAO,CAAC,wBAAwB;IAKhC;;;;;;;;;OASG;IACH,OAAO,CAAC,eAAe;CA0DxB"}
@@ -83,7 +83,6 @@ class TargetProjectLocator {
83
83
  }
84
84
  }
85
85
  if (isBuiltinModuleImport(importExpr)) {
86
- this.npmResolutionCache.set(importExpr, null);
87
86
  return null;
88
87
  }
89
88
  // try to find npm package before using expensive typescript resolution
@@ -110,8 +109,12 @@ class TargetProjectLocator {
110
109
  if (localProject) {
111
110
  return localProject;
112
111
  }
113
- // nothing found, cache for later
114
- this.npmResolutionCache.set(importExpr, null);
112
+ // nothing found, cache the negative result with the scoped key
113
+ const packageName = (0, get_package_name_from_import_path_1.getPackageNameFromImportPath)(importExpr);
114
+ const dirPath = (0, node_path_1.dirname)(filePath.startsWith(workspace_root_1.workspaceRoot)
115
+ ? filePath.replace(workspace_root_1.workspaceRoot, '')
116
+ : filePath);
117
+ this.npmResolutionCache.set(`${packageName}__${dirPath}`, null);
115
118
  return null;
116
119
  }
117
120
  /**
@@ -27,6 +27,16 @@ export declare function createProjectFileMapCache(nxJson: NxJsonConfiguration<'*
27
27
  };
28
28
  }, externalNodesHash: string): FileMapCache;
29
29
  export declare function writeCache(cache: FileMapCache, projectGraph: ProjectGraph, sourceMaps: ConfigurationSourceMaps, errors: ProjectGraphErrorTypes[]): void;
30
+ /**
31
+ * Writes the cache only if the on-disk cache file has been modified since
32
+ * this process last wrote it (i.e. an external process overwrote it), or
33
+ * if this process has never written the cache.
34
+ *
35
+ * Use this instead of writeCache() on hot paths where the same graph may
36
+ * be served multiple times without changing (e.g. the daemon responding
37
+ * to repeated client requests).
38
+ */
39
+ export declare function writeCacheIfStale(cache: FileMapCache, projectGraph: ProjectGraph, sourceMaps: ConfigurationSourceMaps, errors: ProjectGraphErrorTypes[]): void;
30
40
  export declare function shouldRecomputeWholeGraph(cache: FileMapCache, packageJsonDeps: Record<string, string>, projects: Record<string, ProjectConfiguration>, nxJson: NxJsonConfiguration, tsConfig: {
31
41
  compilerOptions: {
32
42
  paths: {
@@ -1 +1 @@
1
- {"version":3,"file":"nx-deps-cache.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/project-graph/nx-deps-cache.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EACV,QAAQ,EACR,OAAO,EAEP,YAAY,EACb,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAS7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAEL,sBAAsB,EAEvB,MAAM,eAAe,CAAC;AAIvB,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAClC,aAAa,EAAE,UAAU,EAAE,CAAC;IAC5B,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,eAAO,MAAM,cAAc,QAG1B,CAAC;AACF,eAAO,MAAM,SAAS,QAAgD,CAAC;AAEvE,eAAO,MAAM,YAAY,QAAmD,CAAC;AAE7E,wBAAgB,oBAAoB,IAAI,IAAI,CAoB3C;AAED,wBAAgB,gBAAgB,IAAI,IAAI,GAAG,YAAY,CAmBtD;AAED,wBAAgB,qBAAqB,CACnC,iBAAiB,CAAC,EAAE,MAAM,GACzB,IAAI,GAAG,YAAY,CA8DrB;AAED,wBAAgB,mBAAmB,IAAI,IAAI,GAAG,uBAAuB,CAuBpE;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,mBAAmB,CAAC,GAAG,GAAG,MAAM,EAAE,CAAC,EAC3C,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACvC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE;IAAE,eAAe,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE;YAAE,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;SAAE,CAAA;KAAE,CAAA;CAAE,EAChE,iBAAiB,EAAE,MAAM,gBAc1B;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,YAAY,EACnB,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,uBAAuB,EACnC,MAAM,EAAE,sBAAsB,EAAE,GAC/B,IAAI,CA+DN;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,YAAY,EACnB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACvC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,EAC9C,MAAM,EAAE,mBAAmB,EAC3B,QAAQ,EAAE;IAAE,eAAe,EAAE;QAAE,KAAK,EAAE;YAAE,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;SAAE,CAAA;KAAE,CAAA;CAAE,EAC9D,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAoDT;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC1C,cAAc,EAAE;QAAE,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;KAAE,CAAC;CACjE,CAAC;AAOF,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,OAAO,EAChB,CAAC,EAAE,YAAY,GACd;IACD,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,cAAc,CAAC;CAChC,CAkCA;AAqDD,KAAK,UAAU,GAAG;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC"}
1
+ {"version":3,"file":"nx-deps-cache.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/project-graph/nx-deps-cache.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ exports.readProjectGraphCache = readProjectGraphCache;
7
7
  exports.readSourceMapsCache = readSourceMapsCache;
8
8
  exports.createProjectFileMapCache = createProjectFileMapCache;
9
9
  exports.writeCache = writeCache;
10
+ exports.writeCacheIfStale = writeCacheIfStale;
10
11
  exports.shouldRecomputeWholeGraph = shouldRecomputeWholeGraph;
11
12
  exports.extractCachedFileData = extractCachedFileData;
12
13
  const node_fs_1 = require("node:fs");
@@ -132,6 +133,12 @@ function createProjectFileMapCache(nxJson, packageJsonDeps, fileMap, tsConfig, e
132
133
  };
133
134
  return newValue;
134
135
  }
136
+ /**
137
+ * Tracks the mtime of the project graph cache file after the last successful
138
+ * writeCache() call. Used by writeCacheIfStale() to skip redundant writes
139
+ * when no external process has modified the cache file since the last write.
140
+ */
141
+ let lastWrittenCacheMtimeMs;
135
142
  function writeCache(cache, projectGraph, sourceMaps, errors) {
136
143
  perf_hooks_1.performance.mark('write cache:start');
137
144
  let retry = 1;
@@ -165,6 +172,12 @@ function writeCache(cache, projectGraph, sourceMaps, errors) {
165
172
  if ((0, is_on_daemon_1.isOnDaemon)()) {
166
173
  logger_1.serverLogger.log(`Wrote project graph cache to ${exports.nxProjectGraph}${errors.length > 0 ? ' with errors' : ''}`);
167
174
  }
175
+ try {
176
+ lastWrittenCacheMtimeMs = (0, node_fs_1.statSync)(exports.nxProjectGraph).mtimeMs;
177
+ }
178
+ catch {
179
+ lastWrittenCacheMtimeMs = undefined;
180
+ }
168
181
  done = true;
169
182
  }
170
183
  catch (err) {
@@ -183,6 +196,29 @@ function writeCache(cache, projectGraph, sourceMaps, errors) {
183
196
  perf_hooks_1.performance.mark('write cache:end');
184
197
  perf_hooks_1.performance.measure('write cache', 'write cache:start', 'write cache:end');
185
198
  }
199
+ /**
200
+ * Writes the cache only if the on-disk cache file has been modified since
201
+ * this process last wrote it (i.e. an external process overwrote it), or
202
+ * if this process has never written the cache.
203
+ *
204
+ * Use this instead of writeCache() on hot paths where the same graph may
205
+ * be served multiple times without changing (e.g. the daemon responding
206
+ * to repeated client requests).
207
+ */
208
+ function writeCacheIfStale(cache, projectGraph, sourceMaps, errors) {
209
+ if (lastWrittenCacheMtimeMs !== undefined) {
210
+ try {
211
+ const currentMtimeMs = (0, node_fs_1.statSync)(exports.nxProjectGraph).mtimeMs;
212
+ if (currentMtimeMs === lastWrittenCacheMtimeMs) {
213
+ return;
214
+ }
215
+ }
216
+ catch {
217
+ // File doesn't exist or can't be stat'd — proceed with write
218
+ }
219
+ }
220
+ writeCache(cache, projectGraph, sourceMaps, errors);
221
+ }
186
222
  function shouldRecomputeWholeGraph(cache, packageJsonDeps, projects, nxJson, tsConfig, externalNodesHash) {
187
223
  if (cache.version !== '6.0') {
188
224
  return true;
@@ -1 +1 @@
1
- {"version":3,"file":"isolated-plugin.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/project-graph/plugins/isolation/isolated-plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"isolated-plugin.d.ts","sourceRoot":"","sources":["../../../../../../../packages/nx/src/project-graph/plugins/isolation/isolated-plugin.ts"],"names":[],"mappings":"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"}
@@ -50,10 +50,10 @@ class IsolatedPlugin {
50
50
  if (!(0, messaging_1.isPluginWorkerResult)(message)) {
51
51
  return;
52
52
  }
53
- const handler = this.responseHandlers.get(message.tx);
54
- if (handler) {
53
+ const pending = this.responseHandlers.get(message.tx);
54
+ if (pending) {
55
55
  this.responseHandlers.delete(message.tx);
56
- handler(message);
56
+ pending.onMessage(message);
57
57
  }
58
58
  };
59
59
  this.plugin = plugin;
@@ -77,15 +77,9 @@ class IsolatedPlugin {
77
77
  this.worker.stderr.unpipe(process.stderr);
78
78
  }
79
79
  // Reject all pending requests
80
- for (const handler of this.responseHandlers.values()) {
81
- handler({
82
- type: 'loadResult',
83
- tx: '',
84
- payload: {
85
- success: false,
86
- error: new Error(`Plugin worker ${this.name} exited unexpectedly.`),
87
- },
88
- });
80
+ const error = new Error(`Plugin worker "${this.name}" exited unexpectedly.`);
81
+ for (const { onError } of this.responseHandlers.values()) {
82
+ onError(error);
89
83
  }
90
84
  this.responseHandlers.clear();
91
85
  };
@@ -113,25 +107,31 @@ class IsolatedPlugin {
113
107
  }
114
108
  sendLoadMessage() {
115
109
  return new Promise((resolve, reject) => {
116
- const tx = 'load';
110
+ const tx = this.generateTxId('load');
117
111
  const timeout = setTimeout(() => {
118
112
  this.responseHandlers.delete(tx);
119
113
  reject(new Error(`Loading "${typeof this.plugin === 'string' ? this.plugin : this.plugin.plugin}" timed out after ${MINUTES} minutes. ${PLUGIN_TIMEOUT_HINT_TEXT}`));
120
114
  }, MAX_MESSAGE_WAIT);
121
- this.responseHandlers.set(tx, (msg) => {
122
- clearTimeout(timeout);
123
- if (msg.type !== 'loadResult') {
124
- reject(new Error(`Expected loadResult, got ${msg.type}`));
125
- return;
126
- }
127
- const payload = msg.payload;
128
- if (payload.success === false) {
129
- reject(payload.error);
130
- }
131
- else {
132
- this._alive = true;
133
- resolve(payload);
134
- }
115
+ this.responseHandlers.set(tx, {
116
+ onMessage: (msg) => {
117
+ clearTimeout(timeout);
118
+ if (msg.type !== 'loadResult') {
119
+ reject(new Error(`Expected loadResult, got ${msg.type}`));
120
+ return;
121
+ }
122
+ const payload = msg.payload;
123
+ if (payload.success === false) {
124
+ reject(payload.error);
125
+ }
126
+ else {
127
+ this._alive = true;
128
+ resolve(payload);
129
+ }
130
+ },
131
+ onError: (error) => {
132
+ clearTimeout(timeout);
133
+ reject(error);
134
+ },
135
135
  });
136
136
  (0, messaging_1.sendMessageOverSocket)(this.socket, {
137
137
  type: 'load',
@@ -235,14 +235,21 @@ class IsolatedPlugin {
235
235
  this.pendingCount--;
236
236
  reject(new Error(`${this.name} timed out after ${MINUTES} minutes during ${type}. ${PLUGIN_TIMEOUT_HINT_TEXT}`));
237
237
  }, MAX_MESSAGE_WAIT);
238
- this.responseHandlers.set(tx, (msg) => {
239
- clearTimeout(timeout);
240
- this.pendingCount--;
241
- if (msg.type !== expectedResultType) {
242
- reject(new Error(`Expected ${expectedResultType}, got ${msg.type}`));
243
- return;
244
- }
245
- resolve(msg.payload);
238
+ this.responseHandlers.set(tx, {
239
+ onMessage: (msg) => {
240
+ clearTimeout(timeout);
241
+ this.pendingCount--;
242
+ if (msg.type !== expectedResultType) {
243
+ reject(new Error(`Expected ${expectedResultType}, got ${msg.type}`));
244
+ return;
245
+ }
246
+ resolve(msg.payload);
247
+ },
248
+ onError: (error) => {
249
+ clearTimeout(timeout);
250
+ this.pendingCount--;
251
+ reject(error);
252
+ },
246
253
  });
247
254
  (0, messaging_1.sendMessageOverSocket)(this.socket, {
248
255
  type,
@@ -1 +1 @@
1
- {"version":3,"file":"project-graph.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/project-graph/project-graph.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,uCAAuC,CAAC;AAqC/C;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,iBAAiB,CAAC,EAAE,MAAM,GACzB,YAAY,CAuBd;AAED,wBAAgB,8BAA8B,CAC5C,WAAW,EAAE,MAAM,GAClB,oBAAoB,CAQtB;AAED;;GAEG;AACH,wBAAgB,yCAAyC,CACvD,YAAY,EAAE,YAAY,GACzB,sBAAsB,CAUxB;AAED,wBAAsB,2CAA2C;;;GAiFhE;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAAE,WAAW,EAAE,OAAO,CAAA;CAAE,EAAE,CAAC,KAAA,QA8BxE;AAgBD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,GAAE;IAAE,WAAW,EAAE,OAAO,CAAC;IAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAGxD,GACA,OAAO,CAAC,YAAY,CAAC,CAiBvB;AAED,wBAAsB,oCAAoC,CACxD,IAAI,GAAE;IAAE,WAAW,EAAE,OAAO,CAAC;IAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAGxD;;;GAmIF;AAED,wBAAgB,mCAAmC,SA0BlD"}
1
+ {"version":3,"file":"project-graph.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/project-graph/project-graph.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,uCAAuC,CAAC;AAqC/C;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,iBAAiB,CAAC,EAAE,MAAM,GACzB,YAAY,CAuBd;AAED,wBAAgB,8BAA8B,CAC5C,WAAW,EAAE,MAAM,GAClB,oBAAoB,CAQtB;AAED;;GAEG;AACH,wBAAgB,yCAAyC,CACvD,YAAY,EAAE,YAAY,GACzB,sBAAsB,CAUxB;AAED,wBAAsB,2CAA2C;;;GAiFhE;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAAE,WAAW,EAAE,OAAO,CAAA;CAAE,EAAE,CAAC,KAAA,QA8BxE;AAgBD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,GAAE;IAAE,WAAW,EAAE,OAAO,CAAC;IAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAGxD,GACA,OAAO,CAAC,YAAY,CAAC,CAiBvB;AAED,wBAAsB,oCAAoC,CACxD,IAAI,GAAE;IAAE,WAAW,EAAE,OAAO,CAAC;IAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAGxD;;;GAmIF;AAED,wBAAgB,mCAAmC,SAoDlD"}
@@ -329,10 +329,29 @@ async function createProjectGraphAndSourceMapsAsync(opts = {
329
329
  }
330
330
  }
331
331
  function preventRecursionInGraphConstruction() {
332
- // preventRecursionInGraphConstruction -> callee -> ...
333
- // slice removes preventRecursionInGraphConstruction and its caller,
334
- // which is useful when using this function to detect recursion in buildProjectGraphAndSourceMapsWithoutDaemon
335
- const stackframes = (0, call_sites_1.getCallSites)().slice(2);
332
+ const allFrames = (0, call_sites_1.getCallSites)();
333
+ // Find the first occurrence of buildProjectGraphAndSourceMapsWithoutDaemon in the call stack.
334
+ // This represents the current invocation and should be skipped for the recursion check.
335
+ const firstOccurrenceIndex = allFrames.findIndex((f) => f.getFunctionName() === buildProjectGraphAndSourceMapsWithoutDaemon.name);
336
+ let stackframes;
337
+ if (firstOccurrenceIndex !== -1) {
338
+ // Skip the current invocation frame and any consecutive frames with the same function name.
339
+ // Some runtimes (e.g. Bun) include extra async frames for the same call, which would
340
+ // otherwise cause a false positive loop detection.
341
+ let startIndex = firstOccurrenceIndex + 1;
342
+ while (startIndex < allFrames.length &&
343
+ allFrames[startIndex].getFunctionName() ===
344
+ buildProjectGraphAndSourceMapsWithoutDaemon.name) {
345
+ startIndex++;
346
+ }
347
+ stackframes = allFrames.slice(startIndex);
348
+ }
349
+ else {
350
+ // If buildProjectGraphAndSourceMapsWithoutDaemon is not in the stack (e.g., when called
351
+ // from daemon client), fall back to the original slice(2) behavior.
352
+ // preventRecursionInGraphConstruction -> callee -> ...
353
+ stackframes = allFrames.slice(2);
354
+ }
336
355
  if (stackframes.some((f) => {
337
356
  const functionName = f.getFunctionName();
338
357
  const fileName = f.getFileName() || '';
@@ -614,7 +614,7 @@ function targetDefaultShouldBeApplied(key, sourceMap) {
614
614
  return !plugin?.startsWith('nx/');
615
615
  }
616
616
  function deepClone(obj) {
617
- return JSON.parse(JSON.stringify(obj));
617
+ return structuredClone(obj);
618
618
  }
619
619
  function mergeTargetDefaultWithTargetDefinition(targetName, project, targetDefault, sourceMap) {
620
620
  const targetDefinition = project.targets[targetName] ?? {};
@@ -8,8 +8,6 @@ export declare class BatchProcess {
8
8
  private batchResultsCallbacks;
9
9
  private taskResultsCallbacks;
10
10
  private outputCallbacks;
11
- private terminalOutputChunks;
12
- private joinedTerminalOutput;
13
11
  constructor(childProcess: ChildProcess, executorName: string);
14
12
  onExit(cb: (code: number) => void): void;
15
13
  onBatchResults(cb: (results: BatchResults) => void): void;
@@ -18,6 +16,5 @@ export declare class BatchProcess {
18
16
  getResults(): Promise<BatchResults>;
19
17
  send(message: Serializable): void;
20
18
  kill(signal?: NodeJS.Signals): void;
21
- getTerminalOutput(): string;
22
19
  }
23
20
  //# sourceMappingURL=batch-process.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"batch-process.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/tasks-runner/running-tasks/batch-process.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE/D,OAAO,EAGL,YAAY,EACb,MAAM,yBAAyB,CAAC;AAEjC,qBAAa,YAAY;IAWrB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,YAAY;IAXtB,OAAO,CAAC,aAAa,CAAqC;IAC1D,OAAO,CAAC,qBAAqB,CAA8C;IAC3E,OAAO,CAAC,oBAAoB,CAErB;IACP,OAAO,CAAC,eAAe,CAAuC;IAC9D,OAAO,CAAC,oBAAoB,CAAgB;IAC5C,OAAO,CAAC,oBAAoB,CAAqB;gBAGvC,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,MAAM;IAqE9B,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI;IAIjC,cAAc,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI;IAIlD,aAAa,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,KAAK,IAAI;IAI5D,QAAQ,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI;IAI/B,UAAU,IAAI,OAAO,CAAC,YAAY,CAAC;IAmBzC,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAMjC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI;IAMnC,iBAAiB,IAAI,MAAM;CAI5B"}
1
+ {"version":3,"file":"batch-process.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/tasks-runner/running-tasks/batch-process.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE/D,OAAO,EAGL,YAAY,EACb,MAAM,yBAAyB,CAAC;AAEjC,qBAAa,YAAY;IASrB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,YAAY;IATtB,OAAO,CAAC,aAAa,CAAqC;IAC1D,OAAO,CAAC,qBAAqB,CAA8C;IAC3E,OAAO,CAAC,oBAAoB,CAErB;IACP,OAAO,CAAC,eAAe,CAAuC;gBAGpD,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,MAAM;IAmE9B,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI;IAIjC,cAAc,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI;IAIlD,aAAa,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,KAAK,IAAI;IAI5D,QAAQ,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI;IAI/B,UAAU,IAAI,OAAO,CAAC,YAAY,CAAC;IAmBzC,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAMjC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI;CAKpC"}
@@ -11,7 +11,6 @@ class BatchProcess {
11
11
  this.batchResultsCallbacks = [];
12
12
  this.taskResultsCallbacks = [];
13
13
  this.outputCallbacks = [];
14
- this.terminalOutputChunks = [];
15
14
  this.childProcess.on('message', (message) => {
16
15
  switch (message.type) {
17
16
  case batch_messages_1.BatchMessageType.CompleteTask: {
@@ -48,7 +47,6 @@ class BatchProcess {
48
47
  if (this.childProcess.stdout) {
49
48
  this.childProcess.stdout.on('data', (chunk) => {
50
49
  const output = chunk.toString();
51
- this.terminalOutputChunks.push(output);
52
50
  // Maintain current terminal output behavior
53
51
  process.stdout.write(chunk);
54
52
  // Notify callbacks for TUI
@@ -61,7 +59,6 @@ class BatchProcess {
61
59
  if (this.childProcess.stderr) {
62
60
  this.childProcess.stderr.on('data', (chunk) => {
63
61
  const output = chunk.toString();
64
- this.terminalOutputChunks.push(output);
65
62
  // Maintain current terminal output behavior
66
63
  process.stderr.write(chunk);
67
64
  // Notify callbacks for TUI
@@ -107,9 +104,5 @@ class BatchProcess {
107
104
  this.childProcess.kill(signal);
108
105
  }
109
106
  }
110
- getTerminalOutput() {
111
- this.joinedTerminalOutput ??= this.terminalOutputChunks.join('');
112
- return this.joinedTerminalOutput;
113
- }
114
107
  }
115
108
  exports.BatchProcess = BatchProcess;
@@ -2,4 +2,9 @@ import ignore = require('ignore');
2
2
  import { Tree } from '../generators/tree';
3
3
  export declare function getIgnoreObject(root?: string): ReturnType<typeof ignore>;
4
4
  export declare function getIgnoreObjectForTree(tree: Tree): ignore.Ignore;
5
+ /**
6
+ * Adds an entry to a .gitignore file if it's not already covered by existing patterns.
7
+ * Creates the file if it doesn't exist.
8
+ */
9
+ export declare function addEntryToGitIgnore(tree: Tree, gitignorePath: string, entry: string): void;
5
10
  //# sourceMappingURL=ignore.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ignore.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/utils/ignore.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,GAAG,QAAQ,QAAQ,CAAC,CAAC;AAGlC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C,wBAAgB,eAAe,CAC7B,IAAI,GAAE,MAAsB,GAC3B,UAAU,CAAC,OAAO,MAAM,CAAC,CAK3B;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,IAAI,iBAahD"}
1
+ {"version":3,"file":"ignore.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/utils/ignore.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,GAAG,QAAQ,QAAQ,CAAC,CAAC;AAGlC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C,wBAAgB,eAAe,CAC7B,IAAI,GAAE,MAAsB,GAC3B,UAAU,CAAC,OAAO,MAAM,CAAC,CAK3B;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,IAAI,iBAahD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,QAWd"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getIgnoreObject = getIgnoreObject;
4
4
  exports.getIgnoreObjectForTree = getIgnoreObjectForTree;
5
+ exports.addEntryToGitIgnore = addEntryToGitIgnore;
5
6
  const ignore = require("ignore");
6
7
  const fileutils_1 = require("./fileutils");
7
8
  const workspace_root_1 = require("./workspace-root");
@@ -24,3 +25,18 @@ function getIgnoreObjectForTree(tree) {
24
25
  }
25
26
  return ig;
26
27
  }
28
+ /**
29
+ * Adds an entry to a .gitignore file if it's not already covered by existing patterns.
30
+ * Creates the file if it doesn't exist.
31
+ */
32
+ function addEntryToGitIgnore(tree, gitignorePath, entry) {
33
+ const gitignore = tree.exists(gitignorePath)
34
+ ? tree.read(gitignorePath, 'utf-8')
35
+ : '';
36
+ const ig = ignore();
37
+ ig.add(gitignore);
38
+ if (!ig.ignores(entry)) {
39
+ const updatedLines = gitignore.length ? [gitignore, entry] : [entry];
40
+ tree.write(gitignorePath, updatedLines.join('\n'));
41
+ }
42
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"package-manager.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/utils/package-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"package-manager.d.ts","sourceRoot":"","sources":["../../../../../packages/nx/src/utils/package-manager.ts"],"names":[],"mappings":"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"}
@@ -44,7 +44,28 @@ function detectPackageManager(dir = '') {
44
44
  ? 'yarn'
45
45
  : (0, fs_1.existsSync)((0, path_1.join)(dir, 'pnpm-lock.yaml'))
46
46
  ? 'pnpm'
47
- : 'npm'));
47
+ : detectInvokedPackageManager()));
48
+ }
49
+ /**
50
+ * Detects which package manager was used to invoke the current command
51
+ * based on the npm_config_user_agent environment variable.
52
+ *
53
+ * Falls back to 'npm' if detection fails.
54
+ */
55
+ function detectInvokedPackageManager() {
56
+ const userAgent = process.env.npm_config_user_agent;
57
+ if (userAgent) {
58
+ if (userAgent.startsWith('pnpm/')) {
59
+ return 'pnpm';
60
+ }
61
+ if (userAgent.startsWith('yarn/')) {
62
+ return 'yarn';
63
+ }
64
+ if (userAgent.startsWith('bun/')) {
65
+ return 'bun';
66
+ }
67
+ }
68
+ return 'npm';
48
69
  }
49
70
  /**
50
71
  * Returns true if the workspace is using npm workspaces, yarn workspaces, or pnpm workspaces.
@@ -3,5 +3,33 @@ import { PluginCapabilities } from './plugin-capabilities';
3
3
  export declare function listPlugins(plugins: Map<string, PluginCapabilities>, title: string): void;
4
4
  export declare function listAlsoAvailableCorePlugins(installedPlugins: Map<string, PluginCapabilities>): void;
5
5
  export declare function listPowerpackPlugins(): void;
6
- export declare function listPluginCapabilities(pluginName: string, projects: Record<string, ProjectConfiguration>): Promise<void>;
6
+ export declare function listPluginCapabilities(pluginName: string, projects: Record<string, ProjectConfiguration>, json?: boolean): Promise<void>;
7
+ export declare function formatPluginCapabilitiesAsJson(plugin: PluginCapabilities): {
8
+ name: string;
9
+ path: string;
10
+ generators: Record<string, {
11
+ description: string;
12
+ path: string | null;
13
+ schema: string | null;
14
+ }>;
15
+ executors: Record<string, {
16
+ description: string;
17
+ path: string | null;
18
+ schema: string | null;
19
+ }>;
20
+ projectGraphExtension: boolean;
21
+ projectInference: boolean;
22
+ };
23
+ export declare function formatPluginsAsJson(localPlugins: Map<string, PluginCapabilities>, installedPlugins: Map<string, PluginCapabilities>): {
24
+ localWorkspacePlugins: {
25
+ name: string;
26
+ path: string;
27
+ capabilities: string[];
28
+ }[];
29
+ installedPlugins: {
30
+ name: string;
31
+ path: string;
32
+ capabilities: string[];
33
+ }[];
34
+ };
7
35
  //# sourceMappingURL=output.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/utils/plugins/output.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAKhF,OAAO,EACL,kBAAkB,EAEnB,MAAM,uBAAuB,CAAC;AAG/B,wBAAgB,WAAW,CACzB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,EACxC,KAAK,EAAE,MAAM,QA8Bd;AAED,wBAAgB,4BAA4B,CAC1C,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAChD,IAAI,CAaN;AAED,wBAAgB,oBAAoB,IAAI,IAAI,CAK3C;AAED,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,iBA4E/C"}
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../../../../packages/nx/src/utils/plugins/output.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAKhF,OAAO,EACL,kBAAkB,EAEnB,MAAM,uBAAuB,CAAC;AAG/B,wBAAgB,WAAW,CACzB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,EACxC,KAAK,EAAE,MAAM,QA8Bd;AAED,wBAAgB,4BAA4B,CAC1C,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAChD,IAAI,CAaN;AAED,wBAAgB,oBAAoB,IAAI,IAAI,CAK3C;AAED,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,EAC9C,IAAI,UAAQ,iBAyGb;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,kBAAkB;;;;qBAGtD,MAAM;cAAQ,MAAM,GAAG,IAAI;gBAAU,MAAM,GAAG,IAAI;;;qBAelD,MAAM;cAAQ,MAAM,GAAG,IAAI;gBAAU,MAAM,GAAG,IAAI;;;;EAsBpE;AAED,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAC7C,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC;;;;;;;;;;;EA+BlD"}