@nestjs/cli 10.2.1 → 10.3.1
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/.circleci/config.yml +2 -2
- package/actions/info.action.d.ts +7 -0
- package/actions/info.action.js +75 -3
- package/lib/compiler/assets-manager.js +2 -3
- package/lib/compiler/defaults/swc-defaults.d.ts +4 -0
- package/lib/compiler/defaults/swc-defaults.js +2 -0
- package/lib/configuration/defaults.d.ts +1 -1
- package/lib/configuration/defaults.js +23 -1
- package/lib/configuration/nest-configuration.loader.d.ts +1 -1
- package/lib/configuration/nest-configuration.loader.js +12 -6
- package/lib/readers/file-system.reader.d.ts +4 -4
- package/lib/readers/file-system.reader.js +28 -11
- package/lib/readers/reader.d.ts +8 -3
- package/lib/readers/reader.js +9 -0
- package/lib/ui/messages.d.ts +1 -0
- package/lib/ui/messages.js +1 -0
- package/lib/utils/os-info.utils.d.ts +1 -0
- package/lib/utils/os-info.utils.js +23 -0
- package/package.json +25 -26
package/.circleci/config.yml
CHANGED
|
@@ -21,7 +21,7 @@ jobs:
|
|
|
21
21
|
build:
|
|
22
22
|
working_directory: ~/nest
|
|
23
23
|
docker:
|
|
24
|
-
- image: cimg/node:21.
|
|
24
|
+
- image: cimg/node:21.6
|
|
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.
|
|
46
|
+
- image: cimg/node:21.6
|
|
47
47
|
steps:
|
|
48
48
|
- checkout
|
|
49
49
|
- *restore-cache
|
package/actions/info.action.d.ts
CHANGED
|
@@ -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[];
|
package/actions/info.action.js
CHANGED
|
@@ -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(
|
|
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)
|
|
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
|
});
|
|
@@ -53,7 +53,7 @@ class AssetsManager {
|
|
|
53
53
|
outDir: item.outDir || outDir,
|
|
54
54
|
glob: (0, path_1.join)(sourceRoot, item.include),
|
|
55
55
|
exclude: item.exclude ? (0, path_1.join)(sourceRoot, item.exclude) : undefined,
|
|
56
|
-
flat: item.flat,
|
|
56
|
+
flat: item.flat, // deprecated field
|
|
57
57
|
watchAssets: item.watchAssets,
|
|
58
58
|
};
|
|
59
59
|
});
|
|
@@ -76,8 +76,7 @@ class AssetsManager {
|
|
|
76
76
|
this.watchers.push(watcher);
|
|
77
77
|
}
|
|
78
78
|
else {
|
|
79
|
-
const files = (0, glob_1.sync)(item.glob, { ignore: item.exclude })
|
|
80
|
-
.filter((matched) => (0, fs_1.statSync)(matched).isFile());
|
|
79
|
+
const files = (0, glob_1.sync)(item.glob, { ignore: item.exclude }).filter((matched) => (0, fs_1.statSync)(matched).isFile());
|
|
81
80
|
for (const path of files) {
|
|
82
81
|
this.actionOnFile({ ...option, path, action: 'change' });
|
|
83
82
|
}
|
|
@@ -2,6 +2,7 @@ import * as ts from 'typescript';
|
|
|
2
2
|
import { Configuration } from '../../configuration';
|
|
3
3
|
export declare const swcDefaultsFactory: (tsOptions?: ts.CompilerOptions, configuration?: Configuration) => {
|
|
4
4
|
swcOptions: {
|
|
5
|
+
sourceMaps: string | boolean | undefined;
|
|
5
6
|
module: {
|
|
6
7
|
type: string;
|
|
7
8
|
};
|
|
@@ -33,6 +34,7 @@ export declare const swcDefaultsFactory: (tsOptions?: ts.CompilerOptions, config
|
|
|
33
34
|
includeDotfiles: boolean;
|
|
34
35
|
quiet: boolean;
|
|
35
36
|
watch: boolean;
|
|
37
|
+
stripLeadingPaths: boolean;
|
|
36
38
|
} | {
|
|
37
39
|
swcrcPath?: string | undefined;
|
|
38
40
|
outDir: string;
|
|
@@ -43,6 +45,7 @@ export declare const swcDefaultsFactory: (tsOptions?: ts.CompilerOptions, config
|
|
|
43
45
|
includeDotfiles: boolean;
|
|
44
46
|
quiet: boolean;
|
|
45
47
|
watch: boolean;
|
|
48
|
+
stripLeadingPaths: boolean;
|
|
46
49
|
} | {
|
|
47
50
|
configPath?: string | undefined;
|
|
48
51
|
outDir: string;
|
|
@@ -53,5 +56,6 @@ export declare const swcDefaultsFactory: (tsOptions?: ts.CompilerOptions, config
|
|
|
53
56
|
includeDotfiles: boolean;
|
|
54
57
|
quiet: boolean;
|
|
55
58
|
watch: boolean;
|
|
59
|
+
stripLeadingPaths: boolean;
|
|
56
60
|
};
|
|
57
61
|
};
|
|
@@ -7,6 +7,7 @@ const swcDefaultsFactory = (tsOptions, configuration) => {
|
|
|
7
7
|
: {};
|
|
8
8
|
return {
|
|
9
9
|
swcOptions: {
|
|
10
|
+
sourceMaps: tsOptions?.sourceMap || (tsOptions?.inlineSourceMap && 'inline'),
|
|
10
11
|
module: {
|
|
11
12
|
type: 'commonjs',
|
|
12
13
|
},
|
|
@@ -38,6 +39,7 @@ const swcDefaultsFactory = (tsOptions, configuration) => {
|
|
|
38
39
|
includeDotfiles: false,
|
|
39
40
|
quiet: false,
|
|
40
41
|
watch: false,
|
|
42
|
+
stripLeadingPaths: true,
|
|
41
43
|
...builderOptions,
|
|
42
44
|
},
|
|
43
45
|
};
|
|
@@ -3,4 +3,4 @@ export declare const defaultConfiguration: Required<Configuration>;
|
|
|
3
3
|
export declare const defaultTsconfigFilename: string;
|
|
4
4
|
export declare const defaultWebpackConfigFilename = "webpack.config.js";
|
|
5
5
|
export declare const defaultOutDir = "dist";
|
|
6
|
-
export declare const defaultGitIgnore = "# compiled output\n/dist\n/node_modules\n\n# Logs\nlogs\n*.log\nnpm-debug.log*\npnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\nlerna-debug.log*\n\n# OS\n.DS_Store\n\n# Tests\n/coverage\n/.nyc_output\n\n# IDEs and editors\n/.idea\n.project\n.classpath\n.c9/\n*.launch\n.settings/\n*.sublime-workspace\n\n# IDE - VSCode\n.vscode/*\n!.vscode/settings.json\n!.vscode/tasks.json\n!.vscode/launch.json\n!.vscode/extensions.json";
|
|
6
|
+
export declare const defaultGitIgnore = "# compiled output\n/dist\n/node_modules\n/build\n\n# Logs\nlogs\n*.log\nnpm-debug.log*\npnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\nlerna-debug.log*\n\n# OS\n.DS_Store\n\n# Tests\n/coverage\n/.nyc_output\n\n# IDEs and editors\n/.idea\n.project\n.classpath\n.c9/\n*.launch\n.settings/\n*.sublime-workspace\n\n# IDE - VSCode\n.vscode/*\n!.vscode/settings.json\n!.vscode/tasks.json\n!.vscode/launch.json\n!.vscode/extensions.json\n\n# dotenv environment variable files\n.env\n.env.development.local\n.env.test.local\n.env.production.local\n.env.local\n\n# temp directory\n.temp\n.tmp\n\n# Runtime data\npids\n*.pid\n*.seed\n*.pid.lock\n\n# Diagnostic reports (https://nodejs.org/api/report.html)\nreport.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json\n";
|
|
@@ -30,6 +30,7 @@ exports.defaultOutDir = 'dist';
|
|
|
30
30
|
exports.defaultGitIgnore = `# compiled output
|
|
31
31
|
/dist
|
|
32
32
|
/node_modules
|
|
33
|
+
/build
|
|
33
34
|
|
|
34
35
|
# Logs
|
|
35
36
|
logs
|
|
@@ -61,4 +62,25 @@ lerna-debug.log*
|
|
|
61
62
|
!.vscode/settings.json
|
|
62
63
|
!.vscode/tasks.json
|
|
63
64
|
!.vscode/launch.json
|
|
64
|
-
!.vscode/extensions.json
|
|
65
|
+
!.vscode/extensions.json
|
|
66
|
+
|
|
67
|
+
# dotenv environment variable files
|
|
68
|
+
.env
|
|
69
|
+
.env.development.local
|
|
70
|
+
.env.test.local
|
|
71
|
+
.env.production.local
|
|
72
|
+
.env.local
|
|
73
|
+
|
|
74
|
+
# temp directory
|
|
75
|
+
.temp
|
|
76
|
+
.tmp
|
|
77
|
+
|
|
78
|
+
# Runtime data
|
|
79
|
+
pids
|
|
80
|
+
*.pid
|
|
81
|
+
*.seed
|
|
82
|
+
*.pid.lock
|
|
83
|
+
|
|
84
|
+
# Diagnostic reports (https://nodejs.org/api/report.html)
|
|
85
|
+
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
|
|
86
|
+
`;
|
|
@@ -4,5 +4,5 @@ import { ConfigurationLoader } from './configuration.loader';
|
|
|
4
4
|
export declare class NestConfigurationLoader implements ConfigurationLoader {
|
|
5
5
|
private readonly reader;
|
|
6
6
|
constructor(reader: Reader);
|
|
7
|
-
load(name?: string):
|
|
7
|
+
load(name?: string): Required<Configuration>;
|
|
8
8
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.NestConfigurationLoader = void 0;
|
|
4
|
+
const readers_1 = require("../readers");
|
|
4
5
|
const defaults_1 = require("./defaults");
|
|
5
6
|
/**
|
|
6
7
|
* A cache table that maps some reader (by its name along with the config path)
|
|
@@ -13,23 +14,28 @@ class NestConfigurationLoader {
|
|
|
13
14
|
constructor(reader) {
|
|
14
15
|
this.reader = reader;
|
|
15
16
|
}
|
|
16
|
-
|
|
17
|
+
load(name) {
|
|
17
18
|
const cacheEntryKey = `${this.reader.constructor.name}:${name}`;
|
|
18
19
|
const cachedConfig = loadedConfigsCache.get(cacheEntryKey);
|
|
19
20
|
if (cachedConfig) {
|
|
20
21
|
return cachedConfig;
|
|
21
22
|
}
|
|
22
23
|
let loadedConfig;
|
|
23
|
-
const
|
|
24
|
-
?
|
|
25
|
-
:
|
|
24
|
+
const contentOrError = name
|
|
25
|
+
? this.reader.read(name)
|
|
26
|
+
: this.reader.readAnyOf([
|
|
26
27
|
'nest-cli.json',
|
|
27
28
|
'.nestcli.json',
|
|
28
29
|
'.nest-cli.json',
|
|
29
30
|
'nest.json',
|
|
30
31
|
]);
|
|
31
|
-
if (
|
|
32
|
-
const
|
|
32
|
+
if (contentOrError) {
|
|
33
|
+
const isMissingPersmissionsError = contentOrError instanceof readers_1.ReaderFileLackPersmissionsError;
|
|
34
|
+
if (isMissingPersmissionsError) {
|
|
35
|
+
console.error(contentOrError.message);
|
|
36
|
+
process.exit(1);
|
|
37
|
+
}
|
|
38
|
+
const fileConfig = JSON.parse(contentOrError);
|
|
33
39
|
if (fileConfig.compilerOptions) {
|
|
34
40
|
loadedConfig = {
|
|
35
41
|
...defaults_1.defaultConfiguration,
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Reader } from './reader';
|
|
1
|
+
import { Reader, ReaderFileLackPersmissionsError } from './reader';
|
|
2
2
|
export declare class FileSystemReader implements Reader {
|
|
3
3
|
private readonly directory;
|
|
4
4
|
constructor(directory: string);
|
|
5
|
-
list():
|
|
6
|
-
read(name: string):
|
|
7
|
-
readAnyOf(filenames: string[]):
|
|
5
|
+
list(): string[];
|
|
6
|
+
read(name: string): string;
|
|
7
|
+
readAnyOf(filenames: string[]): string | undefined | ReaderFileLackPersmissionsError;
|
|
8
8
|
}
|
|
@@ -3,26 +3,43 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.FileSystemReader = void 0;
|
|
4
4
|
const fs = require("fs");
|
|
5
5
|
const path = require("path");
|
|
6
|
+
const reader_1 = require("./reader");
|
|
6
7
|
class FileSystemReader {
|
|
7
8
|
constructor(directory) {
|
|
8
9
|
this.directory = directory;
|
|
9
10
|
}
|
|
10
11
|
list() {
|
|
11
|
-
return fs.
|
|
12
|
+
return fs.readdirSync(this.directory);
|
|
12
13
|
}
|
|
13
14
|
read(name) {
|
|
14
|
-
return fs.
|
|
15
|
+
return fs.readFileSync(path.join(this.directory, name), 'utf8');
|
|
15
16
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
readAnyOf(filenames) {
|
|
18
|
+
let firstFilePathFoundButWithInsufficientPermissions;
|
|
19
|
+
for (let id = 0; id < filenames.length; id++) {
|
|
20
|
+
const file = filenames[id];
|
|
21
|
+
try {
|
|
22
|
+
return this.read(file);
|
|
23
|
+
}
|
|
24
|
+
catch (readErr) {
|
|
25
|
+
if (!firstFilePathFoundButWithInsufficientPermissions &&
|
|
26
|
+
typeof readErr?.code === 'string') {
|
|
27
|
+
const isInsufficientPermissionsError = readErr.code === 'EACCES' || readErr.code === 'EPERM';
|
|
28
|
+
if (isInsufficientPermissionsError) {
|
|
29
|
+
firstFilePathFoundButWithInsufficientPermissions = readErr.path;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
const isLastFileToLookFor = id === filenames.length - 1;
|
|
33
|
+
if (!isLastFileToLookFor) {
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
if (firstFilePathFoundButWithInsufficientPermissions) {
|
|
37
|
+
return new reader_1.ReaderFileLackPersmissionsError(firstFilePathFoundButWithInsufficientPermissions, readErr.code);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
return undefined;
|
|
41
|
+
}
|
|
20
42
|
}
|
|
21
|
-
}
|
|
22
|
-
catch (err) {
|
|
23
|
-
return filenames.length > 0
|
|
24
|
-
? await this.readAnyOf(filenames.slice(1, filenames.length))
|
|
25
|
-
: undefined;
|
|
26
43
|
}
|
|
27
44
|
}
|
|
28
45
|
}
|
package/lib/readers/reader.d.ts
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
|
+
export declare class ReaderFileLackPersmissionsError extends Error {
|
|
2
|
+
readonly filePath: string;
|
|
3
|
+
readonly fsErrorCode: string;
|
|
4
|
+
constructor(filePath: string, fsErrorCode: string);
|
|
5
|
+
}
|
|
1
6
|
export interface Reader {
|
|
2
|
-
list(): string[]
|
|
3
|
-
read(name: string): string
|
|
4
|
-
readAnyOf(filenames: string[]): string |
|
|
7
|
+
list(): string[];
|
|
8
|
+
read(name: string): string;
|
|
9
|
+
readAnyOf(filenames: string[]): string | undefined | ReaderFileLackPersmissionsError;
|
|
5
10
|
}
|
package/lib/readers/reader.js
CHANGED
|
@@ -1,2 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ReaderFileLackPersmissionsError = void 0;
|
|
4
|
+
class ReaderFileLackPersmissionsError extends Error {
|
|
5
|
+
constructor(filePath, fsErrorCode) {
|
|
6
|
+
super(`File ${filePath} lacks read permissions!`);
|
|
7
|
+
this.filePath = filePath;
|
|
8
|
+
this.fsErrorCode = fsErrorCode;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.ReaderFileLackPersmissionsError = ReaderFileLackPersmissionsError;
|
package/lib/ui/messages.d.ts
CHANGED
|
@@ -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;
|
package/lib/ui/messages.js
CHANGED
|
@@ -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.
|
|
3
|
+
"version": "10.3.1",
|
|
4
4
|
"description": "Nest - modern, fast, powerful node.js web framework (@cli)",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -38,9 +38,9 @@
|
|
|
38
38
|
},
|
|
39
39
|
"homepage": "https://github.com/nestjs/nest-cli#readme",
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@angular-devkit/core": "
|
|
42
|
-
"@angular-devkit/schematics": "
|
|
43
|
-
"@angular-devkit/schematics-cli": "
|
|
41
|
+
"@angular-devkit/core": "17.1.2",
|
|
42
|
+
"@angular-devkit/schematics": "17.1.2",
|
|
43
|
+
"@angular-devkit/schematics-cli": "17.1.2",
|
|
44
44
|
"@nestjs/schematics": "^10.0.1",
|
|
45
45
|
"chalk": "4.1.2",
|
|
46
46
|
"chokidar": "3.5.3",
|
|
@@ -51,48 +51,47 @@
|
|
|
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.
|
|
62
|
-
"webpack": "5.
|
|
60
|
+
"typescript": "5.3.3",
|
|
61
|
+
"webpack": "5.90.1",
|
|
63
62
|
"webpack-node-externals": "3.0.0"
|
|
64
63
|
},
|
|
65
64
|
"devDependencies": {
|
|
66
|
-
"@commitlint/cli": "18.
|
|
67
|
-
"@commitlint/config-angular": "18.
|
|
68
|
-
"@swc/cli": "0.
|
|
69
|
-
"@swc/core": "1.3.
|
|
65
|
+
"@commitlint/cli": "18.6.0",
|
|
66
|
+
"@commitlint/config-angular": "18.6.0",
|
|
67
|
+
"@swc/cli": "0.3.6",
|
|
68
|
+
"@swc/core": "1.3.107",
|
|
70
69
|
"@types/inquirer": "9.0.3",
|
|
71
|
-
"@types/jest": "29.5.
|
|
72
|
-
"@types/node": "20.
|
|
70
|
+
"@types/jest": "29.5.12",
|
|
71
|
+
"@types/node": "20.11.16",
|
|
73
72
|
"@types/node-emoji": "1.8.2",
|
|
74
|
-
"@types/shelljs": "0.8.
|
|
75
|
-
"@types/webpack-node-externals": "3.0.
|
|
76
|
-
"@typescript-eslint/eslint-plugin": "6.
|
|
77
|
-
"@typescript-eslint/parser": "6.
|
|
73
|
+
"@types/shelljs": "0.8.15",
|
|
74
|
+
"@types/webpack-node-externals": "3.0.4",
|
|
75
|
+
"@typescript-eslint/eslint-plugin": "6.20.0",
|
|
76
|
+
"@typescript-eslint/parser": "6.20.0",
|
|
78
77
|
"delete-empty": "3.0.0",
|
|
79
|
-
"eslint": "8.
|
|
80
|
-
"eslint-config-prettier": "9.
|
|
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
|
-
"husky": "
|
|
82
|
+
"husky": "9.0.10",
|
|
84
83
|
"jest": "29.7.0",
|
|
85
|
-
"lint-staged": "15.
|
|
86
|
-
"prettier": "3.
|
|
87
|
-
"release-it": "
|
|
88
|
-
"ts-jest": "29.1.
|
|
89
|
-
"ts-loader": "9.5.
|
|
84
|
+
"lint-staged": "15.2.1",
|
|
85
|
+
"prettier": "3.2.5",
|
|
86
|
+
"release-it": "17.0.3",
|
|
87
|
+
"ts-jest": "29.1.2",
|
|
88
|
+
"ts-loader": "9.5.1"
|
|
90
89
|
},
|
|
91
90
|
"lint-staged": {
|
|
92
91
|
"**/*.{ts,json}": []
|
|
93
92
|
},
|
|
94
93
|
"peerDependencies": {
|
|
95
|
-
"@swc/cli": "^0.1.62",
|
|
94
|
+
"@swc/cli": "^0.1.62 || ^0.3.0",
|
|
96
95
|
"@swc/core": "^1.3.62"
|
|
97
96
|
},
|
|
98
97
|
"peerDependenciesMeta": {
|