@ducvnv/mirai-cms-role
Version:
<p align="center"> <a href="https://mirailabs.co/" target="blank"><img src="https://mirailabs.co/_next/static/media/logo.2a6685c4.svg" width="120" alt="Nest Logo" /></a> </p>
176 lines (175 loc) • 10.5 kB
JavaScript
;
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function (paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.RouterService = void 0;
const index_1 = require("../../index");
const service_api_1 = __importDefault(require("../api/service.api"));
const common_1 = require("@nestjs/common");
const core_1 = require("@nestjs/core");
const constants_1 = require("@nestjs/common/constants");
let RouterService = class RouterService {
constructor(discoveryService, reflector, applicationConfig, metadataScanner, moduleContainer) {
this.discoveryService = discoveryService;
this.reflector = reflector;
this.applicationConfig = applicationConfig;
this.metadataScanner = metadataScanner;
this.moduleContainer = moduleContainer;
}
syncRouters() {
return __awaiter(this, void 0, void 0, function* () {
try {
const timeStart = new Date().getTime();
let arrayModuleRouter = [];
const globalPrefix = this.applicationConfig.getGlobalPrefix().replace(/^\/|\/$/g, '');
const defaultVersion = this.applicationConfig.getVersioning();
const modules = [...this.moduleContainer.values()];
console.info("1-get modules");
for (const module of modules) {
let moduleRouter = {
pathModule: [],
nameModule: '',
};
const moduleName = module.metatype.name;
const controllers = [...module.controllers.values()];
controllers.forEach((controller) => {
try {
const { instance } = controller;
const prototype = Object.getPrototypeOf(instance);
this.metadataScanner.scanFromPrototype(instance, prototype, (methodName) => {
const method = prototype[methodName];
const apiOperationMetadata = this.reflector.get('swagger/apiOperation', method);
const paths = this.reflector.get('path', method);
const methodType = this.reflector.get('method', method);
const controllerVersion = this.reflector.get(constants_1.VERSION_METADATA, prototype.constructor);
const controllerPath = this.reflector.get(constants_1.PATH_METADATA, prototype.constructor);
const version = `${this.generateVersion(defaultVersion, controllerVersion) || ''}`;
const pathController = controllerPath === '/' ? '' : `/${controllerPath.replace(/^\/|\/$/g, '')}`;
const path = paths === '/' ? '' : `/${paths.replace(/^\/|\/$/g, '')}`;
const prefix = globalPrefix === undefined ? '' : `${globalPrefix.replace(/^\/|\/$/g, '')}`;
const pathMap = `${prefix}${version}${pathController}${path}`.replace(/^\/|\/$/g, '');
switch (Number(methodType)) {
case 1:
moduleRouter.pathModule.push({
method: "POST" /* methodsEnums.POST */.toString(),
path: pathMap,
function: methodName,
description: apiOperationMetadata === undefined ? '' : apiOperationMetadata['description'],
});
break;
case 2:
moduleRouter.pathModule.push({
method: "PUT" /* methodsEnums.PUT */.toString(),
path: pathMap,
function: methodName,
description: apiOperationMetadata === undefined ? '' : apiOperationMetadata['description'],
});
break;
case 3:
moduleRouter.pathModule.push({
method: "DELETE" /* methodsEnums.DELETE */.toString(),
path: pathMap,
function: methodName,
description: apiOperationMetadata === undefined ? '' : apiOperationMetadata['description'],
});
break;
case 4:
moduleRouter.pathModule.push({
method: "PATCH" /* methodsEnums.PATCH */.toString(),
path: pathMap,
function: methodName,
description: apiOperationMetadata === undefined ? '' : apiOperationMetadata['description'],
});
break;
case 0:
moduleRouter.pathModule.push({
method: "GET" /* methodsEnums.GET */.toString(),
path: pathMap,
function: methodName,
description: apiOperationMetadata === undefined ? '' : apiOperationMetadata['description'],
});
break;
}
});
moduleRouter.nameModule = moduleName.toString();
}
catch (error) {
console.error(error);
}
});
console.info("2-get done path controller and module ");
if (moduleRouter.pathModule.length && moduleRouter.nameModule !== '') {
console.info("3-push controller and module");
arrayModuleRouter.push(moduleRouter);
}
}
yield Promise.all(arrayModuleRouter.map((r) => __awaiter(this, void 0, void 0, function* () {
const result = yield this.syncRouter([r]);
console.info(`4-result push controller: ${result} using time : ${(new Date().getTime() - timeStart)}`);
})));
}
catch (e) {
console.error(`[ERROR]: cms-package ${e}`);
}
});
}
syncRouter(info) {
return __awaiter(this, void 0, void 0, function* () {
try {
const result = yield service_api_1.default.postApi(index_1.env.SYNC_URL, info, '', index_1.env.KEY_SERVICE);
return result.data;
}
catch (e) {
console.log(`[Error] sync log : ${e}`);
return false;
}
});
}
generateVersion(defaultVersion, versionController) {
var _a;
if (!versionController && !defaultVersion) {
return '';
}
else if ((versionController && !defaultVersion) || (versionController && defaultVersion)) {
return `/v${versionController === null || versionController === void 0 ? void 0 : versionController.toString()}`.toString();
}
else if (!versionController && defaultVersion) {
return `/v${(_a = defaultVersion['defaultVersion']) === null || _a === void 0 ? void 0 : _a.toString()}`.toString();
}
}
};
RouterService = __decorate([
(0, common_1.Injectable)(),
__param(0, (0, common_1.Inject)((0, common_1.forwardRef)(() => core_1.DiscoveryService))),
__param(1, (0, common_1.Inject)(core_1.Reflector.name)),
__param(2, (0, common_1.Inject)((0, common_1.forwardRef)(() => core_1.ApplicationConfig))),
__param(4, (0, common_1.Inject)((0, common_1.forwardRef)(() => core_1.ModulesContainer))),
__metadata("design:paramtypes", [core_1.DiscoveryService,
core_1.Reflector,
core_1.ApplicationConfig,
core_1.MetadataScanner,
core_1.ModulesContainer])
], RouterService);
exports.RouterService = RouterService;