UNPKG

mp-holistic

Version:

si prefigge l'umile compito di aiutare nella creazione di : - un server API REST mediante express - un semplice ORM per Postgres Questo tramite decoratori o classi particolari.

373 lines 19.4 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.MainExpress = void 0; const express_1 = __importDefault(require("express")); const cookie_parser_1 = __importDefault(require("cookie-parser")); const fs_1 = __importDefault(require("fs")); const http = __importStar(require("http")); const http_proxy_1 = __importDefault(require("http-proxy")); const node_cache_1 = __importDefault(require("node-cache")); const metadata_1 = require("../metadata"); const classe_express_1 = require("./classe.express"); const utility_1 = require("../utility"); const child_process_1 = require("child_process"); const crypto_1 = require("crypto"); class MainExpress { constructor(path, server, isMultiProcesso) { if (isMultiProcesso) { MainExpress.isSottoProcesso = isMultiProcesso; //this.isMultiProcesso = isMultiProcesso; } this.path = path; this.percorsi = { pathGlobal: "", patheader: "", porta: 0 }; if (server == undefined) this.serverExpressDecorato = (0, express_1.default)(); else this.serverExpressDecorato = server; } DeterminaIfIsSottoProcesso() { let sottoprosotto = false; let porta = this.percorsi.porta; try { if (process.argv.length > 2) { try { console.log(process.argv[2]); const substr = String(process.argv[2]).substring(8, undefined); porta = Number(substr); MainExpress.portaProcesso = porta; sottoprosotto = true; } catch (error) { console.log(error); } } else { return { porta: undefined, sottoprosotto: false }; } } catch (error) { console.log(error); } return { porta: porta, sottoprosotto: sottoprosotto }; } Inizializza(patheader, porta, /* rottaBase: boolean, creaFile?: boolean, */ pathDoveScrivereFile, sottoprocesso) { var _a; const isSottoprocesso = this.DeterminaIfIsSottoProcesso(); sottoprocesso = isSottoprocesso.sottoprosotto; porta = (_a = isSottoprocesso.porta) !== null && _a !== void 0 ? _a : porta; if (sottoprocesso) MainExpress.isSottoProcesso = sottoprocesso; const tmp = (0, metadata_1.GetListaClasseMeta)('nomeMetadataKeyTargetFor_Express', () => { return new classe_express_1.ListaExpressClasse(); }); console.log(''); if (tmp.length > 0) { this.percorsi.patheader = patheader; this.percorsi.porta = porta; const pathGlobal = '/' + this.path; this.percorsi.pathGlobal = pathGlobal; (this.serverExpressDecorato).use(express_1.default.json()); (this.serverExpressDecorato).use((0, cookie_parser_1.default)()); tmp.ConfiguraListaRotteApplicazione(this.path, this.percorsi, this.serverExpressDecorato); this.httpServer = http.createServer(this.serverExpressDecorato); (0, metadata_1.SalvaListaMetaClasse)('nomeMetadataKeyTargetFor_Express', tmp); if (pathDoveScrivereFile) this.ScriviFile(pathDoveScrivereFile); } else { console.log("Attenzione non vi sono rotte e quantaltro."); } } ScriviFile(pathDoveScrivereFile) { var _a; try { const tmp = (0, metadata_1.GetListaClasseMeta)('nomeMetadataKeyTargetFor_Express', () => { return new classe_express_1.ListaExpressClasse(); }); try { fs_1.default.rmSync(pathDoveScrivereFile + '/FileGenerati_MP/express', { recursive: true }); } catch (error) { console.log(error); } fs_1.default.mkdirSync(pathDoveScrivereFile + '/FileGenerati_MP/express', { recursive: true }); let ritorno = ''; try { for (let index = 0; index < tmp.length; index++) { const classe = tmp[index]; const path = pathDoveScrivereFile + '/FileGenerati_MP/express' + '/api' + '/' + classe.nomeOriginale; fs_1.default.mkdirSync(path, { recursive: true }); let ritornoClass = ''; if (classe.Istanziatore) ritornoClass = ritornoClass + '\nIstanziatore : ' + classe.Istanziatore; if (classe.LogGenerale) ritornoClass = ritornoClass + '\nLogGenerale : ' + classe.LogGenerale; if (classe.cacheOptionMemory) ritornoClass = ritornoClass + '\ncacheOptionMemory : ' + JSON.stringify(classe.cacheOptionMemory); if (classe.html) ritornoClass = ritornoClass + '\nhtml : ' + JSON.stringify(classe.html); if (classe.id) ritornoClass = ritornoClass + '\nid : ' + classe.id; if (classe.nome) ritornoClass = ritornoClass + '\nnome : ' + classe.nome; if (classe.nomeOriginale) ritornoClass = ritornoClass + '\nnomeOriginale : ' + classe.nomeOriginale; if (classe.nomeVariante) ritornoClass = ritornoClass + '\nnomeVariante : ' + classe.nomeVariante; if (classe.path) ritornoClass = ritornoClass + '\npath : ' + classe.path; if (classe.percorsi) ritornoClass = ritornoClass + '\npercorsi : ' + JSON.stringify(classe.percorsi); if (classe.rotte) ritornoClass = ritornoClass + '\nrotte : ' + classe.rotte; //fs.writeFileSync(path + '/' + classe.nomeOriginale + '.classe', ritornoClass); fs_1.default.appendFileSync(path + '/' + classe.nomeOriginale + '.classe', ritornoClass); ritornoClass = ritornoClass + '\n'; for (let index = 0; index < classe.listaMetodi.length; index++) { const metodo = classe.listaMetodi[index]; let ritorno = ''; ritorno = ritorno + '' + metodo.PrintStruttura() + ''; ritornoClass = ritornoClass + ritorno + '\n********************\n'; fs_1.default.writeFileSync(path + '/' + metodo.nomeOriginale, ritorno); } //fs.writeFileSync(path + '/' + classe.nomeOriginale + '.collezione', ritornoClass); fs_1.default.appendFileSync(path + '/' + classe.nomeOriginale + '.collezione', ritornoClass); } } catch (error) { return ritorno; } ritorno = ''; return ritorno; } catch (error) { console.log(error); return (_a = error.message) !== null && _a !== void 0 ? _a : ''; } } InizializzaCartellaFileLogProxy() { try { /**log proxy */ if (!fs_1.default.existsSync('./LogExpress/LogProxy_' + MainExpress.portaProxy)) { fs_1.default.mkdirSync('./LogExpress/LogProxy_' + MainExpress.portaProxy, { recursive: true }); } //fs.writeFileSync('./LogExpress/LogProxy_' + MainExpress.portaProcesso + '/log.txt', ''); fs_1.default.writeFileSync('./LogExpress/LogProxy_' + MainExpress.portaProxy + '/log.txt', ''); } catch (error) { console.log(error); } } InizializzaCartelleFileLogExpress() { try { /**log processi express */ if (!fs_1.default.existsSync('./LogExpress')) { fs_1.default.mkdirSync('./LogExpress', { recursive: true }); } if (!fs_1.default.existsSync('./LogExpress/Processo_' + MainExpress.portaProcesso)) { fs_1.default.mkdirSync('./LogExpress/Processo_' + MainExpress.portaProcesso, { recursive: true }); } //fs.writeFileSync('./LogExpress/Processo_' + MainExpress.portaProcesso + '/log.txt', ''); fs_1.default.writeFileSync('./LogExpress/Processo_' + MainExpress.portaProcesso + '/log.txt', ''); } catch (error) { console.log(error); } } StartHttpServer() { this.InizializzaCartelleFileLogExpress(); try { if (MainExpress.vettoreProcessi.length > 0) { /* qui non arrivero mai! Perche il processo che viene avviato è un processo figlio, questo vuol dire che sara con una porta gia definita */ let resto = true; let tmp = this.percorsi.porta + parseInt((Math.random() * (Math.random() * 10)).toString()); while (resto) { if (tmp > 9999) tmp = 5000; let esco = false; tmp = tmp + parseInt((Math.random() * (Math.random() * 10)).toString()); for (let index = 0; index < MainExpress.vettoreProcessi.length && esco == false; index++) { const element = MainExpress.vettoreProcessi[index]; if (element.porta == tmp) { esco = true; } } if (esco == false) resto = false; } this.percorsi.porta = tmp; this.httpServer.listen(this.percorsi.porta); (0, utility_1.StartMonitoring)(); } else { if (MainExpress.isSottoProcesso == true) { this.httpServer.listen(this.percorsi.porta); } else { this.InizializzaCartellaFileLogProxy(); if (!fs_1.default.existsSync('./LogExpress/LogProxy_' + MainExpress.portaProxy)) { fs_1.default.mkdirSync('./LogExpress/LogProxy_' + MainExpress.portaProxy, { recursive: true }); } //fs.writeFileSync('./LogExpress/LogProxy_' + MainExpress.portaProxy + '/log.txt', ''); fs_1.default.writeFileSync('./LogExpress/LogProxy_' + MainExpress.portaProxy + '/log.txt', ''); MainExpress.portaProxy = this.percorsi.porta; MainExpress.portaProcesso = this.percorsi.porta + 1; this.httpServer.listen(MainExpress.portaProcesso); (0, utility_1.StartMonitoring)(); /* */ const proxy = http_proxy_1.default.createProxyServer(); //httpProxy.createProxyServer({ target: 'http://localhost:3001' }).listen(3333); MainExpress.proxyServer = http.createServer(function (req, res) { // You can define here your custom logic to handle the request // and then proxy the request. // const variabileValore = '1'; let esco = false; let stamp = ''; for (let index = 0; index < MainExpress.vettoreProcessi.length && esco == false; index++) { const processo = MainExpress.vettoreProcessi[index]; processo.vettorePossibiliPosizioni; //devo estrarre il dato per poterlo verificare con la variabile for (let index = 0; index < processo.vettorePossibiliPosizioni.length && esco == false; index++) { const element = processo.vettorePossibiliPosizioni[index]; /** si cerca solo nell'header perche siamo nel proxy, questo puo solo maneggiare l'header per semplicita e velocita */ if (req.headers[element.nome] != undefined && element.posizione == 'header') { if (processo.valoreValiabile == req.headers[element.nome]) { res.setHeader("proxy", "->http://localhost:" + processo.porta); proxy.web(req, res, { target: 'http://localhost:' + processo.porta }); stamp = ` <!--################ proxy->http://localhost: ${processo.porta} ################--!> `; esco = true; } } } } if (esco == false) { res.setHeader("proxy", "->http://localhost:" + MainExpress.portaProcesso); proxy.web(req, res, { target: 'http://localhost:' + MainExpress.portaProcesso }); stamp = ` <!--################ proxy->http://localhost: ${MainExpress.portaProcesso} ################--!> `; } try { fs_1.default.appendFileSync('./LogExpress/LogProxy_' + MainExpress.portaProxy + '/' + 'log.txt', stamp); } catch (error) { console.log(error); } }); MainExpress.proxyServer.listen(MainExpress.portaProxy); /* */ } } } catch (error) { if (MainExpress.vettoreProcessi.length > 0) { let resto = true; let tmp = this.percorsi.porta + parseInt((Math.random() * (Math.random() * 10)).toString()); while (resto) { if (tmp > 9999) tmp = 5000; let esco = false; tmp = tmp + parseInt((Math.random() * (Math.random() * 10)).toString()); for (let index = 0; index < MainExpress.vettoreProcessi.length && esco == false; index++) { const element = MainExpress.vettoreProcessi[index]; if (element.porta == tmp) { esco = true; } } if (esco == false) resto = false; } this.percorsi.porta = tmp; this.httpServer.listen(this.percorsi.porta); (0, utility_1.StartMonitoring)(); } else { throw error; } } } AggiungiCartellaStaticaPerExpress(path) { this.serverExpressDecorato.use(express_1.default.static(path)); } static AggiungiProcessoParallelo(metodoSpawProcess, valoreValiabile, porta) { var _a, _b; try { if (MainExpress.vettoreProcessi.length > 0) { if ('porta' in MainExpress.vettoreProcessi[MainExpress.vettoreProcessi.length - 1]) porta = MainExpress.vettoreProcessi[MainExpress.vettoreProcessi.length - 1].porta + 1; } if (MainExpress.vettoreProcessi.length == 0) { porta = porta + (Math.random() * 100 + 30) + ((Math.random() * 10 * Math.random() * 20 * Math.random() * 30) + (Math.random() * 10 * Math.random() * 20 * Math.random() * 30) - (Math.random() * 10 * Math.random() * 20 * Math.random() * 10) + (Math.random() * 10 * Math.random() * 20 * Math.random() * 30) - (Math.random() * 10 * Math.random() * 20 * Math.random() * 5)); } } catch (error) { porta = porta + (Math.random() * 100 + 30) + ((Math.random() * 10 * Math.random() * 20 * Math.random() * 30) + (Math.random() * 10 * Math.random() * 20 * Math.random() * 30) - (Math.random() * 10 * Math.random() * 20 * Math.random() * 10) + (Math.random() * 10 * Math.random() * 20 * Math.random() * 30) - (Math.random() * 10 * Math.random() * 20 * Math.random() * 5)); } try { porta = Number(porta.toFixed(0)); const temporaneamente = `node ./${MainExpress.pathExe}`; console.log(temporaneamente); const proc = (0, child_process_1.exec)(`node ./${MainExpress.pathExe}${MainExpress.pathExeIIparte}${porta}`); //exec(`npm run start-esempio`); MainExpress.vettoreProcessi.push({ porta: porta, nomeVariabile: (_a = metodoSpawProcess.isSpawTrigger) !== null && _a !== void 0 ? _a : String((0, crypto_1.randomUUID)()), valoreValiabile: valoreValiabile, vettorePossibiliPosizioni: (_b = metodoSpawProcess.checkSpawTrigger) !== null && _b !== void 0 ? _b : [], processo: proc }); } catch (error) { console.log(error); } } } exports.MainExpress = MainExpress; MainExpress.cache = new node_cache_1.default(); MainExpress.portaProxy = 8080; MainExpress.portaProcesso = 8081; MainExpress.vettoreProcessi = []; MainExpress.pathExe = 'dist/index.js'; MainExpress.pathExeIIparte = ' --porta='; MainExpress.isSottoProcesso = false; //# sourceMappingURL=main.express.js.map