nx 14.5.4 → 14.5.6

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 (57) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/package.json +4 -4
  3. package/src/adapter/compat.js +15 -2
  4. package/src/adapter/compat.js.map +1 -1
  5. package/src/command-line/generate.d.ts +1 -1
  6. package/src/command-line/generate.js +39 -18
  7. package/src/command-line/generate.js.map +1 -1
  8. package/src/command-line/list.js +5 -0
  9. package/src/command-line/list.js.map +1 -1
  10. package/src/command-line/migrate.js +44 -25
  11. package/src/command-line/migrate.js.map +1 -1
  12. package/src/command-line/repair.d.ts +1 -1
  13. package/src/command-line/repair.js +10 -5
  14. package/src/command-line/repair.js.map +1 -1
  15. package/src/command-line/report.d.ts +1 -1
  16. package/src/command-line/report.js +38 -20
  17. package/src/command-line/report.js.map +1 -1
  18. package/src/core/dep-graph/3rdpartylicenses.txt +0 -229
  19. package/src/core/dep-graph/main.esm.js +1 -1
  20. package/src/core/dep-graph/main.esm.js.LICENSE.txt +4 -9
  21. package/src/core/dep-graph/polyfills.esm.js +1 -1
  22. package/src/core/dep-graph/styles.css +2 -2
  23. package/src/generators/testing-utils/create-tree-with-empty-workspace.d.ts +2 -1
  24. package/src/generators/testing-utils/create-tree-with-empty-workspace.js +13 -4
  25. package/src/generators/testing-utils/create-tree-with-empty-workspace.js.map +1 -1
  26. package/src/hasher/hash-task.d.ts +6 -0
  27. package/src/hasher/hash-task.js +30 -0
  28. package/src/hasher/hash-task.js.map +1 -0
  29. package/src/hasher/hasher.d.ts +3 -1
  30. package/src/hasher/hasher.js +95 -64
  31. package/src/hasher/hasher.js.map +1 -1
  32. package/src/tasks-runner/cache.d.ts +1 -3
  33. package/src/tasks-runner/cache.js +12 -55
  34. package/src/tasks-runner/cache.js.map +1 -1
  35. package/src/tasks-runner/default-tasks-runner.js +1 -3
  36. package/src/tasks-runner/default-tasks-runner.js.map +1 -1
  37. package/src/tasks-runner/life-cycles/formatting-utils.js +12 -1
  38. package/src/tasks-runner/life-cycles/formatting-utils.js.map +1 -1
  39. package/src/tasks-runner/run-command.js +17 -0
  40. package/src/tasks-runner/run-command.js.map +1 -1
  41. package/src/tasks-runner/tasks-runner.d.ts +2 -0
  42. package/src/tasks-runner/tasks-schedule.d.ts +0 -1
  43. package/src/tasks-runner/tasks-schedule.js +4 -17
  44. package/src/tasks-runner/tasks-schedule.js.map +1 -1
  45. package/src/utils/nx-plugin.js +1 -1
  46. package/src/utils/nx-plugin.js.map +1 -1
  47. package/src/utils/package-json.d.ts +18 -0
  48. package/src/utils/package-json.js +28 -5
  49. package/src/utils/package-json.js.map +1 -1
  50. package/src/utils/package-manager.d.ts +0 -1
  51. package/src/utils/package-manager.js +16 -13
  52. package/src/utils/package-manager.js.map +1 -1
  53. package/src/utils/plugins/local-plugins.d.ts +4 -0
  54. package/src/utils/plugins/local-plugins.js +59 -0
  55. package/src/utils/plugins/local-plugins.js.map +1 -0
  56. package/src/utils/plugins/plugin-capabilities.js +2 -2
  57. package/src/utils/plugins/plugin-capabilities.js.map +1 -1
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.listLocalWorkspacePlugins = exports.getLocalWorkspacePlugins = void 0;
4
+ const chalk = require("chalk");
5
+ const output_1 = require("../output");
6
+ const shared_1 = require("./shared");
7
+ const fileutils_1 = require("../fileutils");
8
+ const path_1 = require("path");
9
+ const workspace_root_1 = require("../workspace-root");
10
+ const fs_1 = require("fs");
11
+ function getLocalWorkspacePlugins(projectsConfiguration) {
12
+ var _a, _b, _c, _d, _e, _f;
13
+ const plugins = new Map();
14
+ for (const project of Object.values(projectsConfiguration.projects)) {
15
+ const packageJsonPath = (0, path_1.join)(workspace_root_1.workspaceRoot, project.root, 'package.json');
16
+ if ((0, fs_1.existsSync)(packageJsonPath)) {
17
+ const packageJson = (0, fileutils_1.readJsonFile)(packageJsonPath);
18
+ const capabilities = {};
19
+ const generatorsPath = (_a = packageJson.generators) !== null && _a !== void 0 ? _a : packageJson.schematics;
20
+ const executorsPath = (_b = packageJson.executors) !== null && _b !== void 0 ? _b : packageJson.builders;
21
+ if (generatorsPath) {
22
+ const file = (0, fileutils_1.readJsonFile)((0, path_1.join)(workspace_root_1.workspaceRoot, project.root, generatorsPath));
23
+ capabilities.generators = (_c = file.generators) !== null && _c !== void 0 ? _c : file.schematics;
24
+ }
25
+ if (executorsPath) {
26
+ const file = (0, fileutils_1.readJsonFile)((0, path_1.join)(workspace_root_1.workspaceRoot, project.root, executorsPath));
27
+ capabilities.executors = (_d = file.executors) !== null && _d !== void 0 ? _d : file.builders;
28
+ }
29
+ if (capabilities.executors || capabilities.generators) {
30
+ plugins.set(packageJson.name, {
31
+ executors: (_e = capabilities.executors) !== null && _e !== void 0 ? _e : {},
32
+ generators: (_f = capabilities.generators) !== null && _f !== void 0 ? _f : {},
33
+ name: packageJson.name,
34
+ });
35
+ }
36
+ }
37
+ }
38
+ return plugins;
39
+ }
40
+ exports.getLocalWorkspacePlugins = getLocalWorkspacePlugins;
41
+ function listLocalWorkspacePlugins(installedPlugins) {
42
+ const bodyLines = [];
43
+ for (const [, p] of installedPlugins) {
44
+ const capabilities = [];
45
+ if ((0, shared_1.hasElements)(p.executors)) {
46
+ capabilities.push('executors');
47
+ }
48
+ if ((0, shared_1.hasElements)(p.generators)) {
49
+ capabilities.push('generators');
50
+ }
51
+ bodyLines.push(`${chalk.bold(p.name)} (${capabilities.join()})`);
52
+ }
53
+ output_1.output.log({
54
+ title: `Local workspace plugins:`,
55
+ bodyLines: bodyLines,
56
+ });
57
+ }
58
+ exports.listLocalWorkspacePlugins = listLocalWorkspacePlugins;
59
+ //# sourceMappingURL=local-plugins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-plugins.js","sourceRoot":"","sources":["../../../../../../packages/nx/src/utils/plugins/local-plugins.ts"],"names":[],"mappings":";;;AAAA,+BAA+B;AAC/B,sCAAmC;AAGnC,qCAAuC;AACvC,4CAA4C;AAG5C,+BAA4B;AAC5B,sDAAkD;AAClD,2BAAgC;AAGhC,SAAgB,wBAAwB,CACtC,qBAA6C;;IAE7C,MAAM,OAAO,GAAoC,IAAI,GAAG,EAAE,CAAC;IAC3D,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,QAAQ,CAAC,EAAE;QACnE,MAAM,eAAe,GAAG,IAAA,WAAI,EAAC,8BAAa,EAAE,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAC1E,IAAI,IAAA,eAAU,EAAC,eAAe,CAAC,EAAE;YAC/B,MAAM,WAAW,GAAgB,IAAA,wBAAY,EAAC,eAAe,CAAC,CAAC;YAC/D,MAAM,YAAY,GAAgC,EAAE,CAAC;YACrD,MAAM,cAAc,GAAG,MAAA,WAAW,CAAC,UAAU,mCAAI,WAAW,CAAC,UAAU,CAAC;YACxE,MAAM,aAAa,GAAG,MAAA,WAAW,CAAC,SAAS,mCAAI,WAAW,CAAC,QAAQ,CAAC;YACpE,IAAI,cAAc,EAAE;gBAClB,MAAM,IAAI,GAAG,IAAA,wBAAY,EACvB,IAAA,WAAI,EAAC,8BAAa,EAAE,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC,CAClD,CAAC;gBACF,YAAY,CAAC,UAAU,GAAG,MAAA,IAAI,CAAC,UAAU,mCAAI,IAAI,CAAC,UAAU,CAAC;aAC9D;YACD,IAAI,aAAa,EAAE;gBACjB,MAAM,IAAI,GAAG,IAAA,wBAAY,EACvB,IAAA,WAAI,EAAC,8BAAa,EAAE,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC,CACjD,CAAC;gBACF,YAAY,CAAC,SAAS,GAAG,MAAA,IAAI,CAAC,SAAS,mCAAI,IAAI,CAAC,QAAQ,CAAC;aAC1D;YACD,IAAI,YAAY,CAAC,SAAS,IAAI,YAAY,CAAC,UAAU,EAAE;gBACrD,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE;oBAC5B,SAAS,EAAE,MAAA,YAAY,CAAC,SAAS,mCAAI,EAAE;oBACvC,UAAU,EAAE,MAAA,YAAY,CAAC,UAAU,mCAAI,EAAE;oBACzC,IAAI,EAAE,WAAW,CAAC,IAAI;iBACvB,CAAC,CAAC;aACJ;SACF;KACF;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAlCD,4DAkCC;AAED,SAAgB,yBAAyB,CACvC,gBAAiD;IAEjD,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,gBAAgB,EAAE;QACpC,MAAM,YAAY,GAAG,EAAE,CAAC;QACxB,IAAI,IAAA,oBAAW,EAAC,CAAC,CAAC,SAAS,CAAC,EAAE;YAC5B,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SAChC;QACD,IAAI,IAAA,oBAAW,EAAC,CAAC,CAAC,UAAU,CAAC,EAAE;YAC7B,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACjC;QACD,SAAS,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KAClE;IAED,eAAM,CAAC,GAAG,CAAC;QACT,KAAK,EAAE,0BAA0B;QACjC,SAAS,EAAE,SAAS;KACrB,CAAC,CAAC;AACL,CAAC;AApBD,8DAoBC"}
@@ -8,7 +8,7 @@ const output_1 = require("../output");
8
8
  const shared_1 = require("./shared");
9
9
  const fileutils_1 = require("../fileutils");
10
10
  const package_manager_1 = require("../package-manager");
11
- const package_json_1 = require("../package-json");
11
+ const nx_plugin_1 = require("../nx-plugin");
12
12
  function tryGetCollection(packageJsonPath, collectionFile, propName) {
13
13
  if (!collectionFile) {
14
14
  return null;
@@ -23,7 +23,7 @@ function tryGetCollection(packageJsonPath, collectionFile, propName) {
23
23
  }
24
24
  function getPluginCapabilities(workspaceRoot, pluginName) {
25
25
  try {
26
- const { packageJson, path: packageJsonPath } = (0, package_json_1.readModulePackageJson)(pluginName);
26
+ const { json: packageJson, path: packageJsonPath } = (0, nx_plugin_1.readPluginPackageJson)(pluginName);
27
27
  return {
28
28
  name: pluginName,
29
29
  generators: tryGetCollection(packageJsonPath, packageJson.generators, 'generators') ||
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-capabilities.js","sourceRoot":"","sources":["../../../../../../packages/nx/src/utils/plugins/plugin-capabilities.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin-capabilities.js","sourceRoot":"","sources":["../../../../../../packages/nx/src/utils/plugins/plugin-capabilities.ts"],"names":[],"mappings":"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"}