@nestjs/cli
Advanced tools
Comparing version 2.0.0-rc.1 to 2.0.0-rc.2
@@ -9,4 +9,5 @@ import { Asset } from './asset'; | ||
private isError(error); | ||
private createRecursiveDirectory(folder); | ||
private createDirectory(folder); | ||
private emitFile(asset); | ||
} |
@@ -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": { |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
163030
3351
3