nx 19.8.0-beta.0 → 19.8.0-beta.2

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.
package/bin/nx-cloud.js CHANGED
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nx",
3
- "version": "19.8.0-beta.0",
3
+ "version": "19.8.0-beta.2",
4
4
  "private": false,
5
5
  "description": "The core Nx plugin contains the core functionality of Nx like the project graph, nx commands and task orchestration.",
6
6
  "repository": {
@@ -8,9 +8,6 @@
8
8
  "url": "https://github.com/nrwl/nx.git",
9
9
  "directory": "packages/nx"
10
10
  },
11
- "scripts": {
12
- "postinstall": "node ./bin/post-install"
13
- },
14
11
  "keywords": [
15
12
  "Monorepo",
16
13
  "Angular",
@@ -71,7 +68,7 @@
71
68
  "yargs-parser": "21.1.1",
72
69
  "node-machine-id": "1.1.12",
73
70
  "ora": "5.3.0",
74
- "@nrwl/tao": "19.8.0-beta.0"
71
+ "@nrwl/tao": "19.8.0-beta.2"
75
72
  },
76
73
  "peerDependencies": {
77
74
  "@swc-node/register": "^1.8.0",
@@ -86,16 +83,16 @@
86
83
  }
87
84
  },
88
85
  "optionalDependencies": {
89
- "@nx/nx-darwin-x64": "19.8.0-beta.0",
90
- "@nx/nx-darwin-arm64": "19.8.0-beta.0",
91
- "@nx/nx-linux-x64-gnu": "19.8.0-beta.0",
92
- "@nx/nx-linux-x64-musl": "19.8.0-beta.0",
93
- "@nx/nx-win32-x64-msvc": "19.8.0-beta.0",
94
- "@nx/nx-linux-arm64-gnu": "19.8.0-beta.0",
95
- "@nx/nx-linux-arm64-musl": "19.8.0-beta.0",
96
- "@nx/nx-linux-arm-gnueabihf": "19.8.0-beta.0",
97
- "@nx/nx-win32-arm64-msvc": "19.8.0-beta.0",
98
- "@nx/nx-freebsd-x64": "19.8.0-beta.0"
86
+ "@nx/nx-darwin-x64": "19.8.0-beta.2",
87
+ "@nx/nx-darwin-arm64": "19.8.0-beta.2",
88
+ "@nx/nx-linux-x64-gnu": "19.8.0-beta.2",
89
+ "@nx/nx-linux-x64-musl": "19.8.0-beta.2",
90
+ "@nx/nx-win32-x64-msvc": "19.8.0-beta.2",
91
+ "@nx/nx-linux-arm64-gnu": "19.8.0-beta.2",
92
+ "@nx/nx-linux-arm64-musl": "19.8.0-beta.2",
93
+ "@nx/nx-linux-arm-gnueabihf": "19.8.0-beta.2",
94
+ "@nx/nx-win32-arm64-msvc": "19.8.0-beta.2",
95
+ "@nx/nx-freebsd-x64": "19.8.0-beta.2"
99
96
  },
100
97
  "nx-migrations": {
101
98
  "migrations": "./migrations.json",
@@ -192,5 +189,8 @@
192
189
  },
193
190
  "main": "./bin/nx.js",
194
191
  "type": "commonjs",
195
- "types": "./bin/nx.d.ts"
196
- }
192
+ "types": "./bin/nx.d.ts",
193
+ "scripts": {
194
+ "postinstall": "node ./bin/post-install"
195
+ }
196
+ }
@@ -0,0 +1,2 @@
1
+ import { ActivatePowerpackOptions } from './command-object';
2
+ export declare function handleActivatePowerpack(options: ActivatePowerpackOptions): Promise<void>;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleActivatePowerpack = handleActivatePowerpack;
4
+ const workspace_root_1 = require("../../utils/workspace-root");
5
+ const enquirer_1 = require("enquirer");
6
+ const child_process_1 = require("child_process");
7
+ const package_manager_1 = require("../../utils/package-manager");
8
+ async function handleActivatePowerpack(options) {
9
+ const license = options.license ??
10
+ (await (0, enquirer_1.prompt)({
11
+ type: 'input',
12
+ name: 'license',
13
+ message: 'Enter your License Key',
14
+ }));
15
+ const { activatePowerpack } = await requirePowerpack();
16
+ activatePowerpack(workspace_root_1.workspaceRoot, license);
17
+ }
18
+ async function requirePowerpack() {
19
+ // @ts-ignore
20
+ return Promise.resolve().then(() => require('@nx/powerpack-license')).catch(async (e) => {
21
+ if ('code' in e && e.code === 'MODULE_NOT_FOUND') {
22
+ try {
23
+ (0, child_process_1.execSync)(`${(0, package_manager_1.getPackageManagerCommand)().addDev} @nx/powerpack-license@latest`);
24
+ // @ts-ignore
25
+ return await Promise.resolve().then(() => require('@nx/powerpack-license'));
26
+ }
27
+ catch (e) {
28
+ throw new Error('Failed to install @nx/powerpack-license. Please install @nx/powerpack-license and try again.');
29
+ }
30
+ }
31
+ });
32
+ }
@@ -0,0 +1,6 @@
1
+ import { CommandModule } from 'yargs';
2
+ export interface ActivatePowerpackOptions {
3
+ license: string;
4
+ verbose: boolean;
5
+ }
6
+ export declare const yargsActivatePowerpackCommand: CommandModule<{}, ActivatePowerpackOptions>;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.yargsActivatePowerpackCommand = void 0;
4
+ const shared_options_1 = require("../yargs-utils/shared-options");
5
+ const handle_errors_1 = require("../../utils/handle-errors");
6
+ exports.yargsActivatePowerpackCommand = {
7
+ command: 'activate-powerpack <license>',
8
+ describe: 'Activate a Nx Powerpack license.',
9
+ builder: (yargs) => (0, shared_options_1.withVerbose)(yargs)
10
+ .parserConfiguration({
11
+ 'strip-dashed': true,
12
+ 'unknown-options-as-args': true,
13
+ })
14
+ .positional('license', {
15
+ type: 'string',
16
+ description: 'This is a License Key for Nx Powerpack.',
17
+ })
18
+ .example('$0 activate-powerpack <license key>', 'Activate a Nx Powerpack license'),
19
+ handler: async (args) => {
20
+ const exitCode = await (0, handle_errors_1.handleErrors)(args.verbose, async () => {
21
+ return (await Promise.resolve().then(() => require('./activate-powerpack'))).handleActivatePowerpack(args);
22
+ });
23
+ process.exit(exitCode);
24
+ },
25
+ };
@@ -5,4 +5,4 @@ export interface AddOptions {
5
5
  verbose?: boolean;
6
6
  __overrides_unparsed__: string[];
7
7
  }
8
- export declare const yargsAddCommand: CommandModule<Record<string, unknown>, AddOptions>;
8
+ export declare const yargsAddCommand: CommandModule<{}, AddOptions>;
@@ -7,7 +7,6 @@ const file_utils_1 = require("../../project-graph/file-utils");
7
7
  const command_line_utils_1 = require("../../utils/command-line-utils");
8
8
  const fileutils_1 = require("../../utils/fileutils");
9
9
  const ignore_1 = require("../../utils/ignore");
10
- const prettier = require("prettier");
11
10
  const configuration_1 = require("../../config/configuration");
12
11
  const typescript_1 = require("../../plugins/js/utils/typescript");
13
12
  const affected_project_graph_1 = require("../../project-graph/affected/affected-project-graph");
@@ -18,8 +17,19 @@ const object_sort_1 = require("../../utils/object-sort");
18
17
  const output_1 = require("../../utils/output");
19
18
  const package_json_1 = require("../../utils/package-json");
20
19
  const workspace_root_1 = require("../../utils/workspace-root");
21
- const PRETTIER_PATH = getPrettierPath();
22
20
  async function format(command, args) {
21
+ try {
22
+ require('prettier');
23
+ }
24
+ catch {
25
+ output_1.output.error({
26
+ title: 'Prettier is not installed.',
27
+ bodyLines: [
28
+ `Please install "prettier" and try again, or don't run the "nx format:${command}" command.`,
29
+ ],
30
+ });
31
+ process.exit(1);
32
+ }
23
33
  const { nxArgs } = (0, command_line_utils_1.splitArgsIntoNxArgsAndOverrides)(args, 'affected', { printWarnings: false }, (0, configuration_1.readNxJson)());
24
34
  const patterns = (await getPatterns({ ...args, ...nxArgs })).map(
25
35
  // prettier removes one of the \
@@ -72,7 +82,7 @@ async function getPatterns(args) {
72
82
  }
73
83
  const p = (0, command_line_utils_1.parseFiles)(args);
74
84
  // In prettier v3 the getSupportInfo result is a promise
75
- const supportedExtensions = new Set((await prettier.getSupportInfo()).languages
85
+ const supportedExtensions = new Set((await require('prettier').getSupportInfo()).languages
76
86
  .flatMap((language) => language.extensions)
77
87
  .filter((extension) => !!extension)
78
88
  // Prettier supports ".swcrc" as a file instead of an extension
@@ -131,11 +141,12 @@ function write(patterns) {
131
141
  result[pattern.includes('.swcrc') ? 0 : 1].push(pattern);
132
142
  return result;
133
143
  }, [[], []]);
134
- (0, node_child_process_1.execSync)(`node "${PRETTIER_PATH}" --write --list-different ${regularPatterns.join(' ')}`, {
144
+ const prettierPath = getPrettierPath();
145
+ (0, node_child_process_1.execSync)(`node "${prettierPath}" --write --list-different ${regularPatterns.join(' ')}`, {
135
146
  stdio: [0, 1, 2],
136
147
  });
137
148
  if (swcrcPatterns.length > 0) {
138
- (0, node_child_process_1.execSync)(`node "${PRETTIER_PATH}" --write --list-different ${swcrcPatterns.join(' ')} --parser json`, {
149
+ (0, node_child_process_1.execSync)(`node "${prettierPath}" --write --list-different ${swcrcPatterns.join(' ')} --parser json`, {
139
150
  stdio: [0, 1, 2],
140
151
  });
141
152
  }
@@ -145,8 +156,9 @@ async function check(patterns) {
145
156
  if (patterns.length === 0) {
146
157
  return [];
147
158
  }
159
+ const prettierPath = getPrettierPath();
148
160
  return new Promise((resolve) => {
149
- (0, node_child_process_1.exec)(`node "${PRETTIER_PATH}" --list-different ${patterns.join(' ')}`, { encoding: 'utf-8' }, (error, stdout) => {
161
+ (0, node_child_process_1.exec)(`node "${prettierPath}" --list-different ${patterns.join(' ')}`, { encoding: 'utf-8' }, (error, stdout) => {
150
162
  if (error) {
151
163
  // The command failed so there are files with different formatting. Prettier writes them to stdout, newline separated.
152
164
  resolve(stdout.trim().split('\n'));
@@ -170,7 +182,12 @@ function sortTsConfig() {
170
182
  // catch noop
171
183
  }
172
184
  }
185
+ let prettierPath;
173
186
  function getPrettierPath() {
187
+ if (prettierPath) {
188
+ return prettierPath;
189
+ }
174
190
  const { bin } = (0, package_json_1.readModulePackageJson)('prettier').packageJson;
175
- return require.resolve(path.join('prettier', bin));
191
+ prettierPath = require.resolve(path.join('prettier', bin));
192
+ return prettierPath;
176
193
  }
@@ -6,6 +6,7 @@ const project_graph_1 = require("../../project-graph/project-graph");
6
6
  const output_1 = require("../../utils/output");
7
7
  const plugins_1 = require("../../utils/plugins");
8
8
  const workspace_root_1 = require("../../utils/workspace-root");
9
+ const output_2 = require("../../utils/plugins/output");
9
10
  /**
10
11
  * List available plugins or capabilities within a specific plugin
11
12
  *
@@ -29,6 +30,7 @@ async function listHandler(args) {
29
30
  }
30
31
  (0, plugins_1.listPlugins)(installedPlugins, 'Installed plugins:');
31
32
  (0, plugins_1.listAlsoAvailableCorePlugins)(installedPlugins);
33
+ (0, output_2.listPowerpackPlugins)();
32
34
  output_1.output.note({
33
35
  title: 'Community Plugins',
34
36
  bodyLines: [
@@ -7,4 +7,4 @@ export declare const parserConfiguration: Partial<yargs.ParserConfigurationOptio
7
7
  * from the `.argv` call, so the object and it's relative scripts can
8
8
  * le executed correctly.
9
9
  */
10
- export declare const commandsObject: yargs.Argv<{}>;
10
+ export declare const commandsObject: yargs.Argv<unknown>;
@@ -3,31 +3,32 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.commandsObject = exports.parserConfiguration = void 0;
4
4
  const chalk = require("chalk");
5
5
  const yargs = require("yargs");
6
- const command_object_1 = require("./affected/command-object");
7
- const command_object_2 = require("./connect/command-object");
8
- const command_object_3 = require("./daemon/command-object");
9
- const command_object_4 = require("./graph/command-object");
10
- const command_object_5 = require("./exec/command-object");
11
- const command_object_6 = require("./format/command-object");
12
- const command_object_7 = require("./generate/command-object");
13
- const command_object_8 = require("./import/command-object");
14
- const command_object_9 = require("./init/command-object");
15
- const command_object_10 = require("./list/command-object");
16
- const command_object_11 = require("./migrate/command-object");
17
- const command_object_12 = require("./new/command-object");
18
- const command_object_13 = require("./repair/command-object");
19
- const command_object_14 = require("./report/command-object");
20
- const command_object_15 = require("./run/command-object");
21
- const command_object_16 = require("./run-many/command-object");
22
- const command_object_17 = require("./show/command-object");
23
- const command_object_18 = require("./watch/command-object");
24
- const command_object_19 = require("./reset/command-object");
25
- const command_object_20 = require("./release/command-object");
26
- const command_object_21 = require("./add/command-object");
27
- const command_object_22 = require("./login/command-object");
28
- const command_object_23 = require("./logout/command-object");
6
+ const command_object_1 = require("./activate-powerpack/command-object");
7
+ const command_object_2 = require("./affected/command-object");
8
+ const command_object_3 = require("./connect/command-object");
9
+ const command_object_4 = require("./daemon/command-object");
10
+ const command_object_5 = require("./graph/command-object");
11
+ const command_object_6 = require("./exec/command-object");
12
+ const command_object_7 = require("./format/command-object");
13
+ const command_object_8 = require("./generate/command-object");
14
+ const command_object_9 = require("./import/command-object");
15
+ const command_object_10 = require("./init/command-object");
16
+ const command_object_11 = require("./list/command-object");
17
+ const command_object_12 = require("./migrate/command-object");
18
+ const command_object_13 = require("./new/command-object");
19
+ const command_object_14 = require("./repair/command-object");
20
+ const command_object_15 = require("./report/command-object");
21
+ const command_object_16 = require("./run/command-object");
22
+ const command_object_17 = require("./run-many/command-object");
23
+ const command_object_18 = require("./show/command-object");
24
+ const command_object_19 = require("./watch/command-object");
25
+ const command_object_20 = require("./reset/command-object");
26
+ const command_object_21 = require("./release/command-object");
27
+ const command_object_22 = require("./add/command-object");
28
+ const command_object_23 = require("./login/command-object");
29
+ const command_object_24 = require("./logout/command-object");
29
30
  const command_objects_1 = require("./deprecated/command-objects");
30
- const command_object_24 = require("./sync/command-object");
31
+ const command_object_25 = require("./sync/command-object");
31
32
  // Ensure that the output takes up the available width of the terminal.
32
33
  yargs.wrap(yargs.terminalWidth());
33
34
  exports.parserConfiguration = {
@@ -44,44 +45,63 @@ exports.commandsObject = yargs
44
45
  .parserConfiguration(exports.parserConfiguration)
45
46
  .usage(chalk.bold('Smart Monorepos · Fast CI'))
46
47
  .demandCommand(1, '')
47
- .command(command_object_21.yargsAddCommand)
48
- .command(command_object_1.yargsAffectedBuildCommand)
49
- .command(command_object_1.yargsAffectedCommand)
50
- .command(command_object_1.yargsAffectedE2ECommand)
51
- .command(command_object_1.yargsAffectedLintCommand)
52
- .command(command_object_1.yargsAffectedTestCommand)
48
+ .command(command_object_1.yargsActivatePowerpackCommand)
49
+ .command(command_object_22.yargsAddCommand)
50
+ .command(command_object_2.yargsAffectedBuildCommand)
51
+ .command(command_object_2.yargsAffectedCommand)
52
+ .command(command_object_2.yargsAffectedE2ECommand)
53
+ .command(command_object_2.yargsAffectedLintCommand)
54
+ .command(command_object_2.yargsAffectedTestCommand)
53
55
  .command(command_objects_1.yargsAffectedGraphCommand)
54
- .command(command_object_2.yargsConnectCommand)
55
- .command(command_object_3.yargsDaemonCommand)
56
- .command(command_object_4.yargsGraphCommand)
57
- .command(command_object_5.yargsExecCommand)
58
- .command(command_object_6.yargsFormatCheckCommand)
59
- .command(command_object_6.yargsFormatWriteCommand)
60
- .command(command_object_7.yargsGenerateCommand)
61
- .command(command_object_8.yargsImportCommand)
62
- .command(command_object_9.yargsInitCommand)
63
- .command(command_object_11.yargsInternalMigrateCommand)
64
- .command(command_object_10.yargsListCommand)
65
- .command(command_object_11.yargsMigrateCommand)
66
- .command(command_object_12.yargsNewCommand)
56
+ .command(command_object_3.yargsConnectCommand)
57
+ .command(command_object_4.yargsDaemonCommand)
58
+ .command(command_object_5.yargsGraphCommand)
59
+ .command(command_object_6.yargsExecCommand)
60
+ .command(command_object_7.yargsFormatCheckCommand)
61
+ .command(command_object_7.yargsFormatWriteCommand)
62
+ .command(command_object_8.yargsGenerateCommand)
63
+ .command(command_object_9.yargsImportCommand)
64
+ .command(command_object_10.yargsInitCommand)
65
+ .command(command_object_12.yargsInternalMigrateCommand)
66
+ .command(command_object_11.yargsListCommand)
67
+ .command(command_object_12.yargsMigrateCommand)
68
+ .command(command_object_13.yargsNewCommand)
67
69
  .command(command_objects_1.yargsPrintAffectedCommand)
68
- .command(command_object_20.yargsReleaseCommand)
69
- .command(command_object_13.yargsRepairCommand)
70
- .command(command_object_14.yargsReportCommand)
71
- .command(command_object_19.yargsResetCommand)
72
- .command(command_object_15.yargsRunCommand)
73
- .command(command_object_16.yargsRunManyCommand)
74
- .command(command_object_17.yargsShowCommand)
75
- .command(command_object_24.yargsSyncCommand)
76
- .command(command_object_24.yargsSyncCheckCommand)
77
- .command(command_object_2.yargsViewLogsCommand)
78
- .command(command_object_18.yargsWatchCommand)
79
- .command(command_object_15.yargsNxInfixCommand)
80
- .command(command_object_22.yargsLoginCommand)
81
- .command(command_object_23.yargsLogoutCommand)
70
+ .command(command_object_21.yargsReleaseCommand)
71
+ .command(command_object_14.yargsRepairCommand)
72
+ .command(command_object_15.yargsReportCommand)
73
+ .command(command_object_20.yargsResetCommand)
74
+ .command(command_object_16.yargsRunCommand)
75
+ .command(command_object_17.yargsRunManyCommand)
76
+ .command(command_object_18.yargsShowCommand)
77
+ .command(command_object_25.yargsSyncCommand)
78
+ .command(command_object_25.yargsSyncCheckCommand)
79
+ .command(command_object_3.yargsViewLogsCommand)
80
+ .command(command_object_19.yargsWatchCommand)
81
+ .command(command_object_16.yargsNxInfixCommand)
82
+ .command(command_object_23.yargsLoginCommand)
83
+ .command(command_object_24.yargsLogoutCommand)
84
+ .command(resolveConformanceCommandObject())
82
85
  .scriptName('nx')
83
86
  .help()
84
87
  // NOTE: we handle --version in nx.ts, this just tells yargs that the option exists
85
88
  // so that it shows up in help. The default yargs implementation of --version is not
86
89
  // hit, as the implementation in nx.ts is hit first and calls process.exit(0).
87
90
  .version();
91
+ function resolveConformanceCommandObject() {
92
+ try {
93
+ const { yargsConformanceCommand } = require('@nx/powerpack-conformance');
94
+ return yargsConformanceCommand;
95
+ }
96
+ catch (e) {
97
+ return {
98
+ command: 'conformance',
99
+ // Hide from --help output in the common case of not having the plugin installed
100
+ describe: false,
101
+ handler: () => {
102
+ // TODO: Add messaging to help with learning more about powerpack and conformance
103
+ process.exit(1);
104
+ },
105
+ };
106
+ }
107
+ }
@@ -15,6 +15,8 @@ export declare function reportHandler(): Promise<void>;
15
15
  export interface ReportData {
16
16
  pm: PackageManager;
17
17
  pmVersion: string;
18
+ powerpackLicense: any | null;
19
+ powerpackPlugins: PackageJson[];
18
20
  localPlugins: string[];
19
21
  communityPlugins: PackageJson[];
20
22
  registeredPlugins: string[];
@@ -43,6 +45,7 @@ interface OutOfSyncPackageGroup {
43
45
  migrateTarget: string;
44
46
  }
45
47
  export declare function findMisalignedPackagesForPackage(base: PackageJson): undefined | OutOfSyncPackageGroup;
48
+ export declare function findInstalledPowerpackPlugins(): PackageJson[];
46
49
  export declare function findInstalledCommunityPlugins(): PackageJson[];
47
50
  export declare function findRegisteredPluginsBeingUsed(nxJson: NxJsonConfiguration): string[];
48
51
  export declare function findInstalledPackagesWeCareAbout(): {
@@ -4,6 +4,7 @@ exports.patternsWeIgnoreInCommunityReport = exports.packagesWeCareAbout = void 0
4
4
  exports.reportHandler = reportHandler;
5
5
  exports.getReportData = getReportData;
6
6
  exports.findMisalignedPackagesForPackage = findMisalignedPackagesForPackage;
7
+ exports.findInstalledPowerpackPlugins = findInstalledPowerpackPlugins;
7
8
  exports.findInstalledCommunityPlugins = findInstalledCommunityPlugins;
8
9
  exports.findRegisteredPluginsBeingUsed = findRegisteredPluginsBeingUsed;
9
10
  exports.findInstalledPackagesWeCareAbout = findInstalledPackagesWeCareAbout;
@@ -20,6 +21,7 @@ const installed_plugins_1 = require("../../utils/plugins/installed-plugins");
20
21
  const installation_directory_1 = require("../../utils/installation-directory");
21
22
  const nx_json_1 = require("../../config/nx-json");
22
23
  const error_types_1 = require("../../project-graph/error-types");
24
+ const powerpack_1 = require("../../utils/powerpack");
23
25
  const nxPackageJson = (0, fileutils_1.readJsonFile)((0, path_1.join)(__dirname, '../../../package.json'));
24
26
  exports.packagesWeCareAbout = [
25
27
  'lerna',
@@ -29,6 +31,7 @@ exports.packagesWeCareAbout = [
29
31
  ];
30
32
  exports.patternsWeIgnoreInCommunityReport = [
31
33
  ...exports.packagesWeCareAbout,
34
+ new RegExp('@nx/powerpack*'),
32
35
  '@schematics/angular',
33
36
  new RegExp('@angular/*'),
34
37
  '@nestjs/schematics',
@@ -43,7 +46,7 @@ const LINE_SEPARATOR = '---------------------------------------';
43
46
  *
44
47
  */
45
48
  async function reportHandler() {
46
- const { pm, pmVersion, localPlugins, communityPlugins, registeredPlugins, packageVersionsWeCareAbout, outOfSyncPackageGroup, projectGraphError, nativeTarget, } = await getReportData();
49
+ const { pm, pmVersion, powerpackLicense, localPlugins, powerpackPlugins, communityPlugins, registeredPlugins, packageVersionsWeCareAbout, outOfSyncPackageGroup, projectGraphError, nativeTarget, } = await getReportData();
47
50
  const fields = [
48
51
  ['Node', process.versions.node],
49
52
  ['OS', `${process.platform}-${process.arch}`],
@@ -58,6 +61,17 @@ async function reportHandler() {
58
61
  packageVersionsWeCareAbout.forEach((p) => {
59
62
  bodyLines.push(`${chalk.green(p.package.padEnd(padding))} : ${chalk.bold(p.version)}`);
60
63
  });
64
+ if (powerpackLicense) {
65
+ bodyLines.push(LINE_SEPARATOR);
66
+ bodyLines.push(chalk.green('Nx Powerpack'));
67
+ bodyLines.push(`Licensed to ${powerpackLicense.organizationName} for ${powerpackLicense.seatCount} user${powerpackLicense.seatCount > 1 ? 's' : ''} in ${powerpackLicense.workspaceCount} workspace${powerpackLicense.workspaceCount > 1 ? 's' : ''} until ${new Date(powerpackLicense.expiresAt * 1000).toLocaleDateString()}`);
68
+ bodyLines.push('');
69
+ padding =
70
+ Math.max(...powerpackPlugins.map((powerpackPlugin) => powerpackPlugin.name.length)) + 1;
71
+ for (const powerpackPlugin of powerpackPlugins) {
72
+ bodyLines.push(`${chalk.green(powerpackPlugin.name.padEnd(padding))} : ${chalk.bold(powerpackPlugin.version)}`);
73
+ }
74
+ }
61
75
  if (registeredPlugins.length) {
62
76
  bodyLines.push(LINE_SEPARATOR);
63
77
  bodyLines.push('Registered Plugins:');
@@ -106,6 +120,7 @@ async function getReportData() {
106
120
  const { graph, error: projectGraphError } = await tryGetProjectGraph();
107
121
  const nxJson = (0, nx_json_1.readNxJson)();
108
122
  const localPlugins = await findLocalPlugins(graph, nxJson);
123
+ const powerpackPlugins = findInstalledPowerpackPlugins();
109
124
  const communityPlugins = findInstalledCommunityPlugins();
110
125
  const registeredPlugins = findRegisteredPluginsBeingUsed(nxJson);
111
126
  const packageVersionsWeCareAbout = findInstalledPackagesWeCareAbout();
@@ -121,8 +136,15 @@ async function getReportData() {
121
136
  }
122
137
  const outOfSyncPackageGroup = findMisalignedPackagesForPackage(nxPackageJson);
123
138
  const native = isNativeAvailable();
139
+ let powerpackLicense = null;
140
+ try {
141
+ powerpackLicense = await (0, powerpack_1.getPowerpackLicenseInformation)();
142
+ }
143
+ catch { }
124
144
  return {
125
145
  pm,
146
+ powerpackLicense,
147
+ powerpackPlugins,
126
148
  pmVersion,
127
149
  localPlugins,
128
150
  communityPlugins,
@@ -197,6 +219,10 @@ function findMisalignedPackagesForPackage(base) {
197
219
  }
198
220
  : undefined;
199
221
  }
222
+ function findInstalledPowerpackPlugins() {
223
+ const installedPlugins = (0, installed_plugins_1.findInstalledPlugins)();
224
+ return installedPlugins.filter((dep) => new RegExp('@nx/powerpack*').test(dep.name));
225
+ }
200
226
  function findInstalledCommunityPlugins() {
201
227
  const installedPlugins = (0, installed_plugins_1.findInstalledPlugins)();
202
228
  return installedPlugins.filter((dep) => dep.name !== 'nx' &&