'a'
mh-two-thousand-and-two
2024-04-12 44d2c92345cd156a59fc327b3060292a282d2893
1
2
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.launch=launch,exports.stop=stop;var _http=_interopRequireDefault(require("http")),_koa=_interopRequireDefault(require("koa")),_opn=_interopRequireDefault(require("opn")),_portfinder=_interopRequireDefault(require("portfinder")),_sharedUtils=require("@hap-toolkit/shared-utils"),_recordClient=require("@hap-toolkit/shared-utils/lib/record-client"),_config=_interopRequireDefault(require("@hap-toolkit/shared-utils/config"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}let server=null;async function launch(e,r){return new Promise(async o=>{try{const s=new _koa.default;let t=_config.default.server.port;t=await _portfinder.default.getPortPromise({port:t}),Object.assign(e.defaults,{serverPort:t}),s.context.conf=e;const{clearRecords:l,openBrowser:n}=e.options;if(l){const{clientRecordPath:e}=_config.default;(0,_recordClient.clearProjectRecord)(e)}for(let e=0,o=r.moduleList.length;e<o;e++){const o=r.moduleList[e];"function"==typeof o.hash.applyRouter&&s.use(o.hash.applyRouter(s).routes())}server=_http.default.Server(s.callback()),s.server=server;for(let e=0,o=r.moduleList.length;e<o;e++){const o=r.moduleList[e];"function"==typeof o.hash.beforeStart&&await o.hash.beforeStart(server,s)}server.listen(t,()=>{const e=`http://localhost:${t}`,r=(0,_sharedUtils.getIPv4IPAddress)();if(!r)return _sharedUtils.colorconsole.warn("### App Server ### 本机IP地址为空,无法通过WIFI调试"),void o({launchServerError:null,server:server,address:e,previewAddress:e+"/previewAddress"});const s=`http://${r}:${t}`;_sharedUtils.colorconsole.info(`### App Server ### 服务器地址: ${e}, ${s}`),_sharedUtils.colorconsole.info("### App Server ### 请确保手机与App Server处于相同网段"),(0,_sharedUtils.outputQRCodeOnTerminal)(s),n&&(0,_opn.default)(s),o({launchServerError:null,server:server,address:s,previewAddress:s+"/preview"})}),s.on("error",(e,r)=>{_sharedUtils.colorconsole.error(`### App Server ### 服务器错误: ${e.message}`);const s=`出错了!HTTP error code: ${e.status}, 出错信息: ${e.message}`;r&&(r.body=s),o({launchServerError:e,server:server})}),server.on("error",e=>{_sharedUtils.colorconsole.error(`### App Server ### 服务器错误: ${e.message}`),"EADDRINUSE"===e.code&&_sharedUtils.colorconsole.error(`### App Server ### 服务器错误:端口 ${t} 被占用, 请检查`),o({launchServerError:e,server:server})}),process.on("SIGINT",()=>{_sharedUtils.colorconsole.info("### App Server ### SIGINT信号"),_sharedUtils.colorconsole.info(`### App Server ### 退出server进程 pid: ${process.pid}`),process.exit()}),process.on("uncaughtException",e=>{_sharedUtils.colorconsole.error(`### App Server ### 未定义的异常, 出错信息: ${e.message}`),console.error(e)}),process.on("unhandledRejection",(e,r)=>{_sharedUtils.colorconsole.error(`### App Server ### 未处理的 rejection, 出错信息: ${e}`),r.catch(e=>{console.error(e)})})}catch(e){throw _sharedUtils.colorconsole.error(`### App Server ### 服务器启动失败: ${e.message}`),o({launchServerError:e,server:null}),e}})}function stop(){return new Promise(e=>{if(server)try{server.close(r=>{e({stopServerError:r})})}catch(r){throw _sharedUtils.colorconsole.error(`### App Server ### 服务器关闭失败: ${r.message}`),e({stopServerError:r}),r}else e({stopServerError:"no server"})})}
//# sourceMappingURL=server.js.map