UNPKG

decentralized-internet

Version:

An NPM library of programs to create decentralized web and distributed computing projects

1 lines 1.36 kB
var Hapi=require("@hapi/hapi"),fs=require("fs"),good=require("@hapi/good"),path=require("path"),_=require("underscore"),env=process.env.NODE_ENV;if(!env)throw"Please set NODE_ENV variable.";const getConfigFile=function(){try{return require(process.cwd()+"/conf.my."+env+".json")}catch(e){return require(process.cwd()+"/conf."+env+".json")}},startServer=async e=>{var r,o=getConfigFile();o.tls&&o.tls.key&&o.tls.cert&&(r={key:fs.readFileSync(o.tls.key),cert:fs.readFileSync(o.tls.cert)});var s={host:o.host,port:o.port,tls:r};"test"==process.env.NODE_ENV&&(s.routes={cors:!0});var t=new Hapi.Server(s),i=_.map(o.plugins,function(e,r){return{plugin:require(r),options:e}});i.push({plugin:good,options:{reporters:{myConsoleReporter:[{module:"@hapi/good-squeeze",name:"Squeeze",args:[{log:"*",response:"*"}]},{module:"@hapi/good-console"},"stdout"],myFileReporter:[{module:"@hapi/good-squeeze",name:"Squeeze",args:[{ops:"*"}]},{module:"@hapi/good-squeeze",name:"SafeJson"}]}}}),t.method({name:"getCluster",method:function(){return e},options:{}}),await t.register(i),await t.start(),console.log(`Server running at: ${t.info.uri}`)};if("production"===env){const e=require("cluster");require("os").cpus().length;if(e.isMaster){for(var i=0;i<1;i++)e.fork();e.on("exit",(e,r,o)=>{console.log("worker ",e.process.pid,"died")})}else startServer(e)}else startServer();