@nestjs/cli 10.2.0 → 10.3.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.
@@ -21,7 +21,7 @@ jobs:
21
21
  build:
22
22
  working_directory: ~/nest
23
23
  docker:
24
- - image: cimg/node:21.0
24
+ - image: cimg/node:21.5
25
25
  steps:
26
26
  - checkout
27
27
  - run:
@@ -43,7 +43,7 @@ jobs:
43
43
  unit_tests:
44
44
  working_directory: ~/nest
45
45
  docker:
46
- - image: cimg/node:21.0
46
+ - image: cimg/node:21.5
47
47
  steps:
48
48
  - checkout
49
49
  - *restore-cache
@@ -8,9 +8,14 @@ interface PackageJsonDependencies {
8
8
  interface NestDependency {
9
9
  name: string;
10
10
  value: string;
11
+ packageName: string;
12
+ }
13
+ interface NestDependencyWarnings {
14
+ [key: string]: Array<NestDependency>;
11
15
  }
12
16
  export declare class InfoAction extends AbstractAction {
13
17
  private manager;
18
+ private warningMessageDependenciesWhiteList;
14
19
  handle(): Promise<void>;
15
20
  private displayBanner;
16
21
  private displaySystemInformation;
@@ -20,6 +25,8 @@ export declare class InfoAction extends AbstractAction {
20
25
  displayCliVersion(): void;
21
26
  readProjectPackageDependencies(): PackageJsonDependencies;
22
27
  displayNestVersions(dependencies: PackageJsonDependencies): void;
28
+ displayWarningMessage(nestDependencies: NestDependency[]): void;
29
+ buildNestVersionsWarningMessage(nestDependencies: NestDependency[]): NestDependencyWarnings;
23
30
  buildNestVersionsMessage(dependencies: PackageJsonDependencies): NestDependency[];
24
31
  collectNestDependencies(dependencies: PackageJsonDependencies): NestDependency[];
25
32
  format(dependencies: NestDependency[]): NestDependency[];
@@ -4,12 +4,26 @@ exports.InfoAction = void 0;
4
4
  const chalk = require("chalk");
5
5
  const fs_1 = require("fs");
6
6
  const os_1 = require("os");
7
- const osName = require("os-name");
8
7
  const path_1 = require("path");
9
8
  const package_managers_1 = require("../lib/package-managers");
10
9
  const ui_1 = require("../lib/ui");
11
10
  const abstract_action_1 = require("./abstract.action");
11
+ const os_info_utils_1 = require("../lib/utils/os-info.utils");
12
12
  class InfoAction extends abstract_action_1.AbstractAction {
13
+ constructor() {
14
+ super(...arguments);
15
+ // Nest dependencies whitelist used to compare minor version
16
+ this.warningMessageDependenciesWhiteList = [
17
+ '@nestjs/core',
18
+ '@nestjs/common',
19
+ '@nestjs/schematics',
20
+ '@nestjs/platform-express',
21
+ '@nestjs/platform-fastify',
22
+ '@nestjs/platform-socket.io',
23
+ '@nestjs/platform-ws',
24
+ '@nestjs/websockets',
25
+ ];
26
+ }
13
27
  async handle() {
14
28
  this.manager = await package_managers_1.PackageManagerFactory.find();
15
29
  this.displayBanner();
@@ -21,7 +35,7 @@ class InfoAction extends abstract_action_1.AbstractAction {
21
35
  }
22
36
  async displaySystemInformation() {
23
37
  console.info(chalk.green('[System Information]'));
24
- console.info('OS Version :', chalk.blue(osName((0, os_1.platform)(), (0, os_1.release)())));
38
+ console.info('OS Version :', chalk.blue((0, os_info_utils_1.default)((0, os_1.platform)(), (0, os_1.release)()), (0, os_1.release)()));
25
39
  console.info('NodeJS Version :', chalk.blue(process.version));
26
40
  await this.displayPackageManagerVersion();
27
41
  }
@@ -65,7 +79,64 @@ class InfoAction extends abstract_action_1.AbstractAction {
65
79
  return dependencies;
66
80
  }
67
81
  displayNestVersions(dependencies) {
68
- this.buildNestVersionsMessage(dependencies).forEach((dependency) => console.info(dependency.name, chalk.blue(dependency.value)));
82
+ const nestDependencies = this.buildNestVersionsMessage(dependencies);
83
+ nestDependencies.forEach((dependency) => console.info(dependency.name, chalk.blue(dependency.value)));
84
+ this.displayWarningMessage(nestDependencies);
85
+ }
86
+ displayWarningMessage(nestDependencies) {
87
+ try {
88
+ const warnings = this.buildNestVersionsWarningMessage(nestDependencies);
89
+ const minorVersions = Object.keys(warnings);
90
+ if (minorVersions.length > 0) {
91
+ console.info('\r');
92
+ console.info(chalk.yellow('[Warnings]'));
93
+ console.info('The following packages are not in the same minor version');
94
+ console.info('This could lead to runtime errors');
95
+ minorVersions.forEach((version) => {
96
+ console.info(chalk.bold(`* Under version ${version}`));
97
+ warnings[version].forEach(({ packageName, value }) => {
98
+ console.info(`- ${packageName} ${value}`);
99
+ });
100
+ });
101
+ }
102
+ }
103
+ catch {
104
+ console.info('\t');
105
+ console.error(chalk.red(ui_1.MESSAGES.NEST_INFORMATION_PACKAGE_WARNING_FAILED(this.warningMessageDependenciesWhiteList)));
106
+ }
107
+ }
108
+ buildNestVersionsWarningMessage(nestDependencies) {
109
+ const unsortedWarnings = nestDependencies.reduce((acc, { name, packageName, value }) => {
110
+ if (!this.warningMessageDependenciesWhiteList.includes(packageName)) {
111
+ return acc;
112
+ }
113
+ const cleanedValue = value.replace(/[^\d.]/g, '');
114
+ const [major, minor] = cleanedValue.split('.');
115
+ const minorVersion = `${major}.${minor}`;
116
+ acc[minorVersion] = [
117
+ ...(acc[minorVersion] || []),
118
+ { name, packageName, value },
119
+ ];
120
+ return acc;
121
+ }, {});
122
+ const unsortedMinorVersions = Object.keys(unsortedWarnings);
123
+ if (unsortedMinorVersions.length <= 1) {
124
+ return {};
125
+ }
126
+ const sortedMinorVersions = unsortedMinorVersions.sort((versionA, versionB) => {
127
+ const numA = parseFloat(versionA);
128
+ const numB = parseFloat(versionB);
129
+ if (isNaN(numA) && isNaN(numB)) {
130
+ // If both are not valid numbers, maintain the current order.
131
+ return 0;
132
+ }
133
+ // NaN is considered greater than any number, so if numA is NaN, place it later.
134
+ return isNaN(numA) ? 1 : isNaN(numB) ? -1 : numB - numA;
135
+ });
136
+ return sortedMinorVersions.reduce((warnings, minorVersion) => {
137
+ warnings[minorVersion] = unsortedWarnings[minorVersion];
138
+ return warnings;
139
+ }, {});
69
140
  }
70
141
  buildNestVersionsMessage(dependencies) {
71
142
  const nestDependencies = this.collectNestDependencies(dependencies);
@@ -83,6 +154,7 @@ class InfoAction extends abstract_action_1.AbstractAction {
83
154
  nestDependencies.push({
84
155
  name: `${key.replace(/@nestjs\//, '').replace(/@.*/, '')} version`,
85
156
  value: value || dependencies[key].version,
157
+ packageName: key,
86
158
  });
87
159
  }
88
160
  });
@@ -91,7 +91,7 @@ class StartAction extends build_action_1.BuildAction {
91
91
  }
92
92
  const sourceMapsRegisterPath = this.getSourceMapSupportPkg();
93
93
  if (sourceMapsRegisterPath !== undefined) {
94
- processArgs.unshift(`-r ${sourceMapsRegisterPath}`);
94
+ processArgs.unshift(`-r "${sourceMapsRegisterPath}"`);
95
95
  }
96
96
  return (0, child_process_1.spawn)(binaryToRun, processArgs, {
97
97
  stdio: 'inherit',
@@ -16,6 +16,7 @@ export declare const MESSAGES: {
16
16
  START_COMMAND: (name: string) => string;
17
17
  PACKAGE_MANAGER_INSTALLATION_FAILED: (commandToRunManually: string) => string;
18
18
  NEST_INFORMATION_PACKAGE_MANAGER_FAILED: string;
19
+ NEST_INFORMATION_PACKAGE_WARNING_FAILED: (nestDependencies: string[]) => string;
19
20
  LIBRARY_INSTALLATION_FAILED_BAD_PACKAGE: (name: string) => string;
20
21
  LIBRARY_INSTALLATION_FAILED_NO_LIBRARY: string;
21
22
  LIBRARY_INSTALLATION_STARTS: string;
@@ -24,6 +24,7 @@ exports.MESSAGES = {
24
24
  PACKAGE_MANAGER_INSTALLATION_FAILED: (commandToRunManually) => `${emojis_1.EMOJIS.SCREAM} Packages installation failed!\nIn case you don't see any errors above, consider manually running the failed command ${commandToRunManually} to see more details on why it errored out.`,
25
25
  // tslint:disable-next-line:max-line-length
26
26
  NEST_INFORMATION_PACKAGE_MANAGER_FAILED: `${emojis_1.EMOJIS.SMIRK} cannot read your project package.json file, are you inside your project directory?`,
27
+ NEST_INFORMATION_PACKAGE_WARNING_FAILED: (nestDependencies) => `${emojis_1.EMOJIS.SMIRK} failed to compare dependencies versions, please check that following packages are in the same minor version : \n ${nestDependencies.join('\n')}`,
27
28
  LIBRARY_INSTALLATION_FAILED_BAD_PACKAGE: (name) => `Unable to install library ${name} because package did not install. Please check package name.`,
28
29
  LIBRARY_INSTALLATION_FAILED_NO_LIBRARY: 'No library found.',
29
30
  LIBRARY_INSTALLATION_STARTS: 'Starting library setup...',
@@ -0,0 +1 @@
1
+ export default function osName(platform: string, release: string): string;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ function osName(platform, release) {
4
+ switch (platform) {
5
+ case 'darwin':
6
+ return Number(release.split('.')[0]) > 15 ? 'macOS' : 'OS X';
7
+ case 'linux':
8
+ return 'Linux';
9
+ case 'win32':
10
+ return 'Windows';
11
+ case 'freebsd':
12
+ return 'FreeBSD';
13
+ case 'openbsd':
14
+ return 'OpenBSD';
15
+ case 'sunos':
16
+ return 'Solaris';
17
+ case 'android':
18
+ return 'Android';
19
+ default:
20
+ return platform;
21
+ }
22
+ }
23
+ exports.default = osName;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nestjs/cli",
3
- "version": "10.2.0",
3
+ "version": "10.3.0",
4
4
  "description": "Nest - modern, fast, powerful node.js web framework (@cli)",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -38,55 +38,54 @@
38
38
  },
39
39
  "homepage": "https://github.com/nestjs/nest-cli#readme",
40
40
  "dependencies": {
41
- "@angular-devkit/core": "16.2.7",
42
- "@angular-devkit/schematics": "16.2.7",
43
- "@angular-devkit/schematics-cli": "16.2.7",
41
+ "@angular-devkit/core": "17.0.9",
42
+ "@angular-devkit/schematics": "17.0.9",
43
+ "@angular-devkit/schematics-cli": "17.0.9",
44
44
  "@nestjs/schematics": "^10.0.1",
45
45
  "chalk": "4.1.2",
46
46
  "chokidar": "3.5.3",
47
47
  "cli-table3": "0.6.3",
48
48
  "commander": "4.1.1",
49
- "fork-ts-checker-webpack-plugin": "9.0.0",
50
- "glob": "10.3.4",
49
+ "fork-ts-checker-webpack-plugin": "9.0.2",
50
+ "glob": "10.3.10",
51
51
  "inquirer": "8.2.6",
52
52
  "node-emoji": "1.11.0",
53
53
  "ora": "5.4.1",
54
- "os-name": "4.0.1",
55
54
  "rimraf": "4.4.1",
56
55
  "shelljs": "0.8.5",
57
56
  "source-map-support": "0.5.21",
58
57
  "tree-kill": "1.2.2",
59
58
  "tsconfig-paths": "4.2.0",
60
59
  "tsconfig-paths-webpack-plugin": "4.1.0",
61
- "typescript": "5.2.2",
60
+ "typescript": "5.3.3",
62
61
  "webpack": "5.89.0",
63
62
  "webpack-node-externals": "3.0.0"
64
63
  },
65
64
  "devDependencies": {
66
- "@commitlint/cli": "18.0.0",
67
- "@commitlint/config-angular": "18.0.0",
68
- "@swc/cli": "0.1.62",
69
- "@swc/core": "1.3.94",
65
+ "@commitlint/cli": "18.4.4",
66
+ "@commitlint/config-angular": "18.4.4",
67
+ "@swc/cli": "0.1.63",
68
+ "@swc/core": "1.3.102",
70
69
  "@types/inquirer": "9.0.3",
71
- "@types/jest": "29.5.6",
72
- "@types/node": "18.18.6",
70
+ "@types/jest": "29.5.11",
71
+ "@types/node": "20.10.7",
73
72
  "@types/node-emoji": "1.8.2",
74
- "@types/shelljs": "0.8.14",
75
- "@types/webpack-node-externals": "3.0.3",
76
- "@typescript-eslint/eslint-plugin": "6.8.0",
77
- "@typescript-eslint/parser": "6.8.0",
73
+ "@types/shelljs": "0.8.15",
74
+ "@types/webpack-node-externals": "3.0.4",
75
+ "@typescript-eslint/eslint-plugin": "6.18.0",
76
+ "@typescript-eslint/parser": "6.18.0",
78
77
  "delete-empty": "3.0.0",
79
- "eslint": "8.52.0",
80
- "eslint-config-prettier": "9.0.0",
78
+ "eslint": "8.56.0",
79
+ "eslint-config-prettier": "9.1.0",
81
80
  "gulp": "4.0.2",
82
81
  "gulp-clean": "0.4.0",
83
82
  "husky": "8.0.3",
84
83
  "jest": "29.7.0",
85
- "lint-staged": "15.0.2",
86
- "prettier": "3.0.3",
87
- "release-it": "16.2.1",
84
+ "lint-staged": "15.2.0",
85
+ "prettier": "3.1.1",
86
+ "release-it": "17.0.1",
88
87
  "ts-jest": "29.1.1",
89
- "ts-loader": "9.5.0"
88
+ "ts-loader": "9.5.1"
90
89
  },
91
90
  "lint-staged": {
92
91
  "**/*.{ts,json}": []