UNPKG

@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
"use strict"; 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;