UNPKG

6.1 kBJavaScriptView Raw
1"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0,_safeRequire(require("./jinghuan")),_safeRequire(require("./props"));function _objectSpread(a){for(var b=1;b<arguments.length;b++){var c=null==arguments[b]?{}:arguments[b],d=Object.keys(c);"function"==typeof Object.getOwnPropertySymbols&&(d=d.concat(Object.getOwnPropertySymbols(c).filter(function(a){return Object.getOwnPropertyDescriptor(c,a).enumerable}))),d.forEach(function(b){_defineProperty(a,b,c[b])})}return a}function _defineProperty(a,b,c){return b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _safeRequire(a){return a&&a.__esModule&&void 0!==a.default?a.default:a}const path=_safeRequire(require("path")),cluster=_safeRequire(require("cluster")),pm2=_safeRequire(require("./core/pm2")),Watcher=_safeRequire(require("./core/watcher")),Loaders=_safeRequire(require("./loaders")),Cluster=_safeRequire(require("jinghuan-cluster")),define=_safeRequire(require("jinghuan-helper/define")),isDirectory=_safeRequire(require("jinghuan-helper/isDirectory")),isArray=_safeRequire(require("lodash/isArray")),fs=_safeRequire(require("fs-extra")),isFunction=_safeRequire(require("lodash/isFunction")),keys=_safeRequire(require("lodash/keys")),clone=_safeRequire(require("lodash/clone")),each=_safeRequire(require("lodash/each")),{requireResolve}=_safeRequire(require("./utils")),http=_safeRequire(require("http")),https=_safeRequire(require("https"));class Application{constructor(a={}){_defineProperty(this,"watcherCallBack",a=>{if(this.masterInstance)this.masterInstance.forceReloadWorkers();else{let b=require.cache[a];b&&(b.parent&&b.parent.children.splice(b.parent.children.indexOf(b),1),require.cache[a]=null,jinghuan.logger.log(`[Master] Reload ${path.relative(jinghuan.APP_PATH,a)}`))}}),define("ROOT_PATH",a.ROOT_PATH,jinghuan),define("APP_PATH",a.APP_PATH,jinghuan),define("JH_PATH",a.JH_PATH,jinghuan),define("CONFIG_PATH",path.join(a.ROOT_PATH,"src"==a.source?"dev-config":"config",a.env),jinghuan),define("workers",a.workers,jinghuan),define("source",a.source,jinghuan),define("modules",a.modules.slice(),jinghuan),define("env",a.env,jinghuan),define("PORT",a.port||8409,jinghuan),define("HOST",a.host,jinghuan),define("mode",a.mode,jinghuan),define("paths",a.paths,jinghuan),define("process_id",a.process_id,jinghuan),define("watcher",a.watcher,jinghuan),define("socket",a.socket,jinghuan);let b={};[...a.modules,"common"].forEach(c=>{b[c]=isDirectory(path.join(jinghuan.ROOT_PATH,`node_modules/jinghuan-module-${c}`))?path.join(jinghuan.ROOT_PATH,`node_modules/jinghuan-module-${c}`):path.join(a.APP_PATH,c)}),a.modulePaths=b,define("modulePaths",b,jinghuan),jinghuan.registerTextHandler("sql")}notifier(a){if(!jinghuan.notifier)return;let b=jinghuan.notifier;isArray(b)||(b=[b]),b[0](Object.assign({title:"JinghuanJs Transpile Error",message:a.message},b[1]))}startWatcher(){if(!jinghuan.watcher)return;const a=[path.join(jinghuan.ROOT_PATH,"config",jinghuan.env)];each(jinghuan.modulePaths,b=>{let c=path.join(b,".jinghuanjs");if(fs.pathExistsSync(c)){let d=fs.readJsonSync(c);for(let c of d.paths||{})a.push(path.join(b,c))}});let b=jinghuan.config("watcher.allowExts");const c=new Watcher({srcPath:a,allowExts:b},a=>{this.watcherCallBack(a)});c.watch()}getMasterInstance(){return this.masterInstance=new Cluster.Master({port:jinghuan.PORT,host:jinghuan.HOST,workers:jinghuan.workers}),this.masterInstance}runInMaster(a="Master"){let b=[];b.push(`[${a}] JinghuanJs ${jinghuan.version}`),b.push(`[${a}] HOST [${jinghuan.HOST}]`),b.push(`[${a}] PORT ${jinghuan.PORT}`),b.push(`[${a}] ROOT_PATH ${jinghuan.ROOT_PATH}`),b.push(`[${a}] APP_PATH ${jinghuan.APP_PATH}`),b.push(`[${a}] CONFIG_PATH ${jinghuan.CONFIG_PATH}`),b.push(`[${a}] Enviroment ${jinghuan.env}`),b.push(`[${a}] Source ${jinghuan.source}`),b.push(`[${a}] Modules [${jinghuan.modules}]`),b.push(`[${a}] Workers ${jinghuan.workers}`),b.push(`[${a}] Watcher ${jinghuan.watcher?"true":"false"}`),this.consoleLines(b,"-");let c=this.getMasterInstance();Promise.resolve(c.startServer()).then(()=>{jinghuan.logger.info(`[${a}] Start OK`);let b=jinghuan.config(a.toLocaleLowerCase());isFunction(b)&&b()})}getWorkerInstance(){let a=jinghuan.config("app")||{};return this.workerInstance=new Cluster.Worker(_objectSpread({},a,{workers:jinghuan.workers,createServer:async()=>http.createServer(jinghuan.app.callback()).listen(jinghuan.PORT)})),this.workerInstance}runInWorker(a="Worker"){let b=[];b.push(`[${a}] JinghuanJs ${jinghuan.version}`),b.push(`[${a}] HOST [${jinghuan.HOST}]`),b.push(`[${a}] PORT ${jinghuan.PORT}`),b.push(`[${a}] ROOT_PATH ${jinghuan.ROOT_PATH}`),b.push(`[${a}] APP_PATH ${jinghuan.APP_PATH}`),b.push(`[${a}] CONFIG_PATH ${jinghuan.CONFIG_PATH}`),b.push(`[${a}] Enviroment ${jinghuan.env}`),b.push(`[${a}] Source ${jinghuan.source}`),b.push(`[${a}] Modules [${jinghuan.modules}]`),b.push(`[${a}] Middleware [${jinghuan.middlewares}]`),b.push(`[${a}] Socket [${jinghuan.sockets}]`),b.push(`[${a}] ID ${jinghuan.process_id}`),this.consoleLines(b,"=");let c=this.getWorkerInstance();Promise.resolve(c.startServer()).then(()=>{this.init=!0,jinghuan.logger.info(`[${a}] Start OK`);let b=jinghuan.config(a.toLocaleLowerCase());isFunction(b)&&b()})}consoleLines(a,b="*"){let c=0,d=0,e=[];for(a.forEach(a=>{c=a.length>c?a.length:c});d++<c;)e.push(b);jinghuan.logger.info(e.join("")),a.forEach(a=>{jinghuan.logger.info(a)}),jinghuan.logger.info(e.join(""))}initApp(){let a=_safeRequire(require("koa"));if(jinghuan.socket){let b=_safeRequire(require("./core/socket")),c=b(new a);define("app",c,jinghuan)}else{let b=new a;define("app",b,jinghuan)}}run(){const a=new Loaders;try{return cluster.isMaster&&0<jinghuan.workers?(a.loadAll("master"),this.startWatcher(),this.runInMaster()):(this.initApp(),a.loadAll("worker"),0===jinghuan.workers&&this.startWatcher(),this.runInWorker())}catch(a){console.error(a)}}}var _default=Application;exports.default=_default;
2//# sourceMappingURL=app.js.map
\No newline at end of file