mirror of
https://gitee.com/dgflash/oops-plugin-framework.git
synced 2026-05-07 19:07:30 +08:00
问题原因: 在 LayerUI.remove() 方法中,state.valid 被提前设置为 false, 导致 LayerUIElement.remove() 中判断 state.valid 时条件不成立, 从而跳过了 onBeforeRemove 回调的触发。 修复方案: 将 state.valid = false 的赋值操作移动到 LayerUIElement.remove() 调用之后执行,确保回调能正常触发。 影响范围: - 修复通过 oops.gui.remove() 关闭界面时 onBeforeRemove 回调不执行的问题 - 不影响界面缓存和异步加载的僵尸节点防护逻辑
2 lines
2.8 KiB
JavaScript
2 lines
2.8 KiB
JavaScript
"use strict";var u=Object.create;var o=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var v=Object.getPrototypeOf,l=Object.prototype.hasOwnProperty;var m=(r,t)=>{for(var e in t)o(r,e,{get:t[e],enumerable:!0})},h=(r,t,e,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of g(t))!l.call(r,n)&&n!==e&&o(r,n,{get:()=>t[n],enumerable:!(s=d(t,n))||s.enumerable});return r};var S=(r,t,e)=>(e=r!=null?u(v(r)):{},h(t||!r||!r.__esModule?o(e,"default",{value:r,enumerable:!0}):e,r)),c=r=>h(o({},"__esModule",{value:!0}),r);var R={};m(R,{HttpServer:()=>a,getRequestMethod:()=>b,parseUrlPath:()=>P,readRequestBody:()=>f,sendJsonResponse:()=>H});module.exports=c(R);var p=S(require("http")),a=class{constructor(t){this.server=null;this.host=t.host||"127.0.0.1",this.defaultPort=t.defaultPort||8456,this.port=this.defaultPort,this.requestHandler=t.requestHandler,this.logger=t.logger||console.log,this.onPortInUse=t.onPortInUse,this.onStart=t.onStart,this.onError=t.onError}getState(){return{running:this.isRunning(),port:this.port,host:this.host}}getPort(){return this.port}isRunning(){return!!this.server}start(t){this.stop();let e=t||this.defaultPort;this.createServer(e)}stop(){this.server&&(this.server.close(),this.server=null,this.logger("[HttpServer] \u670D\u52A1\u5668\u5DF2\u505C\u6B62"))}createServer(t){this.server=p.createServer((e,s)=>{this.handleRequest(e,s)}),this.server.once("error",e=>{if((e==null?void 0:e.code)==="EADDRINUSE"&&t<65535){this.logger(`[HttpServer] \u7AEF\u53E3 ${t} \u88AB\u5360\u7528\uFF0C\u5C1D\u8BD5 ${t+1}`),this.onPortInUse&&this.onPortInUse(t,t+1),this.createServer(t+1);return}this.logger(`[HttpServer] \u542F\u52A8\u5931\u8D25: ${(e==null?void 0:e.message)||e}`),this.onError&&this.onError(e)}),this.server.listen(t,this.host,()=>{var s;let e=(s=this.server)==null?void 0:s.address();e&&typeof e=="object"?this.port=Number(e.port||t):this.port=t,this.logger(`[HttpServer] \u76D1\u542C ${this.host}:${this.port}`),this.onStart&&this.onStart(this.port)})}handleRequest(t,e){Promise.resolve(this.requestHandler(t,e)).catch(s=>{this.logger(`[HttpServer] \u8BF7\u6C42\u5904\u7406\u9519\u8BEF: ${(s==null?void 0:s.message)||s}`),e.headersSent||(e.statusCode=500,e.setHeader("Content-Type","application/json; charset=utf-8"),e.end(JSON.stringify({ok:!1,message:(s==null?void 0:s.message)||"internal error"})))})}};function f(r){return new Promise((t,e)=>{let s="",n=!1;r.on("data",i=>{n||(s+=i.toString())}),r.on("end",()=>{n||t(s)}),r.on("error",i=>{n||(n=!0,e(i))})})}function H(r,t,e){r.statusCode=t,r.setHeader("Content-Type","application/json; charset=utf-8"),r.end(JSON.stringify(e))}function P(r){return(r||"").split("?")[0]}function b(r){return(r.method||"").toUpperCase()}0&&(module.exports={HttpServer,getRequestMethod,parseUrlPath,readRequestBody,sendJsonResponse});
|