railwatch 0.5.0 → 0.6.0
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.
- checksums.yaml +4 -4
- data/AGENTS.md +6 -2
- data/CHANGELOG.md +133 -0
- data/README.md +21 -13
- data/app/controllers/railwatch/dashboard_controller.rb +1 -0
- data/app/controllers/railwatch/requests_controller.rb +1 -19
- data/app/models/railwatch/application_record.rb +2 -2
- data/app/models/railwatch/execution_presenter.rb +1 -1
- data/app/models/railwatch/filter_query.rb +20 -0
- data/app/models/railwatch/saved_view.rb +1 -1
- data/app/models/railwatch/telemetry_record.rb +2 -2
- data/docs/configuration.md +29 -13
- data/docs/embedded.md +32 -12
- data/docs/faq.md +6 -5
- data/docs/getting-started.md +9 -5
- data/docs/troubleshooting.md +10 -6
- data/lib/generators/railwatch/install/install_generator.rb +31 -16
- data/lib/generators/railwatch/install/templates/initializer.rb.tt +4 -4
- data/lib/puma/plugin/railwatch.rb +48 -3
- data/lib/railwatch/configuration.rb +16 -1
- data/lib/railwatch/engine.rb +14 -3
- data/lib/railwatch/reporter.rb +52 -16
- data/lib/railwatch/transport/http.rb +4 -9
- data/lib/railwatch/version.rb +1 -1
- data/lib/railwatch.rb +35 -1
- data/lib/tasks/railwatch_tasks.rake +11 -4
- data/llms.txt +8 -4
- data/public/railwatch/assets/{app-layout-DDyQa72H.js → app-layout-2xAKndVD.js} +1 -1
- data/public/railwatch/assets/{app-wordmark-o9CODKP0.js → app-wordmark-Bt6XqURo.js} +1 -1
- data/public/railwatch/assets/{appearance-BwuCXabr.js → appearance-DyCfeh9o.js} +1 -1
- data/public/railwatch/assets/{arrow-up-C6PxDiY3.js → arrow-up-EmePsTKP.js} +1 -1
- data/public/railwatch/assets/{auth-layout-BRt8MGFD.js → auth-layout-BuwogWMZ.js} +1 -1
- data/public/railwatch/assets/{badge-CAxXV8za.js → badge-Dv7I-ebP.js} +1 -1
- data/public/railwatch/assets/{braces-DgomTCNf.js → braces-iZ7MEfYP.js} +1 -1
- data/public/railwatch/assets/{card-cAtqCxWl.js → card-DqdEEKcJ.js} +1 -1
- data/public/railwatch/assets/{chart-BBeBkkNa.js → chart-C4k7Ub9W.js} +1 -1
- data/public/railwatch/assets/{chart-hover-B1M9jc0y.js → chart-hover-2yZG3w2u.js} +1 -1
- data/public/railwatch/assets/{chart-panel-DUQTz_C8.js → chart-panel-CONkZcn9.js} +1 -1
- data/public/railwatch/assets/{checkbox-CmhMHWZO.js → checkbox-DKbThbxr.js} +1 -1
- data/public/railwatch/assets/{code-DESvxyTj.js → code-CYahYQHZ.js} +1 -1
- data/public/railwatch/assets/{copy-block-BkSU5832.js → copy-block-CbJum9s8.js} +1 -1
- data/public/railwatch/assets/{copy-id-D03GhN9F.js → copy-id-JmvLfkmx.js} +1 -1
- data/public/railwatch/assets/{cursor-load-more-CRyuMeQb.js → cursor-load-more-C1ylbqqL.js} +1 -1
- data/public/railwatch/assets/{data-table-BIlt7Rtm.js → data-table-CVKR2wkq.js} +1 -1
- data/public/railwatch/assets/{edit-DJ0D0wHN.js → edit-BXF5oNYA.js} +1 -1
- data/public/railwatch/assets/{edit-O0NSBWxo.js → edit-BwSEVrTG.js} +1 -1
- data/public/railwatch/assets/{edit-Bb6MKoe4.js → edit-D5BRDwLT.js} +1 -1
- data/public/railwatch/assets/{empty-state-C38il627.js → empty-state-Bn48Gplm.js} +1 -1
- data/public/railwatch/assets/{env-layout-REF7OM4q.js → env-layout-CKLL8Ds7.js} +1 -1
- data/public/railwatch/assets/{execution-path-FYLq1TwC.js → execution-path-DWovhgLi.js} +1 -1
- data/public/railwatch/assets/{filter-bar-CYog9Alp.js → filter-bar-xcbJC93z.js} +1 -1
- data/public/railwatch/assets/{flamegraph-DSs69foN.js → flamegraph-BNbNIuKT.js} +1 -1
- data/public/railwatch/assets/{frames-BUi2J5Mk.js → frames-Bk39xfJG.js} +1 -1
- data/public/railwatch/assets/{google-sign-in-button-BQiIKFdd.js → google-sign-in-button-B5as2ps1.js} +1 -1
- data/public/railwatch/assets/{index-QpTtwFwu.js → index-Atp1FTgX.js} +1 -1
- data/public/railwatch/assets/{index-C-PmdhXA.js → index-B-FXAo1w.js} +1 -1
- data/public/railwatch/assets/{index-DqTFTP8p.js → index-B0xgzHuN.js} +1 -1
- data/public/railwatch/assets/{index-so4lRrRq.js → index-BDVShWMs.js} +1 -1
- data/public/railwatch/assets/{index-C_upSl_k.js → index-BRvRkfob.js} +1 -1
- data/public/railwatch/assets/{index-CsoN51vW.js → index-BVWapDeB.js} +1 -1
- data/public/railwatch/assets/{index-CrZ3vHDL.js → index-Bd4YpOIO.js} +1 -1
- data/public/railwatch/assets/{index-BaR1U9An.js → index-BeQw69GM.js} +1 -1
- data/public/railwatch/assets/{index-Dh4IRLFI.js → index-BfitxVBv.js} +1 -1
- data/public/railwatch/assets/{index-umIAl-pL.js → index-C-EwH4lO.js} +1 -1
- data/public/railwatch/assets/{index-CICUIFHL.js → index-C8JIdb3_.js} +1 -1
- data/public/railwatch/assets/{index-CFFpnzIS.js → index-CBFCtJAR.js} +1 -1
- data/public/railwatch/assets/{index-tpz-OGUP.js → index-CDXlITyG.js} +1 -1
- data/public/railwatch/assets/{index-DW2CBbxU.js → index-COd9lT84.js} +1 -1
- data/public/railwatch/assets/{index-FhUaPPab.js → index-C_hQmVTP.js} +1 -1
- data/public/railwatch/assets/{index-JdCVBrw8.js → index-CcennT28.js} +1 -1
- data/public/railwatch/assets/{index-DrcKVG2f.js → index-CiaeS-n7.js} +1 -1
- data/public/railwatch/assets/{index-BoUBioBP.js → index-CrA7jBTK.js} +1 -1
- data/public/railwatch/assets/{index-C3A_9imx.js → index-D0mKj3Hg.js} +1 -1
- data/public/railwatch/assets/{index-BiiyMcA0.js → index-DV5MdmpY.js} +1 -1
- data/public/railwatch/assets/{index-CiPo4Gob.js → index-DaE-1xhx.js} +1 -1
- data/public/railwatch/assets/{index-CpkI015n.js → index-DdVg9LKX.js} +1 -1
- data/public/railwatch/assets/{index-DvjY3dPD.js → index-DeLtMWou.js} +1 -1
- data/public/railwatch/assets/{index-CFRLPs4J.js → index-DiQ4mqT_.js} +1 -1
- data/public/railwatch/assets/{index-DtHmuB9Q.js → index-LKgpCzoR.js} +1 -1
- data/public/railwatch/assets/{index-BeOh2t_S.js → index-S0NVaLj9.js} +1 -1
- data/public/railwatch/assets/{index-C7OtLq_3.js → index-Vj93BTR5.js} +1 -1
- data/public/railwatch/assets/{index-ZOGOB8SA.js → index-XjXcV-EO.js} +1 -1
- data/public/railwatch/assets/{index-ZSZg9rtq.js → index-Zkt4W_CM.js} +1 -1
- data/public/railwatch/assets/{index-8-hnAhOD.js → index-aPCZX-pW.js} +1 -1
- data/public/railwatch/assets/{index-DDI_Zx5V.js → index-cTzBycCg.js} +1 -1
- data/public/railwatch/assets/{index-sTYvcbkh.js → index-dpG-19ZN.js} +1 -1
- data/public/railwatch/assets/{index-r0tSIplE.js → index-gCvuyG1l.js} +1 -1
- data/public/railwatch/assets/{index-DSvlZVWG.js → index-o1xqGvLo.js} +1 -1
- data/public/railwatch/assets/{index-CGs4m_fa.js → index-w_skgMmK.js} +1 -1
- data/public/railwatch/assets/{inertia-DLew8ZNx.js → inertia-CqnzqPVD.js} +2 -2
- data/public/railwatch/assets/{input-error-cvM6_Jht.js → input-error-ByT28UdP.js} +1 -1
- data/public/railwatch/assets/{json-viewer-D922McGi.js → json-viewer-Bnu9RsJL.js} +1 -1
- data/public/railwatch/assets/{klass-CrwICqN8.js → klass-nLiBV-Az.js} +1 -1
- data/public/railwatch/assets/{label-GWl7I6sf.js → label-1nSzpSB6.js} +1 -1
- data/public/railwatch/assets/{layout-0ZAnD3zl.js → layout-D7lE1Doo.js} +1 -1
- data/public/railwatch/assets/{live-dot-D1n_BreY.js → live-dot-UdzOfzJb.js} +1 -1
- data/public/railwatch/assets/{nav-DPxr1NNC.js → nav-BRCgp2w3.js} +1 -1
- data/public/railwatch/assets/{new-DHAHDrN7.js → new-C60G72DR.js} +1 -1
- data/public/railwatch/assets/{new-D-ZzUK9a.js → new-COyDKOOb.js} +1 -1
- data/public/railwatch/assets/{new-DEVkYv-z.js → new-Cd9zPNJ8.js} +1 -1
- data/public/railwatch/assets/{new-Dz4lZf1L.js → new-DMJGKjmH.js} +1 -1
- data/public/railwatch/assets/{new-GMrRFurX.js → new-Omvf-c9s.js} +1 -1
- data/public/railwatch/assets/{new-Cdl6pqST.js → new-vjRzERL3.js} +1 -1
- data/public/railwatch/assets/onboarding-gUjJQc-6.js +1 -0
- data/public/railwatch/assets/{origin-identity-Bk9yHWZ1.js → origin-identity-M1YUPYS0.js} +1 -1
- data/public/railwatch/assets/{percentile-picker-DfSx9yJO.js → percentile-picker-BxIVblBw.js} +1 -1
- data/public/railwatch/assets/{relative-time-CjIjb8Lg.js → relative-time-DQ4kjowZ.js} +1 -1
- data/public/railwatch/assets/{release-health-4b3tivEf.js → release-health-Cb1tMOOO.js} +1 -1
- data/public/railwatch/assets/{route-C_5BUtHK.js → route-BJkoEm7r.js} +1 -1
- data/public/railwatch/assets/{segmented-BgbT3wZa.js → segmented-C4oWE73o.js} +1 -1
- data/public/railwatch/assets/{select-DmunxCKE.js → select-ocdQJdQo.js} +1 -1
- data/public/railwatch/assets/{separator-BXzEdZ_8.js → separator-Ct2UcZ2x.js} +1 -1
- data/public/railwatch/assets/{series-chart-Xf49v9cv.js → series-chart-D6upsrSn.js} +1 -1
- data/public/railwatch/assets/{show-DlRVS18-.js → show-B4bwI9x2.js} +1 -1
- data/public/railwatch/assets/{show-DnR1Dnjd.js → show-BAjfddEn.js} +1 -1
- data/public/railwatch/assets/{show-mU38uGTg.js → show-BLJOyLb_.js} +1 -1
- data/public/railwatch/assets/{show-DYskfl3-.js → show-BoVyMQS6.js} +1 -1
- data/public/railwatch/assets/{show-DXs4deaC.js → show-Bsu1rvnK.js} +1 -1
- data/public/railwatch/assets/{show-Dn-GwFZL.js → show-C6OiJ6Hr.js} +1 -1
- data/public/railwatch/assets/{show-CAl7xcex.js → show-C8TkpEgm.js} +1 -1
- data/public/railwatch/assets/{show-BLpWUHWD.js → show-CBFBiBY2.js} +1 -1
- data/public/railwatch/assets/{show-Y74rM0VT.js → show-CEhPVMMT.js} +1 -1
- data/public/railwatch/assets/{show-SHwZjXb7.js → show-CV-lG2b6.js} +1 -1
- data/public/railwatch/assets/{show-Dily73Xk.js → show-CX_pab9S.js} +1 -1
- data/public/railwatch/assets/{show-DcpTFiLi.js → show-D6lgzL6n.js} +1 -1
- data/public/railwatch/assets/{show-vQ4bndYD.js → show-DDVsv-uS.js} +1 -1
- data/public/railwatch/assets/{show-SvLOcPrx.js → show-Dwiq-8hA.js} +1 -1
- data/public/railwatch/assets/{show-B2zLAW83.js → show-eKazflRI.js} +1 -1
- data/public/railwatch/assets/{show-DSP9Cq_C.js → show-gtwKsTsl.js} +1 -1
- data/public/railwatch/assets/{show-DI8IhNUH.js → show-yEOrk6Pt.js} +1 -1
- data/public/railwatch/assets/{sort-header-Dcq9bzmo.js → sort-header-CPM6fhXv.js} +1 -1
- data/public/railwatch/assets/{sparkline-cell-BON3qQUB.js → sparkline-cell-CXCxXPWt.js} +1 -1
- data/public/railwatch/assets/{stat-DFEyFxkO.js → stat-BNEfE8X1.js} +1 -1
- data/public/railwatch/assets/{status-badge-BaUKP7Yo.js → status-badge-D0aylrM5.js} +1 -1
- data/public/railwatch/assets/{tenant-path-DPZPc985.js → tenant-path-C4aM_cO0.js} +1 -1
- data/public/railwatch/assets/{text-link-BO77t9Xk.js → text-link-CP4lqUi6.js} +1 -1
- data/public/railwatch/assets/{textarea-DTqrCiV0.js → textarea-DzJo2ds4.js} +1 -1
- data/public/railwatch/assets/{timeline-D5rJ0es2.js → timeline-BNcJ9PMc.js} +1 -1
- data/public/railwatch/assets/{transition-DMIrZVth.js → transition-BX2M1iaq.js} +1 -1
- data/public/railwatch/assets/{use-clipboard-ByoUGQqA.js → use-clipboard-C1ApSwzA.js} +1 -1
- data/public/railwatch/assets/{use-live-D7xKz2ma.js → use-live-DWwLg1Nj.js} +1 -1
- data/public/railwatch/manifest.json +1283 -1283
- metadata +116 -116
- data/public/railwatch/assets/onboarding-D1vwaHYT.js +0 -1
- /data/db/railwatch_telemetry_migrate/{20260919000000_create_export_queue.rb → 20260919000100_create_export_queue.rb} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as p,j as c,W as f}from"./inertia-
|
|
1
|
+
import{r as p,j as c,W as f}from"./inertia-CqnzqPVD.js";import{a as u}from"./app-wordmark-Bt6XqURo.js";var d=Object.defineProperty,v=(r,t)=>d(r,"name",{value:t,configurable:!0}),l=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],P=l.reduce((r,t)=>{const i=u(`Primitive.${t}`),e=p.forwardRef((o,s)=>{const{asChild:a,...n}=o,m=a?i:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),c.jsx(m,{...n,ref:s})});return e.displayName=`Primitive.${t}`,{...r,[t]:e}},{});function h(r,t){r&&f.flushSync(()=>r.dispatchEvent(t))}v(h,"dispatchDiscreteCustomEvent");export{P,h as d};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as x,u as g,j as r,az as j,e as h}from"./inertia-
|
|
1
|
+
import{c as x,u as g,j as r,az as j,e as h}from"./inertia-CqnzqPVD.js";import{D as _}from"./data-table-CVKR2wkq.js";import{E as w}from"./empty-state-Bn48Gplm.js";import{E as b,P as v}from"./env-layout-CKLL8Ds7.js";import{c as k,a as E}from"./format-B9SDkrWj.js";import{U as N}from"./app-layout-2xAKndVD.js";import"./chart-hover-2yZG3w2u.js";import"./badge-Dv7I-ebP.js";import"./app-wordmark-Bt6XqURo.js";import"./use-live-DWwLg1Nj.js";import"./live-dot-UdzOfzJb.js";import"./index-BDVShWMs.js";import"./index-C-EwH4lO.js";import"./segmented-C4oWE73o.js";import"./label-1nSzpSB6.js";import"./checkbox-DKbThbxr.js";function Q(t){const e=x.c(13),{environment:f}=g().props,u=f.application_id,d=f.id;let a;e[0]!==u||e[1]!==d?(a=i=>j(u,d,i.ref),e[0]=u,e[1]=d,e[2]=a):a=e[2];const o=a;let l;e[3]===Symbol.for("react.memo_cache_sentinel")?(l=r.jsx(v,{title:"Users",description:"Your application's users as seen in telemetry, with their activity and errors."}),e[3]=l):l=e[3];let m;e[4]===Symbol.for("react.memo_cache_sentinel")?(m=r.jsx(w,{icon:N,title:"No authenticated activity in this window",description:"People appear here once requests are tagged with an authenticated user."}),e[4]=m):m=e[4];let s,n;e[5]!==o?(s=i=>h.visit(o(i)),n={onOpen:(i,y)=>y?.newTab?window.open(o(i),"_blank"):h.visit(o(i))},e[5]=o,e[6]=s,e[7]=n):(s=e[6],n=e[7]);let c;e[8]===Symbol.for("react.memo_cache_sentinel")?(c=[{key:"n",header:"User",cell:q},{key:"t",hideOnMobile:!0,header:"Tenant",cell:S},{key:"r",header:"Requests",align:"right",cell:R},{key:"e",hideOnMobile:!0,header:"Errors",align:"right",cell:U},{key:"l",header:"Last seen",align:"right",cell:P}],e[8]=c):c=e[8];let p;return e[9]!==t.people||e[10]!==s||e[11]!==n?(p=r.jsxs(b,{title:"Users",children:[l,r.jsx(_,{rows:t.people,rowKey:O,empty:m,onRowClick:s,keyboardNav:n,columns:c})]}),e[9]=t.people,e[10]=s,e[11]=n,e[12]=p):p=e[12],p}function P(t){return E(t.last_seen_at)}function U(t){return r.jsx("span",{className:t.errors?"text-destructive":"",children:t.errors})}function R(t){return k(t.requests)}function S(t){return r.jsx("span",{className:"font-mono text-xs",children:t.tenant??""})}function q(t){return r.jsxs("span",{className:"text-xs",children:[r.jsx("span",{className:"font-medium",children:t.name??t.ref}),t.email&&r.jsxs("span",{className:"text-muted-foreground",children:[" · ",t.email]})]})}function O(t){return t.ref}export{Q as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as D,u as A,au as I,j as s,F as M,aR as G,H,e as p,aS as B,aT as L,aU as $,aV as K}from"./inertia-
|
|
1
|
+
import{c as D,u as A,au as I,j as s,F as M,aR as G,H,e as p,aS as B,aT as L,aU as $,aV as K}from"./inertia-CqnzqPVD.js";import{G as O}from"./google-sign-in-button-B5as2ps1.js";import{I as k}from"./input-error-ByT28UdP.js";import{D as T}from"./data-table-CVKR2wkq.js";import{B as z}from"./badge-Dv7I-ebP.js";import{B as x}from"./app-wordmark-Bt6XqURo.js";import{C as P,b as S,c as F,a as R}from"./card-DqdEEKcJ.js";import{L as N,I as E}from"./label-1nSzpSB6.js";import{A as q}from"./app-layout-2xAKndVD.js";import{a as U}from"./format-B9SDkrWj.js";import"./separator-Ct2UcZ2x.js";import"./index-BDVShWMs.js";import"./chart-hover-2yZG3w2u.js";import"./empty-state-Bn48Gplm.js";import"./live-dot-UdzOfzJb.js";import"./index-C-EwH4lO.js";import"./checkbox-DKbThbxr.js";function ve(t){const e=D.c(31),{account:a,auth:n}=A().props;let f,j;e[0]===Symbol.for("react.memo_cache_sentinel")?(f=[{title:"Members",href:I()}],j=s.jsx(H,{title:"Members"}),e[0]=f,e[1]=j):(f=e[0],j=e[1]);let g;e[2]===Symbol.for("react.memo_cache_sentinel")?(g=s.jsxs("div",{children:[s.jsx("h1",{className:"text-xl font-semibold",children:"Members"}),s.jsx("p",{className:"text-muted-foreground text-sm",children:"People who can see this account's applications and issues."})]}),e[2]=g):g=e[2];let w;e[3]===Symbol.for("react.memo_cache_sentinel")?(w=s.jsx(S,{children:s.jsx(F,{className:"text-sm",children:"Add member"})}),e[3]=w):w=e[3];let b;e[4]===Symbol.for("react.memo_cache_sentinel")?(b=I(),e[4]=b):b=e[4];let i;e[5]!==t.roles?(i=s.jsxs(P,{className:"max-w-lg",children:[w,s.jsx(R,{children:s.jsx(M,{method:"post",action:b,className:"flex flex-wrap items-end gap-3",resetOnSuccess:!0,children:r=>{const{errors:u,processing:C}=r;return s.jsxs(s.Fragment,{children:[s.jsxs("div",{className:"grid flex-1 gap-1",children:[s.jsx(N,{htmlFor:"email",children:"Email"}),s.jsx(E,{id:"email",name:"email",type:"email",required:!0}),s.jsx(k,{messages:u.email})]}),s.jsxs("div",{className:"grid gap-1",children:[s.jsx(N,{htmlFor:"role",children:"Role"}),s.jsx("select",{id:"role",name:"role",className:"border-input h-9 rounded-md border bg-transparent px-2 text-sm",children:t.roles.filter(ne).map(re)})]}),s.jsx(x,{disabled:C,children:"Invite"})]})}})})]}),e[5]=t.roles,e[6]=i):i=e[6];let l;e[7]!==t.invitations?(l=t.invitations.length>0&&s.jsxs(P,{children:[s.jsx(S,{children:s.jsx(F,{children:"Pending invitations"})}),s.jsx(R,{children:s.jsx(T,{rows:t.invitations,rowKey:te,columns:[{key:"e",header:"Email",cell:se},{key:"r",header:"Role",cell:ee},{key:"x",header:"Expires",cell:Z},{key:"a",header:"",align:"right",cell:X}]})})]}),e[7]=t.invitations,e[8]=l):l=e[8];let _,v;e[9]===Symbol.for("react.memo_cache_sentinel")?(_={key:"n",header:"Name",cell:J},v={key:"e",header:"Email",cell:Y},e[9]=_,e[10]=v):(_=e[9],v=e[10]);let o;e[11]!==t.roles?(o={key:"r",header:"Role",cell:r=>r.role==="owner"?s.jsx(z,{variant:"outline",children:"owner"}):s.jsx("select",{value:r.role,"aria-label":`Role for ${r.name}`,onChange:u=>p.patch(B(r.id),{role:u.target.value}),className:"border-input bg-background h-7 rounded-md border px-2 text-xs",children:t.roles.filter(W).map(V)})},e[11]=t.roles,e[12]=o):o=e[12];let c;e[13]!==t.ownership.can_transfer||e[14]!==t.ownership.current_user_id?(c={key:"x",header:"",align:"right",cell:r=>s.jsxs("span",{className:"flex justify-end gap-1",children:[t.ownership.can_transfer&&r.user_id!==t.ownership.current_user_id&&s.jsx(x,{size:"sm",variant:"outline",onClick:()=>{window.confirm(`Transfer ownership to ${r.name}? Your role will become admin.`)&&p.post(L(r.id))},children:"Transfer ownership"}),r.role!=="owner"&&s.jsx(x,{size:"sm",variant:"ghost",className:"text-destructive",onClick:()=>p.delete(B(r.id)),children:"Remove"})]})},e[13]=t.ownership.can_transfer,e[14]=t.ownership.current_user_id,e[15]=c):c=e[15];let d;e[16]!==c||e[17]!==o?(d=[_,v,o,c],e[16]=c,e[17]=o,e[18]=d):d=e[18];let m;e[19]!==t.members||e[20]!==d?(m=s.jsx(T,{rows:t.members,rowKey:Q,columns:d}),e[19]=t.members,e[20]=d,e[21]=m):m=e[21];let h;e[22]!==a||e[23]!==n||e[24]!==t.ownership.can_delete_account?(h=t.ownership.can_delete_account&&a&&s.jsxs(P,{className:"border-destructive/30 max-w-lg",children:[s.jsx(S,{children:s.jsx(F,{className:"text-destructive text-sm",children:"Delete account"})}),s.jsxs(R,{className:"space-y-4",children:[s.jsxs("p",{className:"text-muted-foreground text-sm",children:["Permanently deletes ",a.name,", its applications, ingest tokens, alerts, and telemetry databases. This cannot be undone."]}),n.user.provider&&!n.session.recently_authenticated&&s.jsx(O,{label:"Confirm with Google",reauthenticateFor:"account",separated:!1}),s.jsx(M,{method:"delete",action:G(a.id),className:"grid gap-3",children:r=>{const{errors:u,processing:C}=r;return s.jsxs(s.Fragment,{children:[s.jsxs("div",{className:"grid gap-1",children:[s.jsxs(N,{htmlFor:"account-deletion-confirmation",children:["Enter ",a.name," to confirm"]}),s.jsx(E,{id:"account-deletion-confirmation",name:"confirmation",autoComplete:"off"}),s.jsx(k,{messages:u.confirmation})]}),!n.user.provider&&s.jsxs("div",{className:"grid gap-1",children:[s.jsx(N,{htmlFor:"account-password-challenge",children:"Current password"}),s.jsx(E,{id:"account-password-challenge",type:"password",name:"password_challenge",autoComplete:"current-password"}),s.jsx(k,{messages:u.password_challenge})]}),s.jsx(x,{variant:"destructive",className:"w-fit",disabled:C||!!n.user.provider&&!n.session.recently_authenticated,children:"Delete account and telemetry"})]})}})]})]}),e[22]=a,e[23]=n,e[24]=t.ownership.can_delete_account,e[25]=h):h=e[25];let y;return e[26]!==m||e[27]!==h||e[28]!==i||e[29]!==l?(y=s.jsxs(q,{breadcrumbs:f,children:[j,s.jsxs("div",{className:"flex flex-1 flex-col gap-6 p-4 md:p-6",children:[g,i,l,m,h]})]}),e[26]=m,e[27]=h,e[28]=i,e[29]=l,e[30]=y):y=e[30],y}function V(t){return s.jsx("option",{value:t,children:t},t)}function W(t){return t!=="owner"}function Y(t){return s.jsx("span",{className:"font-mono text-xs",children:t.email})}function J(t){return t.name}function Q(t){return t.id}function X(t){return s.jsxs("span",{className:"flex justify-end gap-1",children:[s.jsx(x,{size:"sm",variant:"ghost",onClick:()=>p.post($(t.id)),children:"Resend"}),s.jsx(x,{size:"sm",variant:"ghost",className:"text-destructive",onClick:()=>p.delete(K(t.id)),children:"Withdraw"})]})}function Z(t){return s.jsx("span",{className:"text-muted-foreground text-xs",children:U(t.expires_at)})}function ee(t){return s.jsx(z,{variant:"outline",children:t.role})}function se(t){return s.jsx("span",{className:"font-mono text-xs",children:t.email})}function te(t){return t.id}function re(t){return s.jsx("option",{value:t,children:t},t)}function ne(t){return t!=="owner"}export{ve as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as B,u as C,j as n,ay as D,e as R,L as K,i as H}from"./inertia-
|
|
1
|
+
import{c as B,u as C,j as n,ay as D,e as R,L as K,i as H}from"./inertia-CqnzqPVD.js";import{D as T}from"./data-table-CVKR2wkq.js";import{E as W}from"./empty-state-Bn48Gplm.js";import{O as I}from"./origin-identity-M1YUPYS0.js";import{P as A,E as F}from"./env-layout-CKLL8Ds7.js";import{R as J}from"./relative-time-DQ4kjowZ.js";import{S as Q}from"./status-badge-D0aylrM5.js";import{B as $}from"./badge-Dv7I-ebP.js";import{m as P,a as q,w as z}from"./format-B9SDkrWj.js";import{K as G}from"./app-layout-2xAKndVD.js";import"./chart-hover-2yZG3w2u.js";import"./tenant-path-C4aM_cO0.js";import"./use-live-DWwLg1Nj.js";import"./live-dot-UdzOfzJb.js";import"./index-BDVShWMs.js";import"./app-wordmark-Bt6XqURo.js";import"./index-C-EwH4lO.js";import"./segmented-C4oWE73o.js";import"./label-1nSzpSB6.js";import"./checkbox-DKbThbxr.js";function Te(t){const e=B.c(42),{environment:M,range:a,window:l}=C().props,i=M.application_id,s=M.id;let k;e[0]!==i||e[1]!==s?(k=r=>D(i,s,r.execution_id),e[0]=i,e[1]=s,e[2]=k):k=e[2];const x=k;let _;e[3]===Symbol.for("react.memo_cache_sentinel")?(_=n.jsx(A,{title:"Scheduled tasks",description:"Solid Queue recurring tasks from config/recurring.yml: runs, failures, and missed schedules."}),e[3]=_):_=e[3];let o;e[4]!==t.missed?(o=t.missed.length>0&&n.jsx("div",{className:"flex flex-wrap gap-2",children:t.missed.map(de)}),e[4]=t.missed,e[5]=o):o=e[5];let y,g;e[6]===Symbol.for("react.memo_cache_sentinel")?(y=n.jsx(W,{icon:G,title:"No scheduled task has run in this window",description:"Recurring and scheduled job runs appear here as they execute."}),g=[{key:"k",header:"Task",cell:oe},{key:"s",header:"Schedule",cell:le},{key:"next",hideOnMobile:!0,header:"Next run",cell:ae},{key:"n",header:"Runs",align:"right",cell:se},{key:"f",hideOnMobile:!0,header:"Failed",align:"right",cell:ie},{key:"avg",hideOnMobile:!0,header:"Avg",align:"right",cell:re},{key:"last",header:"Last run",align:"right",cell:ne}],e[6]=y,e[7]=g):(y=e[6],g=e[7]);let c;e[8]!==t.tasks?(c=n.jsx(T,{rows:t.tasks,rowKey:ce,empty:y,columns:g}),e[8]=t.tasks,e[9]=c):c=e[9];let j;e[10]===Symbol.for("react.memo_cache_sentinel")?(j=n.jsx("h2",{className:"text-sm font-semibold",children:"Recent runs"}),e[10]=j):j=e[10];let d,m;e[11]!==x?(d=r=>R.visit(x(r)),m={onOpen:(r,L)=>L?.newTab?window.open(x(r),"_blank"):R.visit(x(r))},e[11]=x,e[12]=d,e[13]=m):(d=e[12],m=e[13]);let w,b,v,O;e[14]===Symbol.for("react.memo_cache_sentinel")?(O={key:"when",header:"When",cell:ee},w={key:"k",header:"Task",cell:Z},b={key:"job",hideOnMobile:!0,header:"Job",cell:Y},v={key:"o",header:"Outcome",cell:X},e[14]=w,e[15]=b,e[16]=v,e[17]=O):(w=e[14],b=e[15],v=e[16],O=e[17]);let u;e[18]!==i||e[19]!==s||e[20]!==a||e[21]!==l?(u={key:"user",hideOnMobile:!0,header:"Origin user",cell:r=>n.jsx(I,{...r,applicationId:i,environmentId:s,kind:"user",range:a,window:l})},e[18]=i,e[19]=s,e[20]=a,e[21]=l,e[22]=u):u=e[22];let h;e[23]!==i||e[24]!==s||e[25]!==a||e[26]!==l?(h={key:"tenant",hideOnMobile:!0,header:"Origin tenant",cell:r=>n.jsx(I,{...r,applicationId:i,environmentId:s,kind:"tenant",range:a,window:l})},e[23]=i,e[24]=s,e[25]=a,e[26]=l,e[27]=h):h=e[27];let S,N;e[28]===Symbol.for("react.memo_cache_sentinel")?(S={key:"d",hideOnMobile:!0,header:"Duration",align:"right",cell:V},N={key:"ex",hideOnMobile:!0,header:"Exception",cell:U},e[28]=S,e[29]=N):(S=e[28],N=e[29]);let f;e[30]!==u||e[31]!==h?(f=[O,w,b,v,u,h,S,N],e[30]=u,e[31]=h,e[32]=f):f=e[32];let p;e[33]!==t.runs||e[34]!==f||e[35]!==d||e[36]!==m?(p=n.jsx(T,{rows:t.runs,rowKey:te,onRowClick:d,keyboardNav:m,columns:f}),e[33]=t.runs,e[34]=f,e[35]=d,e[36]=m,e[37]=p):p=e[37];let E;return e[38]!==p||e[39]!==o||e[40]!==c?(E=n.jsxs(F,{title:"Scheduled tasks",children:[_,o,c,j,p]}),e[38]=p,e[39]=o,e[40]=c,e[41]=E):E=e[41],E}function U(t){return n.jsx("span",{className:"text-destructive line-clamp-1 text-xs",children:t.exception_preview??""})}function V(t){return P(t.duration)}function X(t){return n.jsx(Q,{outcome:t.outcome})}function Y(t){return n.jsx("span",{className:"font-mono text-xs",children:t.name})}function Z(t){return n.jsx("span",{className:"font-mono text-xs",children:t.task_key})}function ee(t){return n.jsx("span",{className:"text-xs",children:z(t.occurred_at)})}function te(t){return t.execution_id}function ne(t){return q(t.last_run_at)}function re(t){return P(t.avg)}function ie(t){return n.jsx("span",{className:t.failed?"text-destructive":"",children:t.failed})}function se(t){return t.runs}function ae(t){return n.jsx("span",{className:"text-muted-foreground text-xs",children:t.next_run_at?n.jsx(J,{iso:t.next_run_at}):"–"})}function le(t){return n.jsx("span",{className:"text-muted-foreground font-mono text-xs",children:t.schedule??"–"})}function oe(t){return n.jsx("span",{className:"font-mono text-xs",children:t.task_key})}function ce(t){return t.task_key}function de(t){return n.jsx(K,{href:H(t.id),children:n.jsxs($,{variant:"destructive",children:[t.key," · ",t.title]})},t.id)}export{Te as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{u as F,r as M,j as s,L as w,J as Q,e as S,t as T,ae as O,c as L}from"./inertia-
|
|
1
|
+
import{u as F,r as M,j as s,L as w,J as Q,e as S,t as T,ae as O,c as L}from"./inertia-CqnzqPVD.js";import{S as _}from"./code-CYahYQHZ.js";import{C as R}from"./cursor-load-more-C1ylbqqL.js";import{D as q}from"./data-table-CVKR2wkq.js";import{E as z}from"./empty-state-Bn48Gplm.js";import{F as B}from"./filter-bar-xcbJC93z.js";import{u as K,E as $,P as A}from"./env-layout-CKLL8Ds7.js";import{u as H,P as I}from"./percentile-picker-BxIVblBw.js";import{S as k}from"./sort-header-CPM6fhXv.js";import{S as J}from"./sparkline-cell-CXCxXPWt.js";import{a as U,S as C}from"./stat-BNEfE8X1.js";import{B as W}from"./app-wordmark-Bt6XqURo.js";import{C as G,b as V,c as X,a as Y}from"./card-DqdEEKcJ.js";import{u as Z,C as ee}from"./use-clipboard-C1ApSwzA.js";import{c as E,m as f}from"./format-B9SDkrWj.js";import{C as se,a as oe,Q as re}from"./app-layout-2xAKndVD.js";import{C as te}from"./index-C-EwH4lO.js";import"./chart-hover-2yZG3w2u.js";import"./badge-Dv7I-ebP.js";import"./use-live-DWwLg1Nj.js";import"./live-dot-UdzOfzJb.js";import"./index-BDVShWMs.js";import"./segmented-C4oWE73o.js";import"./label-1nSzpSB6.js";import"./arrow-up-EmePsTKP.js";import"./series-chart-D6upsrSn.js";import"./chart-C4k7Ub9W.js";import"./checkbox-DKbThbxr.js";const ae=1500;function ie(r){const o=L.c(20),{suggestion:a}=r,[,d]=Z(),[u,v]=M.useState(!1);let m;o[0]!==d||o[1]!==a.code?(m=()=>{d(a.code).then(g=>{g&&(v(!0),window.setTimeout(()=>v(!1),ae))})},o[0]=d,o[1]=a.code,o[2]=m):m=o[2];const y=m;let n;o[3]!==a.code?(n=s.jsx("pre",{className:"overflow-x-auto font-mono text-xs whitespace-pre-wrap",children:a.code}),o[3]=a.code,o[4]=n):n=o[4];let l;o[5]!==y?(l=g=>{g.stopPropagation(),y()},o[5]=y,o[6]=l):l=o[6];let c;o[7]!==u?(c=u?s.jsx(te,{className:"size-3 text-emerald-500"}):s.jsx(ee,{className:"size-3 opacity-60"}),o[7]=u,o[8]=c):c=o[8];let h;o[9]!==l||o[10]!==c?(h=s.jsxs(W,{type:"button",variant:"ghost",size:"sm",className:"h-6 shrink-0 gap-1 px-1.5 text-xs",onClick:l,children:[c,"Copy"]}),o[9]=l,o[10]=c,o[11]=h):h=o[11];let p;o[12]!==n||o[13]!==h?(p=s.jsxs("div",{className:"flex items-start justify-between gap-2",children:[n,h]}),o[12]=n,o[13]=h,o[14]=p):p=o[14];let t;o[15]!==a.explanation?(t=s.jsx("p",{className:"text-muted-foreground text-xs whitespace-normal",children:a.explanation}),o[15]=a.explanation,o[16]=t):t=o[16];let x;return o[17]!==p||o[18]!==t?(x=s.jsxs("div",{className:"border-warning/40 bg-muted/40 mt-2 space-y-2 rounded-lg border p-2",children:[p,t]}),o[17]=p,o[18]=t,o[19]=x):x=o[19],x}function Fe(r){const{environment:o,window:a,range:d}=F().props,{percentile:u}=H(),{label:v}=K(),[m,y]=M.useState(null),n=o.application_id,l=o.id,c=a==="custom"?{from:d?.from,to:d?.to}:{window:a},h=d?{from:d.from,to:d.to}:c,p=(e,i=r.q)=>O(n,l,{...e?h:c,q:i||void 0,cursor:e,limit:r.pagination.limit,sort:r.sort,dir:r.dir}),t=r.summary.current,x=r.summary.previous,g=a==="custom"?"vs previous period":`vs previous ${v}`,D=r.n_plus_ones.filter(e=>e.suggestion).length,P=e=>{e.suggestion&&y(i=>i===e.group_hash?null:e.group_hash)},b=e=>S.visit(O(n,l,{...c,q:r.q||void 0,sort:e,dir:r.sort===e&&r.dir==="desc"?"asc":"desc"}),{preserveState:!0}),j=e=>Q(n,l,e,c),N=(e,i)=>i?.newTab?globalThis.window.open(j(e),"_blank"):S.visit(j(e));return s.jsxs($,{title:"Queries",children:[s.jsx(A,{title:"Queries",description:"Every SQL shape your app ran, grouped by normalized statement.",actions:s.jsx(I,{})}),s.jsxs(U,{children:[s.jsx(C,{label:"Queries",value:E(t.count),delta:{current:t.count,previous:x.count,goodDirection:"down"},deltaCaption:g}),s.jsx(C,{label:"N+1 groups",value:E(r.n_plus_ones.length),tone:r.n_plus_ones.length>0?"warning":void 0,hint:r.n_plus_ones.length>0?`${D} with a suggested fix`:void 0}),s.jsx(C,{label:"Avg",value:f(t.avg/1e3,2),delta:{current:t.avg,previous:x.avg,goodDirection:"down"},deltaCaption:g}),s.jsx(C,{label:"p95",value:f(t.p95/1e3,2),hint:`p99 ${f(t.p99/1e3,2)}`,delta:{current:t.p95,previous:x.p95,goodDirection:"down"},deltaCaption:g})]}),r.n_plus_ones.length>0&&s.jsxs(G,{className:"border-amber-500/40",children:[s.jsx(V,{children:s.jsx(X,{children:"N+1 queries detected"})}),s.jsx(Y,{children:s.jsx(q,{rows:r.n_plus_ones,rowKey:e=>e.group_hash,onRowClick:P,keyboardNav:{onOpen:(e,i)=>N(e.group_hash,i)},columns:[{key:"sql",header:"Query shape",grow:!0,cell:e=>s.jsxs(s.Fragment,{children:[s.jsx(w,{href:Q(n,l,e.group_hash),children:s.jsx(_,{className:"hover:underline",children:e.sql})}),m===e.group_hash&&e.suggestion&&s.jsx(ie,{suggestion:e.suggestion})]})},{key:"fix",header:"Fix",cell:e=>e.suggestion?s.jsxs("button",{type:"button","aria-expanded":m===e.group_hash,"aria-label":`Suggested fix: ${e.suggestion.code}`,onClick:i=>{i.stopPropagation(),P(e)},className:"border-warning/50 text-warning hover:bg-warning/10 inline-flex items-center gap-0.5 rounded-md border py-0.5 pr-1.5 pl-0.5 font-mono text-[11px] uppercase",children:[m===e.group_hash?s.jsx(se,{className:"size-3"}):s.jsx(oe,{className:"size-3"}),"Fix"]}):null},{key:"src",hideOnMobile:!0,header:"Source",cell:e=>s.jsx("span",{className:"text-muted-foreground font-mono text-xs",children:e.source??""})},{key:"occ",header:"Executions affected",align:"right",cell:e=>e.occurrences},{key:"mx",hideOnMobile:!0,header:"Max repeats",align:"right",cell:e=>e.max_count}]})})]}),s.jsx(q,{rows:r.queries,rowKey:e=>e.group_hash,empty:s.jsx(z,{icon:re,title:"No queries in this window",description:"SQL queries executed by your app appear here as they're reported."}),hoverKey:e=>e.group_hash,keyboardNav:{onOpen:(e,i)=>N(e.group_hash,i)},columns:[{key:"sql",header:"Query",grow:!0,cell:e=>s.jsx(w,{href:j(e.group_hash),children:s.jsx(_,{className:"hover:underline",children:e.name})})},{key:"trend",hideOnMobile:!0,header:"Trend",cell:e=>s.jsx(J,{data:e.sparkline,hoverKey:e.group_hash})},{key:"n",header:s.jsx(k,{label:"Count",active:r.sort==="count",dir:r.dir==="asc"?"asc":"desc",onClick:()=>b("count")}),align:"right",cell:e=>E(e.count)},{key:"avg",hideOnMobile:!0,header:s.jsx(k,{label:"Avg",active:r.sort==="avg",dir:r.dir==="asc"?"asc":"desc",onClick:()=>b("avg")}),align:"right",cell:e=>f(e.avg,2)},{key:u,header:s.jsx(k,{label:u,active:r.sort===u,dir:r.dir==="asc"?"asc":"desc",onClick:()=>b(u)}),align:"right",cell:e=>s.jsx("span",{className:"font-semibold",children:f(e[u],2)})},{key:"max",hideOnMobile:!0,header:s.jsx(k,{label:"Max",active:r.sort==="max",dir:r.dir==="asc"?"asc":"desc",onClick:()=>b("max")}),align:"right",cell:e=>f(e.max,2)}]}),s.jsx("h2",{className:"text-sm font-semibold",children:"Slowest individual queries"}),s.jsx(B,{value:r.q,fields:[{key:"after",label:"After"},{key:"before",label:"Before"},{key:"user",label:"User"},{key:"tenant",label:"Tenant"},{key:"deploy",label:"Deploy"},{key:"source",label:"Source"},{key:"kind",label:"Execution kind",options:["request","job","scheduled_task","command"]},{key:"connection",label:"Connection"},{key:"role",label:"Role"},{key:"adapter",label:"Adapter"}],onChange:e=>S.visit(p(void 0,e),{only:["slowest","pagination","q"],preserveState:!0,reset:["slowest"]}),placeholder:"connection:primary role:reading source:app/models"}),s.jsx(q,{rows:r.slowest,rowKey:e=>e.id,keyboardNav:{onOpen:(e,i)=>N(e.group_hash,i)},columns:[{key:"sql",header:"SQL",grow:!0,cell:e=>s.jsx(w,{href:j(e.group_hash),children:s.jsx(_,{className:"hover:underline",children:e.sql})})},{key:"exe",hideOnMobile:!0,header:"In",cell:e=>e.execution_id?s.jsx(w,{className:"font-mono text-xs hover:underline",href:T(n,l,e.execution_id),children:e.execution_preview}):s.jsx("span",{className:"text-muted-foreground text-xs",children:"–"})},{key:"src",hideOnMobile:!0,header:"Source",cell:e=>s.jsx("span",{className:"text-muted-foreground font-mono text-xs",children:e.source??""})},{key:"d",header:"Duration",align:"right",cell:e=>f(e.duration,2)}]}),s.jsx(R,{meta:r.pagination,href:p,only:["slowest","pagination"]})]})}export{Fe as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as ee,u as ne,j as s,E as se,e as ie,L as le,i as oe}from"./inertia-
|
|
1
|
+
import{c as ee,u as ne,j as s,E as se,e as ie,L as le,i as oe}from"./inertia-CqnzqPVD.js";import{V as ae}from"./chart-panel-CONkZcn9.js";import{C as re}from"./cursor-load-more-C1ylbqqL.js";import{D as ce}from"./data-table-CVKR2wkq.js";import{F as me}from"./filter-bar-xcbJC93z.js";import{P as de,E as fe}from"./env-layout-CKLL8Ds7.js";import{S as ue}from"./app-layout-2xAKndVD.js";import{B as te}from"./badge-Dv7I-ebP.js";import{C as X,a as Y}from"./card-DqdEEKcJ.js";import{e as xe}from"./execution-path-DWovhgLi.js";import{c as Z,w as pe}from"./format-B9SDkrWj.js";import"./series-chart-D6upsrSn.js";import"./chart-hover-2yZG3w2u.js";import"./chart-C4k7Ub9W.js";import"./app-wordmark-Bt6XqURo.js";import"./empty-state-Bn48Gplm.js";import"./use-live-DWwLg1Nj.js";import"./live-dot-UdzOfzJb.js";import"./index-BDVShWMs.js";import"./index-C-EwH4lO.js";import"./segmented-C4oWE73o.js";import"./label-1nSzpSB6.js";import"./checkbox-DKbThbxr.js";function he(t){const e=ee.c(3),{handled:n}=t,o=n?"secondary":"destructive",l=n?"handled":"unhandled";let i;return e[0]!==o||e[1]!==l?(i=s.jsx(te,{variant:o,children:l}),e[0]=o,e[1]=l,e[2]=i):i=e[2],i}function ye(t){const e=ee.c(3),{severity:n}=t;if(!n)return null;const o=n==="fatal"||n==="error"?"destructive":n==="warning"?"secondary":"outline";let l;return e[0]!==n||e[1]!==o?(l=s.jsx(te,{variant:o,className:"capitalize",children:n}),e[0]=n,e[1]=o,e[2]=l):l=e[2],l}function Je(t){const e=ee.c(76),{environment:n,window:o,range:l}=ne().props,i=n.application_id,a=n.id;let N;e[0]!==l?.from||e[1]!==l?.to||e[2]!==o?(N=o==="custom"?{from:l?.from,to:l?.to}:{window:o},e[0]=l?.from,e[1]=l?.to,e[2]=o,e[3]=N):N=e[3];const c=N;let w;e[4]!==l||e[5]!==c?(w=l?{from:l.from,to:l.to}:c,e[4]=l,e[5]=c,e[6]=w):w=e[6];const J=w;let S;e[7]!==i||e[8]!==J||e[9]!==a||e[10]!==t.pagination.limit||e[11]!==t.q?(S=r=>se(i,a,{...J,q:t.q||void 0,cursor:r,limit:t.pagination.limit}),e[7]=i,e[8]=J,e[9]=a,e[10]=t.pagination.limit,e[11]=t.q,e[12]=S):S=e[12];const Q=S;let E;e[13]===Symbol.for("react.memo_cache_sentinel")?(E=s.jsx(de,{title:"Exceptions",description:"Every exception raised, handled or not -- distinct from Issues, which group and track these over time.",actions:s.jsx(ue,{page:"exceptions"})}),e[13]=E):E=e[13];let m;e[14]!==t.series?(m=s.jsx(ae,{legend:"exception",label:"Exceptions",seriesLabel:"Exceptions",data:t.series}),e[14]=t.series,e[15]=m):m=e[15];let q;e[16]===Symbol.for("react.memo_cache_sentinel")?(q=s.jsx("div",{className:"text-muted-foreground text-xs font-medium tracking-wide uppercase",children:"Total"}),e[16]=q):q=e[16];let d;e[17]!==t.total?(d=Z(t.total),e[17]=t.total,e[18]=d):d=e[18];let f;e[19]!==d?(f=s.jsx(X,{className:"gap-1 py-4",children:s.jsxs(Y,{className:"px-4",children:[q,s.jsx("div",{className:"mt-1 text-2xl font-semibold tabular-nums",children:d})]})}),e[19]=d,e[20]=f):f=e[20];let P;e[21]===Symbol.for("react.memo_cache_sentinel")?(P=s.jsx("div",{className:"text-muted-foreground text-xs font-medium tracking-wide uppercase",children:"Unhandled"}),e[21]=P):P=e[21];let u;e[22]!==t.unhandled?(u=Z(t.unhandled),e[22]=t.unhandled,e[23]=u):u=e[23];let x;e[24]!==u?(x=s.jsx(X,{className:"gap-1 py-4",children:s.jsxs(Y,{className:"px-4",children:[P,s.jsx("div",{className:"text-destructive mt-1 text-2xl font-semibold tabular-nums",children:u})]})}),e[24]=u,e[25]=x):x=e[25];let C;e[26]===Symbol.for("react.memo_cache_sentinel")?(C=s.jsx("div",{className:"text-muted-foreground text-xs font-medium tracking-wide uppercase",children:"Top classes"}),e[26]=C):C=e[26];let p;e[27]!==t.classes?(p=t.classes.slice(0,5).map(we),e[27]=t.classes,e[28]=p):p=e[28];let h;e[29]!==p?(h=s.jsx(X,{className:"gap-1 py-4",children:s.jsxs(Y,{className:"px-4",children:[C,s.jsx("div",{className:"mt-1 flex flex-wrap gap-1",children:p})]})}),e[29]=p,e[30]=h):h=e[30];let y;e[31]!==x||e[32]!==h||e[33]!==f?(y=s.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[f,x,h]}),e[31]=x,e[32]=h,e[33]=f,e[34]=y):y=e[34];let B,M,I,L,T,H;e[35]===Symbol.for("react.memo_cache_sentinel")?(B={key:"after",label:"After"},M={key:"before",label:"Before"},I={key:"user",label:"User"},L={key:"tenant",label:"Tenant"},T={key:"deploy",label:"Deploy"},H={key:"source",label:"Source"},e[35]=B,e[36]=M,e[37]=I,e[38]=L,e[39]=T,e[40]=H):(B=e[35],M=e[36],I=e[37],L=e[38],T=e[39],H=e[40]);let O,R;e[41]===Symbol.for("react.memo_cache_sentinel")?(O={key:"kind",label:"Execution kind",options:["request","job","scheduled_task","command"]},R={key:"class",label:"Class"},e[41]=O,e[42]=R):(O=e[41],R=e[42]);let D;e[43]===Symbol.for("react.memo_cache_sentinel")?(D={key:"handled",label:"Handled",options:["true","false"]},e[43]=D):D=e[43];let F;e[44]===Symbol.for("react.memo_cache_sentinel")?(F=[B,M,I,L,T,H,O,R,D,{key:"severity",label:"Severity",options:["fatal","error","warning","info"]}],e[44]=F):F=e[44];let g;e[45]!==i||e[46]!==a||e[47]!==c?(g=r=>ie.visit(se(i,a,{...c,q:r||void 0}),{only:["exceptions","pagination","q"],preserveState:!0,reset:["exceptions"]}),e[45]=i,e[46]=a,e[47]=c,e[48]=g):g=e[48];let v;e[49]!==t.q||e[50]!==g?(v=s.jsx(me,{value:t.q,fields:F,onChange:g,placeholder:"class:ActiveRecord::RecordNotFound handled:false"}),e[49]=t.q,e[50]=g,e[51]=v):v=e[51];let U,V,$,A,z;e[52]===Symbol.for("react.memo_cache_sentinel")?(U={key:"when",header:"When",className:"w-40",cell:ke},V={key:"class",header:"Class",grow:!0,cell:_e},$={key:"handled",header:"Handled",cell:je},A={key:"sev",hideOnMobile:!0,header:"Severity",cell:be},z={key:"source",hideOnMobile:!0,header:"Source",cell:ve},e[52]=U,e[53]=V,e[54]=$,e[55]=A,e[56]=z):(U=e[52],V=e[53],$=e[54],A=e[55],z=e[56]);let b;e[57]!==i||e[58]!==a?(b={key:"in",hideOnMobile:!0,header:"In",cell:r=>r.execution_id?s.jsx(le,{className:"font-mono text-xs hover:underline",href:xe({applicationId:i,environmentId:a,source:r.execution_source,executionId:r.execution_id}),children:r.execution_preview}):s.jsx("span",{className:"text-muted-foreground text-xs",children:"–"})},e[57]=i,e[58]=a,e[59]=b):b=e[59];let K;e[60]===Symbol.for("react.memo_cache_sentinel")?(K={key:"user",hideOnMobile:!0,header:"User",cell:ge},e[60]=K):K=e[60];let j;e[61]!==b?(j=[U,V,$,A,z,b,K],e[61]=b,e[62]=j):j=e[62];let _;e[63]!==t.exceptions||e[64]!==j?(_=s.jsx(ce,{rows:t.exceptions,rowKey:Ne,empty:"No exceptions in this window.",columns:j}),e[63]=t.exceptions,e[64]=j,e[65]=_):_=e[65];let W;e[66]===Symbol.for("react.memo_cache_sentinel")?(W=["exceptions","pagination"],e[66]=W):W=e[66];let k;e[67]!==Q||e[68]!==t.pagination?(k=s.jsx(re,{meta:t.pagination,href:Q,only:W}),e[67]=Q,e[68]=t.pagination,e[69]=k):k=e[69];let G;return e[70]!==y||e[71]!==v||e[72]!==_||e[73]!==k||e[74]!==m?(G=s.jsxs(fe,{title:"Exceptions",children:[E,m,y,v,_,k]}),e[70]=y,e[71]=v,e[72]=_,e[73]=k,e[74]=m,e[75]=G):G=e[75],G}function ge(t){return s.jsx("span",{className:"font-mono text-xs",children:t.user_ref??""})}function ve(t){return s.jsx("span",{className:"text-muted-foreground font-mono text-xs",children:t.source??""})}function be(t){return s.jsx(ye,{severity:t.severity})}function je(t){return s.jsx(he,{handled:t.handled})}function _e(t){return s.jsxs("div",{className:"flex flex-col gap-0.5",children:[t.issue_key?s.jsx(le,{className:"font-mono text-xs font-semibold hover:underline",href:oe(t.issue_id),children:t.class_name}):s.jsx("span",{className:"font-mono text-xs font-semibold",children:t.class_name}),s.jsx("span",{className:"text-muted-foreground line-clamp-1 text-xs",children:t.message})]})}function ke(t){return s.jsx("span",{className:"text-xs tabular-nums",children:pe(t.occurred_at)})}function Ne(t){return t.id}function we(t){const[e,n]=t;return s.jsxs(te,{variant:"outline",className:"font-mono",children:[e," (",Z(n),")"]},e)}export{Je as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{B as H,r as c,j as T,a3 as x}from"./inertia-
|
|
1
|
+
import{B as H,r as c,j as T,a3 as x}from"./inertia-CqnzqPVD.js";const V=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],ae=H("check",V);var Y=Object.defineProperty,w=(e,t)=>Y(e,"name",{value:t,configurable:!0}),I=!!(typeof window<"u"&&window.document&&window.document.createElement);function X(e,t,{checkForDefaultPrevented:n=!0}={}){return w(function(r){if(e?.(r),n===!1||!r||!r.defaultPrevented)return t?.(r)},"handleEvent")}w(X,"composeEventHandlers");function q(e){if(!I)throw new Error("Cannot access window outside of the DOM");return e?.ownerDocument?.defaultView??window}w(q,"getOwnerWindow");function R(e){if(!I)throw new Error("Cannot access document outside of the DOM");return e?.ownerDocument??document}w(R,"getOwnerDocument");function $(e,t=!1){const{activeElement:n}=R(e);if(!n?.nodeName)return null;if(j(n)&&n.contentDocument)return $(n.contentDocument.body,t);if(t){const o=n.getAttribute("aria-activedescendant");if(o){const r=R(n).getElementById(o);if(r)return r}}return n}w($,"getActiveElement");function j(e){return e.tagName==="IFRAME"}w(j,"isFrame");var G=Object.defineProperty,S=(e,t)=>G(e,"name",{value:t,configurable:!0});function J(e,t){const n=c.createContext(t);n.displayName=e+"Context";const o=S(i=>{const{children:s,...u}=i,a=c.useMemo(()=>u,Object.values(u));return T.jsx(n.Provider,{value:a,children:s})},"Provider");o.displayName=e+"Provider";function r(i,s={}){const{optional:u=!1}=s,a=c.useContext(n);if(a)return a;if(t!==void 0)return t;if(!u)throw new Error(`\`${i}\` must be used within \`${e}\``)}return S(r,"useContext"),[o,r]}S(J,"createContext");function K(e,t=[]){let n=[];function o(i,s){const u=c.createContext(s);u.displayName=i+"Context";const a=n.length;n=[...n,s];const d=S(f=>{const{scope:v,children:p,...m}=f,E=v?.[e]?.[a]||u,g=c.useMemo(()=>m,Object.values(m));return T.jsx(E.Provider,{value:g,children:p})},"Provider");d.displayName=i+"Provider";function l(f,v,p={}){const{optional:m=!1}=p,E=v?.[e]?.[a]||u,g=c.useContext(E);if(g)return g;if(s!==void 0)return s;if(!m)throw new Error(`\`${f}\` must be used within \`${i}\``)}return S(l,"useContext"),[d,l]}S(o,"createContext");const r=S(()=>{const i=n.map(s=>c.createContext(s));return S(function(u){const a=u?.[e]||i;return c.useMemo(()=>({[`__scope${e}`]:{...u,[e]:a}}),[u,a])},"useScope")},"createScope");return r.scopeName=e,[o,D(r,...t)]}S(K,"createContextScope");function D(...e){const t=e[0];if(e.length===1)return t;const n=S(()=>{const o=e.map(r=>({useScope:r(),scopeName:r.scopeName}));return S(function(i){const s=o.reduce((u,{useScope:a,scopeName:d})=>{const f=a(i)[`__scope${d}`];return{...u,...f}},{});return c.useMemo(()=>({[`__scope${t.scopeName}`]:s}),[s])},"useComposedScopes")},"createScope");return n.scopeName=t.scopeName,n}S(D,"composeContextScopes");var b=globalThis?.document?c.useLayoutEffect:()=>{},Q=Object.defineProperty,Z=(e,t)=>Q(e,"name",{value:t,configurable:!0}),A=x[" useEffectEvent ".trim().toString()],O=x[" useInsertionEffect ".trim().toString()];function U(e){if(typeof A=="function")return A(e);const t=c.useRef(()=>{throw new Error("Cannot call an event handler while rendering.")});return typeof O=="function"?O(()=>{t.current=e}):b(()=>{t.current=e}),c.useMemo(()=>((...n)=>t.current?.(...n)),[])}Z(U,"useEffectEvent");var ee=Object.defineProperty,P=(e,t)=>ee(e,"name",{value:t,configurable:!0}),te=x[" useInsertionEffect ".trim().toString()]||b;function ne({prop:e,defaultProp:t,onChange:n=P(()=>{},"onChange"),caller:o}){const[r,i,s]=z({defaultProp:t,onChange:n}),u=e!==void 0,a=u?e:r,d=c.useCallback(l=>{if(u){const f=F(l)?l(e):l;f!==e&&s.current?.(f)}else i(l)},[u,e,i,s]);return[a,d]}P(ne,"useControllableState");function z({defaultProp:e,onChange:t}){const[n,o]=c.useState(e),r=c.useRef(n),i=c.useRef(t);return te(()=>{i.current=t},[t]),c.useEffect(()=>{r.current!==n&&(i.current?.(n),r.current=n)},[n,r]),[n,o,i]}P(z,"useUncontrolledState");function F(e){return typeof e=="function"}P(F,"isFunction");var M=Symbol("RADIX:SYNC_STATE");function re(e,t,n,o){const{prop:r,defaultProp:i,onChange:s,caller:u}=t,a=r!==void 0,d=U(s),l=[{...n,state:i}];o&&l.push(o);const[f,v]=c.useReducer((g,y)=>{if(y.type===M)return{...g,state:y.state};const N=e(g,y);return a&&!Object.is(N.state,g.state)&&d(N.state),N},...l),p=f.state,m=c.useRef(p);c.useEffect(()=>{m.current!==p&&(m.current=p,a||d(p))},[p,m,a]);const E=c.useMemo(()=>r!==void 0?{...f,state:r}:f,[f,r]);return c.useEffect(()=>{a&&!Object.is(r,f.state)&&v({type:M,state:r})},[r,f.state,a]),[E,v]}P(re,"useControllableStateReducer");var oe=Object.defineProperty,h=(e,t)=>oe(e,"name",{value:t,configurable:!0});function W(e,t){return c.useReducer((n,o)=>t[n][o]??n,e)}h(W,"useStateMachine");var fe=h(e=>{const{present:t,children:n}=e,o=L(t),r=typeof n=="function"?n({present:o.isPresent}):c.Children.only(n),i=k(o.ref,B(r));return typeof n=="function"||o.isPresent?c.cloneElement(r,{ref:i}):null},"Presence");function L(e){const[t,n]=c.useState(),o=c.useRef(null),r=c.useRef(e),i=c.useRef("none"),s=c.useRef(void 0),u=e?"mounted":"unmounted",[a,d]=W(u,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return c.useEffect(()=>{a==="mounted"?(i.current=s.current??C(o.current),s.current=void 0):i.current="none"},[a]),b(()=>{const l=o.current,f=r.current;if(f!==e){const p=i.current,m=C(l);e?(s.current=m,d("MOUNT")):m==="none"||l?.display==="none"?d("UNMOUNT"):d(f&&p!==m?"ANIMATION_OUT":"UNMOUNT"),r.current=e}},[e,d]),b(()=>{if(t){let l;const f=t.ownerDocument.defaultView??window,v=h(m=>{const g=C(o.current).includes(CSS.escape(m.animationName));if(m.target===t&&g&&(d("ANIMATION_END"),!r.current)){const y=t.style.animationFillMode;t.style.animationFillMode="forwards",l=f.setTimeout(()=>{t.style.animationFillMode==="forwards"&&(t.style.animationFillMode=y)})}},"handleAnimationEnd"),p=h(m=>{m.target===t&&(i.current=C(o.current))},"handleAnimationStart");return t.addEventListener("animationstart",p),t.addEventListener("animationcancel",v),t.addEventListener("animationend",v),()=>{f.clearTimeout(l),t.removeEventListener("animationstart",p),t.removeEventListener("animationcancel",v),t.removeEventListener("animationend",v)}}else d("ANIMATION_END")},[t,d]),{isPresent:["mounted","unmountSuspended"].includes(a),ref:c.useCallback(l=>{if(l){const f=getComputedStyle(l);o.current=f,s.current=C(f)}else o.current=null;n(l)},[])}}h(L,"usePresence");function _(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}h(_,"setRef");function k(...e){const t=c.useRef(e);return t.current=e,c.useCallback(n=>{const o=t.current;let r=!1;const i=o.map(s=>{const u=_(s,n);return!r&&typeof u=="function"&&(r=!0),u});if(r)return()=>{for(let s=0;s<i.length;s++){const u=i[s];typeof u=="function"?u():_(o[s],null)}}},[])}h(k,"useStableComposedRefs");function C(e){return e?.animationName||"none"}h(C,"getAnimationName");function B(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}h(B,"getElementRef");var se=Object.defineProperty,ce=(e,t)=>se(e,"name",{value:t,configurable:!0});function ie(e){const[t,n]=c.useState(void 0);return b(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});const o=new ResizeObserver(r=>{if(!Array.isArray(r)||!r.length)return;const i=r[0];let s,u;if("borderBoxSize"in i){const a=i.borderBoxSize,d=Array.isArray(a)?a[0]:a;s=d.inlineSize,u=d.blockSize}else s=e.offsetWidth,u=e.offsetHeight;n({width:s,height:u})});return o.observe(e,{box:"border-box"}),()=>o.unobserve(e)}else n(void 0)},[e]),t}ce(ie,"useSize");export{ae as C,fe as P,X as a,b,K as c,ie as d,ne as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as x,u as _,j as o,y as b,e as h}from"./inertia-
|
|
1
|
+
import{c as x,u as _,j as o,y as b,e as h}from"./inertia-CqnzqPVD.js";import{D as k}from"./data-table-CVKR2wkq.js";import{E as w}from"./empty-state-Bn48Gplm.js";import{E as j,P as v}from"./env-layout-CKLL8Ds7.js";import{w as N,c as R}from"./format-B9SDkrWj.js";import{R as D}from"./app-layout-2xAKndVD.js";import"./chart-hover-2yZG3w2u.js";import"./badge-Dv7I-ebP.js";import"./app-wordmark-Bt6XqURo.js";import"./use-live-DWwLg1Nj.js";import"./live-dot-UdzOfzJb.js";import"./index-BDVShWMs.js";import"./index-C-EwH4lO.js";import"./segmented-C4oWE73o.js";import"./label-1nSzpSB6.js";import"./checkbox-DKbThbxr.js";function X(t){const e=x.c(13),{environment:y}=_().props,d=y.application_id,f=y.id;let s;e[0]!==d||e[1]!==f?(s=i=>b(d,f,i.id),e[0]=d,e[1]=f,e[2]=s):s=e[2];const l=s;let a;e[3]===Symbol.for("react.memo_cache_sentinel")?(a=o.jsx(v,{withWindow:!1,title:"Deploys",description:"Recorded by bin/rails railwatch:deploy or the Kamal post-deploy hook. Click one to compare the hour before and after."}),e[3]=a):a=e[3];let m;e[4]===Symbol.for("react.memo_cache_sentinel")?(m=o.jsx(w,{icon:D,title:"No deploys recorded",description:"Run bin/rails railwatch:deploy or install the Kamal hook to track deploys."}),e[4]=m):m=e[4];let r,n;e[5]!==l?(r=i=>h.visit(l(i)),n={onOpen:(i,u)=>u?.newTab?window.open(l(i),"_blank"):h.visit(l(i))},e[5]=l,e[6]=r,e[7]=n):(r=e[6],n=e[7]);let c;e[8]===Symbol.for("react.memo_cache_sentinel")?(c=[{key:"when",header:"When",cell:C},{key:"d",header:"Deploy",cell:P},{key:"r",hideOnMobile:!0,header:"Ref",cell:M},{key:"n",hideOnMobile:!0,header:"Name",cell:g},{key:"by",hideOnMobile:!0,header:"By",cell:S},{key:"c",hideOnMobile:!0,header:"Commits",align:"right",cell:O},{key:"s",header:"Server",cell:E}],e[8]=c):c=e[8];let p;return e[9]!==t.deploys||e[10]!==r||e[11]!==n?(p=o.jsxs(j,{title:"Deploys",children:[a,o.jsx(k,{rows:t.deploys,rowKey:K,empty:m,onRowClick:r,keyboardNav:n,columns:c})]}),e[9]=t.deploys,e[10]=r,e[11]=n,e[12]=p):p=e[12],p}function E(t){return o.jsx("span",{className:"font-mono text-xs",children:t.server})}function O(t){return R(t.commits_count)}function S(t){return o.jsx("span",{className:"text-xs",children:t.performer})}function g(t){return t.name}function M(t){return o.jsx("span",{className:"font-mono text-xs",children:t.ref})}function P(t){return o.jsx("span",{className:"font-mono text-xs",children:t.deploy})}function C(t){return o.jsx("span",{className:"text-xs",children:N(t.deployed_at)})}function K(t){return t.id}export{X as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as C,u as S,r as F,j as s,L as z,i as A,b as R,d as B,e as w,f as L}from"./inertia-
|
|
1
|
+
import{c as C,u as S,r as F,j as s,L as z,i as A,b as R,d as B,e as w,f as L}from"./inertia-CqnzqPVD.js";import{E as J}from"./empty-state-Bn48Gplm.js";import{p as O,F as D,s as H}from"./filter-bar-xcbJC93z.js";import{J as I}from"./json-viewer-Bnu9RsJL.js";import{P as T,E as V}from"./env-layout-CKLL8Ds7.js";import{R as W}from"./relative-time-DQ4kjowZ.js";import{B as $}from"./badge-Dv7I-ebP.js";import{B as b}from"./app-wordmark-Bt6XqURo.js";import{C as G,a as K}from"./app-layout-2xAKndVD.js";import"./use-clipboard-C1ApSwzA.js";import"./index-C-EwH4lO.js";import"./use-live-DWwLg1Nj.js";import"./live-dot-UdzOfzJb.js";import"./index-BDVShWMs.js";import"./format-B9SDkrWj.js";import"./segmented-C4oWE73o.js";import"./label-1nSzpSB6.js";import"./checkbox-DKbThbxr.js";function xe(i){const e=C.c(30),{environment:c}=S().props,[y,E]=F.useState(null);let f;e[0]!==c?(f=t=>{const u=c?R(c.application_id,c.id,{q:t||void 0}):B({q:t||void 0});w.visit(u,{preserveState:!0,preserveScroll:!0})},e[0]=c,e[1]=f):f=e[1];const l=f,P=Q;let x;e[2]!==i.q?(x=O(i.q),e[2]=i.q,e[3]=x):x=e[3];const r=x,p=r.fields.status==="failed";let h;e[4]!==p||e[5]!==r.fields||e[6]!==r.text||e[7]!==l?(h=()=>{const t={...r.fields};p?delete t.status:t.status="failed",l(H({text:r.text,fields:t}))},e[4]=p,e[5]=r.fields,e[6]=r.text,e[7]=l,e[8]=h):h=e[8];const _=h;let v,j;e[9]===Symbol.for("react.memo_cache_sentinel")?(v=[{title:"Alerts",href:"#"}],j=s.jsx(T,{withWindow:!1,title:"Alerts",description:"Fired alerts across your integrations, newest first."}),e[9]=v,e[10]=j):(v=e[9],j=e[10]);let g;e[11]===Symbol.for("react.memo_cache_sentinel")?(g={key:"event",label:"Event",options:["new_issue","regressed_issue","threshold","quota"]},e[11]=g):g=e[11];let a;e[12]!==i.statuses?(a=[g,{key:"status",label:"Status",options:i.statuses}],e[12]=i.statuses,e[13]=a):a=e[13];let o;e[14]!==i.q||e[15]!==a||e[16]!==l?(o=s.jsx(D,{value:i.q,fields:a,onChange:l,placeholder:"event:new_issue status:failed"}),e[14]=i.q,e[15]=a,e[16]=l,e[17]=o):o=e[17];const k=p?"default":"outline";let n;e[18]!==k||e[19]!==_?(n=s.jsx(b,{size:"sm",variant:k,className:"h-8",onClick:_,children:"Failed only"}),e[18]=k,e[19]=_,e[20]=n):n=e[20];let d;e[21]!==o||e[22]!==n?(d=s.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[o,n]}),e[21]=o,e[22]=n,e[23]=d):d=e[23];let m;e[24]!==y||e[25]!==i.alerts?(m=i.alerts.length===0?s.jsx(J,{title:"No alerts have fired."}):s.jsx("div",{className:"divide-y rounded-md border",children:i.alerts.map(t=>{const u=y===t.id;return s.jsxs("div",{className:"p-3",children:[s.jsxs("button",{type:"button",className:"flex w-full flex-wrap items-center gap-3 text-left text-sm",onClick:()=>E(u?null:t.id),children:[u?s.jsx(G,{className:"text-muted-foreground size-4 shrink-0"}):s.jsx(K,{className:"text-muted-foreground size-4 shrink-0"}),s.jsx("span",{className:"font-mono text-xs",children:t.event}),s.jsxs("span",{className:"text-muted-foreground text-xs",children:[t.integration.name," (",t.integration.kind,")"]}),t.issue&&s.jsxs(z,{href:A(t.issue.id),onClick:M,className:"text-xs hover:underline",children:[s.jsx("span",{className:"font-mono font-semibold",children:t.issue.key})," ",s.jsx("span",{className:"text-muted-foreground",children:t.issue.title})]}),s.jsxs("span",{className:"ml-auto flex items-center gap-2",children:[s.jsx($,{variant:t.status==="failed"?"destructive":"outline",className:"capitalize",title:t.error??void 0,children:t.status}),s.jsx(W,{iso:t.sent_at??t.created_at,className:"text-muted-foreground text-xs"}),t.status==="failed"&&s.jsx(b,{size:"sm",variant:"outline",onClick:q=>{q.stopPropagation(),P(t.id)},children:"Retry"})]})]}),u&&s.jsxs("div",{className:"mt-3 space-y-2 pl-7",children:[t.error&&s.jsx("p",{className:"text-destructive text-xs",children:t.error}),s.jsx(I,{data:t.payload})]})]},t.id)})}),e[24]=y,e[25]=i.alerts,e[26]=m):m=e[26];let N;return e[27]!==d||e[28]!==m?(N=s.jsxs(V,{title:"Alerts",crumbs:v,children:[j,d,m]}),e[27]=d,e[28]=m,e[29]=N):N=e[29],N}function M(i){return i.stopPropagation()}function Q(i){return w.post(L(i),{},{preserveScroll:!0})}export{xe as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as B,u as F,j as t,e as I,A as R,r as A,L as $}from"./inertia-
|
|
1
|
+
import{c as B,u as F,j as t,e as I,A as R,r as A,L as $}from"./inertia-CqnzqPVD.js";import{E as G}from"./empty-state-Bn48Gplm.js";import{F as H}from"./filter-bar-xcbJC93z.js";import{P as O,E as T}from"./env-layout-CKLL8Ds7.js";import{S as J}from"./series-chart-D6upsrSn.js";import{S as q}from"./stat-BNEfE8X1.js";import{B as L}from"./badge-Dv7I-ebP.js";import{C as K,a as M}from"./card-DqdEEKcJ.js";import{e as Q}from"./execution-path-DWovhgLi.js";import{c as P,w as z}from"./format-B9SDkrWj.js";import"./app-wordmark-Bt6XqURo.js";import"./app-layout-2xAKndVD.js";import"./live-dot-UdzOfzJb.js";import"./index-BDVShWMs.js";import"./index-C-EwH4lO.js";import"./checkbox-DKbThbxr.js";import"./label-1nSzpSB6.js";import"./use-live-DWwLg1Nj.js";import"./segmented-C4oWE73o.js";import"./chart-hover-2yZG3w2u.js";import"./chart-C4k7Ub9W.js";import"./arrow-up-EmePsTKP.js";function U(i){const e=B.c(51),{d:s,a:g,e:j}=i,[_,w]=A.useState(!1);let f;e[0]===Symbol.for("react.memo_cache_sentinel")?(f=()=>w(V),e[0]=f):f=e[0];let l;e[1]!==s.gem_name?(l=s.gem_name&&t.jsx(L,{variant:"secondary",className:"font-mono",children:s.gem_name}),e[1]=s.gem_name,e[2]=l):l=e[2];let r;e[3]!==s.horizon?(r=s.horizon&&t.jsxs(L,{variant:"outline",className:"font-mono",children:["removed in ",s.horizon]}),e[3]=s.horizon,e[4]=r):r=e[4];let a;e[5]!==l||e[6]!==r?(a=t.jsxs("div",{className:"flex items-center gap-2",children:[l,r]}),e[5]=l,e[6]=r,e[7]=a):a=e[7];let n;e[8]!==s.message?(n=t.jsx("p",{className:"mt-1 font-mono text-xs whitespace-pre-wrap",children:s.message}),e[8]=s.message,e[9]=n):n=e[9];let o;e[10]!==s.source?(o=s.source&&t.jsx("p",{className:"text-muted-foreground mt-1 font-mono text-xs",children:s.source}),e[10]=s.source,e[11]=o):o=e[11];let c;e[12]!==a||e[13]!==n||e[14]!==o?(c=t.jsxs("div",{className:"min-w-0 flex-1",children:[a,n,o]}),e[12]=a,e[13]=n,e[14]=o,e[15]=c):c=e[15];let x;e[16]!==s.sparkline?(x=t.jsx(J,{data:s.sparkline,className:"h-10 w-32"}),e[16]=s.sparkline,e[17]=x):x=e[17];let m;e[18]!==s.count?(m=P(s.count),e[18]=s.count,e[19]=m):m=e[19];let d;e[20]!==m?(d=t.jsx("div",{className:"text-lg font-semibold tabular-nums",children:m}),e[20]=m,e[21]=d):d=e[21];let p;e[22]===Symbol.for("react.memo_cache_sentinel")?(p=t.jsx("div",{className:"text-muted-foreground text-xs",children:"occurrences"}),e[22]=p):p=e[22];let u;e[23]!==d?(u=t.jsxs("div",{className:"text-right",children:[d,p]}),e[23]=d,e[24]=u):u=e[24];let h;e[25]!==u||e[26]!==x?(h=t.jsxs("div",{className:"flex shrink-0 items-center gap-4",children:[x,u]}),e[25]=u,e[26]=x,e[27]=h):h=e[27];let v;e[28]!==h||e[29]!==c?(v=t.jsxs("button",{type:"button",onClick:f,className:"flex flex-wrap items-start justify-between gap-4 text-left",children:[c,h]}),e[28]=h,e[29]=c,e[30]=v):v=e[30];let N;e[31]!==s.first_seen_at?(N=z(s.first_seen_at),e[31]=s.first_seen_at,e[32]=N):N=e[32];let b;e[33]!==N?(b=t.jsxs("span",{children:["First seen ",N]}),e[33]=N,e[34]=b):b=e[34];let y;e[35]!==s.last_seen_at?(y=z(s.last_seen_at),e[35]=s.last_seen_at,e[36]=y):y=e[36];let S;e[37]!==y?(S=t.jsxs("span",{children:["Last seen ",y]}),e[37]=y,e[38]=S):S=e[38];let k;e[39]!==b||e[40]!==S?(k=t.jsxs("div",{className:"text-muted-foreground flex gap-4 text-xs",children:[b,S]}),e[39]=b,e[40]=S,e[41]=k):k=e[41];let E;e[42]!==g||e[43]!==s.occurrences||e[44]!==j||e[45]!==_?(E=_&&t.jsx("div",{className:"mt-2 overflow-hidden rounded-lg border",children:t.jsx("table",{className:"w-full text-xs",children:t.jsx("tbody",{children:s.occurrences.map(D=>t.jsxs("tr",{className:"border-t first:border-t-0",children:[t.jsx("td",{className:"px-3 py-1.5 tabular-nums",children:z(D.occurred_at)}),t.jsx("td",{className:"px-3 py-1.5",children:D.execution_id?t.jsx($,{className:"font-mono hover:underline",href:Q({applicationId:g,environmentId:j,source:D.execution_source,executionId:D.execution_id}),children:D.execution_preview}):t.jsx("span",{className:"text-muted-foreground",children:"–"})})]},D.id))})})}),e[42]=g,e[43]=s.occurrences,e[44]=j,e[45]=_,e[46]=E):E=e[46];let C;return e[47]!==v||e[48]!==k||e[49]!==E?(C=t.jsx(K,{children:t.jsxs(M,{className:"flex flex-col gap-2 pt-4",children:[v,k,E]})}),e[47]=v,e[48]=k,e[49]=E,e[50]=C):C=e[50],C}function V(i){return!i}function _e(i){const e=B.c(33),{environment:s,window:g}=F().props,j=s.application_id,_=s.id;let w;e[0]===Symbol.for("react.memo_cache_sentinel")?(w=t.jsx(O,{title:"Deprecations",description:"ActiveSupport::Deprecation warnings, grouped by gem and message."}),e[0]=w):w=e[0];let f;e[1]!==i.distinct?(f=P(i.distinct),e[1]=i.distinct,e[2]=f):f=e[2];let l;e[3]!==f?(l=t.jsx(q,{label:"Distinct deprecations",value:f}),e[3]=f,e[4]=l):l=e[4];let r;e[5]!==i.total_occurrences?(r=P(i.total_occurrences),e[5]=i.total_occurrences,e[6]=r):r=e[6];let a;e[7]!==r?(a=t.jsx(q,{label:"Total occurrences",value:r}),e[7]=r,e[8]=a):a=e[8];let n;e[9]!==i.new_this_window?(n=P(i.new_this_window),e[9]=i.new_this_window,e[10]=n):n=e[10];let o;e[11]!==n?(o=t.jsx(q,{label:"New this window",value:n}),e[11]=n,e[12]=o):o=e[12];let c;e[13]!==l||e[14]!==a||e[15]!==o?(c=t.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[l,a,o]}),e[13]=l,e[14]=a,e[15]=o,e[16]=c):c=e[16];let x;e[17]===Symbol.for("react.memo_cache_sentinel")?(x=[{key:"gem",label:"Gem"}],e[17]=x):x=e[17];let m;e[18]!==j||e[19]!==_||e[20]!==g?(m=h=>I.visit(R(j,_,{window:g,q:h||void 0}),{preserveState:!0}),e[18]=j,e[19]=_,e[20]=g,e[21]=m):m=e[21];let d;e[22]!==i.q||e[23]!==m?(d=t.jsx(H,{value:i.q,fields:x,onChange:m,placeholder:"gem:rails deprecated method"}),e[22]=i.q,e[23]=m,e[24]=d):d=e[24];let p;e[25]!==j||e[26]!==_||e[27]!==i.deprecations?(p=i.deprecations.length===0?t.jsx(G,{title:"No deprecations in this window."}):t.jsx("div",{className:"flex flex-col gap-3",children:i.deprecations.map(h=>t.jsx(U,{d:h,a:j,e:_},h.group_hash))}),e[25]=j,e[26]=_,e[27]=i.deprecations,e[28]=p):p=e[28];let u;return e[29]!==d||e[30]!==p||e[31]!==c?(u=t.jsxs(T,{title:"Deprecations",children:[w,c,d,p]}),e[29]=d,e[30]=p,e[31]=c,e[32]=u):u=e[32],u}export{_e as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as le,u as ce,j as s,e as ie,ao as me,L as de}from"./inertia-
|
|
1
|
+
import{c as le,u as ce,j as s,e as ie,ao as me,L as de}from"./inertia-CqnzqPVD.js";import{C as ue}from"./chart-hover-2yZG3w2u.js";import{D as fe}from"./data-table-CVKR2wkq.js";import{E as he}from"./empty-state-Bn48Gplm.js";import{F as ye}from"./filter-bar-xcbJC93z.js";import{P as ge,E as pe}from"./env-layout-CKLL8Ds7.js";import{S as W}from"./sort-header-CPM6fhXv.js";import{S as xe}from"./sparkline-cell-CXCxXPWt.js";import{S as Y,a as _e}from"./stat-BNEfE8X1.js";import{c as a,m as ve,a as be}from"./format-B9SDkrWj.js";import{t as je}from"./tenant-path-C4aM_cO0.js";import{$ as ke}from"./app-layout-2xAKndVD.js";import"./badge-Dv7I-ebP.js";import"./app-wordmark-Bt6XqURo.js";import"./use-live-DWwLg1Nj.js";import"./live-dot-UdzOfzJb.js";import"./index-BDVShWMs.js";import"./index-C-EwH4lO.js";import"./segmented-C4oWE73o.js";import"./label-1nSzpSB6.js";import"./arrow-up-EmePsTKP.js";import"./series-chart-D6upsrSn.js";import"./chart-C4k7Ub9W.js";import"./checkbox-DKbThbxr.js";function it(t){const e=le.c(91),{environment:ae,window:o}=ce().props,l=ae.application_id,c=ae.id;let P;e[0]!==l||e[1]!==c||e[2]!==t.dir||e[3]!==t.q||e[4]!==t.sort||e[5]!==o?(P=r=>ie.visit(me(l,c,{window:o,sort:t.sort,dir:t.dir,q:t.q||void 0,...r}),{preserveState:!0}),e[0]=l,e[1]=c,e[2]=t.dir,e[3]=t.q,e[4]=t.sort,e[5]=o,e[6]=P):P=e[6];const m=P;let M;e[7]!==t.dir||e[8]!==t.sort||e[9]!==m?(M=r=>m({sort:r,dir:t.sort===r&&t.dir==="desc"?"asc":"desc"}),e[7]=t.dir,e[8]=t.sort,e[9]=m,e[10]=M):M=e[10];const n=M;let F;e[11]!==l||e[12]!==c||e[13]!==o?(F=r=>je(l,c,r.tenant,{window:o}),e[11]=l,e[12]=c,e[13]=o,e[14]=F):F=e[14];const i=F;let L;e[15]===Symbol.for("react.memo_cache_sentinel")?(L=s.jsx(ge,{title:"Tenants",description:"Your application's own tenants, aggregated from the tenant tag on every record."}),e[15]=L):L=e[15];let d;e[16]!==t.summary.tenants?(d=a(t.summary.tenants),e[16]=t.summary.tenants,e[17]=d):d=e[17];let u;e[18]!==d?(u=s.jsx(Y,{label:"Tenants active",value:d}),e[18]=d,e[19]=u):u=e[19];const z=`${t.summary.top_share}%`,G=t.summary.top_tenant??"none";let f;e[20]!==z||e[21]!==G?(f=s.jsx(Y,{label:"Top tenant",value:z,hint:G}),e[20]=z,e[21]=G,e[22]=f):f=e[22];let h;e[23]!==t.summary.with_errors?(h=a(t.summary.with_errors),e[23]=t.summary.with_errors,e[24]=h):h=e[24];const I=t.summary.with_errors?"destructive":"success";let y;e[25]!==I||e[26]!==h?(y=s.jsx(Y,{label:"With 5xx",value:h,tone:I}),e[25]=I,e[26]=h,e[27]=y):y=e[27];const Q=`${t.summary.untagged_share}%`;let g;e[28]!==Q?(g=s.jsx(Y,{label:"Untagged",value:Q,hint:"requests with no tenant"}),e[28]=Q,e[29]=g):g=e[29];let p;e[30]!==y||e[31]!==g||e[32]!==u||e[33]!==f?(p=s.jsxs(_e,{children:[u,f,y,g]}),e[30]=y,e[31]=g,e[32]=u,e[33]=f,e[34]=p):p=e[34];let $;e[35]===Symbol.for("react.memo_cache_sentinel")?($=[],e[35]=$):$=e[35];let x;e[36]!==m?(x=r=>m({q:r||void 0}),e[36]=m,e[37]=x):x=e[37];let _;e[38]!==t.q||e[39]!==x?(_=s.jsx(ye,{value:t.q,fields:$,onChange:x,placeholder:"Filter tenants"}),e[38]=t.q,e[39]=x,e[40]=_):_=e[40];let B;e[41]===Symbol.for("react.memo_cache_sentinel")?(B=s.jsx(he,{icon:ke,title:"No tenant-tagged records in this window",description:"Records carry the tenant from ActiveRecord::Tenanted / TenantRecord.current_tenant, or call Railwatch.context(tenant: org.slug)"}),e[41]=B):B=e[41];let v,b;e[42]!==i?(v=r=>ie.visit(i(r)),b={onOpen:(r,oe)=>oe?.newTab?globalThis.window.open(i(r),"_blank"):ie.visit(i(r))},e[42]=i,e[43]=v,e[44]=b):(v=e[43],b=e[44]);let j;e[45]!==i?(j={key:"tenant",header:"Tenant",cell:r=>s.jsx(de,{className:"font-mono text-xs hover:underline",href:i(r),children:r.tenant})},e[45]=i,e[46]=j):j=e[46];let H;e[47]===Symbol.for("react.memo_cache_sentinel")?(H={key:"trend",hideOnMobile:!0,header:"Trend",cell:Oe},e[47]=H):H=e[47];const V=t.sort==="requests",X=t.dir==="asc"?"asc":"desc";let k;e[48]!==n?(k=()=>n("requests"),e[48]=n,e[49]=k):k=e[49];let w;e[50]!==V||e[51]!==X||e[52]!==k?(w={key:"requests",header:s.jsx(W,{label:"Requests",active:V,dir:X,onClick:k}),align:"right",cell:Ne},e[50]=V,e[51]=X,e[52]=k,e[53]=w):w=e[53];const Z=t.sort==="errors",ee=t.dir==="asc"?"asc":"desc";let S;e[54]!==n?(S=()=>n("errors"),e[54]=n,e[55]=S):S=e[55];let q;e[56]!==Z||e[57]!==ee||e[58]!==S?(q={key:"5xx",header:s.jsx(W,{label:"5xx",active:Z,dir:ee,onClick:S}),align:"right",cell:Re},e[56]=Z,e[57]=ee,e[58]=S,e[59]=q):q=e[59];const te=t.sort==="p95",se=t.dir==="asc"?"asc":"desc";let T;e[60]!==n?(T=()=>n("p95"),e[60]=n,e[61]=T):T=e[61];let C;e[62]!==te||e[63]!==se||e[64]!==T?(C={key:"p95",header:s.jsx(W,{label:"p95",active:te,dir:se,onClick:T}),align:"right",cell:Ee},e[62]=te,e[63]=se,e[64]=T,e[65]=C):C=e[65];let K,D,U;e[66]===Symbol.for("react.memo_cache_sentinel")?(K={key:"jobs",hideOnMobile:!0,header:"Jobs",align:"right",cell:Ce},D={key:"failed",hideOnMobile:!0,header:"Failed",align:"right",cell:Te},U={key:"exceptions",hideOnMobile:!0,header:"Exceptions",align:"right",cell:qe},e[66]=K,e[67]=D,e[68]=U):(K=e[66],D=e[67],U=e[68]);const re=t.sort==="users",ne=t.dir==="asc"?"asc":"desc";let E;e[69]!==n?(E=()=>n("users"),e[69]=n,e[70]=E):E=e[70];let R;e[71]!==re||e[72]!==ne||e[73]!==E?(R={key:"users",hideOnMobile:!0,header:s.jsx(W,{label:"Users",active:re,dir:ne,onClick:E}),align:"right",cell:Se},e[71]=re,e[72]=ne,e[73]=E,e[74]=R):R=e[74];let A;e[75]===Symbol.for("react.memo_cache_sentinel")?(A={key:"seen",header:"Last seen",align:"right",cell:we},e[75]=A):A=e[75];let N;e[76]!==j||e[77]!==w||e[78]!==q||e[79]!==C||e[80]!==R?(N=[j,H,w,q,C,K,D,U,R,A],e[76]=j,e[77]=w,e[78]=q,e[79]=C,e[80]=R,e[81]=N):N=e[81];let O;e[82]!==t.tenants||e[83]!==v||e[84]!==b||e[85]!==N?(O=s.jsx(fe,{rows:t.tenants,rowKey:Me,empty:B,hoverKey:Pe,onRowClick:v,keyboardNav:b,columns:N}),e[82]=t.tenants,e[83]=v,e[84]=b,e[85]=N,e[86]=O):O=e[86];let J;return e[87]!==p||e[88]!==_||e[89]!==O?(J=s.jsx(pe,{title:"Tenants",children:s.jsxs(ue,{children:[L,p,_,O]})}),e[87]=p,e[88]=_,e[89]=O,e[90]=J):J=e[90],J}function we(t){return be(t.last_seen_at)}function Se(t){return a(t.users)}function qe(t){return a(t.exceptions)}function Te(t){return s.jsx("span",{className:t.failed_jobs?"text-destructive":"",children:a(t.failed_jobs)})}function Ce(t){return a(t.jobs)}function Ee(t){return s.jsx("span",{className:"font-semibold",children:ve(t.p95)})}function Re(t){return s.jsx("span",{className:t.errors?"text-destructive":"",children:a(t.errors)})}function Ne(t){return a(t.requests)}function Oe(t){return s.jsx(xe,{data:t.sparkline,hoverKey:t.tenant})}function Pe(t){return t.tenant}function Me(t){return t.tenant}export{it as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as D,u as P,j as i,t as L,e as A,L as B}from"./inertia-
|
|
1
|
+
import{c as D,u as P,j as i,t as L,e as A,L as B}from"./inertia-CqnzqPVD.js";import{D as M}from"./data-table-CVKR2wkq.js";import{E as O}from"./empty-state-Bn48Gplm.js";import{P as F,E as H}from"./env-layout-CKLL8Ds7.js";import{c as R,m as j,w as K}from"./format-B9SDkrWj.js";import{B as S}from"./app-layout-2xAKndVD.js";import"./chart-hover-2yZG3w2u.js";import"./badge-Dv7I-ebP.js";import"./app-wordmark-Bt6XqURo.js";import"./use-live-DWwLg1Nj.js";import"./live-dot-UdzOfzJb.js";import"./index-BDVShWMs.js";import"./index-C-EwH4lO.js";import"./segmented-C4oWE73o.js";import"./label-1nSzpSB6.js";import"./checkbox-DKbThbxr.js";function pe(t){const e=D.c(26),{environment:E}=P().props,N=E.application_id,w=E.id;let c;e[0]!==N||e[1]!==w?(c=n=>n.execution_id?L(N,w,n.execution_id):null,e[0]=N,e[1]=w,e[2]=c):c=e[2];const r=c;let m;e[3]===Symbol.for("react.memo_cache_sentinel")?(m=i.jsx(F,{title:"Notifications",description:"ActionMailer/Noticed deliveries, grouped by notifier and delivery method."}),e[3]=m):m=e[3];let u,f;e[4]===Symbol.for("react.memo_cache_sentinel")?(u=i.jsx(O,{icon:S,title:"No notifications in this window",description:"Notifications delivered by your app appear here as they're sent."}),f=[{key:"n",header:"Notifier",cell:U},{key:"c",hideOnMobile:!0,header:"Count",align:"right",cell:Q},{key:"f",hideOnMobile:!0,header:"Failed",align:"right",cell:J},{key:"avg",hideOnMobile:!0,header:"Avg",align:"right",cell:G},{key:"p95",header:"p95",align:"right",cell:z}],e[4]=u,e[5]=f):(u=e[4],f=e[5]);let o;e[6]!==t.groups?(o=i.jsx(M,{rows:t.groups,rowKey:V,empty:u,columns:f}),e[6]=t.groups,e[7]=o):o=e[7];let p;e[8]===Symbol.for("react.memo_cache_sentinel")?(p=i.jsx("h2",{className:"text-sm font-semibold",children:"Recent"}),e[8]=p):p=e[8];let d;e[9]===Symbol.for("react.memo_cache_sentinel")?(d=i.jsx(O,{icon:S,title:"No notifications in this window",description:"Notifications delivered by your app appear here as they're sent."}),e[9]=d):d=e[9];let l;e[10]!==r?(l={onOpen:(n,v)=>{const k=r(n);k&&(v?.newTab?window.open(k,"_blank"):A.visit(k))}},e[10]=r,e[11]=l):l=e[11];let h,y,_,x,g;e[12]===Symbol.for("react.memo_cache_sentinel")?(x={key:"when",header:"When",cell:W},g={key:"n",header:"Notifier",cell:I},h={key:"dm",hideOnMobile:!0,header:"Delivery method",cell:C},y={key:"f",hideOnMobile:!0,header:"Failed",cell:q},_={key:"d",header:"Duration",align:"right",cell:T},e[12]=h,e[13]=y,e[14]=_,e[15]=x,e[16]=g):(h=e[12],y=e[13],_=e[14],x=e[15],g=e[16]);let s;e[17]!==r?(s=[x,g,h,y,_,{key:"in",hideOnMobile:!0,header:"In",cell:n=>{const v=r(n);return v?i.jsx(B,{className:"font-mono text-xs hover:underline",href:v,children:n.execution_preview}):null}}],e[17]=r,e[18]=s):s=e[18];let a;e[19]!==t.recent||e[20]!==s||e[21]!==l?(a=i.jsx(M,{rows:t.recent,rowKey:$,empty:d,keyboardNav:l,columns:s}),e[19]=t.recent,e[20]=s,e[21]=l,e[22]=a):a=e[22];let b;return e[23]!==a||e[24]!==o?(b=i.jsxs(H,{title:"Notifications",children:[m,o,p,a]}),e[23]=a,e[24]=o,e[25]=b):b=e[25],b}function T(t){return j(t.duration,3)}function q(t){return t.failed?"yes":""}function C(t){return t.delivery_method}function I(t){return i.jsx("span",{className:"font-mono text-xs",children:t.notifier})}function W(t){return i.jsx("span",{className:"text-xs",children:K(t.occurred_at)})}function $(t){return t.id}function z(t){return j(t.p95,3)}function G(t){return j(t.avg,3)}function J(t){return R(t.errors)}function Q(t){return R(t.count)}function U(t){return i.jsx("span",{className:"font-mono text-xs",children:t.name})}function V(t){return t.group_hash}export{pe as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as Ie,u as Oe,r as re,S as fe,j as s,e as I,T as ze,H as Ee,L as Pe,i as ye}from"./inertia-DLew8ZNx.js";import{D as Me,i as Ae}from"./data-table-BIlt7Rtm.js";import{E as Le}from"./empty-state-C38il627.js";import{S as he,a as xe}from"./segmented-BgbT3wZa.js";import{I as Se}from"./status-badge-BaUKP7Yo.js";import{B as _e}from"./badge-CAxXV8za.js";import{B as me}from"./app-wordmark-o9CODKP0.js";import{C as pe}from"./checkbox-CmhMHWZO.js";import{S as ge,a as ke,b as be,c as je,d as ue}from"./select-DmunxCKE.js";import{e as Re,O as Be,A as De}from"./app-layout-DDyQa72H.js";import{c as de,a as Te}from"./format-B9SDkrWj.js";import"./chart-hover-B1M9jc0y.js";import"./index-umIAl-pL.js";import"./index-so4lRrRq.js";import"./live-dot-D1n_BreY.js";import"./label-GWl7I6sf.js";const He=["low","normal","high","urgent"];function bt(t){const e=Ie.c(82),{applications:O}=Oe().props,[m,ve]=re.useState(t.filters.q??""),[c,we]=re.useState(null);let z;e[0]===Symbol.for("react.memo_cache_sentinel")?(z=new Set,e[0]=z):z=e[0];const[a,E]=re.useState(z),ae=t.filters.status??"open";let P;e[1]!==t.filters?(P=n=>I.visit(fe({...t.filters,...n}),{preserveState:!0}),e[1]=t.filters,e[2]=P):P=e[2];const r=P,M=st;let A;e[3]===Symbol.for("react.memo_cache_sentinel")?(A={onOpen:(n,i)=>i?.newTab?window.open(M(n),"_blank"):I.visit(M(n)),onHighlightChange:n=>we(n?.id??null)},e[3]=A):A=e[3];const Ne=A;let L,R;e[4]!==c||e[5]!==t.issues?(L=()=>{const n=function(l){if(Ae(l)||l.key!=="r"&&l.key!=="i"&&l.key!=="a")return;const o=t.issues.findIndex(ce=>ce.id===c);if(o<0)return;l.preventDefault();const C=l.key==="r"?"resolve":l.key==="i"?"ignore":"assign_me";I.patch(ye(t.issues[o].id),{action_name:C},{preserveScroll:!0})};return window.addEventListener("keydown",n),()=>window.removeEventListener("keydown",n)},R=[c,t.issues],e[4]=c,e[5]=t.issues,e[6]=L,e[7]=R):(L=e[6],R=e[7]),re.useEffect(L,R);let B;e[8]===Symbol.for("react.memo_cache_sentinel")?(B=function(i){E(l=>{const o=new Set(l);return o.has(i)?o.delete(i):o.add(i),o})},e[8]=B):B=e[8];const Ce=B;let D;e[9]!==a?(D=function(i,l){I.post(ze(),{ids:[...a],action_name:i,value:l},{preserveScroll:!0,onSuccess:()=>E(new Set)})},e[9]=a,e[10]=D):D=e[10];const N=D;let T,H;e[11]===Symbol.for("react.memo_cache_sentinel")?(T=[{title:"Issues",href:fe()}],H=s.jsx(Ee,{title:"Issues"}),e[11]=T,e[12]=H):(T=e[11],H=e[12]);let K;e[13]===Symbol.for("react.memo_cache_sentinel")?(K=[["exception","Exceptions"],["performance","Performance"],["anomaly","Anomalies"]],e[13]=K):K=e[13];let d;e[14]!==r||e[15]!==t.filters.kind||e[16]!==t.kindCounts?(d=s.jsx(he,{children:K.map(n=>{const[i,l]=n;return s.jsxs(xe,{mono:!1,active:(t.filters.kind??"")===i,onClick:()=>r({kind:t.filters.kind===i?void 0:i}),className:"gap-2 px-3",children:[l,s.jsx("span",{className:"bg-muted text-muted-foreground rounded px-1.5 font-mono text-[10px]",children:de(t.kindCounts?.[i]??0)})]},i)})}),e[14]=r,e[15]=t.filters.kind,e[16]=t.kindCounts,e[17]=d):d=e[17];let u;e[18]!==r||e[19]!==m?(u=n=>{n.preventDefault(),r({q:m})},e[18]=r,e[19]=m,e[20]=u):u=e[20];let q;e[21]===Symbol.for("react.memo_cache_sentinel")?(q=s.jsx(Re,{className:"text-muted-foreground size-3.5 shrink-0"}),e[21]=q):q=e[21];let V;e[22]===Symbol.for("react.memo_cache_sentinel")?(V=n=>ve(n.target.value),e[22]=V):V=e[22];let f;e[23]!==m?(f=s.jsx("input",{value:m,onChange:V,placeholder:"Search or source:browser",className:"placeholder:text-muted-foreground min-w-0 flex-1 bg-transparent text-sm outline-none"}),e[23]=m,e[24]=f):f=e[24];let h;e[25]!==u||e[26]!==f?(h=s.jsxs("form",{className:"bg-card flex h-8 min-w-0 flex-1 items-center gap-1.5 rounded-md border px-2 md:max-w-xs",onSubmit:u,children:[q,f]}),e[25]=u,e[26]=f,e[27]=h):h=e[27];let U;e[28]===Symbol.for("react.memo_cache_sentinel")?(U=["open","Open",{}],e[28]=U):U=e[28];let $;e[29]===Symbol.for("react.memo_cache_sentinel")?($=["mine","Mine",{mine:"1"}],e[29]=$):$=e[29];let Q;e[30]===Symbol.for("react.memo_cache_sentinel")?(Q=["resolved","Resolved",{}],e[30]=Q):Q=e[30];let W;e[31]===Symbol.for("react.memo_cache_sentinel")?(W=[U,$,Q,["ignored","Ignored",{}]],e[31]=W):W=e[31];let x;e[32]!==r||e[33]!==t.counts||e[34]!==t.filters.mine||e[35]!==ae?(x=s.jsx("div",{className:"-mx-3 [scrollbar-width:none] overflow-x-auto px-3 md:mx-0 md:ml-auto md:overflow-visible md:px-0 [&::-webkit-scrollbar]:hidden",children:s.jsx(he,{children:W.map(n=>{const[i,l,o]=n,C=i==="mine",ce=C?t.filters.mine==="1":ae===i&&t.filters.mine!=="1";return s.jsxs(xe,{mono:!1,active:ce,onClick:()=>r(C?{mine:"1",status:"open"}:{status:i,mine:void 0,...o}),className:"px-3",children:[l,!C&&s.jsx("span",{className:"text-muted-foreground font-mono text-[10px]",children:de(t.counts[i]??0)})]},i)})})}),e[32]=r,e[33]=t.counts,e[34]=t.filters.mine,e[35]=ae,e[36]=x):x=e[36];let p;e[37]!==O||e[38]!==r||e[39]!==t.filters.application_id?(p=O.length>1&&s.jsxs(ge,{value:t.filters.application_id??"all",onValueChange:n=>r({application_id:n==="all"?void 0:n,environment_id:void 0}),children:[s.jsx(ke,{className:"h-8 w-44 text-xs",children:s.jsx(be,{placeholder:"Application"})}),s.jsxs(je,{children:[s.jsx(ue,{value:"all",children:"All applications"}),O.map(tt)]})]}),e[37]=O,e[38]=r,e[39]=t.filters.application_id,e[40]=p):p=e[40];let g;e[41]!==d||e[42]!==h||e[43]!==x||e[44]!==p?(g=s.jsxs("div",{className:"flex flex-col gap-2 md:flex-row md:flex-wrap md:items-center",children:[d,h,x,p]}),e[41]=d,e[42]=h,e[43]=x,e[44]=p,e[45]=g):g=e[45];let F,G;e[46]===Symbol.for("react.memo_cache_sentinel")?(F=s.jsx(Le,{icon:Be,title:"No issues match",signal:"caution",description:"Issues are grouped from repeated request, job, and exception errors."}),G=n=>I.visit(M(n)),e[46]=F,e[47]=G):(F=e[46],G=e[47]);const oe=t.issues.length>0&&a.size===t.issues.length;let k;e[48]!==t.issues?(k=n=>E(n?new Set(t.issues.map(Ze)):new Set),e[48]=t.issues,e[49]=k):k=e[49];let b;e[50]!==oe||e[51]!==k?(b=s.jsx(pe,{checked:oe,onCheckedChange:k,"aria-label":"Select all",onClick:Ye}),e[50]=oe,e[51]=k,e[52]=b):b=e[52];let j;e[53]!==a?(j=n=>s.jsx(pe,{checked:a.has(n.id),onCheckedChange:()=>Ce(n.id),"aria-label":`Select ${n.key}`,onClick:Xe}),e[53]=a,e[54]=j):j=e[54];let y;e[55]!==b||e[56]!==j?(y={key:"sel",hideOnMobile:!0,header:b,cell:j},e[55]=b,e[56]=j,e[57]=y):y=e[57];let S;e[58]!==c?(S={key:"k",header:"Issue",cell:n=>s.jsxs("div",{className:"flex items-center gap-1",children:[n.id===c&&s.jsx("span",{className:"text-primary","aria-hidden":!0,children:"›"}),s.jsx(Pe,{className:"font-mono text-xs font-semibold hover:underline",href:M(n),children:n.key})]})},e[58]=c,e[59]=S):S=e[59];let J,X,Y,Z,ee,te,se,ne,ie;e[60]===Symbol.for("react.memo_cache_sentinel")?(J={key:"t",header:"Title",grow:!0,cell:Je},X={key:"env",hideOnMobile:!0,header:"Where",cell:Ge},Y={key:"kind",hideOnMobile:!0,header:"Kind",cell:Fe},Z={key:"s",hideOnMobile:!0,header:"Status",cell:We},ee={key:"p",hideOnMobile:!0,header:"Priority",cell:Qe},te={key:"a",hideOnMobile:!0,header:"Assignee",cell:$e},se={key:"n",header:"Events",align:"right",cell:Ue},ne={key:"u",hideOnMobile:!0,header:"Users",align:"right",cell:Ve},ie={key:"l",hideOnMobile:!0,header:"Last seen",align:"right",cell:qe},e[60]=J,e[61]=X,e[62]=Y,e[63]=Z,e[64]=ee,e[65]=te,e[66]=se,e[67]=ne,e[68]=ie):(J=e[60],X=e[61],Y=e[62],Z=e[63],ee=e[64],te=e[65],se=e[66],ne=e[67],ie=e[68]);let _;e[69]!==y||e[70]!==S?(_=[y,S,J,X,Y,Z,ee,te,se,ne,ie],e[69]=y,e[70]=S,e[71]=_):_=e[71];let v;e[72]!==t.issues||e[73]!==_?(v=s.jsx(Me,{rows:t.issues,rowKey:et,empty:F,onRowClick:G,keyboardNav:Ne,columns:_}),e[72]=t.issues,e[73]=_,e[74]=v):v=e[74];let w;e[75]!==N||e[76]!==a.size?(w=a.size>0&&s.jsxs("div",{className:"bg-background sticky bottom-4 z-10 flex w-fit items-center gap-2 self-start rounded-lg border p-2 shadow-md",children:[s.jsxs("span",{className:"px-1 text-sm",children:[a.size," selected"]}),s.jsx(me,{size:"sm",variant:"outline",onClick:()=>N("resolve"),children:"Resolve"}),s.jsx(me,{size:"sm",variant:"outline",onClick:()=>N("ignore"),children:"Ignore"}),s.jsxs(ge,{onValueChange:n=>N("priority",n),children:[s.jsx(ke,{className:"h-8 w-32",children:s.jsx(be,{placeholder:"Priority"})}),s.jsx(je,{children:He.map(Ke)})]}),s.jsx(me,{size:"sm",variant:"ghost",onClick:()=>E(new Set),children:"Clear"})]}),e[75]=N,e[76]=a.size,e[77]=w):w=e[77];let le;return e[78]!==g||e[79]!==v||e[80]!==w?(le=s.jsxs(De,{breadcrumbs:T,children:[H,s.jsxs("div",{className:"flex flex-1 flex-col gap-4 p-3 md:gap-5 md:px-6 md:pt-2 md:pb-6",children:[g,v,w]})]}),e[78]=g,e[79]=v,e[80]=w,e[81]=le):le=e[81],le}function Ke(t){return s.jsx(ue,{value:t,className:"capitalize",children:t},t)}function qe(t){return s.jsx("span",{title:t.last_seen_at,children:Te(t.last_seen_at)})}function Ve(t){return t.affected_users}function Ue(t){return de(t.occurrences)}function $e(t){return t.assignee?.name??s.jsx("span",{className:"text-muted-foreground",children:"–"})}function Qe(t){return s.jsx("span",{className:t.priority==="urgent"?"text-destructive font-semibold":t.priority==="high"?"text-amber-600":"text-muted-foreground",children:t.priority})}function We(t){return s.jsx(Se,{status:t.status})}function Fe(t){return s.jsx(_e,{variant:"outline",children:t.kind})}function Ge(t){return s.jsxs("span",{className:"text-xs",children:[t.application?.name," · ",t.environment?.name]})}function Je(t){return s.jsxs("div",{className:"text-xs",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx("span",{className:"line-clamp-1 font-medium",children:t.title}),t.fingerprint_source&&t.fingerprint_source!=="default"&&s.jsxs(_e,{variant:"secondary",className:"shrink-0",children:["grouped by ",t.fingerprint_source]}),s.jsx("span",{className:"md:hidden",children:s.jsx(Se,{status:t.status})})]}),s.jsx("div",{className:"text-muted-foreground font-mono",children:t.culprit})]})}function Xe(t){return t.stopPropagation()}function Ye(t){return t.stopPropagation()}function Ze(t){return t.id}function et(t){return t.id}function tt(t){return s.jsx(ue,{value:String(t.id),children:t.name},t.id)}function st(t){return ye(t.id)}export{bt as default};
|
|
1
|
+
import{c as Ie,u as Oe,r as re,S as fe,j as s,e as I,T as ze,H as Ee,L as Pe,i as ye}from"./inertia-CqnzqPVD.js";import{D as Me,i as Ae}from"./data-table-CVKR2wkq.js";import{E as Le}from"./empty-state-Bn48Gplm.js";import{S as he,a as xe}from"./segmented-C4oWE73o.js";import{I as Se}from"./status-badge-D0aylrM5.js";import{B as _e}from"./badge-Dv7I-ebP.js";import{B as me}from"./app-wordmark-Bt6XqURo.js";import{C as pe}from"./checkbox-DKbThbxr.js";import{S as ge,a as ke,b as be,c as je,d as ue}from"./select-ocdQJdQo.js";import{e as Re,O as Be,A as De}from"./app-layout-2xAKndVD.js";import{c as de,a as Te}from"./format-B9SDkrWj.js";import"./chart-hover-2yZG3w2u.js";import"./index-C-EwH4lO.js";import"./index-BDVShWMs.js";import"./live-dot-UdzOfzJb.js";import"./label-1nSzpSB6.js";const He=["low","normal","high","urgent"];function bt(t){const e=Ie.c(82),{applications:O}=Oe().props,[m,ve]=re.useState(t.filters.q??""),[c,we]=re.useState(null);let z;e[0]===Symbol.for("react.memo_cache_sentinel")?(z=new Set,e[0]=z):z=e[0];const[a,E]=re.useState(z),ae=t.filters.status??"open";let P;e[1]!==t.filters?(P=n=>I.visit(fe({...t.filters,...n}),{preserveState:!0}),e[1]=t.filters,e[2]=P):P=e[2];const r=P,M=st;let A;e[3]===Symbol.for("react.memo_cache_sentinel")?(A={onOpen:(n,i)=>i?.newTab?window.open(M(n),"_blank"):I.visit(M(n)),onHighlightChange:n=>we(n?.id??null)},e[3]=A):A=e[3];const Ne=A;let L,R;e[4]!==c||e[5]!==t.issues?(L=()=>{const n=function(l){if(Ae(l)||l.key!=="r"&&l.key!=="i"&&l.key!=="a")return;const o=t.issues.findIndex(ce=>ce.id===c);if(o<0)return;l.preventDefault();const C=l.key==="r"?"resolve":l.key==="i"?"ignore":"assign_me";I.patch(ye(t.issues[o].id),{action_name:C},{preserveScroll:!0})};return window.addEventListener("keydown",n),()=>window.removeEventListener("keydown",n)},R=[c,t.issues],e[4]=c,e[5]=t.issues,e[6]=L,e[7]=R):(L=e[6],R=e[7]),re.useEffect(L,R);let B;e[8]===Symbol.for("react.memo_cache_sentinel")?(B=function(i){E(l=>{const o=new Set(l);return o.has(i)?o.delete(i):o.add(i),o})},e[8]=B):B=e[8];const Ce=B;let D;e[9]!==a?(D=function(i,l){I.post(ze(),{ids:[...a],action_name:i,value:l},{preserveScroll:!0,onSuccess:()=>E(new Set)})},e[9]=a,e[10]=D):D=e[10];const N=D;let T,H;e[11]===Symbol.for("react.memo_cache_sentinel")?(T=[{title:"Issues",href:fe()}],H=s.jsx(Ee,{title:"Issues"}),e[11]=T,e[12]=H):(T=e[11],H=e[12]);let K;e[13]===Symbol.for("react.memo_cache_sentinel")?(K=[["exception","Exceptions"],["performance","Performance"],["anomaly","Anomalies"]],e[13]=K):K=e[13];let d;e[14]!==r||e[15]!==t.filters.kind||e[16]!==t.kindCounts?(d=s.jsx(he,{children:K.map(n=>{const[i,l]=n;return s.jsxs(xe,{mono:!1,active:(t.filters.kind??"")===i,onClick:()=>r({kind:t.filters.kind===i?void 0:i}),className:"gap-2 px-3",children:[l,s.jsx("span",{className:"bg-muted text-muted-foreground rounded px-1.5 font-mono text-[10px]",children:de(t.kindCounts?.[i]??0)})]},i)})}),e[14]=r,e[15]=t.filters.kind,e[16]=t.kindCounts,e[17]=d):d=e[17];let u;e[18]!==r||e[19]!==m?(u=n=>{n.preventDefault(),r({q:m})},e[18]=r,e[19]=m,e[20]=u):u=e[20];let q;e[21]===Symbol.for("react.memo_cache_sentinel")?(q=s.jsx(Re,{className:"text-muted-foreground size-3.5 shrink-0"}),e[21]=q):q=e[21];let V;e[22]===Symbol.for("react.memo_cache_sentinel")?(V=n=>ve(n.target.value),e[22]=V):V=e[22];let f;e[23]!==m?(f=s.jsx("input",{value:m,onChange:V,placeholder:"Search or source:browser",className:"placeholder:text-muted-foreground min-w-0 flex-1 bg-transparent text-sm outline-none"}),e[23]=m,e[24]=f):f=e[24];let h;e[25]!==u||e[26]!==f?(h=s.jsxs("form",{className:"bg-card flex h-8 min-w-0 flex-1 items-center gap-1.5 rounded-md border px-2 md:max-w-xs",onSubmit:u,children:[q,f]}),e[25]=u,e[26]=f,e[27]=h):h=e[27];let U;e[28]===Symbol.for("react.memo_cache_sentinel")?(U=["open","Open",{}],e[28]=U):U=e[28];let $;e[29]===Symbol.for("react.memo_cache_sentinel")?($=["mine","Mine",{mine:"1"}],e[29]=$):$=e[29];let Q;e[30]===Symbol.for("react.memo_cache_sentinel")?(Q=["resolved","Resolved",{}],e[30]=Q):Q=e[30];let W;e[31]===Symbol.for("react.memo_cache_sentinel")?(W=[U,$,Q,["ignored","Ignored",{}]],e[31]=W):W=e[31];let x;e[32]!==r||e[33]!==t.counts||e[34]!==t.filters.mine||e[35]!==ae?(x=s.jsx("div",{className:"-mx-3 [scrollbar-width:none] overflow-x-auto px-3 md:mx-0 md:ml-auto md:overflow-visible md:px-0 [&::-webkit-scrollbar]:hidden",children:s.jsx(he,{children:W.map(n=>{const[i,l,o]=n,C=i==="mine",ce=C?t.filters.mine==="1":ae===i&&t.filters.mine!=="1";return s.jsxs(xe,{mono:!1,active:ce,onClick:()=>r(C?{mine:"1",status:"open"}:{status:i,mine:void 0,...o}),className:"px-3",children:[l,!C&&s.jsx("span",{className:"text-muted-foreground font-mono text-[10px]",children:de(t.counts[i]??0)})]},i)})})}),e[32]=r,e[33]=t.counts,e[34]=t.filters.mine,e[35]=ae,e[36]=x):x=e[36];let p;e[37]!==O||e[38]!==r||e[39]!==t.filters.application_id?(p=O.length>1&&s.jsxs(ge,{value:t.filters.application_id??"all",onValueChange:n=>r({application_id:n==="all"?void 0:n,environment_id:void 0}),children:[s.jsx(ke,{className:"h-8 w-44 text-xs",children:s.jsx(be,{placeholder:"Application"})}),s.jsxs(je,{children:[s.jsx(ue,{value:"all",children:"All applications"}),O.map(tt)]})]}),e[37]=O,e[38]=r,e[39]=t.filters.application_id,e[40]=p):p=e[40];let g;e[41]!==d||e[42]!==h||e[43]!==x||e[44]!==p?(g=s.jsxs("div",{className:"flex flex-col gap-2 md:flex-row md:flex-wrap md:items-center",children:[d,h,x,p]}),e[41]=d,e[42]=h,e[43]=x,e[44]=p,e[45]=g):g=e[45];let F,G;e[46]===Symbol.for("react.memo_cache_sentinel")?(F=s.jsx(Le,{icon:Be,title:"No issues match",signal:"caution",description:"Issues are grouped from repeated request, job, and exception errors."}),G=n=>I.visit(M(n)),e[46]=F,e[47]=G):(F=e[46],G=e[47]);const oe=t.issues.length>0&&a.size===t.issues.length;let k;e[48]!==t.issues?(k=n=>E(n?new Set(t.issues.map(Ze)):new Set),e[48]=t.issues,e[49]=k):k=e[49];let b;e[50]!==oe||e[51]!==k?(b=s.jsx(pe,{checked:oe,onCheckedChange:k,"aria-label":"Select all",onClick:Ye}),e[50]=oe,e[51]=k,e[52]=b):b=e[52];let j;e[53]!==a?(j=n=>s.jsx(pe,{checked:a.has(n.id),onCheckedChange:()=>Ce(n.id),"aria-label":`Select ${n.key}`,onClick:Xe}),e[53]=a,e[54]=j):j=e[54];let y;e[55]!==b||e[56]!==j?(y={key:"sel",hideOnMobile:!0,header:b,cell:j},e[55]=b,e[56]=j,e[57]=y):y=e[57];let S;e[58]!==c?(S={key:"k",header:"Issue",cell:n=>s.jsxs("div",{className:"flex items-center gap-1",children:[n.id===c&&s.jsx("span",{className:"text-primary","aria-hidden":!0,children:"›"}),s.jsx(Pe,{className:"font-mono text-xs font-semibold hover:underline",href:M(n),children:n.key})]})},e[58]=c,e[59]=S):S=e[59];let J,X,Y,Z,ee,te,se,ne,ie;e[60]===Symbol.for("react.memo_cache_sentinel")?(J={key:"t",header:"Title",grow:!0,cell:Je},X={key:"env",hideOnMobile:!0,header:"Where",cell:Ge},Y={key:"kind",hideOnMobile:!0,header:"Kind",cell:Fe},Z={key:"s",hideOnMobile:!0,header:"Status",cell:We},ee={key:"p",hideOnMobile:!0,header:"Priority",cell:Qe},te={key:"a",hideOnMobile:!0,header:"Assignee",cell:$e},se={key:"n",header:"Events",align:"right",cell:Ue},ne={key:"u",hideOnMobile:!0,header:"Users",align:"right",cell:Ve},ie={key:"l",hideOnMobile:!0,header:"Last seen",align:"right",cell:qe},e[60]=J,e[61]=X,e[62]=Y,e[63]=Z,e[64]=ee,e[65]=te,e[66]=se,e[67]=ne,e[68]=ie):(J=e[60],X=e[61],Y=e[62],Z=e[63],ee=e[64],te=e[65],se=e[66],ne=e[67],ie=e[68]);let _;e[69]!==y||e[70]!==S?(_=[y,S,J,X,Y,Z,ee,te,se,ne,ie],e[69]=y,e[70]=S,e[71]=_):_=e[71];let v;e[72]!==t.issues||e[73]!==_?(v=s.jsx(Me,{rows:t.issues,rowKey:et,empty:F,onRowClick:G,keyboardNav:Ne,columns:_}),e[72]=t.issues,e[73]=_,e[74]=v):v=e[74];let w;e[75]!==N||e[76]!==a.size?(w=a.size>0&&s.jsxs("div",{className:"bg-background sticky bottom-4 z-10 flex w-fit items-center gap-2 self-start rounded-lg border p-2 shadow-md",children:[s.jsxs("span",{className:"px-1 text-sm",children:[a.size," selected"]}),s.jsx(me,{size:"sm",variant:"outline",onClick:()=>N("resolve"),children:"Resolve"}),s.jsx(me,{size:"sm",variant:"outline",onClick:()=>N("ignore"),children:"Ignore"}),s.jsxs(ge,{onValueChange:n=>N("priority",n),children:[s.jsx(ke,{className:"h-8 w-32",children:s.jsx(be,{placeholder:"Priority"})}),s.jsx(je,{children:He.map(Ke)})]}),s.jsx(me,{size:"sm",variant:"ghost",onClick:()=>E(new Set),children:"Clear"})]}),e[75]=N,e[76]=a.size,e[77]=w):w=e[77];let le;return e[78]!==g||e[79]!==v||e[80]!==w?(le=s.jsxs(De,{breadcrumbs:T,children:[H,s.jsxs("div",{className:"flex flex-1 flex-col gap-4 p-3 md:gap-5 md:px-6 md:pt-2 md:pb-6",children:[g,v,w]})]}),e[78]=g,e[79]=v,e[80]=w,e[81]=le):le=e[81],le}function Ke(t){return s.jsx(ue,{value:t,className:"capitalize",children:t},t)}function qe(t){return s.jsx("span",{title:t.last_seen_at,children:Te(t.last_seen_at)})}function Ve(t){return t.affected_users}function Ue(t){return de(t.occurrences)}function $e(t){return t.assignee?.name??s.jsx("span",{className:"text-muted-foreground",children:"–"})}function Qe(t){return s.jsx("span",{className:t.priority==="urgent"?"text-destructive font-semibold":t.priority==="high"?"text-amber-600":"text-muted-foreground",children:t.priority})}function We(t){return s.jsx(Se,{status:t.status})}function Fe(t){return s.jsx(_e,{variant:"outline",children:t.kind})}function Ge(t){return s.jsxs("span",{className:"text-xs",children:[t.application?.name," · ",t.environment?.name]})}function Je(t){return s.jsxs("div",{className:"text-xs",children:[s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx("span",{className:"line-clamp-1 font-medium",children:t.title}),t.fingerprint_source&&t.fingerprint_source!=="default"&&s.jsxs(_e,{variant:"secondary",className:"shrink-0",children:["grouped by ",t.fingerprint_source]}),s.jsx("span",{className:"md:hidden",children:s.jsx(Se,{status:t.status})})]}),s.jsx("div",{className:"text-muted-foreground font-mono",children:t.culprit})]})}function Xe(t){return t.stopPropagation()}function Ye(t){return t.stopPropagation()}function Ze(t){return t.id}function et(t){return t.id}function tt(t){return s.jsx(ue,{value:String(t.id),children:t.name},t.id)}function st(t){return ye(t.id)}export{bt as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as L,j as s,C as R,aa as Y}from"./inertia-DLew8ZNx.js";import{C as S}from"./chart-panel-DUQTz_C8.js";import{D}from"./data-table-BIlt7Rtm.js";import{E as T}from"./empty-state-C38il627.js";import{C as G,X as I,Y as W,a as X,b as J,c as V}from"./chart-BBeBkkNa.js";import{A as Z,a as ee}from"./series-chart-Xf49v9cv.js";import{E as te,P as se}from"./env-layout-REF7OM4q.js";import{a as re,S as k}from"./stat-DFEyFxkO.js";import{C as P,b as $,c as B,a as F}from"./card-cAtqCxWl.js";import{c as j,m as O,b as ae,a as z,w as H}from"./format-B9SDkrWj.js";import{r as E}from"./app-layout-DDyQa72H.js";import"./chart-hover-B1M9jc0y.js";import"./badge-CAxXV8za.js";import"./app-wordmark-o9CODKP0.js";import"./use-live-D7xKz2ma.js";import"./live-dot-D1n_BreY.js";import"./index-so4lRrRq.js";import"./index-umIAl-pL.js";import"./segmented-BgbT3wZa.js";import"./label-GWl7I6sf.js";import"./arrow-up-C6PxDiY3.js";import"./checkbox-CmhMHWZO.js";const K={fontSize:10,fontFamily:"var(--font-mono)"},ne=1440*60*1e3;function le(t){return(t.length>1?new Date(t[t.length-1].t).getTime()-new Date(t[0].t).getTime():0)>2*ne?a=>new Date(a).toLocaleDateString(void 0,{month:"short",day:"numeric"}):a=>new Date(a).toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit"})}function A(t){return new Date(t).toLocaleString(void 0,{day:"2-digit",month:"short",hour:"2-digit",minute:"2-digit"})}function C(t){const e=L.c(28),{label:a,data:r,format:l,color:f,className:n}=t,i=f===void 0?"var(--primary)":f,b=n===void 0?"h-32":n;let c;e[0]!==i||e[1]!==a?(c={value:{label:a,color:i}},e[0]=i,e[1]=a,e[2]=c):c=e[2];const g=c;let m;e[3]!==r?(m=le(r),e[3]=r,e[4]=m):m=e[4];const o=m,d=`${b} w-full`;let h;e[5]===Symbol.for("react.memo_cache_sentinel")?(h=s.jsx(G,{vertical:!1,strokeDasharray:"2 4"}),e[5]=h):h=e[5];let u;e[6]!==o?(u=s.jsx(I,{dataKey:"t",tickFormatter:o,tickLine:!1,axisLine:!1,minTickGap:40,tick:K}),e[6]=o,e[7]=u):u=e[7];let p;e[8]!==l?(p=s.jsx(W,{width:44,tickLine:!1,axisLine:!1,tick:K,tickFormatter:q=>l(Number(q))}),e[8]=l,e[9]=p):p=e[9];let x;e[10]!==l||e[11]!==a?(x=s.jsx(X,{content:s.jsx(J,{labelFormatter:oe,formatter:q=>[l(Number(q)),a]})}),e[10]=l,e[11]=a,e[12]=x):x=e[12];let w;e[13]===Symbol.for("react.memo_cache_sentinel")?(w=s.jsx(Z,{dataKey:"value",stroke:"var(--color-value)",fill:"var(--color-value)",fillOpacity:.15,strokeWidth:1.75,isAnimationActive:!1}),e[13]=w):w=e[13];let v;e[14]!==r||e[15]!==u||e[16]!==p||e[17]!==x?(v=s.jsxs(ee,{data:r,children:[h,u,p,x,w]}),e[14]=r,e[15]=u,e[16]=p,e[17]=x,e[18]=v):v=e[18];let y;e[19]!==g||e[20]!==v||e[21]!==d?(y=s.jsx(V,{config:g,className:d,children:v}),e[19]=g,e[20]=v,e[21]=d,e[22]=y):y=e[22];let _;e[23]!==r?(_=r.length>0&&s.jsxs("div",{className:"text-muted-foreground mt-1 flex justify-between font-mono text-[10px]",children:[s.jsx("span",{children:A(r[0].t)}),s.jsx("span",{children:A(r[r.length-1].t)})]}),e[23]=r,e[24]=_):_=e[24];let N;return e[25]!==y||e[26]!==_?(N=s.jsxs("div",{children:[y,_]}),e[25]=y,e[26]=_,e[27]=N):N=e[27],N}function oe(t){return A(String(t))}function U(t){const e=L.c(21),{busy:a,max:r,className:l}=t;if(!r){let x;return e[0]===Symbol.for("react.memo_cache_sentinel")?(x=s.jsx("span",{className:"text-muted-foreground",children:"–"}),e[0]=x):x=e[0],x}const f=Math.min(1,(a??0)/r);let n;e[1]!==l?(n=R("flex items-center gap-1.5",l),e[1]=l,e[2]=n):n=e[2];const i=a??0,b=f>=.9?"bg-danger":f>=.7?"bg-warning":"bg-live";let c;e[3]!==b?(c=R("absolute inset-y-0 left-0 rounded-full",b),e[3]=b,e[4]=c):c=e[4];const g=`${Math.max(4,f*100)}%`;let m;e[5]!==g?(m={width:g},e[5]=g,e[6]=m):m=e[6];let o;e[7]!==c||e[8]!==m?(o=s.jsx("span",{className:c,style:m}),e[7]=c,e[8]=m,e[9]=o):o=e[9];let d;e[10]!==r||e[11]!==i||e[12]!==o?(d=s.jsx("span",{role:"meter","aria-label":"Utilisation","aria-valuenow":i,"aria-valuemin":0,"aria-valuemax":r,className:"bg-muted-foreground/25 relative h-1.5 w-10 shrink-0 overflow-hidden rounded-full",children:o}),e[10]=r,e[11]=i,e[12]=o,e[13]=d):d=e[13];const h=a??0;let u;e[14]!==r||e[15]!==h?(u=s.jsxs("span",{className:"font-mono tabular-nums",children:[h,"/",r]}),e[14]=r,e[15]=h,e[16]=u):u=e[16];let p;return e[17]!==n||e[18]!==u||e[19]!==d?(p=s.jsxs("span",{className:n,children:[d,u]}),e[17]=n,e[18]=u,e[19]=d,e[20]=p):p=e[20],p}const M=t=>`${t.toFixed(0)}%`;function ie(t){return t.reduce((e,a)=>e+(a??0),0)}function Q(t){return t.reduce((e,a)=>Math.max(e,a??0),0)}function it(t){const e=L.c(27);let a;if(e[0]!==t.samples){const h=t.samples.flatMap(Fe);a=h.length?h.reduce(Be,0)/h.length:0,e[0]=t.samples,e[1]=a}else a=e[1];const r=a;let l,f,n,i,b;if(e[2]!==t.queues||e[3]!==t.samples||e[4]!==t.series||e[5]!==t.silent_servers||e[6]!==r){const h=ie(t.samples.map($e)),u=Q(t.samples.map(Pe)),p=Q(t.samples.map(Re)),x=t.samples.length>0||t.series.length>0;l=te,f="Processes",e[12]===Symbol.for("react.memo_cache_sentinel")?(n=s.jsx(se,{title:"Processes",description:"What every web and worker process is doing right now: thread pools, socket backlog, queue depth, and the boots behind them."}),e[12]=n):n=e[12],e[13]!==t.silent_servers?(i=t.silent_servers.length>0&&s.jsxs(P,{className:"border-warning/40",children:[s.jsx($,{children:s.jsxs(B,{className:"flex items-center gap-2",children:[s.jsx(Y,{className:"text-warning size-4"}),t.silent_servers.length===1?"1 expected host is silent":`${t.silent_servers.length} expected hosts are silent`]})}),s.jsxs(F,{className:"space-y-2",children:[s.jsx("div",{className:"flex flex-wrap gap-1.5",children:t.silent_servers.map(Le)}),s.jsx("p",{className:"text-muted-foreground text-xs",children:"No health sample or execution from these hosts in the last 10 minutes. Expected hosts come from your Kamal post-deploy hook, or from the environment settings if you set them by hand."})]})]}),e[13]=t.silent_servers,e[14]=i):i=e[14],b=x?s.jsxs(s.Fragment,{children:[s.jsxs(re,{children:[s.jsx(k,{label:"Live processes",value:t.samples.length}),s.jsx(k,{label:"Thread utilisation",value:M(r),tone:r>=90?"destructive":r>=70?"warning":void 0,hint:"averaged across live processes"}),s.jsx(k,{label:"Backlog",value:j(h)}),s.jsx(k,{label:"Queue depth",value:j(u)}),s.jsx(k,{label:"Oldest job",value:O(p)})]}),s.jsx(D,{rows:t.samples,rowKey:Ae,empty:s.jsx(T,{title:"No process reported in the last 10 minutes",description:"Health samples are older than the live window."}),columns:[{key:"server",header:"Server",cell:Oe},{key:"role",header:"Role",cell:Me},{key:"pid",hideOnMobile:!0,header:"PID",align:"right",cell:Te},{key:"threads",header:"Threads",cell:De},{key:"pool",hideOnMobile:!0,header:"DB pool",cell:qe},{key:"mem",hideOnMobile:!0,header:"Memory",align:"right",cell:Ce},{key:"seen",header:"Last sample",align:"right",cell:Se}]}),t.queues.length>0&&s.jsxs(P,{children:[s.jsx($,{children:s.jsx(B,{children:"Queue depth"})}),s.jsx(F,{children:s.jsx(D,{rows:t.queues,rowKey:Ne,columns:[{key:"q",header:"Queue",cell:we},{key:"d",header:"Ready jobs",align:"right",cell:ke}]})})]}),s.jsxs("div",{className:"grid gap-4 lg:grid-cols-2",children:[s.jsx(S,{label:"Thread utilisation",value:M(r),children:s.jsx(C,{label:"Utilisation",format:M,data:t.series.map(_e)})}),s.jsx(S,{label:"Backlog",value:j(h),children:s.jsx(C,{label:"Backlog",color:"var(--warning)",format:j,data:t.series.map(ye)})}),s.jsx(S,{label:"Queue depth",value:j(u),children:s.jsx(C,{label:"Ready jobs",format:j,data:t.series.map(ve)})}),s.jsx(S,{label:"Oldest job",value:O(p),children:s.jsx(C,{label:"Oldest job",color:"var(--danger)",format:je,data:t.series.map(ge)})})]})]}):s.jsx(T,{icon:E,title:"No health samples yet",description:"The gem reports thread pool, backlog and queue health every 15s from each web and worker process."}),e[2]=t.queues,e[3]=t.samples,e[4]=t.series,e[5]=t.silent_servers,e[6]=r,e[7]=l,e[8]=f,e[9]=n,e[10]=i,e[11]=b}else l=e[7],f=e[8],n=e[9],i=e[10],b=e[11];let c;e[15]===Symbol.for("react.memo_cache_sentinel")?(c=s.jsx("h2",{className:"text-sm font-semibold",children:"Process boots"}),e[15]=c):c=e[15];let g,m;e[16]===Symbol.for("react.memo_cache_sentinel")?(g=s.jsx(T,{icon:E,title:"No process has booted with Railwatch yet",description:"Server processes report here once they boot with the gem installed."}),m=[{key:"b",header:"Booted",cell:xe},{key:"s",header:"Server",cell:fe},{key:"r",header:"Role",cell:pe},{key:"pid",hideOnMobile:!0,header:"PID",align:"right",cell:he},{key:"d",header:"Deploy",cell:de},{key:"v",hideOnMobile:!0,header:"Ruby / Rails / Railwatch",cell:ue},{key:"ad",hideOnMobile:!0,header:"DB / queue / cache",cell:me},{key:"boot",hideOnMobile:!0,header:"Boot",align:"right",cell:ce}],e[16]=g,e[17]=m):(g=e[16],m=e[17]);let o;e[18]!==t.processes?(o=s.jsx(D,{rows:t.processes,rowKey:be,empty:g,columns:m}),e[18]=t.processes,e[19]=o):o=e[19];let d;return e[20]!==l||e[21]!==f||e[22]!==n||e[23]!==i||e[24]!==b||e[25]!==o?(d=s.jsxs(l,{title:f,children:[n,i,b,c,o]}),e[20]=l,e[21]=f,e[22]=n,e[23]=i,e[24]=b,e[25]=o,e[26]=d):d=e[26],d}function ce(t){return t.boot_seconds?`${t.boot_seconds.toFixed(1)}s`:"–"}function me(t){return s.jsxs("span",{className:"font-mono text-xs",children:[t.detail.database_adapter," / ",t.detail.queue_adapter," /"," ",t.detail.cache_store?.replace("ActiveSupport::Cache::","")]})}function ue(t){return s.jsxs("span",{className:"font-mono text-xs",children:[t.ruby_version," / ",t.rails_version," / ",t.railwatch_version]})}function de(t){return s.jsx("span",{className:"font-mono text-xs",children:t.deploy?.slice(0,12)})}function he(t){return t.pid}function pe(t){return t.role}function fe(t){return s.jsx("span",{className:"font-mono text-xs",children:t.server})}function xe(t){return s.jsx("span",{className:"text-xs",title:H(t.booted_at),children:z(t.booted_at)})}function be(t){return t.id}function ge(t){return{t:t.t,value:t.queue_latency}}function je(t){return O(t)}function ve(t){return{t:t.t,value:t.queue_depth}}function ye(t){return{t:t.t,value:t.backlog}}function _e(t){return{t:t.t,value:t.utilisation}}function ke(t){return j(t.depth)}function we(t){return t.queue}function Ne(t){return t.queue}function Se(t){return s.jsx("span",{title:H(t.sampled_at),children:z(t.sampled_at)})}function Ce(t){return ae(t.memory)}function qe(t){return s.jsx(U,{busy:t.pool_busy,max:t.pool_size})}function De(t){return s.jsx(U,{busy:t.threads_busy,max:t.threads_max})}function Te(t){return t.pid}function Me(t){return t.role}function Oe(t){return s.jsx("span",{className:"font-mono text-xs",children:t.server})}function Ae(t){return t.id}function Le(t){return s.jsx("span",{className:"border-warning/40 bg-warning/10 text-warning rounded-sm border px-1.5 font-mono text-[11px]",children:t},t)}function Re(t){return t.queue_latency}function Pe(t){return t.queue_depth}function $e(t){return t.backlog}function Be(t,e){return t+e}function Fe(t){return t.threads_max?[(t.threads_busy??0)/t.threads_max*100]:[]}export{it as default};
|
|
1
|
+
import{c as L,j as s,C as R,aa as Y}from"./inertia-CqnzqPVD.js";import{C as S}from"./chart-panel-CONkZcn9.js";import{D}from"./data-table-CVKR2wkq.js";import{E as T}from"./empty-state-Bn48Gplm.js";import{C as G,X as I,Y as W,a as X,b as J,c as V}from"./chart-C4k7Ub9W.js";import{A as Z,a as ee}from"./series-chart-D6upsrSn.js";import{E as te,P as se}from"./env-layout-CKLL8Ds7.js";import{a as re,S as k}from"./stat-BNEfE8X1.js";import{C as P,b as $,c as B,a as F}from"./card-DqdEEKcJ.js";import{c as j,m as O,b as ae,a as z,w as H}from"./format-B9SDkrWj.js";import{r as E}from"./app-layout-2xAKndVD.js";import"./chart-hover-2yZG3w2u.js";import"./badge-Dv7I-ebP.js";import"./app-wordmark-Bt6XqURo.js";import"./use-live-DWwLg1Nj.js";import"./live-dot-UdzOfzJb.js";import"./index-BDVShWMs.js";import"./index-C-EwH4lO.js";import"./segmented-C4oWE73o.js";import"./label-1nSzpSB6.js";import"./arrow-up-EmePsTKP.js";import"./checkbox-DKbThbxr.js";const K={fontSize:10,fontFamily:"var(--font-mono)"},ne=1440*60*1e3;function le(t){return(t.length>1?new Date(t[t.length-1].t).getTime()-new Date(t[0].t).getTime():0)>2*ne?a=>new Date(a).toLocaleDateString(void 0,{month:"short",day:"numeric"}):a=>new Date(a).toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit"})}function A(t){return new Date(t).toLocaleString(void 0,{day:"2-digit",month:"short",hour:"2-digit",minute:"2-digit"})}function C(t){const e=L.c(28),{label:a,data:r,format:l,color:f,className:n}=t,i=f===void 0?"var(--primary)":f,b=n===void 0?"h-32":n;let c;e[0]!==i||e[1]!==a?(c={value:{label:a,color:i}},e[0]=i,e[1]=a,e[2]=c):c=e[2];const g=c;let m;e[3]!==r?(m=le(r),e[3]=r,e[4]=m):m=e[4];const o=m,d=`${b} w-full`;let h;e[5]===Symbol.for("react.memo_cache_sentinel")?(h=s.jsx(G,{vertical:!1,strokeDasharray:"2 4"}),e[5]=h):h=e[5];let u;e[6]!==o?(u=s.jsx(I,{dataKey:"t",tickFormatter:o,tickLine:!1,axisLine:!1,minTickGap:40,tick:K}),e[6]=o,e[7]=u):u=e[7];let p;e[8]!==l?(p=s.jsx(W,{width:44,tickLine:!1,axisLine:!1,tick:K,tickFormatter:q=>l(Number(q))}),e[8]=l,e[9]=p):p=e[9];let x;e[10]!==l||e[11]!==a?(x=s.jsx(X,{content:s.jsx(J,{labelFormatter:oe,formatter:q=>[l(Number(q)),a]})}),e[10]=l,e[11]=a,e[12]=x):x=e[12];let w;e[13]===Symbol.for("react.memo_cache_sentinel")?(w=s.jsx(Z,{dataKey:"value",stroke:"var(--color-value)",fill:"var(--color-value)",fillOpacity:.15,strokeWidth:1.75,isAnimationActive:!1}),e[13]=w):w=e[13];let v;e[14]!==r||e[15]!==u||e[16]!==p||e[17]!==x?(v=s.jsxs(ee,{data:r,children:[h,u,p,x,w]}),e[14]=r,e[15]=u,e[16]=p,e[17]=x,e[18]=v):v=e[18];let y;e[19]!==g||e[20]!==v||e[21]!==d?(y=s.jsx(V,{config:g,className:d,children:v}),e[19]=g,e[20]=v,e[21]=d,e[22]=y):y=e[22];let _;e[23]!==r?(_=r.length>0&&s.jsxs("div",{className:"text-muted-foreground mt-1 flex justify-between font-mono text-[10px]",children:[s.jsx("span",{children:A(r[0].t)}),s.jsx("span",{children:A(r[r.length-1].t)})]}),e[23]=r,e[24]=_):_=e[24];let N;return e[25]!==y||e[26]!==_?(N=s.jsxs("div",{children:[y,_]}),e[25]=y,e[26]=_,e[27]=N):N=e[27],N}function oe(t){return A(String(t))}function U(t){const e=L.c(21),{busy:a,max:r,className:l}=t;if(!r){let x;return e[0]===Symbol.for("react.memo_cache_sentinel")?(x=s.jsx("span",{className:"text-muted-foreground",children:"–"}),e[0]=x):x=e[0],x}const f=Math.min(1,(a??0)/r);let n;e[1]!==l?(n=R("flex items-center gap-1.5",l),e[1]=l,e[2]=n):n=e[2];const i=a??0,b=f>=.9?"bg-danger":f>=.7?"bg-warning":"bg-live";let c;e[3]!==b?(c=R("absolute inset-y-0 left-0 rounded-full",b),e[3]=b,e[4]=c):c=e[4];const g=`${Math.max(4,f*100)}%`;let m;e[5]!==g?(m={width:g},e[5]=g,e[6]=m):m=e[6];let o;e[7]!==c||e[8]!==m?(o=s.jsx("span",{className:c,style:m}),e[7]=c,e[8]=m,e[9]=o):o=e[9];let d;e[10]!==r||e[11]!==i||e[12]!==o?(d=s.jsx("span",{role:"meter","aria-label":"Utilisation","aria-valuenow":i,"aria-valuemin":0,"aria-valuemax":r,className:"bg-muted-foreground/25 relative h-1.5 w-10 shrink-0 overflow-hidden rounded-full",children:o}),e[10]=r,e[11]=i,e[12]=o,e[13]=d):d=e[13];const h=a??0;let u;e[14]!==r||e[15]!==h?(u=s.jsxs("span",{className:"font-mono tabular-nums",children:[h,"/",r]}),e[14]=r,e[15]=h,e[16]=u):u=e[16];let p;return e[17]!==n||e[18]!==u||e[19]!==d?(p=s.jsxs("span",{className:n,children:[d,u]}),e[17]=n,e[18]=u,e[19]=d,e[20]=p):p=e[20],p}const M=t=>`${t.toFixed(0)}%`;function ie(t){return t.reduce((e,a)=>e+(a??0),0)}function Q(t){return t.reduce((e,a)=>Math.max(e,a??0),0)}function it(t){const e=L.c(27);let a;if(e[0]!==t.samples){const h=t.samples.flatMap(Fe);a=h.length?h.reduce(Be,0)/h.length:0,e[0]=t.samples,e[1]=a}else a=e[1];const r=a;let l,f,n,i,b;if(e[2]!==t.queues||e[3]!==t.samples||e[4]!==t.series||e[5]!==t.silent_servers||e[6]!==r){const h=ie(t.samples.map($e)),u=Q(t.samples.map(Pe)),p=Q(t.samples.map(Re)),x=t.samples.length>0||t.series.length>0;l=te,f="Processes",e[12]===Symbol.for("react.memo_cache_sentinel")?(n=s.jsx(se,{title:"Processes",description:"What every web and worker process is doing right now: thread pools, socket backlog, queue depth, and the boots behind them."}),e[12]=n):n=e[12],e[13]!==t.silent_servers?(i=t.silent_servers.length>0&&s.jsxs(P,{className:"border-warning/40",children:[s.jsx($,{children:s.jsxs(B,{className:"flex items-center gap-2",children:[s.jsx(Y,{className:"text-warning size-4"}),t.silent_servers.length===1?"1 expected host is silent":`${t.silent_servers.length} expected hosts are silent`]})}),s.jsxs(F,{className:"space-y-2",children:[s.jsx("div",{className:"flex flex-wrap gap-1.5",children:t.silent_servers.map(Le)}),s.jsx("p",{className:"text-muted-foreground text-xs",children:"No health sample or execution from these hosts in the last 10 minutes. Expected hosts come from your Kamal post-deploy hook, or from the environment settings if you set them by hand."})]})]}),e[13]=t.silent_servers,e[14]=i):i=e[14],b=x?s.jsxs(s.Fragment,{children:[s.jsxs(re,{children:[s.jsx(k,{label:"Live processes",value:t.samples.length}),s.jsx(k,{label:"Thread utilisation",value:M(r),tone:r>=90?"destructive":r>=70?"warning":void 0,hint:"averaged across live processes"}),s.jsx(k,{label:"Backlog",value:j(h)}),s.jsx(k,{label:"Queue depth",value:j(u)}),s.jsx(k,{label:"Oldest job",value:O(p)})]}),s.jsx(D,{rows:t.samples,rowKey:Ae,empty:s.jsx(T,{title:"No process reported in the last 10 minutes",description:"Health samples are older than the live window."}),columns:[{key:"server",header:"Server",cell:Oe},{key:"role",header:"Role",cell:Me},{key:"pid",hideOnMobile:!0,header:"PID",align:"right",cell:Te},{key:"threads",header:"Threads",cell:De},{key:"pool",hideOnMobile:!0,header:"DB pool",cell:qe},{key:"mem",hideOnMobile:!0,header:"Memory",align:"right",cell:Ce},{key:"seen",header:"Last sample",align:"right",cell:Se}]}),t.queues.length>0&&s.jsxs(P,{children:[s.jsx($,{children:s.jsx(B,{children:"Queue depth"})}),s.jsx(F,{children:s.jsx(D,{rows:t.queues,rowKey:Ne,columns:[{key:"q",header:"Queue",cell:we},{key:"d",header:"Ready jobs",align:"right",cell:ke}]})})]}),s.jsxs("div",{className:"grid gap-4 lg:grid-cols-2",children:[s.jsx(S,{label:"Thread utilisation",value:M(r),children:s.jsx(C,{label:"Utilisation",format:M,data:t.series.map(_e)})}),s.jsx(S,{label:"Backlog",value:j(h),children:s.jsx(C,{label:"Backlog",color:"var(--warning)",format:j,data:t.series.map(ye)})}),s.jsx(S,{label:"Queue depth",value:j(u),children:s.jsx(C,{label:"Ready jobs",format:j,data:t.series.map(ve)})}),s.jsx(S,{label:"Oldest job",value:O(p),children:s.jsx(C,{label:"Oldest job",color:"var(--danger)",format:je,data:t.series.map(ge)})})]})]}):s.jsx(T,{icon:E,title:"No health samples yet",description:"The gem reports thread pool, backlog and queue health every 15s from each web and worker process."}),e[2]=t.queues,e[3]=t.samples,e[4]=t.series,e[5]=t.silent_servers,e[6]=r,e[7]=l,e[8]=f,e[9]=n,e[10]=i,e[11]=b}else l=e[7],f=e[8],n=e[9],i=e[10],b=e[11];let c;e[15]===Symbol.for("react.memo_cache_sentinel")?(c=s.jsx("h2",{className:"text-sm font-semibold",children:"Process boots"}),e[15]=c):c=e[15];let g,m;e[16]===Symbol.for("react.memo_cache_sentinel")?(g=s.jsx(T,{icon:E,title:"No process has booted with Railwatch yet",description:"Server processes report here once they boot with the gem installed."}),m=[{key:"b",header:"Booted",cell:xe},{key:"s",header:"Server",cell:fe},{key:"r",header:"Role",cell:pe},{key:"pid",hideOnMobile:!0,header:"PID",align:"right",cell:he},{key:"d",header:"Deploy",cell:de},{key:"v",hideOnMobile:!0,header:"Ruby / Rails / Railwatch",cell:ue},{key:"ad",hideOnMobile:!0,header:"DB / queue / cache",cell:me},{key:"boot",hideOnMobile:!0,header:"Boot",align:"right",cell:ce}],e[16]=g,e[17]=m):(g=e[16],m=e[17]);let o;e[18]!==t.processes?(o=s.jsx(D,{rows:t.processes,rowKey:be,empty:g,columns:m}),e[18]=t.processes,e[19]=o):o=e[19];let d;return e[20]!==l||e[21]!==f||e[22]!==n||e[23]!==i||e[24]!==b||e[25]!==o?(d=s.jsxs(l,{title:f,children:[n,i,b,c,o]}),e[20]=l,e[21]=f,e[22]=n,e[23]=i,e[24]=b,e[25]=o,e[26]=d):d=e[26],d}function ce(t){return t.boot_seconds?`${t.boot_seconds.toFixed(1)}s`:"–"}function me(t){return s.jsxs("span",{className:"font-mono text-xs",children:[t.detail.database_adapter," / ",t.detail.queue_adapter," /"," ",t.detail.cache_store?.replace("ActiveSupport::Cache::","")]})}function ue(t){return s.jsxs("span",{className:"font-mono text-xs",children:[t.ruby_version," / ",t.rails_version," / ",t.railwatch_version]})}function de(t){return s.jsx("span",{className:"font-mono text-xs",children:t.deploy?.slice(0,12)})}function he(t){return t.pid}function pe(t){return t.role}function fe(t){return s.jsx("span",{className:"font-mono text-xs",children:t.server})}function xe(t){return s.jsx("span",{className:"text-xs",title:H(t.booted_at),children:z(t.booted_at)})}function be(t){return t.id}function ge(t){return{t:t.t,value:t.queue_latency}}function je(t){return O(t)}function ve(t){return{t:t.t,value:t.queue_depth}}function ye(t){return{t:t.t,value:t.backlog}}function _e(t){return{t:t.t,value:t.utilisation}}function ke(t){return j(t.depth)}function we(t){return t.queue}function Ne(t){return t.queue}function Se(t){return s.jsx("span",{title:H(t.sampled_at),children:z(t.sampled_at)})}function Ce(t){return ae(t.memory)}function qe(t){return s.jsx(U,{busy:t.pool_busy,max:t.pool_size})}function De(t){return s.jsx(U,{busy:t.threads_busy,max:t.threads_max})}function Te(t){return t.pid}function Me(t){return t.role}function Oe(t){return s.jsx("span",{className:"font-mono text-xs",children:t.server})}function Ae(t){return t.id}function Le(t){return s.jsx("span",{className:"border-warning/40 bg-warning/10 text-warning rounded-sm border px-1.5 font-mono text-[11px]",children:t},t)}function Re(t){return t.queue_latency}function Pe(t){return t.queue_depth}function $e(t){return t.backlog}function Be(t,e){return t+e}function Fe(t){return t.threads_max?[(t.threads_busy??0)/t.threads_max*100]:[]}export{it as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as U,u as V,j as o,e as X,ah as Y,L as Z}from"./inertia-
|
|
1
|
+
import{c as U,u as V,j as o,e as X,ah as Y,L as Z}from"./inertia-CqnzqPVD.js";import{D as ee}from"./chart-panel-CONkZcn9.js";import{D as Q}from"./data-table-CVKR2wkq.js";import{P as te,E as ne}from"./env-layout-CKLL8Ds7.js";import{u as oe,P as re}from"./percentile-picker-BxIVblBw.js";import{S as L}from"./sort-header-CPM6fhXv.js";import{S as se}from"./sparkline-cell-CXCxXPWt.js";import{B as ie}from"./badge-Dv7I-ebP.js";import{e as ce}from"./execution-path-DWovhgLi.js";import{m as G,c as J,w as ae}from"./format-B9SDkrWj.js";import"./series-chart-D6upsrSn.js";import"./chart-hover-2yZG3w2u.js";import"./chart-C4k7Ub9W.js";import"./empty-state-Bn48Gplm.js";import"./app-layout-2xAKndVD.js";import"./app-wordmark-Bt6XqURo.js";import"./live-dot-UdzOfzJb.js";import"./index-BDVShWMs.js";import"./index-C-EwH4lO.js";import"./checkbox-DKbThbxr.js";import"./label-1nSzpSB6.js";import"./use-live-DWwLg1Nj.js";import"./segmented-C4oWE73o.js";import"./arrow-up-EmePsTKP.js";function le(t){const e=U.c(3),{outcome:c}=t,a=c==="rollback"?"destructive":c==="restart"?"secondary":c==="commit"?"outline":"secondary",n=c||"open";let s;return e[0]!==n||e[1]!==a?(s=o.jsx(ie,{variant:a,className:"font-mono",children:n}),e[0]=n,e[1]=a,e[2]=s):s=e[2],s}function Ge(t){const e=U.c(70),{environment:c,window:a}=V().props,{percentile:n}=oe(),s=c.application_id,l=c.id;let N;e[0]!==s||e[1]!==l||e[2]!==t.dir||e[3]!==t.sort||e[4]!==a?(N=i=>X.visit(Y(s,l,{window:a,sort:i,dir:t.sort===i&&t.dir==="desc"?"asc":"desc"}),{preserveState:!0}),e[0]=s,e[1]=l,e[2]=t.dir,e[3]=t.sort,e[4]=a,e[5]=N):N=e[5];const r=N;let P;e[6]===Symbol.for("react.memo_cache_sentinel")?(P=o.jsx(te,{title:"Transactions",description:"ActiveRecord transactions, grouped by connection and outcome.",actions:o.jsx(re,{})}),e[6]=P):P=e[6];let m;e[7]!==t.series||e[8]!==n?(m=o.jsx(ee,{label:"Duration",data:t.series,percentile:n}),e[7]=t.series,e[8]=n,e[9]=m):m=e[9];let C,O;e[10]===Symbol.for("react.memo_cache_sentinel")?(C={key:"name",header:"Connection · outcome",cell:be},O={key:"trend",hideOnMobile:!0,header:"Trend",cell:ge},e[10]=C,e[11]=O):(C=e[10],O=e[11]);const A=t.sort==="count",H=t.dir==="asc"?"asc":"desc";let u;e[12]!==r?(u=()=>r("count"),e[12]=r,e[13]=u):u=e[13];let d;e[14]!==A||e[15]!==H||e[16]!==u?(d={key:"n",header:o.jsx(L,{label:"Count",active:A,dir:H,onClick:u}),align:"right",cell:ye},e[14]=A,e[15]=H,e[16]=u,e[17]=d):d=e[17];const K=t.sort==="errors",$=t.dir==="asc"?"asc":"desc";let f;e[18]!==r?(f=()=>r("errors"),e[18]=r,e[19]=f):f=e[19];let h;e[20]!==$||e[21]!==f||e[22]!==K?(h={key:"errors",hideOnMobile:!0,header:o.jsx(L,{label:"Rollbacks",active:K,dir:$,onClick:f}),align:"right",cell:_e},e[20]=$,e[21]=f,e[22]=K,e[23]=h):h=e[23];const W=t.sort==="avg",q=t.dir==="asc"?"asc":"desc";let x;e[24]!==r?(x=()=>r("avg"),e[24]=r,e[25]=x):x=e[25];let p;e[26]!==W||e[27]!==q||e[28]!==x?(p={key:"avg",hideOnMobile:!0,header:o.jsx(L,{label:"Avg",active:W,dir:q,onClick:x}),align:"right",cell:pe},e[26]=W,e[27]=q,e[28]=x,e[29]=p):p=e[29];const z=t.sort===n,F=t.dir==="asc"?"asc":"desc";let _;e[30]!==n||e[31]!==r?(_=()=>r(n),e[30]=n,e[31]=r,e[32]=_):_=e[32];let y;e[33]!==n||e[34]!==z||e[35]!==F||e[36]!==_?(y=o.jsx(L,{label:n,active:z,dir:F,onClick:_}),e[33]=n,e[34]=z,e[35]=F,e[36]=_,e[37]=y):y=e[37];let g;e[38]!==n?(g=i=>o.jsx("span",{className:"font-semibold",children:G(i[n],2)}),e[38]=n,e[39]=g):g=e[39];let b;e[40]!==n||e[41]!==y||e[42]!==g?(b={key:n,header:y,align:"right",cell:g},e[40]=n,e[41]=y,e[42]=g,e[43]=b):b=e[43];let j;e[44]!==h||e[45]!==p||e[46]!==b||e[47]!==d?(j=[C,O,d,h,p,b],e[44]=h,e[45]=p,e[46]=b,e[47]=d,e[48]=j):j=e[48];let k;e[49]!==t.transactions||e[50]!==j?(k=o.jsx(Q,{rows:t.transactions,rowKey:je,empty:"No transactions in this window.",columns:j}),e[49]=t.transactions,e[50]=j,e[51]=k):k=e[51];let D;e[52]===Symbol.for("react.memo_cache_sentinel")?(D=o.jsx("h2",{className:"text-sm font-semibold",children:"Recent transactions"}),e[52]=D):D=e[52];let M,T,E,R;e[53]===Symbol.for("react.memo_cache_sentinel")?(M={key:"when",header:"When",className:"w-40",cell:he},T={key:"conn",hideOnMobile:!0,header:"Connection",cell:fe},E={key:"outcome",header:"Outcome",cell:de},R={key:"statements",hideOnMobile:!0,header:"Statements",align:"right",cell:ue},e[53]=M,e[54]=T,e[55]=E,e[56]=R):(M=e[53],T=e[54],E=e[55],R=e[56]);let v;e[57]!==s||e[58]!==l?(v={key:"in",hideOnMobile:!0,header:"In",cell:i=>i.execution_id?o.jsx(Z,{className:"font-mono text-xs hover:underline",href:ce({applicationId:s,environmentId:l,source:i.execution_source,executionId:i.execution_id}),children:i.execution_preview}):o.jsx("span",{className:"text-muted-foreground text-xs",children:"–"})},e[57]=s,e[58]=l,e[59]=v):v=e[59];let B;e[60]===Symbol.for("react.memo_cache_sentinel")?(B={key:"d",header:"Duration",align:"right",cell:me},e[60]=B):B=e[60];let w;e[61]!==v?(w=[M,T,E,R,v,B],e[61]=v,e[62]=w):w=e[62];let S;e[63]!==t.recent||e[64]!==w?(S=o.jsx(Q,{rows:t.recent,rowKey:xe,columns:w}),e[63]=t.recent,e[64]=w,e[65]=S):S=e[65];let I;return e[66]!==m||e[67]!==k||e[68]!==S?(I=o.jsxs(ne,{title:"Transactions",children:[P,m,k,D,S]}),e[66]=m,e[67]=k,e[68]=S,e[69]=I):I=e[69],I}function me(t){return G(t.duration,2)}function ue(t){return t.statement_count===null?"—":J(t.statement_count)}function de(t){return o.jsx(le,{outcome:t.outcome})}function fe(t){return o.jsx("span",{className:"font-mono text-xs",children:t.connection??""})}function he(t){return o.jsx("span",{className:"text-xs tabular-nums",children:ae(t.occurred_at)})}function xe(t){return t.id}function pe(t){return G(t.avg,2)}function _e(t){return J(t.errors)}function ye(t){return J(t.count)}function ge(t){return o.jsx(se,{data:t.sparkline})}function be(t){return o.jsx("span",{className:"font-mono text-xs",children:t.name})}function je(t){return t.group_hash}export{Ge as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as M,u as R,j as n,t as A,e as D,L}from"./inertia-
|
|
1
|
+
import{c as M,u as R,j as n,t as A,e as D,L}from"./inertia-CqnzqPVD.js";import{D as N}from"./data-table-CVKR2wkq.js";import{E as O}from"./empty-state-Bn48Gplm.js";import{P,E as H}from"./env-layout-CKLL8Ds7.js";import{c as K,m as j,w as $}from"./format-B9SDkrWj.js";import{_ as E}from"./app-layout-2xAKndVD.js";import"./chart-hover-2yZG3w2u.js";import"./badge-Dv7I-ebP.js";import"./app-wordmark-Bt6XqURo.js";import"./use-live-DWwLg1Nj.js";import"./live-dot-UdzOfzJb.js";import"./index-BDVShWMs.js";import"./index-C-EwH4lO.js";import"./segmented-C4oWE73o.js";import"./label-1nSzpSB6.js";import"./checkbox-DKbThbxr.js";function pe(t){const e=M.c(25),{environment:S}=R().props,w=S.application_id,b=S.id;let c;e[0]!==w||e[1]!==b?(c=r=>r.execution_id?A(w,b,r.execution_id):null,e[0]=w,e[1]=b,e[2]=c):c=e[2];const o=c;let m;e[3]===Symbol.for("react.memo_cache_sentinel")?(m=n.jsx(P,{title:"Storage",description:"Active Storage service operations: uploads, downloads, deletes, URL generation, analysis, and transforms."}),e[3]=m):m=e[3];let p,u;e[4]===Symbol.for("react.memo_cache_sentinel")?(p=n.jsx(O,{icon:E,title:"No storage operations in this window",description:"Active Storage reads and writes instrumented by the gem appear here."}),u=[{key:"s",header:"Service",cell:G},{key:"o",header:"Operation",cell:F},{key:"n",header:"Count",align:"right",cell:B},{key:"avg",hideOnMobile:!0,header:"Avg",align:"right",cell:z},{key:"max",hideOnMobile:!0,header:"Max",align:"right",cell:W}],e[4]=p,e[5]=u):(p=e[4],u=e[5]);let i;e[6]!==t.ops?(i=n.jsx(N,{rows:t.ops,rowKey:J,empty:p,columns:u}),e[6]=t.ops,e[7]=i):i=e[7];let d;e[8]===Symbol.for("react.memo_cache_sentinel")?(d=n.jsx("h2",{className:"text-sm font-semibold",children:"Recent"}),e[8]=d):d=e[8];let f;e[9]===Symbol.for("react.memo_cache_sentinel")?(f=n.jsx(O,{icon:E,title:"No storage operations in this window",description:"Active Storage reads and writes instrumented by the gem appear here."}),e[9]=f):f=e[9];let s;e[10]!==o?(s={onOpen:(r,v)=>{const k=o(r);k&&(v?.newTab?window.open(k,"_blank"):D.visit(k))}},e[10]=o,e[11]=s):s=e[11];let h,x,_,y;e[12]===Symbol.for("react.memo_cache_sentinel")?(_={key:"when",header:"When",cell:I},y={key:"o",header:"Op",cell:C},h={key:"k",hideOnMobile:!0,header:"Key",cell:q},x={key:"d",header:"Duration",align:"right",cell:T},e[12]=h,e[13]=x,e[14]=_,e[15]=y):(h=e[12],x=e[13],_=e[14],y=e[15]);let a;e[16]!==o?(a=[_,y,h,x,{key:"in",hideOnMobile:!0,header:"In",cell:r=>{const v=o(r);return v?n.jsx(L,{className:"font-mono text-xs hover:underline",href:v,children:r.execution_preview}):null}}],e[16]=o,e[17]=a):a=e[17];let l;e[18]!==t.recent||e[19]!==a||e[20]!==s?(l=n.jsx(N,{rows:t.recent,rowKey:U,empty:f,keyboardNav:s,columns:a}),e[18]=t.recent,e[19]=a,e[20]=s,e[21]=l):l=e[21];let g;return e[22]!==l||e[23]!==i?(g=n.jsxs(H,{title:"Storage",children:[m,i,d,l]}),e[22]=l,e[23]=i,e[24]=g):g=e[24],g}function T(t){return j(t.duration)}function q(t){return n.jsx("span",{className:"font-mono text-xs",children:t.key})}function C(t){return n.jsxs("span",{className:"font-mono text-xs",children:[t.service," ",t.op]})}function I(t){return n.jsx("span",{className:"text-xs",children:$(t.occurred_at)})}function U(t){return t.id}function W(t){return j(t.max)}function z(t){return j(t.avg)}function B(t){return K(t.count)}function F(t){return n.jsx("span",{className:"font-mono text-xs",children:t.op})}function G(t){return t.service}function J(t){return`${t.service}-${t.op}`}export{pe as default};
|