@weapp-vite/dashboard 6.17.2 → 6.17.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/AppEmptyState.js +1 -1
- package/dist/assets/AppInsetPanel.js +1 -1
- package/dist/assets/AppMetricTile.js +1 -1
- package/dist/assets/AppRuntimeBadge.js +1 -1
- package/dist/assets/AppSectionHeading.js +1 -1
- package/dist/assets/activity.js +4 -4
- package/dist/assets/analyze.js +29 -29
- package/dist/assets/{css.worker-CvXBzhp8.js → css.worker-C078mPpn.js} +1 -1
- package/dist/assets/echarts.js +11 -11
- package/dist/assets/index.js +1 -1
- package/dist/assets/{json.worker-BkJRGcCJ.js → json.worker-C4lWBgVJ.js} +1 -1
- package/dist/assets/monaco.js +13 -13
- package/dist/assets/pages.js +2 -2
- package/dist/assets/rolldown-runtime.js +1 -1
- package/dist/assets/tokens.js +1 -1
- package/dist/assets/{ts.worker-B0J26iPs.js → ts.worker-CDlTriQ3.js} +8 -8
- package/dist/assets/vue.js +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
import{C as e,F as t,
|
|
1
|
+
import{C as e,F as t,G as n,P as r,_ as i,j as a,z as o}from"./vue.js";import{k as s}from"./index.js";function c(e){let t=document.createElement(`textarea`);t.value=e,t.setAttribute(`readonly`,`true`),t.style.position=`fixed`,t.style.opacity=`0`,document.body.appendChild(t),t.select();let n=document.execCommand(`copy`);if(document.body.removeChild(t),!n)throw Error(`copy text failed`)}async function l(e){let t=null;try{await Promise.race([navigator.clipboard.writeText(e),new Promise((e,n)=>{t=setTimeout(()=>{n(Error(`clipboard write timeout`))},800)})])}finally{t&&clearTimeout(t)}}async function u(e){try{c(e);return}catch{if(navigator.clipboard&&window.isSecureContext){await l(e);return}}throw Error(`copy text failed`)}var d=e({__name:`AppEmptyState`,props:{as:{},compact:{type:Boolean}},setup(e,{expose:t}){t();let n={};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}});function f(e,s,c,l,u,d){return a(),i(t(c.as??`div`),{class:n([`rounded-xl border border-dashed border-(--dashboard-border) bg-(--dashboard-panel-muted) text-sm text-(--dashboard-text-soft)`,c.compact?`px-3 py-4`:`p-5`])},{default:o(()=>[r(e.$slots,`default`)]),_:3},8,[`class`])}var p=s(d,[[`render`,f]]);export{u as n,p as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{C as e,
|
|
1
|
+
import{C as e,G as t,J as n,P as r,g as i,j as a,v as o,y as s}from"./vue.js";import{C as c,k as l}from"./index.js";var u=e({__name:`AppInsetPanel`,props:{eyebrow:{}},setup(e,{expose:t}){t();let n={get mutedPanelStyles(){return c}};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),d={key:0,class:`text-[11px] uppercase tracking-[0.18em] text-(--dashboard-text-soft)`};function f(e,c,l,u,f,p){return a(),s(`div`,{class:t(u.mutedPanelStyles())},[l.eyebrow?(a(),s(`p`,d,n(l.eyebrow),1)):o(``,!0),i(`div`,{class:t(l.eyebrow?`mt-3`:void 0)},[r(e.$slots,`default`)],2)],2)}var p=l(u,[[`render`,f]]);export{p as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{C as e,
|
|
1
|
+
import{C as e,G as t,J as n,P as r,S as i,g as a,j as o,x as s,y as c,z as l}from"./vue.js";import{k as u}from"./index.js";var d=e({__name:`AppMetaLabel`,props:{accent:{type:Boolean}},setup(e,{expose:t}){t();let n={};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}});function f(e,n,i,a,s,l){return o(),c(`p`,{class:t([`text-[11px] uppercase tracking-[0.18em]`,i.accent?`text-(--dashboard-accent)`:`text-(--dashboard-text-soft)`])},[r(e.$slots,`default`)],2)}var p=u(d,[[`render`,f]]),m=`rounded-xl border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3`,h=e({__name:`AppMetricTile`,props:{label:{},value:{}},setup(e,{expose:t}){t();let n={panelClassName:m,AppMetaLabel:p};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),g={class:`mt-1.5 text-base font-semibold text-(--dashboard-text)`};function _(e,r,u,d,f,p){return o(),c(`div`,{class:t(d.panelClassName)},[i(d.AppMetaLabel,null,{default:l(()=>[s(n(u.label),1)]),_:1}),a(`p`,g,n(u.value),1)])}var v=u(h,[[`render`,_]]);export{p as n,v as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{C as e,
|
|
1
|
+
import{C as e,G as t,J as n,j as r,y as i}from"./vue.js";import{T as a,k as o}from"./index.js";var s=e({__name:`AppRuntimeBadge`,props:{label:{},tone:{default:`neutral`}},setup(e,{expose:t}){t();let n={get runtimeBadgeStyles(){return a}};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}});function c(e,a,o,s,c,l){return r(),i(`span`,{class:t(s.runtimeBadgeStyles({tone:o.tone}))},n(o.label),3)}var l=o(s,[[`render`,c]]);export{l as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{C as e,
|
|
1
|
+
import{C as e,G as t,J as n,P as r,S as i,g as a,j as o,v as s,y as c}from"./vue.js";import{C as l,O as u,k as d}from"./index.js";var f=e({__name:`AppIconFeatureCard`,props:{iconName:{},title:{},description:{},eyebrow:{},interactive:{type:Boolean},meta:{}},setup(e,{expose:t}){t();let n={get mutedPanelStyles(){return l},DashboardIcon:u};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),p={key:0,class:`text-[11px] uppercase tracking-[0.22em] text-(--dashboard-accent)`},m={class:`flex h-10 w-10 shrink-0 items-center justify-center rounded-md bg-(--dashboard-accent-soft) text-(--dashboard-accent)`},h={class:`h-5 w-5`},g={class:`min-w-0`},_={class:`font-semibold tracking-tight`},v={key:0,class:`mt-1 text-xs uppercase tracking-[0.16em] text-(--dashboard-text-soft)`},y={key:1,class:`mt-2 text-sm leading-6 text-(--dashboard-text-muted)`};function b(e,r,l,u,d,f){return o(),c(`div`,{class:t(u.mutedPanelStyles({interactive:l.interactive}))},[l.eyebrow?(o(),c(`p`,p,n(l.eyebrow),1)):s(``,!0),a(`div`,{class:t(l.eyebrow?`mt-3 flex items-start gap-3`:`flex items-start gap-3`)},[a(`span`,m,[a(`span`,h,[i(u.DashboardIcon,{name:l.iconName},null,8,[`name`])])]),a(`div`,g,[a(`h3`,_,n(l.title),1),l.meta?(o(),c(`p`,v,n(l.meta),1)):s(``,!0),l.description?(o(),c(`p`,y,n(l.description),1)):s(``,!0)])],2)],2)}var x=d(f,[[`render`,b]]),S=e({__name:`AppSectionHeading`,props:{eyebrow:{default:void 0},title:{},description:{default:void 0}},setup(e,{expose:t}){t();let n={};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),C={class:`space-y-1.5`},w={key:0,class:`text-[11px] uppercase tracking-[0.28em] text-(--dashboard-accent)`},T={class:`flex flex-col gap-2 md:flex-row md:items-end md:justify-between`},E={class:`text-xl font-semibold tracking-tight md:text-2xl`},D={key:0,class:`mt-1 text-sm leading-6 text-(--dashboard-text-muted)`};function O(e,t,i,l,u,d){return o(),c(`div`,C,[i.eyebrow?(o(),c(`p`,w,n(i.eyebrow),1)):s(``,!0),a(`div`,T,[a(`div`,null,[a(`h2`,E,n(i.title),1),i.description?(o(),c(`p`,D,n(i.description),1)):s(``,!0)]),r(e.$slots,`aside`)])])}var k=d(S,[[`render`,O]]);export{x as n,k as t};
|
package/dist/assets/activity.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import{B as e,C as t,D as n,E as r,
|
|
2
|
-
`,` `)}let
|
|
3
|
-
`));function l(e){a.value=e,o&&clearTimeout(o),o=setTimeout(()=>{a.value=``,o=null},1800)}async function u(){try{await L(c.value),l(`已复制`)}catch{l(`复制失败`)}}function f(){let e=new Blob([`${JSON.stringify(n.events,null,2)}\n`],{type:`application/json`}),t=URL.createObjectURL(e),r=document.createElement(`a`);r.href=t,r.download=`weapp-vite-dashboard-events.json`,r.click(),URL.revokeObjectURL(t),l(`已导出`)}return v(()=>{o&&clearTimeout(o)}),(n,i)=>(_(),T(`div`,ae,[h(`p`,V,` 匹配 `+p(t.filteredCount)+` / `+p(t.totalCount)+` 条事件 `,1),h(`div`,H,[a.value?(_(),T(`span`,U,p(a.value),1)):S(``,!0),h(`button`,{type:`button`,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) px-3 text-sm text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-accent) focus:border-(--dashboard-border-strong) focus:outline-none disabled:opacity-50`,disabled:t.events.length===0,onClick:u},` 复制事件 `,8,W),h(`button`,{type:`button`,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) px-3 text-sm text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-accent) focus:border-(--dashboard-border-strong) focus:outline-none disabled:opacity-50`,disabled:t.events.length===0,onClick:f},` 导出 JSON `,8,G),e(h(`select`,{"onUpdate:modelValue":i[0]||=e=>r.value=e,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) px-2.5 text-sm text-(--dashboard-text) outline-none transition focus:border-(--dashboard-accent)`},[...i[1]||=[h(`option`,{value:`time`},` 按时间 `,-1),h(`option`,{value:`duration`},` 按耗时 `,-1),h(`option`,{value:`severity`},` 按等级 `,-1),h(`option`,{value:`source`},` 按来源 `,-1)]],512),[[y,r.value]])])]))}}),q={class:`flex items-start justify-between gap-3`},J={key:0,class:`text-[11px] uppercase tracking-[0.18em] text-(--dashboard-accent)`},oe={class:`mt-1 text-lg font-semibold tracking-tight`},se={class:`mt-3 text-sm leading-6 text-(--dashboard-text-muted)`},ce={key:0,class:`mt-3 text-[11px] uppercase tracking-[0.18em] text-(--dashboard-text-soft)`},le={key:1,class:`mt-2 text-sm font-medium text-(--dashboard-text)`},ue=t({__name:`AppRuntimeFocusCard`,props:{event:{},eyebrow:{},emptyTitle:{},emptyDetail:{},durationText:{}},setup(e){let t=e,r=g(()=>t.event?M(t.event):null),i=g(()=>t.event?.title??t.emptyTitle??`尚无运行事件`),s=g(()=>t.event?.detail??t.emptyDetail??`当前工作区还没有推入结构化运行事件。`),l=g(()=>t.event?P(t.event):null);return(e,u)=>(_(),T(`div`,{class:x(o(D)())},[h(`div`,q,[h(`div`,null,[t.eyebrow?(_(),T(`p`,J,p(t.eyebrow),1)):S(``,!0),h(`h3`,oe,p(i.value),1)]),r.value?(_(),m(z,a(n({key:0},r.value)),null,16)):S(``,!0)]),h(`p`,se,p(s.value),1),t.event?(_(),T(`p`,ce,p(l.value),1)):S(``,!0),t.durationText?(_(),T(`p`,le,p(t.durationText),1)):S(``,!0),c(e.$slots,`default`)],2))}}),de={key:0,class:`mt-3 flex flex-wrap gap-1.5`},fe={key:1,class:`mt-4 grid gap-3 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3`},pe={class:`flex min-w-0 items-start justify-between gap-3`},me={class:`min-w-0`},he={key:0,class:`mt-1 truncate font-mono text-xs text-(--dashboard-text-soft)`},ge={key:0,class:`grid gap-2 sm:grid-cols-2`},_e={class:`text-[11px] text-(--dashboard-text-soft)`},ve={class:`mt-1 text-sm font-semibold text-(--dashboard-text)`},ye={key:1,class:`flex flex-wrap gap-1.5`},be={key:2,class:`grid gap-2 text-xs leading-5 text-(--dashboard-text-muted)`},xe={key:0},Se={key:1},Ce=t({__name:`ActivitySelectedEventPanel`,props:{event:{}},setup(e){let t=e,n=g(()=>t.event?.durationMs===void 0?void 0:`耗时 ${N(t.event.durationMs)}`),r=g(()=>{let e=t.event?.profile;return e?[{label:`总耗时`,value:N(e.totalMs)},{label:`构建核心`,value:N(e.buildCoreMs)},{label:`转换`,value:N(e.transformMs)},{label:`写入`,value:N(e.writeMs)},{label:`监听到脏标记`,value:N(e.watchToDirtyMs)},{label:`产物发射`,value:N(e.emitMs)},{label:`共享 chunk`,value:N(e.sharedChunkResolveMs)}].filter(e=>e.value!==`未记录`):[]}),i=g(()=>{let e=t.event?.profile;return e?[{label:`脏入口`,value:e.dirtyCount},{label:`待处理`,value:e.pendingCount},{label:`已发射`,value:e.emittedCount}].filter(e=>typeof e.value==`number`):[]}),a=g(()=>t.event?.profile?.sourceRootFile??t.event?.profile?.relativeFile??t.event?.profile?.file);return(t,o)=>(_(),m(I,{eyebrow:`Selected`,title:`当前事件`,"icon-name":`metric-search`},{default:E(()=>[u(ue,{event:e.event,eyebrow:`focus`,"empty-title":`未选择事件`,"empty-detail":`选择左侧事件后查看详情。`,"duration-text":n.value},{default:E(()=>[e.event?.tags?.length?(_(),T(`div`,de,[(_(!0),T(b,null,s(e.event.tags,e=>(_(),m(z,{key:e,label:e,tone:`neutral`},null,8,[`label`]))),128))])):S(``,!0),e.event?.profile?(_(),T(`div`,fe,[h(`div`,pe,[h(`div`,me,[o[0]||=h(`p`,{class:`text-sm font-semibold text-(--dashboard-text)`},` HMR 阶段明细 `,-1),a.value?(_(),T(`p`,he,p(a.value),1)):S(``,!0)]),e.event.profile.event?(_(),m(z,{key:0,label:e.event.profile.event,tone:`info`},null,8,[`label`])):S(``,!0)]),r.value.length>0?(_(),T(`dl`,ge,[(_(!0),T(b,null,s(r.value,e=>(_(),T(`div`,{key:e.label,class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) px-3 py-2`},[h(`dt`,_e,p(e.label),1),h(`dd`,ve,p(e.value),1)]))),128))])):S(``,!0),i.value.length>0?(_(),T(`div`,ye,[(_(!0),T(b,null,s(i.value,e=>(_(),m(z,{key:e.label,label:`${e.label} ${e.value}`,tone:`neutral`},null,8,[`label`]))),128))])):S(``,!0),e.event.profile.dirtyReasonSummary?.length||e.event.profile.pendingReasonSummary?.length?(_(),T(`div`,be,[e.event.profile.dirtyReasonSummary?.length?(_(),T(`p`,xe,` 脏标记:`+p(e.event.profile.dirtyReasonSummary.join(`、`)),1)):S(``,!0),e.event.profile.pendingReasonSummary?.length?(_(),T(`p`,Se,` 待处理:`+p(e.event.profile.pendingReasonSummary.join(`、`)),1)):S(``,!0)])):S(``,!0)])):S(``,!0)]),_:1},8,[`event`,`duration-text`])]),_:1}))}}),we={class:`flex items-start justify-between gap-3`},Te={class:`min-w-0`},Ee={class:`truncate font-medium text-(--dashboard-text)`},De={class:`mt-1 text-[11px] uppercase tracking-[0.16em] text-(--dashboard-text-soft)`},Oe={key:0,class:`mt-3 flex flex-wrap gap-2 text-[11px] uppercase tracking-[0.14em] text-(--dashboard-text-soft)`},ke={key:1,class:`mt-3 text-sm text-(--dashboard-text-muted)`},Ae=t({__name:`AppRuntimeSourceCard`,props:{source:{},count:{},errorCount:{},averageDuration:{},latestTimestamp:{},countLabel:{}},setup(e){let t=e,n=g(()=>k(t)),r=g(()=>t.latestTimestamp?`最近事件 ${t.latestTimestamp}`:`${t.count} ${t.countLabel??`条事件`}`),i=g(()=>[{key:`error-count`,label:`错误 ${t.errorCount}`},{key:`average-duration`,label:`平均耗时 ${t.averageDuration}`}]),c=g(()=>`平均耗时 ${t.averageDuration}`);return(e,l)=>(_(),T(`div`,{class:x(o(D)({padding:`sm`}))},[h(`div`,we,[h(`div`,Te,[h(`p`,Ee,p(t.source),1),h(`p`,De,p(r.value),1)]),u(z,a(C(n.value)),null,16)]),t.latestTimestamp?(_(),T(`div`,Oe,[(_(!0),T(b,null,s(i.value,e=>(_(),T(`span`,{key:e.key,class:`rounded-full border border-(--dashboard-border) px-2 py-0.5`},p(e.label),1))),128))])):(_(),T(`p`,ke,p(c.value),1))],2))}}),je={class:`mt-1 text-lg font-semibold`},Me=t({__name:`AppStatCard`,props:{label:{},value:{}},setup(e){let t=D({padding:`sm`});return(n,r)=>(_(),T(`div`,{class:x(o(t))},[u(B,null,{default:E(()=>[w(p(e.label),1)]),_:1}),h(`p`,je,p(e.value),1)],2))}}),Ne={class:`flex shrink-0 items-center gap-2`},Pe={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},Fe={class:`h-3.5 w-3.5`},Ie={class:`grid gap-3`},Le={class:`flex items-start justify-between gap-3`},Re={class:`min-w-0`},ze={class:`text-sm font-semibold text-(--dashboard-text)`},Be={class:`mt-1 text-xs leading-5 text-(--dashboard-text-muted)`},Ve={class:`grid grid-cols-2 gap-2 sm:grid-cols-5 xl:grid-cols-2 2xl:grid-cols-5`},He={key:0,class:`grid max-h-52 gap-2 overflow-y-auto pr-1`},Ue={class:`flex items-start justify-between gap-3`},We={class:`min-w-0`},Ge={class:`truncate text-sm font-medium text-(--dashboard-text)`},Ke={class:`mt-1 truncate text-xs text-(--dashboard-text-soft)`},qe={class:`mt-2 line-clamp-2 text-xs leading-5 text-(--dashboard-text-muted)`},Je=t({__name:`RuntimeIncidentDigestPanel`,props:{digest:{}},setup(e){let t=e,n=d(``),r=null,i=g(()=>t.digest.status===`critical`?`error`:t.digest.status===`warning`?`warning`:`success`);function a(e){return e===`error`?`text-rose-600 dark:text-rose-300`:e===`warning`?`text-amber-600 dark:text-amber-300`:`text-(--dashboard-accent)`}function o(e){return e===`critical`?`border-rose-400/60 bg-(--dashboard-panel-muted)`:e===`warning`?`border-amber-400/60 bg-(--dashboard-panel-muted)`:`border-emerald-400/60 bg-(--dashboard-panel-muted)`}function c(e){n.value=e,r&&clearTimeout(r),r=setTimeout(()=>{n.value=``,r=null},1800)}async function l(){try{await L(t.digest.report),c(`摘要已复制`)}catch{c(`复制失败`)}}return v(()=>{r&&clearTimeout(r)}),(t,r)=>(_(),m(I,{eyebrow:`Incident`,title:`事故摘要`,"icon-name":`metric-quality`},{header:E(()=>[h(`div`,Ne,[n.value?(_(),T(`span`,Pe,p(n.value),1)):S(``,!0),h(`button`,{type:`button`,class:`inline-flex h-8 items-center gap-1.5 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-xs text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-accent) focus:border-(--dashboard-border-strong) focus:outline-none`,onClick:l},[h(`span`,Fe,[u(O,{name:`metric-copy`})]),r[0]||=w(` 复制 `,-1)])])]),default:E(()=>[h(`div`,Ie,[h(`div`,{class:x([`rounded-md border px-3 py-2.5`,o(e.digest.status)])},[h(`div`,Le,[h(`div`,Re,[h(`p`,ze,p(e.digest.statusLabel),1),h(`p`,Be,p(e.digest.statusDetail),1)]),u(z,{label:e.digest.statusLabel,tone:i.value},null,8,[`label`,`tone`])])],2),h(`div`,Ve,[(_(!0),T(b,null,s(e.digest.metrics,e=>(_(),m(re,{key:e.label,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),e.digest.incidents.length>0?(_(),T(`div`,He,[(_(!0),T(b,null,s(e.digest.incidents,e=>(_(),T(`article`,{key:e.id,class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 py-2.5`},[h(`div`,Ue,[h(`div`,We,[h(`p`,Ge,p(e.title),1),h(`p`,Ke,p(e.source)+` · `+p(e.kindLabel)+` · `+p(e.timestamp)+` · `+p(e.duration),1)]),h(`span`,{class:x([`shrink-0 text-xs font-semibold`,a(e.level)])},p(e.levelLabel),3)]),h(`p`,qe,p(e.reason)+` · `+p(e.detail),1)]))),128))])):(_(),m(R,{key:1,compact:``},{default:E(()=>[...r[1]||=[w(` 当前筛选范围内没有需要处理的运行时事件。 `,-1)]]),_:1}))])]),_:1}))}}),Ye={class:`grid min-h-0 content-start gap-3 overflow-y-auto pr-1`},Xe={class:`grid gap-2 sm:grid-cols-2`},Ze={class:`grid max-h-44 gap-2 overflow-y-auto pr-1`},Qe={class:`flex items-start justify-between gap-3`},$e={class:`font-medium`},et={class:`mt-1 text-sm leading-6 text-(--dashboard-text-muted)`},tt={key:0,class:`grid max-h-full gap-2 overflow-y-auto pr-1`},nt=t({__name:`ActivityInsightPanel`,props:{selectedEvent:{},incidentDigest:{},eventSummary:{},filteredEventSummary:{},diagnostics:{},sourceBreakdown:{}},setup(e){return(t,r)=>(_(),T(`div`,Ye,[u(Ce,{event:e.selectedEvent},null,8,[`event`]),u(Je,{digest:e.incidentDigest},null,8,[`digest`]),u(I,{eyebrow:`Runtime`,title:`事件摘要`,"icon-name":`metric-time`},{default:E(()=>[h(`div`,Xe,[(_(!0),T(b,null,s([...e.eventSummary,...e.filteredEventSummary],e=>(_(),m(Me,n({key:e.label},{ref_for:!0},e),null,16))),128))])]),_:1}),u(I,{eyebrow:`Diagnostics`,title:`当前诊断队列`,"icon-name":`metric-health`,"content-class":`min-h-0 overflow-hidden`},{default:E(()=>[h(`ul`,Ze,[(_(!0),T(b,null,s(e.diagnostics,e=>(_(),T(`li`,{key:e.label,class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-4 py-3`},[h(`div`,Qe,[h(`div`,null,[h(`p`,$e,p(e.label),1),h(`p`,et,p(e.detail),1)]),u(z,{label:e.status,tone:`info`},null,8,[`label`])])]))),128))])]),_:1}),u(I,{eyebrow:`Sources`,title:`事件来源`,"icon-name":`hero-system`,"content-class":`min-h-0 overflow-hidden`},{default:E(()=>[e.sourceBreakdown.length>0?(_(),T(`div`,tt,[(_(!0),T(b,null,s(e.sourceBreakdown,e=>(_(),m(Ae,n({key:e.source},{ref_for:!0},e),null,16))),128))])):S(``,!0)]),_:1})]))}}),rt={class:`grid gap-3 xl:grid-cols-[minmax(14rem,0.85fr)_minmax(0,1.15fr)]`},it={for:`dashboard-event-search`},at=[`value`],ot={class:`grid gap-3`},st={class:`mt-2 flex flex-wrap gap-2`},ct=[`onClick`],lt={key:0,class:`mt-2 text-xs leading-5 text-(--dashboard-text-soft)`},ut={class:`grid gap-3 md:grid-cols-3`},dt={class:`mt-2 flex flex-wrap gap-2`},ft=[`onClick`],pt={class:`mt-2 flex flex-wrap gap-2`},mt=[`onClick`],ht={class:`mt-2 flex flex-wrap gap-2`},gt=[`onClick`],_t=t({__name:`AppEventFilterPanel`,props:{searchQuery:{},presetDescription:{},filterPresets:{},eventKindOptions:{},eventLevelOptions:{},eventSourceOptions:{},eventKindFilter:{},eventLevelFilter:{},eventSourceFilter:{}},emits:[`update:searchQuery`,`update:eventKindFilter`,`update:eventLevelFilter`,`update:eventSourceFilter`,`applyPreset`],setup(e,{emit:t}){let n=e,r=t;function i(){return F({kind:`theme`,active:!1})}function a(e,t){return F({kind:`theme`,active:e===t})}return(t,o)=>(_(),m(ie,null,{default:E(()=>[h(`div`,rt,[h(`div`,null,[h(`label`,it,[u(B,null,{default:E(()=>[...o[1]||=[w(` 搜索事件 `,-1)]]),_:1})]),h(`input`,{id:`dashboard-event-search`,value:e.searchQuery,type:`text`,placeholder:`搜索标题、详情、来源或标签`,class:`mt-2 w-full rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) px-3 py-2 text-sm text-(--dashboard-text) outline-none transition focus:border-(--dashboard-border-strong)`,onInput:o[0]||=e=>r(`update:searchQuery`,e.target.value)},null,40,at)]),h(`div`,ot,[h(`div`,null,[u(B,null,{default:E(()=>[...o[2]||=[w(` 快速预设 `,-1)]]),_:1}),h(`div`,st,[(_(!0),T(b,null,s(e.filterPresets,e=>(_(),T(`button`,{key:e.key,class:x(i()),onClick:t=>r(`applyPreset`,e.key)},p(e.label),11,ct))),128))]),e.presetDescription?(_(),T(`p`,lt,p(e.presetDescription),1)):S(``,!0)]),h(`div`,ut,[h(`div`,null,[u(B,null,{default:E(()=>[...o[3]||=[w(` 类型过滤 `,-1)]]),_:1}),h(`div`,dt,[(_(!0),T(b,null,s(e.eventKindOptions,e=>(_(),T(`button`,{key:e.value,class:x(a(n.eventKindFilter,e.value)),onClick:t=>r(`update:eventKindFilter`,e.value)},p(e.label),11,ft))),128))])]),h(`div`,null,[u(B,null,{default:E(()=>[...o[4]||=[w(` 等级过滤 `,-1)]]),_:1}),h(`div`,pt,[(_(!0),T(b,null,s(e.eventLevelOptions,e=>(_(),T(`button`,{key:e.value,class:x(a(n.eventLevelFilter,e.value)),onClick:t=>r(`update:eventLevelFilter`,e.value)},p(e.label),11,mt))),128))])]),h(`div`,null,[u(B,null,{default:E(()=>[...o[5]||=[w(` 来源过滤 `,-1)]]),_:1}),h(`div`,ht,[(_(!0),T(b,null,s(e.eventSourceOptions,e=>(_(),T(`button`,{key:e.value,class:x(a(n.eventSourceFilter,e.value)),onClick:t=>r(`update:eventSourceFilter`,e.value)},p(e.label),11,gt))),128))])])])])])]),_:1}))}}),vt={class:`flex items-start justify-between gap-3`},yt={class:`font-medium text-(--dashboard-text)`},bt=t({__name:`AppRuntimeEventListItem`,props:{event:{},selected:{type:Boolean}},setup(e){let t=e,n=g(()=>M(t.event)),r=g(()=>P(t.event)),i=g(()=>t.selected?`border-(--dashboard-border-strong) bg-(--dashboard-panel)`:`border-(--dashboard-border)`);return(e,o)=>(_(),T(`li`,{class:x([`rounded-md border bg-(--dashboard-panel-muted) px-4 py-3 transition`,i.value])},[h(`div`,vt,[h(`div`,null,[h(`p`,yt,p(t.event.title),1),u(B,{class:`mt-1`},{default:E(()=>[w(p(r.value),1)]),_:1})]),u(z,a(C(n.value)),null,16)])],2))}}),xt=1e3,St=5,Y={error:4,warning:3,success:2,info:1};function X(e){let t=Date.parse(e.timestamp);return Number.isFinite(t)?t:0}function Z(e,t){return typeof e.durationMs==`number`&&e.durationMs>=t}function Ct(e,t){return e.level===`error`||e.level===`warning`||Z(e,t)}function wt(e,t){let n=[];return e.level===`error`?n.push(`错误事件`):e.level===`warning`&&n.push(`警告事件`),Z(e,t)&&n.push(`耗时 ${N(e.durationMs)}`),n.join(` · `)||`需要关注`}function Tt(e,t){return{id:e.id,title:e.title,detail:e.detail,level:e.level,levelLabel:j(e.level),kindLabel:A(e.kind),source:e.source??`dashboard`,timestamp:e.timestamp,duration:N(e.durationMs),reason:wt(e,t)}}function Et(e,t,n){return e>0?`critical`:t>0||n>0?`warning`:`healthy`}function Dt(e){return e===`critical`?`需要立即处理`:e===`warning`?`需要关注`:`运行平稳`}function Ot(e,t,n,r){return e===`critical`?`检测到 ${t} 个错误事件,优先排查失败来源。`:e===`warning`?`检测到 ${n} 个警告和 ${r} 个慢事件,建议跟进。`:`当前筛选范围内没有错误、警告或慢事件。`}function kt(e){let t=e.incidents.length>0?e.incidents.map(e=>`- [${e.levelLabel}] ${e.title}(${e.source} · ${e.kindLabel} · ${e.timestamp} · ${e.duration}):${e.detail}`):[`- 当前筛选范围内没有需要处理的事件。`];return[`# dashboard 运行时事故摘要`,``,`状态:${e.statusLabel}`,`说明:${e.statusDetail}`,``,`## 指标`,...e.metrics.map(e=>`- ${e.label}:${e.value}`),``,`## 影响来源`,e.affectedSources.length>0?e.affectedSources.map(e=>`- ${e}`).join(`
|
|
1
|
+
import{B as e,C as t,D as n,E as r,G as i,H as a,I as o,J as s,K as c,N as l,P as u,R as d,S as f,_ as p,g as m,h,j as g,k as _,l as v,p as y,v as b,w as x,x as S,y as C,z as w}from"./vue.js";import{C as T,O as ee,a as te,d as E,f as D,i as O,k,l as A,n as ne,p as j,r as re,t as ie,w as M,x as N}from"./index.js";import{n as P,t as F}from"./AppEmptyState.js";import{t as I}from"./AppRuntimeBadge.js";import{n as L,t as ae}from"./AppMetricTile.js";import{t as R}from"./AppInsetPanel.js";var z=t({__name:`ActivityEventSortBar`,props:r({events:{},filteredCount:{},totalCount:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:[`update:modelValue`],setup(e,{expose:t}){t();let n=e,r=o(e,`modelValue`),i=a(``),s=null;function c(e){return e.replaceAll(`|`,`\\|`).replaceAll(`
|
|
2
|
+
`,` `)}let l=h(()=>[`# dashboard 事件流`,``,`事件数量:${n.events.length}`,``,`| 时间 | 等级 | 类型 | 来源 | 标题 | 耗时 | 标签 |`,`| --- | --- | --- | --- | --- | ---: | --- |`,...n.events.map(e=>[e.timestamp,D(e.level),E(e.kind),e.source??`dashboard`,e.title,A(e.durationMs),e.tags?.join(`, `)||`-`].map(c).join(` | `)).map(e=>`| ${e} |`),``].join(`
|
|
3
|
+
`));function u(e){i.value=e,s&&clearTimeout(s),s=setTimeout(()=>{i.value=``,s=null},1800)}async function d(){try{await P(l.value),u(`已复制`)}catch{u(`复制失败`)}}function f(){let e=new Blob([`${JSON.stringify(n.events,null,2)}\n`],{type:`application/json`}),t=URL.createObjectURL(e),r=document.createElement(`a`);r.href=t,r.download=`weapp-vite-dashboard-events.json`,r.click(),URL.revokeObjectURL(t),u(`已导出`)}_(()=>{s&&clearTimeout(s)});let p={props:n,sortMode:r,actionStatus:i,get actionStatusTimer(){return s},set actionStatusTimer(e){s=e},escapeMarkdownCell:c,reportText:l,setActionStatus:u,copyEventReport:d,exportEventJson:f};return Object.defineProperty(p,"__isScriptSetup",{enumerable:!1,value:!0}),p}}),B={class:`flex flex-wrap items-center justify-between gap-2 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 py-2`},V={class:`text-xs text-(--dashboard-text-soft)`},H={class:`flex flex-wrap items-center gap-2`},U={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},W=[`disabled`],G=[`disabled`];function K(t,n,r,i,a,o){return g(),C(`div`,B,[m(`p`,V,` 匹配 `+s(r.filteredCount)+` / `+s(r.totalCount)+` 条事件 `,1),m(`div`,H,[i.actionStatus?(g(),C(`span`,U,s(i.actionStatus),1)):b(``,!0),m(`button`,{type:`button`,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) px-3 text-sm text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-accent) focus:border-(--dashboard-border-strong) focus:outline-none disabled:opacity-50`,disabled:r.events.length===0,onClick:i.copyEventReport},` 复制事件 `,8,W),m(`button`,{type:`button`,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) px-3 text-sm text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-accent) focus:border-(--dashboard-border-strong) focus:outline-none disabled:opacity-50`,disabled:r.events.length===0,onClick:i.exportEventJson},` 导出 JSON `,8,G),e(m(`select`,{"onUpdate:modelValue":n[0]||=e=>i.sortMode=e,class:`h-9 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) px-2.5 text-sm text-(--dashboard-text) outline-none transition focus:border-(--dashboard-accent)`},[...n[1]||=[m(`option`,{value:`time`},` 按时间 `,-1),m(`option`,{value:`duration`},` 按耗时 `,-1),m(`option`,{value:`severity`},` 按等级 `,-1),m(`option`,{value:`source`},` 按来源 `,-1)]],512),[[v,i.sortMode]])])])}var q=k(z,[[`render`,K]]),J=t({__name:`AppRuntimeFocusCard`,props:{event:{},eyebrow:{},emptyTitle:{},emptyDetail:{},durationText:{}},setup(e,{expose:t}){t();let n=e,r={props:n,badge:h(()=>n.event?O(n.event):null),titleText:h(()=>n.event?.title??n.emptyTitle??`尚无运行事件`),detailText:h(()=>n.event?.detail??n.emptyDetail??`当前工作区还没有推入结构化运行事件。`),eventMeta:h(()=>n.event?j(n.event):null),get mutedPanelStyles(){return T},AppRuntimeBadge:I};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),oe={class:`flex items-start justify-between gap-3`},se={key:0,class:`text-[11px] uppercase tracking-[0.18em] text-(--dashboard-accent)`},ce={class:`mt-1 text-lg font-semibold tracking-tight`},le={class:`mt-3 text-sm leading-6 text-(--dashboard-text-muted)`},ue={key:0,class:`mt-3 text-[11px] uppercase tracking-[0.18em] text-(--dashboard-text-soft)`},de={key:1,class:`mt-2 text-sm font-medium text-(--dashboard-text)`};function fe(e,t,r,a,o,l){return g(),C(`div`,{class:i(a.mutedPanelStyles())},[m(`div`,oe,[m(`div`,null,[a.props.eyebrow?(g(),C(`p`,se,s(a.props.eyebrow),1)):b(``,!0),m(`h3`,ce,s(a.titleText),1)]),a.badge?(g(),p(a.AppRuntimeBadge,c(n({key:0},a.badge)),null,16)):b(``,!0)]),m(`p`,le,s(a.detailText),1),a.props.event?(g(),C(`p`,ue,s(a.eventMeta),1)):b(``,!0),a.props.durationText?(g(),C(`p`,de,s(a.props.durationText),1)):b(``,!0),u(e.$slots,`default`)],2)}var pe=k(J,[[`render`,fe]]),me=t({__name:`ActivitySelectedEventPanel`,props:{event:{}},setup(e,{expose:t}){t();let n=e,r={props:n,durationText:h(()=>n.event?.durationMs===void 0?void 0:`耗时 ${A(n.event.durationMs)}`),profileMetrics:h(()=>{let e=n.event?.profile;return e?[{label:`总耗时`,value:A(e.totalMs)},{label:`构建核心`,value:A(e.buildCoreMs)},{label:`转换`,value:A(e.transformMs)},{label:`写入`,value:A(e.writeMs)},{label:`监听到脏标记`,value:A(e.watchToDirtyMs)},{label:`产物发射`,value:A(e.emitMs)},{label:`共享 chunk`,value:A(e.sharedChunkResolveMs)}].filter(e=>e.value!==`未记录`):[]}),profileCounts:h(()=>{let e=n.event?.profile;return e?[{label:`脏入口`,value:e.dirtyCount},{label:`待处理`,value:e.pendingCount},{label:`已发射`,value:e.emittedCount}].filter(e=>typeof e.value==`number`):[]}),profileFile:h(()=>n.event?.profile?.sourceRootFile??n.event?.profile?.relativeFile??n.event?.profile?.file),AppRuntimeBadge:I,AppRuntimeFocusCard:pe,AppSurfaceCard:N};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),he={key:0,class:`mt-3 flex flex-wrap gap-1.5`},ge={key:1,class:`mt-4 grid gap-3 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) p-3`},_e={class:`flex min-w-0 items-start justify-between gap-3`},ve={class:`min-w-0`},ye={key:0,class:`mt-1 truncate font-mono text-xs text-(--dashboard-text-soft)`},be={key:0,class:`grid gap-2 sm:grid-cols-2`},xe={class:`text-[11px] text-(--dashboard-text-soft)`},Se={class:`mt-1 text-sm font-semibold text-(--dashboard-text)`},Ce={key:1,class:`flex flex-wrap gap-1.5`},we={key:2,class:`grid gap-2 text-xs leading-5 text-(--dashboard-text-muted)`},Te={key:0},Ee={key:1};function De(e,t,n,r,i,a){return g(),p(r.AppSurfaceCard,{eyebrow:`Selected`,title:`当前事件`,"icon-name":`metric-search`},{default:w(()=>[f(r.AppRuntimeFocusCard,{event:n.event,eyebrow:`focus`,"empty-title":`未选择事件`,"empty-detail":`选择左侧事件后查看详情。`,"duration-text":r.durationText},{default:w(()=>[n.event?.tags?.length?(g(),C(`div`,he,[(g(!0),C(y,null,l(n.event.tags,e=>(g(),p(r.AppRuntimeBadge,{key:e,label:e,tone:`neutral`},null,8,[`label`]))),128))])):b(``,!0),n.event?.profile?(g(),C(`div`,ge,[m(`div`,_e,[m(`div`,ve,[t[0]||=m(`p`,{class:`text-sm font-semibold text-(--dashboard-text)`},` HMR 阶段明细 `,-1),r.profileFile?(g(),C(`p`,ye,s(r.profileFile),1)):b(``,!0)]),n.event.profile.event?(g(),p(r.AppRuntimeBadge,{key:0,label:n.event.profile.event,tone:`info`},null,8,[`label`])):b(``,!0)]),r.profileMetrics.length>0?(g(),C(`dl`,be,[(g(!0),C(y,null,l(r.profileMetrics,e=>(g(),C(`div`,{key:e.label,class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) px-3 py-2`},[m(`dt`,xe,s(e.label),1),m(`dd`,Se,s(e.value),1)]))),128))])):b(``,!0),r.profileCounts.length>0?(g(),C(`div`,Ce,[(g(!0),C(y,null,l(r.profileCounts,e=>(g(),p(r.AppRuntimeBadge,{key:e.label,label:`${e.label} ${e.value}`,tone:`neutral`},null,8,[`label`]))),128))])):b(``,!0),n.event.profile.dirtyReasonSummary?.length||n.event.profile.pendingReasonSummary?.length?(g(),C(`div`,we,[n.event.profile.dirtyReasonSummary?.length?(g(),C(`p`,Te,` 脏标记:`+s(n.event.profile.dirtyReasonSummary.join(`、`)),1)):b(``,!0),n.event.profile.pendingReasonSummary?.length?(g(),C(`p`,Ee,` 待处理:`+s(n.event.profile.pendingReasonSummary.join(`、`)),1)):b(``,!0)])):b(``,!0)])):b(``,!0)]),_:1},8,[`event`,`duration-text`])]),_:1})}var Oe=k(me,[[`render`,De]]),ke=t({__name:`AppRuntimeSourceCard`,props:{source:{},count:{},errorCount:{},averageDuration:{},latestTimestamp:{},countLabel:{}},setup(e,{expose:t}){t();let n=e,r={props:n,badge:h(()=>te(n)),subtitle:h(()=>n.latestTimestamp?`最近事件 ${n.latestTimestamp}`:`${n.count} ${n.countLabel??`条事件`}`),detailItems:h(()=>[{key:`error-count`,label:`错误 ${n.errorCount}`},{key:`average-duration`,label:`平均耗时 ${n.averageDuration}`}]),summaryText:h(()=>`平均耗时 ${n.averageDuration}`),get mutedPanelStyles(){return T},AppRuntimeBadge:I};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),Ae={class:`flex items-start justify-between gap-3`},je={class:`min-w-0`},Me={class:`truncate font-medium text-(--dashboard-text)`},Ne={class:`mt-1 text-[11px] uppercase tracking-[0.16em] text-(--dashboard-text-soft)`},Pe={key:0,class:`mt-3 flex flex-wrap gap-2 text-[11px] uppercase tracking-[0.14em] text-(--dashboard-text-soft)`},Fe={key:1,class:`mt-3 text-sm text-(--dashboard-text-muted)`};function Ie(e,t,n,r,a,o){return g(),C(`div`,{class:i(r.mutedPanelStyles({padding:`sm`}))},[m(`div`,Ae,[m(`div`,je,[m(`p`,Me,s(r.props.source),1),m(`p`,Ne,s(r.subtitle),1)]),f(r.AppRuntimeBadge,c(x(r.badge)),null,16)]),r.props.latestTimestamp?(g(),C(`div`,Pe,[(g(!0),C(y,null,l(r.detailItems,e=>(g(),C(`span`,{key:e.key,class:`rounded-full border border-(--dashboard-border) px-2 py-0.5`},s(e.label),1))),128))])):(g(),C(`p`,Fe,s(r.summaryText),1))],2)}var Le=k(ke,[[`render`,Ie]]),Re=t({__name:`AppStatCard`,props:{label:{},value:{}},setup(e,{expose:t}){t();let n={panelClassName:T({padding:`sm`}),AppMetaLabel:L};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),ze={class:`mt-1 text-lg font-semibold`};function Be(e,t,n,r,a,o){return g(),C(`div`,{class:i(r.panelClassName)},[f(r.AppMetaLabel,null,{default:w(()=>[S(s(n.label),1)]),_:1}),m(`p`,ze,s(n.value),1)],2)}var Ve=k(Re,[[`render`,Be]]),He=t({__name:`RuntimeIncidentDigestPanel`,props:{digest:{}},setup(e,{expose:t}){t();let n=e,r=a(``),i=null,o=h(()=>n.digest.status===`critical`?`error`:n.digest.status===`warning`?`warning`:`success`);function s(e){return e===`error`?`text-rose-600 dark:text-rose-300`:e===`warning`?`text-amber-600 dark:text-amber-300`:`text-(--dashboard-accent)`}function c(e){return e===`critical`?`border-rose-400/60 bg-(--dashboard-panel-muted)`:e===`warning`?`border-amber-400/60 bg-(--dashboard-panel-muted)`:`border-emerald-400/60 bg-(--dashboard-panel-muted)`}function l(e){r.value=e,i&&clearTimeout(i),i=setTimeout(()=>{r.value=``,i=null},1800)}async function u(){try{await P(n.digest.report),l(`摘要已复制`)}catch{l(`复制失败`)}}_(()=>{i&&clearTimeout(i)});let d={props:n,copyStatus:r,get copyStatusTimer(){return i},set copyStatusTimer(e){i=e},badgeTone:o,getLevelClassName:s,getStatusAccentClassName:c,setCopyStatus:l,copyDigestReport:u,AppEmptyState:F,AppMetricTile:ae,AppRuntimeBadge:I,AppSurfaceCard:N,DashboardIcon:ee};return Object.defineProperty(d,"__isScriptSetup",{enumerable:!1,value:!0}),d}}),Ue={class:`flex shrink-0 items-center gap-2`},We={key:0,class:`text-xs font-medium text-(--dashboard-accent)`},Ge={class:`h-3.5 w-3.5`},Ke={class:`grid gap-3`},qe={class:`flex items-start justify-between gap-3`},Je={class:`min-w-0`},Ye={class:`text-sm font-semibold text-(--dashboard-text)`},Xe={class:`mt-1 text-xs leading-5 text-(--dashboard-text-muted)`},Ze={class:`grid grid-cols-2 gap-2 sm:grid-cols-5 xl:grid-cols-2 2xl:grid-cols-5`},Qe={key:0,class:`grid max-h-52 gap-2 overflow-y-auto pr-1`},$e={class:`flex items-start justify-between gap-3`},et={class:`min-w-0`},tt={class:`truncate text-sm font-medium text-(--dashboard-text)`},nt={class:`mt-1 truncate text-xs text-(--dashboard-text-soft)`},rt={class:`mt-2 line-clamp-2 text-xs leading-5 text-(--dashboard-text-muted)`};function it(e,t,n,r,a,o){return g(),p(r.AppSurfaceCard,{eyebrow:`Incident`,title:`事故摘要`,"icon-name":`metric-quality`},{header:w(()=>[m(`div`,Ue,[r.copyStatus?(g(),C(`span`,We,s(r.copyStatus),1)):b(``,!0),m(`button`,{type:`button`,class:`inline-flex h-8 items-center gap-1.5 rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 text-xs text-(--dashboard-text-soft) transition hover:border-(--dashboard-border-strong) hover:text-(--dashboard-accent) focus:border-(--dashboard-border-strong) focus:outline-none`,onClick:r.copyDigestReport},[m(`span`,Ge,[f(r.DashboardIcon,{name:`metric-copy`})]),t[0]||=S(` 复制 `,-1)])])]),default:w(()=>[m(`div`,Ke,[m(`div`,{class:i([`rounded-md border px-3 py-2.5`,r.getStatusAccentClassName(n.digest.status)])},[m(`div`,qe,[m(`div`,Je,[m(`p`,Ye,s(n.digest.statusLabel),1),m(`p`,Xe,s(n.digest.statusDetail),1)]),f(r.AppRuntimeBadge,{label:n.digest.statusLabel,tone:r.badgeTone},null,8,[`label`,`tone`])])],2),m(`div`,Ze,[(g(!0),C(y,null,l(n.digest.metrics,e=>(g(),p(r.AppMetricTile,{key:e.label,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),n.digest.incidents.length>0?(g(),C(`div`,Qe,[(g(!0),C(y,null,l(n.digest.incidents,e=>(g(),C(`article`,{key:e.id,class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-3 py-2.5`},[m(`div`,$e,[m(`div`,et,[m(`p`,tt,s(e.title),1),m(`p`,nt,s(e.source)+` · `+s(e.kindLabel)+` · `+s(e.timestamp)+` · `+s(e.duration),1)]),m(`span`,{class:i([`shrink-0 text-xs font-semibold`,r.getLevelClassName(e.level)])},s(e.levelLabel),3)]),m(`p`,rt,s(e.reason)+` · `+s(e.detail),1)]))),128))])):(g(),p(r.AppEmptyState,{key:1,compact:``},{default:w(()=>[...t[1]||=[S(` 当前筛选范围内没有需要处理的运行时事件。 `,-1)]]),_:1}))])]),_:1})}var at=k(He,[[`render`,it]]),ot=t({__name:`ActivityInsightPanel`,props:{selectedEvent:{},incidentDigest:{},eventSummary:{},filteredEventSummary:{},diagnostics:{},sourceBreakdown:{}},setup(e,{expose:t}){t();let n={ActivitySelectedEventPanel:Oe,AppRuntimeBadge:I,AppRuntimeSourceCard:Le,AppStatCard:Ve,AppSurfaceCard:N,RuntimeIncidentDigestPanel:at};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}),st={class:`grid min-h-0 content-start gap-3 overflow-y-auto pr-1`},ct={class:`grid gap-2 sm:grid-cols-2`},lt={class:`grid max-h-44 gap-2 overflow-y-auto pr-1`},ut={class:`flex items-start justify-between gap-3`},dt={class:`font-medium`},ft={class:`mt-1 text-sm leading-6 text-(--dashboard-text-muted)`},pt={key:0,class:`grid max-h-full gap-2 overflow-y-auto pr-1`};function mt(e,t,r,i,a,o){return g(),C(`div`,st,[f(i.ActivitySelectedEventPanel,{event:r.selectedEvent},null,8,[`event`]),f(i.RuntimeIncidentDigestPanel,{digest:r.incidentDigest},null,8,[`digest`]),f(i.AppSurfaceCard,{eyebrow:`Runtime`,title:`事件摘要`,"icon-name":`metric-time`},{default:w(()=>[m(`div`,ct,[(g(!0),C(y,null,l([...r.eventSummary,...r.filteredEventSummary],e=>(g(),p(i.AppStatCard,n({key:e.label},{ref_for:!0},e),null,16))),128))])]),_:1}),f(i.AppSurfaceCard,{eyebrow:`Diagnostics`,title:`当前诊断队列`,"icon-name":`metric-health`,"content-class":`min-h-0 overflow-hidden`},{default:w(()=>[m(`ul`,lt,[(g(!0),C(y,null,l(r.diagnostics,e=>(g(),C(`li`,{key:e.label,class:`rounded-md border border-(--dashboard-border) bg-(--dashboard-panel-muted) px-4 py-3`},[m(`div`,ut,[m(`div`,null,[m(`p`,dt,s(e.label),1),m(`p`,ft,s(e.detail),1)]),f(i.AppRuntimeBadge,{label:e.status,tone:`info`},null,8,[`label`])])]))),128))])]),_:1}),f(i.AppSurfaceCard,{eyebrow:`Sources`,title:`事件来源`,"icon-name":`hero-system`,"content-class":`min-h-0 overflow-hidden`},{default:w(()=>[r.sourceBreakdown.length>0?(g(),C(`div`,pt,[(g(!0),C(y,null,l(r.sourceBreakdown,e=>(g(),p(i.AppRuntimeSourceCard,n({key:e.source},{ref_for:!0},e),null,16))),128))])):b(``,!0)]),_:1})])}var ht=k(ot,[[`render`,mt]]),gt=t({__name:`AppEventFilterPanel`,props:{searchQuery:{},presetDescription:{},filterPresets:{},eventKindOptions:{},eventLevelOptions:{},eventSourceOptions:{},eventKindFilter:{},eventLevelFilter:{},eventSourceFilter:{}},emits:[`update:searchQuery`,`update:eventKindFilter`,`update:eventLevelFilter`,`update:eventSourceFilter`,`applyPreset`],setup(e,{expose:t,emit:n}){t();let r=e,i=n;function a(){return M({kind:`theme`,active:!1})}function o(e,t){return M({kind:`theme`,active:e===t})}let s={props:r,emit:i,getPresetClassName:a,getOptionClassName:o,AppInsetPanel:R,AppMetaLabel:L};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}}),_t={class:`grid gap-3 xl:grid-cols-[minmax(14rem,0.85fr)_minmax(0,1.15fr)]`},vt={for:`dashboard-event-search`},yt=[`value`],bt={class:`grid gap-3`},xt={class:`mt-2 flex flex-wrap gap-2`},St=[`onClick`],Ct={key:0,class:`mt-2 text-xs leading-5 text-(--dashboard-text-soft)`},wt={class:`grid gap-3 md:grid-cols-3`},Tt={class:`mt-2 flex flex-wrap gap-2`},Et=[`onClick`],Dt={class:`mt-2 flex flex-wrap gap-2`},Ot=[`onClick`],kt={class:`mt-2 flex flex-wrap gap-2`},At=[`onClick`];function jt(e,t,n,r,a,o){return g(),p(r.AppInsetPanel,null,{default:w(()=>[m(`div`,_t,[m(`div`,null,[m(`label`,vt,[f(r.AppMetaLabel,null,{default:w(()=>[...t[1]||=[S(` 搜索事件 `,-1)]]),_:1})]),m(`input`,{id:`dashboard-event-search`,value:n.searchQuery,type:`text`,placeholder:`搜索标题、详情、来源或标签`,class:`mt-2 w-full rounded-md border border-(--dashboard-border) bg-(--dashboard-panel) px-3 py-2 text-sm text-(--dashboard-text) outline-none transition focus:border-(--dashboard-border-strong)`,onInput:t[0]||=e=>r.emit(`update:searchQuery`,e.target.value)},null,40,yt)]),m(`div`,bt,[m(`div`,null,[f(r.AppMetaLabel,null,{default:w(()=>[...t[2]||=[S(` 快速预设 `,-1)]]),_:1}),m(`div`,xt,[(g(!0),C(y,null,l(n.filterPresets,e=>(g(),C(`button`,{key:e.key,class:i(r.getPresetClassName()),onClick:t=>r.emit(`applyPreset`,e.key)},s(e.label),11,St))),128))]),n.presetDescription?(g(),C(`p`,Ct,s(n.presetDescription),1)):b(``,!0)]),m(`div`,wt,[m(`div`,null,[f(r.AppMetaLabel,null,{default:w(()=>[...t[3]||=[S(` 类型过滤 `,-1)]]),_:1}),m(`div`,Tt,[(g(!0),C(y,null,l(n.eventKindOptions,e=>(g(),C(`button`,{key:e.value,class:i(r.getOptionClassName(r.props.eventKindFilter,e.value)),onClick:t=>r.emit(`update:eventKindFilter`,e.value)},s(e.label),11,Et))),128))])]),m(`div`,null,[f(r.AppMetaLabel,null,{default:w(()=>[...t[4]||=[S(` 等级过滤 `,-1)]]),_:1}),m(`div`,Dt,[(g(!0),C(y,null,l(n.eventLevelOptions,e=>(g(),C(`button`,{key:e.value,class:i(r.getOptionClassName(r.props.eventLevelFilter,e.value)),onClick:t=>r.emit(`update:eventLevelFilter`,e.value)},s(e.label),11,Ot))),128))])]),m(`div`,null,[f(r.AppMetaLabel,null,{default:w(()=>[...t[5]||=[S(` 来源过滤 `,-1)]]),_:1}),m(`div`,kt,[(g(!0),C(y,null,l(n.eventSourceOptions,e=>(g(),C(`button`,{key:e.value,class:i(r.getOptionClassName(r.props.eventSourceFilter,e.value)),onClick:t=>r.emit(`update:eventSourceFilter`,e.value)},s(e.label),11,At))),128))])])])])])]),_:1})}var Mt=k(gt,[[`render`,jt]]),Nt=t({__name:`AppRuntimeEventListItem`,props:{event:{},selected:{type:Boolean}},setup(e,{expose:t}){t();let n=e,r={props:n,badge:h(()=>O(n.event)),eventMeta:h(()=>j(n.event)),panelClassName:h(()=>n.selected?`border-(--dashboard-border-strong) bg-(--dashboard-panel)`:`border-(--dashboard-border)`),AppMetaLabel:L,AppRuntimeBadge:I};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}}),Pt={class:`flex items-start justify-between gap-3`},Ft={class:`font-medium text-(--dashboard-text)`};function It(e,t,n,r,a,o){return g(),C(`li`,{class:i([`rounded-md border bg-(--dashboard-panel-muted) px-4 py-3 transition`,r.panelClassName])},[m(`div`,Pt,[m(`div`,null,[m(`p`,Ft,s(r.props.event.title),1),f(r.AppMetaLabel,{class:`mt-1`},{default:w(()=>[S(s(r.eventMeta),1)]),_:1})]),f(r.AppRuntimeBadge,c(x(r.badge)),null,16)])],2)}var Lt=k(Nt,[[`render`,It]]),Rt=1e3,zt=5,Y={error:4,warning:3,success:2,info:1};function X(e){let t=Date.parse(e.timestamp);return Number.isFinite(t)?t:0}function Z(e,t){return typeof e.durationMs==`number`&&e.durationMs>=t}function Bt(e,t){return e.level===`error`||e.level===`warning`||Z(e,t)}function Vt(e,t){let n=[];return e.level===`error`?n.push(`错误事件`):e.level===`warning`&&n.push(`警告事件`),Z(e,t)&&n.push(`耗时 ${A(e.durationMs)}`),n.join(` · `)||`需要关注`}function Q(e,t){return{id:e.id,title:e.title,detail:e.detail,level:e.level,levelLabel:D(e.level),kindLabel:E(e.kind),source:e.source??`dashboard`,timestamp:e.timestamp,duration:A(e.durationMs),reason:Vt(e,t)}}function Ht(e,t,n){return e>0?`critical`:t>0||n>0?`warning`:`healthy`}function Ut(e){return e===`critical`?`需要立即处理`:e===`warning`?`需要关注`:`运行平稳`}function Wt(e,t,n,r){return e===`critical`?`检测到 ${t} 个错误事件,优先排查失败来源。`:e===`warning`?`检测到 ${n} 个警告和 ${r} 个慢事件,建议跟进。`:`当前筛选范围内没有错误、警告或慢事件。`}function Gt(e){let t=e.incidents.length>0?e.incidents.map(e=>`- [${e.levelLabel}] ${e.title}(${e.source} · ${e.kindLabel} · ${e.timestamp} · ${e.duration}):${e.detail}`):[`- 当前筛选范围内没有需要处理的事件。`];return[`# dashboard 运行时事故摘要`,``,`状态:${e.statusLabel}`,`说明:${e.statusDetail}`,``,`## 指标`,...e.metrics.map(e=>`- ${e.label}:${e.value}`),``,`## 影响来源`,e.affectedSources.length>0?e.affectedSources.map(e=>`- ${e}`).join(`
|
|
4
4
|
`):`- 无`,``,`## 优先处理`,...t,``].join(`
|
|
5
|
-
`)}function
|
|
5
|
+
`)}function Kt(e,t={}){let n=t.slowEventThresholdMs??Rt,r=e.filter(e=>e.level===`error`).length,i=e.filter(e=>e.level===`warning`).length,a=e.filter(e=>Z(e,n)).length,o=e.filter(e=>Bt(e,n)),s=[...new Set(o.map(e=>e.source??`dashboard`))].sort((e,t)=>e.localeCompare(t,`zh-CN`)),c=Ht(r,i,a),l=o.toSorted((e,t)=>Y[t.level]-Y[e.level]||(t.durationMs??-1)-(e.durationMs??-1)||X(t)-X(e)).slice(0,zt).map(e=>Q(e,n)),u={status:c,statusLabel:Ut(c),statusDetail:Wt(c,r,i,a),metrics:[{label:`事件总数`,value:e.length},{label:`错误`,value:r},{label:`警告`,value:i},{label:`慢事件`,value:a},{label:`影响来源`,value:s.length}],affectedSources:s,incidents:l};return{...u,report:Gt(u)}}var $={error:4,warning:3,success:2,info:1},qt=[{value:`all`,label:`全部类型`},{value:`command`,label:`命令`},{value:`build`,label:`构建`},{value:`diagnostic`,label:`诊断`},{value:`hmr`,label:`HMR`},{value:`system`,label:`系统`}],Jt=[{value:`all`,label:`全部等级`},{value:`info`,label:`信息`},{value:`success`,label:`成功`},{value:`warning`,label:`警告`},{value:`error`,label:`错误`}];function Yt(e,t){return[e.title,e.detail,e.kind,e.level,e.source??``,...e.tags??[]].join(` `).toLowerCase().includes(t)}function Xt(e,t){return[...e].sort((e,n)=>t===`duration`?(n.durationMs??-1)-(e.durationMs??-1)||Date.parse(n.timestamp)-Date.parse(e.timestamp):t===`severity`?$[n.level]-$[e.level]||Date.parse(n.timestamp)-Date.parse(e.timestamp):t===`source`&&(e.source??`dashboard`).localeCompare(n.source??`dashboard`)||Date.parse(n.timestamp)-Date.parse(e.timestamp))}function Zt(e){let t=a(`all`),n=a(`all`),r=a(`all`),i=a(`time`),o=a(``),s=a(null),c=[{key:`all`,label:`查看全部`,description:`回到完整事件流`,apply(){t.value=`all`,n.value=`all`,r.value=`all`,o.value=``}},{key:`issues`,label:`异常优先`,description:`只看警告和错误`,apply(){t.value=`all`,n.value=`warning`,r.value=`all`,o.value=``}},{key:`commands`,label:`命令流`,description:`聚焦命令执行事件`,apply(){t.value=`command`,n.value=`all`,r.value=`all`,o.value=``}},{key:`hmr`,label:`HMR`,description:`观察热更新相关事件`,apply(){t.value=`hmr`,n.value=`all`,r.value=`all`,o.value=``}}],l=h(()=>[{value:`all`,label:`全部来源`},...[...new Set(e.value.map(e=>e.source??`dashboard`).filter(Boolean))].sort((e,t)=>e.localeCompare(t,`zh-CN`)).map(e=>({value:e,label:e}))]),u=h(()=>{let a=o.value.trim().toLowerCase();return Xt(e.value.filter(e=>t.value!==`all`&&e.kind!==t.value||n.value!==`all`&&e.level!==n.value||r.value!==`all`&&(e.source??`dashboard`)!==r.value?!1:!a||Yt(e,a)),i.value)}),f=h(()=>{let e=u.value.filter(e=>typeof e.durationMs==`number`),i=e.length>0?Math.round(e.reduce((e,t)=>e+(t.durationMs??0),0)/e.length):void 0;return[{label:`筛选后事件`,value:String(u.value.length)},{label:`当前类型`,value:t.value===`all`?`全部`:E(t.value)},{label:`当前等级`,value:n.value===`all`?`全部`:D(n.value)},{label:`当前来源`,value:r.value===`all`?`全部`:r.value},{label:`搜索关键字`,value:o.value.trim()||`未设置`},{label:`筛选平均耗时`,value:A(i)}]}),p=h(()=>ne(re(u.value))),m=h(()=>Kt(u.value)),g=h(()=>u.value.find(e=>e.id===s.value)??u.value[0]??null),_=h(()=>c.find(e=>e.key===`issues`?t.value===`all`&&n.value===`warning`&&r.value===`all`&&o.value===``:e.key===`commands`?t.value===`command`&&n.value===`all`&&r.value===`all`&&o.value===``:e.key===`hmr`?t.value===`hmr`&&n.value===`all`&&r.value===`all`&&o.value===``:t.value===`all`&&n.value===`all`&&r.value===`all`&&o.value===``)?.description??``);return d(u,e=>{if(e.length===0){s.value=null;return}e.some(e=>e.id===s.value)||(s.value=e[0]?.id??null)},{immediate:!0}),{eventKindFilter:t,eventKindOptions:qt,eventLevelFilter:n,eventLevelOptions:Jt,eventSortMode:i,eventSourceFilter:r,eventSourceOptions:l,filteredEventSummary:f,filteredRuntimeEvents:u,filterPresets:c,incidentDigest:m,presetDescription:_,searchQuery:o,selectedEvent:g,selectedEventId:s,sourceBreakdown:p}}var Qt=t({__name:`activity`,setup(e,{expose:t}){t();let{diagnostics:n,eventSummary:r,runtimeEvents:i}=ie(),{eventKindFilter:a,eventKindOptions:o,eventLevelFilter:s,eventLevelOptions:c,eventSortMode:l,eventSourceFilter:u,eventSourceOptions:d,filteredEventSummary:f,filteredRuntimeEvents:p,filterPresets:m,incidentDigest:h,presetDescription:g,searchQuery:_,selectedEvent:v,selectedEventId:y,sourceBreakdown:b}=Zt(i),x={diagnostics:n,eventSummary:r,runtimeEvents:i,eventKindFilter:a,eventKindOptions:o,eventLevelFilter:s,eventLevelOptions:c,eventSortMode:l,eventSourceFilter:u,eventSourceOptions:d,filteredEventSummary:f,filteredRuntimeEvents:p,filterPresets:m,incidentDigest:h,presetDescription:g,searchQuery:_,selectedEvent:v,selectedEventId:y,sourceBreakdown:b,ActivityEventSortBar:q,ActivityInsightPanel:ht,AppEmptyState:F,AppEventFilterPanel:Mt,AppRuntimeEventListItem:Lt,AppSurfaceCard:N};return Object.defineProperty(x,"__isScriptSetup",{enumerable:!1,value:!0}),x}}),$t={class:`grid h-full min-h-0 gap-3 overflow-hidden xl:grid-cols-[minmax(0,1.25fr)_minmax(22rem,0.75fr)]`},en={class:`grid h-full min-h-0 grid-rows-[minmax(0,9rem)_auto_minmax(6rem,1fr)] gap-3 overflow-hidden`},tn={class:`grid min-h-0 gap-2 overflow-y-auto pr-1 text-sm leading-6 text-(--dashboard-text-muted)`};function nn(e,t,n,r,i,a){return g(),C(`div`,$t,[f(r.AppSurfaceCard,{eyebrow:`Event Feed`,title:`事件控制台`,"icon-name":`hero-commands`,"content-class":`min-h-0 overflow-hidden`},{default:w(()=>[m(`div`,en,[f(r.AppEventFilterPanel,{class:`min-h-0 overflow-y-auto`,"search-query":r.searchQuery,"preset-description":r.presetDescription,"filter-presets":r.filterPresets,"event-kind-options":r.eventKindOptions,"event-level-options":r.eventLevelOptions,"event-source-options":r.eventSourceOptions,"event-kind-filter":r.eventKindFilter,"event-level-filter":r.eventLevelFilter,"event-source-filter":r.eventSourceFilter,"onUpdate:searchQuery":t[0]||=e=>r.searchQuery=e,"onUpdate:eventKindFilter":t[1]||=e=>r.eventKindFilter=e,"onUpdate:eventLevelFilter":t[2]||=e=>r.eventLevelFilter=e,"onUpdate:eventSourceFilter":t[3]||=e=>r.eventSourceFilter=e,onApplyPreset:t[4]||=e=>r.filterPresets.find(t=>t.key===e)?.apply()},null,8,[`search-query`,`preset-description`,`filter-presets`,`event-kind-options`,`event-level-options`,`event-source-options`,`event-kind-filter`,`event-level-filter`,`event-source-filter`]),f(r.ActivityEventSortBar,{modelValue:r.eventSortMode,"onUpdate:modelValue":t[5]||=e=>r.eventSortMode=e,events:r.filteredRuntimeEvents,"filtered-count":r.filteredRuntimeEvents.length,"total-count":r.runtimeEvents.length},null,8,[`modelValue`,`events`,`filtered-count`,`total-count`]),r.filteredRuntimeEvents.length===0?(g(),p(r.AppEmptyState,{key:0,as:`p`},{default:w(()=>[...t[6]||=[S(` 当前过滤条件下没有匹配事件。 `,-1)]]),_:1})):b(``,!0),m(`ul`,tn,[(g(!0),C(y,null,l(r.filteredRuntimeEvents,e=>(g(),p(r.AppRuntimeEventListItem,{key:e.id,event:e,selected:r.selectedEvent?.id===e.id,onClick:t=>r.selectedEventId=e.id},null,8,[`event`,`selected`,`onClick`]))),128))])])]),_:1}),f(r.ActivityInsightPanel,{"selected-event":r.selectedEvent,"incident-digest":r.incidentDigest,"event-summary":r.eventSummary,"filtered-event-summary":r.filteredEventSummary,diagnostics:r.diagnostics,"source-breakdown":r.sourceBreakdown},null,8,[`selected-event`,`incident-digest`,`event-summary`,`filtered-event-summary`,`diagnostics`,`source-breakdown`])])}var rn=k(Qt,[[`render`,nn]]);export{rn as default};
|