Socket
Socket
Sign inDemoInstall

@nestjs/cli

Package Overview
Dependencies
Maintainers
3
Versions
222
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@nestjs/cli - npm Package Compare versions

Comparing version 2.0.0-rc.1 to 2.0.0-rc.2

1

bin/commands/generate/asset.emitter.d.ts

@@ -9,4 +9,5 @@ import { Asset } from './asset';

private isError(error);
private createRecursiveDirectory(folder);
private createDirectory(folder);
private emitFile(asset);
}

34

bin/commands/generate/asset.emitter.js

@@ -21,6 +21,4 @@ "use strict";

return __awaiter(this, void 0, void 0, function* () {
this.logger.debug(color_service_1.ColorService.blue('[DEBUG]'), 'emit asset', JSON.stringify(asset, null, 2));
if (!(yield this.isDirectory(asset.directory))) {
yield this.createDirectory(asset.directory);
}
this.logger.debug(color_service_1.ColorService.blue('[DEBUG]'), `- ${AssetEmitter.name}::emit() -`, `asset : ${JSON.stringify(asset, null, 2)}`);
yield this.createRecursiveDirectory(asset.directory);
yield this.emitFile(asset);

@@ -31,2 +29,3 @@ });

return __awaiter(this, void 0, void 0, function* () {
this.logger.debug(color_service_1.ColorService.blue('[DEBUG]'), `- ${AssetEmitter.name}::isDirectory() -`, `folder : ${folder}`);
return new Promise((resolve) => {

@@ -42,6 +41,26 @@ fs.stat(folder, (error, stats) => {

}
createRecursiveDirectory(folder) {
return __awaiter(this, void 0, void 0, function* () {
this.logger.debug(color_service_1.ColorService.blue('[DEBUG]'), `- ${AssetEmitter.name}::createRecursiveDirectory() -`, `folder : ${folder}`);
const segments = folder.split(path.sep);
return segments
.reduce((parentPromise, current) => __awaiter(this, void 0, void 0, function* () {
return parentPromise.then((parent) => __awaiter(this, void 0, void 0, function* () {
const directory = path.join(parent, current);
if (!(yield this.isDirectory(directory))) {
yield this.createDirectory(directory);
}
return directory;
}));
}), Promise.resolve(`${path.sep}${segments[0]}`));
});
}
createDirectory(folder) {
return __awaiter(this, void 0, void 0, function* () {
return new Promise((resolve) => {
fs.mkdir(folder, () => {
this.logger.debug(color_service_1.ColorService.blue('[DEBUG]'), `- ${AssetEmitter.name}::createDirectory() -`, `folder : ${folder}`);
return new Promise((resolve, reject) => {
fs.mkdir(folder, (error) => {
if (error !== undefined && error !== null) {
reject(error);
}
resolve();

@@ -54,2 +73,3 @@ });

return __awaiter(this, void 0, void 0, function* () {
this.logger.debug(color_service_1.ColorService.blue('[DEBUG]'), `- ${AssetEmitter.name}::emitFile() -`, `asset : ${JSON.stringify(asset, null, 2)}`);
return new Promise((resolve, reject) => {

@@ -62,3 +82,3 @@ const filename = path.join(asset.directory, asset.filename);

else {
this.logger.info(color_service_1.ColorService.green('create'), filename);
this.logger.info(color_service_1.ColorService.green(' create'), filename);
return resolve();

@@ -65,0 +85,0 @@ }

@@ -16,3 +16,3 @@ "use strict";

generate(asset) {
this.logger.debug(color_service_1.ColorService.blue('[DEBUG]'), 'generate', asset.type, 'asset', asset.name);
this.logger.debug(color_service_1.ColorService.blue('[DEBUG]'), `- ${AssetGenerator.name}::generate() -`, `asset : ${JSON.stringify(asset, null, 2)}`);
return Object.assign({

@@ -19,0 +19,0 @@ className: this.className.generate(asset),

@@ -36,6 +36,6 @@ "use strict";

return __awaiter(this, void 0, void 0, function* () {
this.logger.debug(color_service_1.ColorService.blue('[DEBUG]'), 'generate asset :', JSON.stringify(args, null, 2));
this.logger.debug(color_service_1.ColorService.blue('[DEBUG]'), `- ${GenerateHandler.name}::handle() -`, 'args :', JSON.stringify(args, null, 2));
const language = configuration_loader_1.ConfigurationLoader.getProperty('language');
const templates = yield this.templateLoader.load(args.type, language);
const asset = templates
const assets = templates
.map((template) => this.assetGenerator.generate({

@@ -49,6 +49,8 @@ type: args.type,

asset.template = Object.assign({}, this.templateReplacer.replace(asset.template, tokens));
(() => __awaiter(this, void 0, void 0, function* () { return yield this.assetEmitter.emit(asset); }))();
return asset;
})
.find((asset) => asset.filename.indexOf('spec') === -1);
});
for (const asset of assets) {
yield this.assetEmitter.emit(asset);
}
const asset = assets.find((asset) => asset.filename.indexOf('spec') === -1);
const module = yield this.moduleLoader.load(asset);

@@ -55,0 +57,0 @@ const registeredModule = this.moduleRegister.register(asset, module);

import { Asset } from './asset';
import { Logger } from "../../logger/logger.service";
export declare class ModuleImportRegister {
constructor();
private logger;
constructor(logger?: Logger);
register(asset: Asset, module: Asset): Asset;

@@ -5,0 +7,0 @@ private buildLineToInsert(asset, module);

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const color_service_1 = require("../../logger/color.service");
const logger_service_1 = require("../../logger/logger.service");
class ModuleImportRegister {
constructor() { }
constructor(logger = logger_service_1.LoggerService.getLogger()) {
this.logger = logger;
}
register(asset, module) {
this.logger.debug(color_service_1.ColorService.blue('[DEBUG]'), `- ${ModuleImportRegister.name}::register() -`, `asset : ${JSON.stringify(asset, null, 2)}`, `module : ${JSON.stringify(module, null, 2)}`);
const lines = module.template.content.split('\n');

@@ -7,0 +12,0 @@ const insertIndex = lines.findIndex((line) => line === '');

@@ -0,1 +1,2 @@

import { Logger } from "../../logger/logger.service";
export interface ModuleMetadata {

@@ -8,5 +9,8 @@ modules?: string[];

export declare class ModuleMetadataParser {
private logger;
METADATA_REGEX: RegExp;
constructor();
constructor(logger?: Logger);
parse(content: string): ModuleMetadata;
private format(content);
private extractMetadataText(content);
}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const color_service_1 = require("../../logger/color.service");
const logger_service_1 = require("../../logger/logger.service");
class ModuleMetadataParser {
constructor() {
constructor(logger = logger_service_1.LoggerService.getLogger()) {
this.logger = logger;
this.METADATA_REGEX = new RegExp('@Module\\(([\\s\\S]*?)\\)');
}
parse(content) {
return JSON.parse(this.METADATA_REGEX.exec(content)[1].replace(/([a-zA-Z]+)/g, '"$1"'));
this.logger.debug(color_service_1.ColorService.blue('[DEBUG]'), `- ${ModuleMetadataParser.name}::parse() -`, `content : ${content}`);
return JSON.parse(this.format(this.extractMetadataText(content)));
}
format(content) {
const contentFormat = content
.replace(/([a-zA-Z]+)/g, '"$1"')
.replace(/(,)(\n})/, '$2');
this.logger.debug(color_service_1.ColorService.blue('[DEBUG]'), `- ${ModuleMetadataParser.name}::format() -`, `contentFormat : ${contentFormat}`);
return contentFormat;
}
extractMetadataText(content) {
this.logger.debug(color_service_1.ColorService.blue('[DEBUG]'), `- ${ModuleMetadataParser.name}::extractMetadataText() -`, `content : ${content}`);
const text = this.METADATA_REGEX.exec(content)[1];
this.logger.debug(color_service_1.ColorService.blue('[DEBUG]'), `- ${ModuleMetadataParser.name}::extractMetadataText() -`, `text : ${text}`);
return text;
}
}
exports.ModuleMetadataParser = ModuleMetadataParser;
import { ModuleMetadataParser } from './module-metadata.parser';
import { Asset } from './asset';
import { Logger } from "../../logger/logger.service";
export declare class ModuleMetadataRegister {
private logger;
private parser;
constructor(parser?: ModuleMetadataParser);
constructor(logger?: Logger, parser?: ModuleMetadataParser);
register(asset: Asset, module: Asset): Asset;

@@ -7,0 +9,0 @@ private updateMetadata(metadata, asset);

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const module_metadata_parser_1 = require("./module-metadata.parser");
const color_service_1 = require("../../logger/color.service");
const logger_service_1 = require("../../logger/logger.service");
class ModuleMetadataRegister {
constructor(parser = new module_metadata_parser_1.ModuleMetadataParser()) {
constructor(logger = logger_service_1.LoggerService.getLogger(), parser = new module_metadata_parser_1.ModuleMetadataParser()) {
this.logger = logger;
this.parser = parser;
}
register(asset, module) {
this.logger.debug(color_service_1.ColorService.blue('[DEBUG]'), `- ${ModuleMetadataRegister.name}::register() -`, `asset : ${JSON.stringify(asset, null, 2)}`, `module : ${JSON.stringify(module, null, 2)}`);
const metadata = this.parser.parse(module.template.content);

@@ -10,0 +14,0 @@ const updatedMetadata = this.updateMetadata(Object.assign({}, metadata), asset);

@@ -24,3 +24,3 @@ "use strict";

fs.writeFile(filename, module.template.content, (error) => {
this.logger.info(color_service_1.ColorService.yellow('update'), filename);
this.logger.info(color_service_1.ColorService.yellow(' update'), filename);
resolve();

@@ -27,0 +27,0 @@ });

import { Asset } from './asset';
import { Logger } from "../../logger/logger.service";
export declare class ModuleLoader {
constructor();
private logger;
constructor(logger?: Logger);
load(asset: Asset): Promise<Asset>;

@@ -5,0 +7,0 @@ private findModuleDirectoryFrom(directory, assetFilename);

@@ -13,10 +13,18 @@ "use strict";

const fs = require("fs");
const color_service_1 = require("../../logger/color.service");
const logger_service_1 = require("../../logger/logger.service");
class ModuleLoader {
constructor() { }
constructor(logger = logger_service_1.LoggerService.getLogger()) {
this.logger = logger;
}
load(asset) {
return __awaiter(this, void 0, void 0, function* () {
this.logger.debug(color_service_1.ColorService.blue('[DEBUG]'), `- ${ModuleLoader.name}::load() -`, `asset : ${JSON.stringify(asset, null, 2)}`);
const directory = yield this.findModuleDirectoryFrom(asset.directory, asset.filename);
this.logger.debug(color_service_1.ColorService.blue('[DEBUG]'), `- ${ModuleLoader.name}::load() -`, `directory : ${directory}`);
const files = yield this.read(directory);
this.logger.debug(color_service_1.ColorService.blue('[DEBUG]'), `- ${ModuleLoader.name}::load() -`, `files : ${files}`);
const filename = files.find((filename) => filename.indexOf('module') !== -1);
const content = yield this.getModuleContent(path.join(asset.directory, filename));
this.logger.debug(color_service_1.ColorService.blue('[DEBUG]'), `- ${ModuleLoader.name}::load() -`, `filename : ${filename}`);
const content = yield this.getModuleContent(path.join(directory, filename));
return {

@@ -36,3 +44,5 @@ type: 'module',

return __awaiter(this, void 0, void 0, function* () {
this.logger.debug(color_service_1.ColorService.blue('[DEBUG]'), `- ${ModuleLoader.name}::findModuleDirectoryFrom() -`, `directory : ${directory}`, `assetFilename : ${assetFilename}`);
const files = yield this.read(directory);
this.logger.debug(color_service_1.ColorService.blue('[DEBUG]'), `- ${ModuleLoader.name}::findModuleDirectoryFrom() -`, `files : ${files}`);
if (files.find((filename) => this.isAModule(filename) && filename !== assetFilename) !== undefined) {

@@ -49,2 +59,3 @@ return directory;

return __awaiter(this, void 0, void 0, function* () {
this.logger.debug(color_service_1.ColorService.blue('[DEBUG]'), `- ${ModuleLoader.name}::read() -`, `files : ${directory}`);
return new Promise((resolve) => {

@@ -61,2 +72,3 @@ fs.readdir(directory, (error, files) => {

computeParentPathFrom(directory) {
this.logger.debug(color_service_1.ColorService.blue('[DEBUG]'), `- ${ModuleLoader.name}::computeParentPathFrom() -`, `directory : ${directory}`);
const elements = directory.split(path.sep);

@@ -68,5 +80,9 @@ elements.pop();

return __awaiter(this, void 0, void 0, function* () {
return new Promise((resolve) => {
this.logger.debug(color_service_1.ColorService.blue('[DEBUG]'), `- ${ModuleLoader.name}::getModuleContent() -`, `moduleFilename : ${moduleFilename}`);
return new Promise((resolve, reject) => {
fs.readFile(moduleFilename, (error, buffer) => {
resolve(buffer.toString());
if (error !== undefined && error !== null) {
return reject(error);
}
return resolve(buffer.toString());
});

@@ -73,0 +89,0 @@ });

import { ModuleImportRegister } from './module-import.register';
import { ModuleMetadataRegister } from './module-metadata.register';
import { Asset } from './asset';
import { Logger } from "../../logger/logger.service";
export declare class ModuleRegister {
private logger;
private importRegister;
private metadataRegister;
constructor(importRegister?: ModuleImportRegister, metadataRegister?: ModuleMetadataRegister);
constructor(logger?: Logger, importRegister?: ModuleImportRegister, metadataRegister?: ModuleMetadataRegister);
register(asset: Asset, module: Asset): Asset;
}

@@ -5,4 +5,7 @@ "use strict";

const module_metadata_register_1 = require("./module-metadata.register");
const logger_service_1 = require("../../logger/logger.service");
const color_service_1 = require("../../logger/color.service");
class ModuleRegister {
constructor(importRegister = new module_import_register_1.ModuleImportRegister(), metadataRegister = new module_metadata_register_1.ModuleMetadataRegister()) {
constructor(logger = logger_service_1.LoggerService.getLogger(), importRegister = new module_import_register_1.ModuleImportRegister(), metadataRegister = new module_metadata_register_1.ModuleMetadataRegister()) {
this.logger = logger;
this.importRegister = importRegister;

@@ -12,2 +15,3 @@ this.metadataRegister = metadataRegister;

register(asset, module) {
this.logger.debug(color_service_1.ColorService.blue('[DEBUG]'), `- ${ModuleRegister.name}::register() -`, `asset : ${JSON.stringify(asset, null, 2)}`, `module : ${JSON.stringify(module, null, 2)}`);
let toReturn = this.importRegister.register(asset, Object.assign({}, module));

@@ -14,0 +18,0 @@ return this.metadataRegister.register(asset, toReturn);

@@ -33,3 +33,41 @@ "use strict";

});
it('should parse with empty metadata', () => {
const content = '' +
'import { AppController } from \'./app.controller\';\n' +
'import { UsersModule } from \'./users.module\';\n' +
'\n' +
'@Module({\n' +
' imports: [],\n' +
' controllers: [AppController],\n' +
' components: []\n' +
'})\n' +
'export class ApplicationModule {}\n';
chai_1.expect(parser.parse(content)).to.be.deep.equal({
imports: [],
controllers: [
'AppController'
],
components: []
});
});
it('should remove the last METADATA coma if it exist', () => {
const content = '' +
'import { AppController } from \'./app.controller\';\n' +
'import { UsersModule } from \'./users.module\';\n' +
'\n' +
'@Module({\n' +
' imports: [],\n' +
' controllers: [AppController],\n' +
' components: [],\n' +
'})\n' +
'export class ApplicationModule {}\n';
chai_1.expect(parser.parse(content)).to.be.deep.equal({
imports: [],
controllers: [
'AppController'
],
components: []
});
});
});
});
{
"name": "@nestjs/cli",
"version": "2.0.0-rc.1",
"version": "2.0.0-rc.2",
"license": "MIT",

@@ -5,0 +5,0 @@ "publishConfig": {

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc