{{ group.host }}
-{{ group.ip }} · {{ group.groupLabel }}
-diff --git a/server.py b/server.py index 56eaa3b..f36f080 100644 --- a/server.py +++ b/server.py @@ -157,42 +157,61 @@ class MonitorHandler(BaseHTTPRequestHandler): return def do_GET(self) -> None: # noqa: N802 + self._dispatch(send_body=True) + + def do_HEAD(self) -> None: # noqa: N802 + self._dispatch(send_body=False) + + def _dispatch(self, send_body: bool) -> None: parsed = urlparse(self.path) if parsed.path in {"/", "/index.html"}: - return self.serve_static("index.html", "text/html; charset=utf-8") + return self.serve_static("index.html", "text/html; charset=utf-8", send_body=send_body) if parsed.path == "/app.css": - return self.serve_static("app.css", "text/css; charset=utf-8") + return self.serve_static("app.css", "text/css; charset=utf-8", send_body=send_body) if parsed.path == "/app.js": - return self.serve_static("app.js", "application/javascript; charset=utf-8") + return self.serve_static("app.js", "application/javascript; charset=utf-8", send_body=send_body) + if parsed.path == "/vue.js": + return self.serve_static("vue.js", "application/javascript; charset=utf-8", send_body=send_body) if parsed.path == "/api/health": - return self.send_payload(HTTPStatus.OK, response_json({"status": "ok", "time": utc_now()}), "application/json; charset=utf-8") + return self.send_payload( + HTTPStatus.OK, + response_json({"status": "ok", "time": utc_now()}), + "application/json; charset=utf-8", + send_body=send_body, + ) if parsed.path == "/api/monitor/services": payload = get_monitor_payload() - return self.send_payload(HTTPStatus.OK, response_json(payload), "application/json; charset=utf-8") + return self.send_payload( + HTTPStatus.OK, + response_json(payload), + "application/json; charset=utf-8", + send_body=send_body, + ) if parsed.path == "/favicon.ico": - return self.send_payload(HTTPStatus.NO_CONTENT, b"", "image/x-icon") - return self.send_error_payload(HTTPStatus.NOT_FOUND, "not found") + return self.send_payload(HTTPStatus.NO_CONTENT, b"", "image/x-icon", send_body=send_body) + return self.send_error_payload(HTTPStatus.NOT_FOUND, "not found", send_body=send_body) - def serve_static(self, name: str, content_type: str) -> None: + def serve_static(self, name: str, content_type: str, send_body: bool) -> None: path = STATIC_DIR / name if not path.exists(): - return self.send_error_payload(HTTPStatus.NOT_FOUND, "static file missing") - self.send_payload(HTTPStatus.OK, path.read_bytes(), content_type) + return self.send_error_payload(HTTPStatus.NOT_FOUND, "static file missing", send_body=send_body) + self.send_payload(HTTPStatus.OK, path.read_bytes(), content_type, send_body=send_body) - def send_error_payload(self, status: HTTPStatus, message: str) -> None: + def send_error_payload(self, status: HTTPStatus, message: str, send_body: bool) -> None: self.send_payload( status, response_json({"status": int(status), "error": message}), "application/json; charset=utf-8", + send_body=send_body, ) - def send_payload(self, status: HTTPStatus, body: bytes, content_type: str) -> None: + def send_payload(self, status: HTTPStatus, body: bytes, content_type: str, send_body: bool) -> None: self.send_response(status) self.send_header("Content-Type", content_type) self.send_header("Cache-Control", "no-store") self.send_header("Content-Length", str(len(body))) self.end_headers() - if body: + if send_body and body: self.wfile.write(body) diff --git a/static/app.js b/static/app.js index 866d8c9..ead69e4 100644 --- a/static/app.js +++ b/static/app.js @@ -1,105 +1,113 @@ const { createApp } = Vue; createApp({ - data() { - return { - loading: false, - error: "", - filter: "all", - keyword: "", - payload: { - updatedAt: "", - summary: { total: 0, ok: 0, down: 0 }, - items: [], - }, - timer: null, - }; - }, - computed: { - summary() { - return this.payload.summary || { total: 0, ok: 0, down: 0 }; + data() { + return { + loading: false, + error: "", + filter: "all", + keyword: "", + payload: { + updatedAt: "", + summary: { total: 0, ok: 0, down: 0 }, + items: [], + }, + timer: null, + }; }, - formattedUpdatedAt() { - if (!this.payload.updatedAt) { - return "-"; - } - const date = new Date(this.payload.updatedAt); - return Number.isNaN(date.getTime()) ? this.payload.updatedAt : date.toLocaleString(); + computed: { + summary() { + return this.payload.summary || { total: 0, ok: 0, down: 0 }; + }, + formattedUpdatedAt() { + if (!this.payload.updatedAt) { + return "-"; + } + const date = new Date(this.payload.updatedAt); + return Number.isNaN(date.getTime()) ? this.payload.updatedAt : date.toLocaleString(); + }, + filteredItems() { + const keyword = this.keyword.toLowerCase(); + return (this.payload.items || []).filter((item) => { + if (this.filter === "down" && item.ok) { + return false; + } + if (this.filter === "java" && item.kind !== "java") { + return false; + } + if (this.filter === "golang" && item.kind !== "golang") { + return false; + } + if (!keyword) { + return true; + } + return [item.host, item.ip, item.service, item.kind, item.group] + .join(" ") + .toLowerCase() + .includes(keyword); + }); + }, + groupedHosts() { + const map = new Map(); + for (const item of this.filteredItems) { + if (!map.has(item.host)) { + map.set(item.host, { + host: item.host, + ip: item.ip, + group: item.group, + groupLabel: this.groupLabel(item.group), + downCount: 0, + items: [], + }); + } + const group = map.get(item.host); + group.items.push(item); + if (!item.ok) { + group.downCount += 1; + } + } + return [...map.values()]; + }, }, - filteredItems() { - const keyword = this.keyword.toLowerCase(); - return (this.payload.items || []).filter((item) => { - if (this.filter === "down" && item.ok) { - return false; - } - if (this.filter === "java" && item.kind !== "java") { - return false; - } - if (this.filter === "golang" && item.kind !== "golang") { - return false; - } - if (!keyword) { - return true; - } - return [item.host, item.ip, item.service, item.kind, item.group] - .join(" ") - .toLowerCase() - .includes(keyword); - }); + methods: { + groupLabel(group) { + return { + app: "应用节点", + pay: "支付节点", + gateway: "网关节点", + }[group] || group; + }, + async refresh() { + this.loading = true; + this.error = ""; + try { + const response = await fetch("/api/monitor/services", { cache: "no-store" }); + if (!response.ok) { + throw new Error(`HTTP ${response.status}`); + } + this.payload = await response.json(); + } catch (error) { + this.error = error instanceof Error ? error.message : String(error); + } finally { + this.loading = false; + } + }, }, - groupedHosts() { - const map = new Map(); - for (const item of this.filteredItems) { - if (!map.has(item.host)) { - map.set(item.host, { - host: item.host, - ip: item.ip, - group: item.group, - groupLabel: this.groupLabel(item.group), - downCount: 0, - items: [], - }); + mounted() { + const root = document.getElementById("app"); + const bootIndicator = document.getElementById("boot-indicator"); + if (root) { + root.removeAttribute("v-cloak"); } - const group = map.get(item.host); - group.items.push(item); - if (!item.ok) { - group.downCount += 1; + if (bootIndicator) { + bootIndicator.hidden = true; } - } - return [...map.values()]; + this.refresh(); + this.timer = window.setInterval(() => this.refresh(), 10000); }, - }, - methods: { - groupLabel(group) { - return { - app: "应用节点", - pay: "支付节点", - gateway: "网关节点", - }[group] || group; - }, - async refresh() { - this.loading = true; - this.error = ""; - try { - const response = await fetch("/api/monitor/services", { cache: "no-store" }); - if (!response.ok) { - throw new Error(`HTTP ${response.status}`); + beforeUnmount() { + if (this.timer) { + window.clearInterval(this.timer); } - this.payload = await response.json(); - } catch (error) { - this.error = error instanceof Error ? error.message : String(error); - } finally { - this.loading = false; - } }, - }, - mounted() { - this.refresh(); - this.timer = window.setInterval(() => this.refresh(), 10000); - }, - beforeUnmount() { - if (this.timer) { - window.clearInterval(this.timer); - } - }, }).mount("#app"); diff --git a/static/index.html b/static/index.html index aadc86e..af65966 100644 --- a/static/index.html +++ b/static/index.html @@ -1,107 +1,123 @@ -
+ +HY / Deploy Monitor
-- 页面本身不直接请求内网服务。所有探测都由 deploy 机器代发,适合直接通过公网 6666 访问。 -
-{{ group.ip }} · {{ group.groupLabel }}
-HY / Deploy Monitor
++ 页面本身不直接请求内网服务。所有探测都由 deploy 机器代发,适合直接通过公网 6666 访问。 +
+{{ group.ip }} · {{ group.groupLabel }}
+{let{slotScopeIds:u}=t;u&&(i=i?i.concat(u):u);let h=s(e),p=d(l(e),t,h,n,r,i,o);return p&&nP(p)&&"]"===p.data?l(t.anchor=p):(nO(),a(t.anchor=c("]"),h,p),p)},f=(e,t,r,i,a,c)=>{if(nD(e.parentElement,1)||nO(),t.el=null,c){let t=g(e);for(;;){let n=l(e);if(n&&n!==t)o(n);else break}}let u=l(e),h=s(e);return o(e),n(null,t,h,u,r,i,nM(h),a),r&&(r.vnode.el=t.el,rR(r,t.el)),u},g=(e,t="[",n="]")=>{let r=0;for(;e;)if((e=l(e))&&nP(e)&&(e.data===t&&r++,e.data===n))if(0===r)return l(e);else r--;return e},m=(e,t,n)=>{let r=t.parentNode;r&&r.replaceChild(e,t);let i=n;for(;i;)i.vnode.el===t&&(i.vnode.el=i.subTree.el=e),i=i.parent},y=e=>1===e.nodeType&&"TEMPLATE"===e.tagName;return[(e,t)=>{if(!t.hasChildNodes()){n(null,e,t),tZ(),t._vnode=e;return}u(t.firstChild,e,null,null,null),tZ(),t._vnode=e},u]}let nL="data-allow-mismatch",n$={0:"text",1:"children",2:"class",3:"style",4:"attribute"};function nD(e,t){if(0===t||1===t)for(;e&&!e.hasAttribute(nL);)e=e.parentElement;let n=e&&e.getAttribute(nL);if(null==n)return!1;{if(""===n)return!0;let e=n.split(",");return!!(0===t&&e.includes("children"))||e.includes(n$[t])}}let nV=Q().requestIdleCallback||(e=>setTimeout(e,1)),nB=Q().cancelIdleCallback||(e=>clearTimeout(e)),nj=e=>!!e.type.__asyncLoader;function nU(e,t){let{ref:n,props:r,children:i,ce:l}=t.vnode,s=ip(e,r,i);return s.ref=n,s.ce=l,delete t.vnode.ce,s}let nH=e=>e.type.__isKeepAlive;function nq(e,t){let n;if(E(e))return e.some(e=>nq(e,t));if(R(e))return e.split(",").includes(t);return"[object RegExp]"===(n=e,F.call(n))&&(e.lastIndex=0,e.test(t))}function nW(e,t){nz(e,"a",t)}function nK(e,t){nz(e,"da",t)}function nz(e,t,n=iT){let r=e.__wdc||(e.__wdc=()=>{let t=n;for(;t;){if(t.isDeactivated)return;t=t.parent}return e()});if(nX(t,r,n),n){let e=n.parent;for(;e&&e.parent;)nH(e.parent.vnode)&&function(e,t,n,r){let i=nX(t,e,r,!0);n6(()=>{w(r[t],i)},n)}(r,t,n,e),e=e.parent}}function nJ(e){e.shapeFlag&=-257,e.shapeFlag&=-513}function nG(e){return 128&e.shapeFlag?e.ssContent:e}function nX(e,t,n=iT,r=!1){if(n){let i=n[e]||(n[e]=[]),l=t.__weh||(t.__weh=(...r)=>{eE();let i=iN(n),l=tD(t,n,e,r);return i(),eI(),l});return r?i.unshift(l):i.push(l),l}}let nQ=e=>(t,n=iT)=>{iI&&"sp"!==e||nX(e,(...e)=>t(...e),n)},nZ=nQ("bm"),nY=nQ("m"),n0=nQ("bu"),n1=nQ("u"),n2=nQ("bum"),n6=nQ("um"),n3=nQ("sp"),n4=nQ("rtg"),n8=nQ("rtc");function n5(e,t=iT){nX("ec",e,t)}let n9="components",n7=Symbol.for("v-ndc");function re(e,t,n=!0,r=!1){let i=t0||iT;if(i){let n=i.type;if(e===n9){let e=i$(n,!1);if(e&&(e===t||e===j(t)||e===q(j(t))))return n}let l=rt(i[e]||n[e],t)||rt(i.appContext[e],t);return!l&&r?n:l}}function rt(e,t){return e&&(e[t]||e[j(t)]||e[q(j(t))])}let rn=e=>e?iE(e)?iL(e):rn(e.parent):null,rr=T(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>rn(e.parent),$root:e=>rn(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>rh(e),$forceUpdate:e=>e.f||(e.f=()=>{tJ(e.update)}),$nextTick:e=>e.n||(e.n=tz.bind(e.proxy)),$watch:e=>ne.bind(e)}),ri=(e,t)=>e!==b&&!e.__isScriptSetup&&A(e,t),rl={get({_:e},t){let n,r;if("__v_skip"===t)return!0;let{ctx:i,setupState:l,data:s,props:o,accessCache:a,type:c,appContext:u}=e;if("$"!==t[0]){let e=a[t];if(void 0!==e)switch(e){case 1:return l[t];case 2:return s[t];case 4:return i[t];case 3:return o[t]}else{if(ri(l,t))return a[t]=1,l[t];if(s!==b&&A(s,t))return a[t]=2,s[t];if(A(o,t))return a[t]=3,o[t];if(i!==b&&A(i,t))return a[t]=4,i[t];rc&&(a[t]=0)}}let h=rr[t];return h?("$attrs"===t&&eV(e.attrs,"get",""),h(e)):(n=c.__cssModules)&&(n=n[t])?n:i!==b&&A(i,t)?(a[t]=4,i[t]):A(r=u.config.globalProperties,t)?r[t]:void 0},set({_:e},t,n){let{data:r,setupState:i,ctx:l}=e;return ri(i,t)?(i[t]=n,!0):r!==b&&A(r,t)?(r[t]=n,!0):!A(e.props,t)&&!("$"===t[0]&&t.slice(1)in e)&&(l[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:i,props:l,type:s}},o){let a;return!!(n[o]||e!==b&&"$"!==o[0]&&A(e,o)||ri(t,o)||A(l,o)||A(r,o)||A(rr,o)||A(i.config.globalProperties,o)||(a=s.__cssModules)&&a[o])},defineProperty(e,t,n){return null!=n.get?e._.accessCache[t]=0:A(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}},rs=T({},rl,{get(e,t){if(t!==Symbol.unscopables)return rl.get(e,t,e)},has:(e,t)=>"_"!==t[0]&&!Z(t)});function ro(e){let t=iw();return t.setupContext||(t.setupContext=iF(t))}function ra(e){return E(e)?e.reduce((e,t)=>(e[t]=null,e),{}):e}let rc=!0;function ru(e,t,n){tD(E(e)?e.map(e=>e.bind(t.proxy)):e.bind(t.proxy),t,n)}function rh(e){let t,n=e.type,{mixins:r,extends:i}=n,{mixins:l,optionsCache:s,config:{optionMergeStrategies:o}}=e.appContext,a=s.get(n);return a?t=a:l.length||r||i?(t={},l.length&&l.forEach(e=>rd(t,e,o,!0)),rd(t,n,o)):t=n,M(n)&&s.set(n,t),t}function rd(e,t,n,r=!1){let{mixins:i,extends:l}=t;for(let s in l&&rd(e,l,n,!0),i&&i.forEach(t=>rd(e,t,n,!0)),t)if(r&&"expose"===s);else{let r=rp[s]||n&&n[s];e[s]=r?r(e[s],t[s]):t[s]}return e}let rp={data:rf,props:ry,emits:ry,methods:rv,computed:rv,beforeCreate:rm,created:rm,beforeMount:rm,mounted:rm,beforeUpdate:rm,updated:rm,beforeDestroy:rm,beforeUnmount:rm,destroyed:rm,unmounted:rm,activated:rm,deactivated:rm,errorCaptured:rm,serverPrefetch:rm,components:rv,directives:rv,watch:function(e,t){if(!e)return t;if(!t)return e;let n=T(Object.create(null),e);for(let r in t)n[r]=rm(e[r],t[r]);return n},provide:rf,inject:function(e,t){return rv(rg(e),rg(t))}};function rf(e,t){return t?e?function(){return T(I(e)?e.call(this,this):e,I(t)?t.call(this,this):t)}:t:e}function rg(e){if(E(e)){let t={};for(let n=0;n0&&ir.disconnect()},e.initCustomFormatter=function(){},e.initDirectivesForSSR=S,e.inject=t8,e.isMemoSame=iB,e.isProxy=tg,e.isReactive=td,e.isReadonly=tp,e.isRef=t_,e.isRuntimeOnly=()=>!h,e.isShallow=tf,e.isVNode=ia,e.markRaw=tv,e.mergeDefaults=function(e,t){let n=ra(e);for(let e in t){if(e.startsWith("__skip"))continue;let r=n[e];r?E(r)||I(r)?r=n[e]={type:r,default:t[e]}:r.default=t[e]:null===r&&(r=n[e]={default:t[e]}),r&&t[`__skip_${e}`]&&(r.skipFactory=!0)}return n},e.mergeModels=function(e,t){return e&&t?E(e)&&E(t)?e.concat(t):T({},ra(e),ra(t)):e||t},e.mergeProps=iS,e.nextTick=tz,e.nodeOps=iK,e.normalizeClass=ei,e.normalizeProps=function(e){if(!e)return null;let{class:t,style:n}=e;return t&&!R(t)&&(e.class=ei(t)),n&&(e.style=Y(n)),e},e.normalizeStyle=Y,e.onActivated=nW,e.onBeforeMount=nZ,e.onBeforeUnmount=n2,e.onBeforeUpdate=n0,e.onDeactivated=nK,e.onErrorCaptured=n5,e.onMounted=nY,e.onRenderTracked=n8,e.onRenderTriggered=n4,e.onScopeDispose=function(e,t=!1){l&&l.cleanups.push(e)},e.onServerPrefetch=n3,e.onUnmounted=n6,e.onUpdated=n1,e.onWatcherCleanup=tF,e.openBlock=it,e.patchProp=l_,e.popScopeId=function(){t1=null},e.provide=t4,e.proxyRefs=tN,e.pushScopeId=function(e){t1=e},e.queuePostFlushCb=tX,e.reactive=ta,e.readonly=tu,e.ref=tS,e.registerRuntimeCompiler=iO,e.render=l1,e.renderList=function(e,t,n,r){let i,l=n&&n[r],s=E(e);if(s||R(e)){let n=s&&td(e),r=!1,o=!1;n&&(r=!tf(e),o=tp(e),e=eU(e)),i=Array(e.length);for(let n=0,s=e.length;nt(e,n,void 0,l&&l[n]));else{let n=Object.keys(e);i=Array(n.length);for(let r=0,s=n.length;r0;return"default"!==t&&(n.name=t),it(),io(r4,null,[ip("slot",n,r&&r())],e?-2:64)}let l=e[t];l&&l._c&&(l._d=!1),it();let s=l&&function e(t){return t.some(t=>!ia(t)||t.type!==r5&&(t.type!==r4||!!e(t.children)))?t:null}(l(n)),o=n.key||s&&s.key,a=io(r4,{key:(o&&!O(o)?o:`_${t}`)+(!s&&r?"_fb":"")},s||(r?r():[]),s&&1===e._?64:-2);return!i&&a.scopeId&&(a.slotScopeIds=[a.scopeId+"-s"]),l&&l._c&&(l._d=!0),a},e.resolveComponent=function(e,t){return re(n9,e,!0,t)||e},e.resolveDirective=function(e){return re("directives",e)},e.resolveDynamicComponent=function(e){return R(e)?re(n9,e,!1)||e:e||n7},e.resolveFilter=null,e.resolveTransitionHooks=n_,e.setBlockTracking=il,e.setDevtoolsHook=S,e.setTransitionHooks=nC,e.shallowReactive=tc,e.shallowReadonly=function(e){return th(e,!0,e8,tr,to)},e.shallowRef=tx,e.ssrContextKey=t5,e.ssrUtils=null,e.stop=function(e){e.effect.stop()},e.toDisplayString=ep,e.toHandlerKey=W,e.toHandlers=function(e,t){let n={};for(let r in e)n[t&&/[A-Z]/.test(r)?`on:${r}`:W(r)]=e[r];return n},e.toRaw=tm,e.toRef=function(e,t,n){if(t_(e))return e;if(I(e))return new tR(e);if(!M(e)||!(arguments.length>1))return tS(e);return new tI(e,t,n)},e.toRefs=function(e){let t=E(e)?Array(e.length):{};for(let n in e)t[n]=new tI(e,n,void 0);return t},e.toValue=function(e){return I(e)?e():tT(e)},e.transformVNodeArgs=function(e){},e.triggerRef=function(e){e.dep&&e.dep.trigger()},e.unref=tT,e.useAttrs=function(){return ro().attrs},e.useCssModule=function(e="$style"){return b},e.useCssVars=function(e){let t=iw();if(!t)return;let n=t.ut=(n=e(t.proxy))=>{Array.from(document.querySelectorAll(`[data-v-owner="${t.uid}"]`)).forEach(e=>ll(e,n))},r=()=>{let r=e(t.proxy);t.ce?ll(t.ce,r):function e(t,n){if(128&t.shapeFlag){let r=t.suspense;t=r.activeBranch,r.pendingBranch&&!r.isHydrating&&r.effects.push(()=>{e(r.activeBranch,n)})}for(;t.component;)t=t.component.subTree;if(1&t.shapeFlag&&t.el)ll(t.el,n);else if(t.type===r4)t.children.forEach(t=>e(t,n));else if(t.type===r9){let{el:e,anchor:r}=t;for(;e&&(ll(e,n),e!==r);)e=e.nextSibling}}(t.subTree,r),n(r)};n0(()=>{tX(r)}),nY(()=>{t7(r,S,{flush:"post"});let e=new MutationObserver(r);e.observe(t.subTree.el.parentNode,{childList:!0}),n6(()=>e.disconnect())})},e.useHost=lT,e.useId=function(){let e=iw();return e?(e.appContext.config.idPrefix||"v")+"-"+e.ids[0]+e.ids[1]++:""},e.useModel=function(e,t,n=b){let r=iw(),i=j(t),l=H(t),s=rx(e,i),o=tE((s,o)=>{let a,c,u=b;return t9(()=>{let t=e[i];K(a,t)&&(a=t,o())}),{get:()=>(s(),n.get?n.get(a):a),set(e){let s=n.set?n.set(e):e;if(!K(s,a)&&!(u!==b&&K(e,u)))return;let h=r.vnode.props;h&&(t in h||i in h||l in h)&&(`onUpdate:${t}`in h||`onUpdate:${i}`in h||`onUpdate:${l}`in h)||(a=e,o()),r.emit(`update:${t}`,s),K(e,s)&&K(e,u)&&!K(s,c)&&o(),u=e,c=s}}});return o[Symbol.iterator]=()=>{let e=0;return{next:()=>e<2?{value:e++?s||b:o,done:!1}:{done:!0}}},o},e.useSSRContext=()=>{},e.useShadowRoot=function(){let e=lT();return e&&e.shadowRoot},e.useSlots=function(){return ro().slots},e.useTemplateRef=function(e){let t=iw(),n=tx(null);return t&&Object.defineProperty(t.refs===b?t.refs={}:t.refs,e,{enumerable:!0,get:()=>n.value,set:e=>n.value=e}),n},e.useTransitionState=np,e.vModelCheckbox=lj,e.vModelDynamic={created(e,t,n){lJ(e,t,n,null,"created")},mounted(e,t,n){lJ(e,t,n,null,"mounted")},beforeUpdate(e,t,n,r){lJ(e,t,n,r,"beforeUpdate")},updated(e,t,n,r){lJ(e,t,n,r,"updated")}},e.vModelRadio=lH,e.vModelSelect=lq,e.vModelText=lB,e.vShow={name:"show",beforeMount(e,{value:t},{transition:n}){e[lt]="none"===e.style.display?"":e.style.display,n&&t?n.beforeEnter(e):lr(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),lr(e,!0),r.enter(e)):r.leave(e,()=>{lr(e,!1)}):lr(e,t))},beforeUnmount(e,{value:t}){lr(e,t)}},e.version=ij,e.warn=S,e.watch=function(e,t,n){return t7(e,t,n)},e.watchEffect=function(e,t){return t7(e,null,t)},e.watchPostEffect=function(e,t){return t7(e,null,{flush:"post"})},e.watchSyncEffect=t9,e.withAsyncContext=function(e){let t=iw(),n=iI,r=e();iA(),n&&u(!1);let i=()=>{iN(t),n&&u(!0)},l=()=>{iw()!==t&&t.scope.off(),iA(),n&&u(!1)};return P(r)&&(r=r.catch(e=>{throw i(),Promise.resolve().then(()=>Promise.resolve().then(l)),e})),[r,()=>{i(),Promise.resolve().then(l)}]},e.withCtx=t6,e.withDefaults=function(e,t){return null},e.withDirectives=function(e,t){if(null===t0)return e;let n=iL(t0),r=e.dirs||(e.dirs=[]);for(let e=0;e