@wizeworks/lens-ui 0.3.0-alpha.4 → 0.3.0-alpha.5

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.
@@ -1,5 +1,5 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./TeamPage-jnluOMGo.js","./account-CBQ8udHj.js","./auth-client-DYivy6Jr.js","./AppsPanel-dMv08jJp.js","./AccountPage-VILWxQLm.js"])))=>i.map(i=>d[i]);
2
- import{$ as e,A as t,C as n,D as r,E as i,F as a,G as o,H as s,I as c,J as l,K as u,L as d,M as f,N as p,O as m,P as h,Q as g,R as _,S as v,T as y,U as b,V as ee,W as te,X as ne,Y as re,Z as x,_ as S,_t as ie,a as ae,at as oe,b as se,c as ce,ct as le,d as ue,dt as de,et as fe,f as pe,ft as me,g as he,gt as ge,h as _e,ht as ve,i as ye,it as be,j as xe,k as Se,l as Ce,lt as we,m as C,mt as w,n as Te,nt as Ee,o as De,ot as Oe,p as ke,pt as Ae,q as je,r as Me,rt as Ne,s as Pe,st as Fe,t as Ie,tt as Le,u as Re,ut as ze,v as T,vt as Be,w as Ve,x as He,y as Ue,yt as We,z as Ge}from"./account-CBQ8udHj.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var Ke=We((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0<n;){var r=n-1>>>1,a=e[r];if(0<i(a,t))e[r]=t,e[n]=a,n=r;else break a}}function n(e){return e.length===0?null:e[0]}function r(e){if(e.length===0)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;a:for(var r=0,a=e.length,o=a>>>1;r<o;){var s=2*(r+1)-1,c=e[s],l=s+1,u=e[l];if(0>i(c,n))l<a&&0>i(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(l<a&&0>i(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function ee(e){if(h=!1,b(e),!m){if(n(c)!==null)m=!0,te||(te=!0,ae());else{var t=n(l);t!==null&&ce(ee,t.startTime-e)}}}var te=!1,ne=-1,re=5,x=-1;function S(){return g?!0:!(e.unstable_now()-x<re)}function ie(){if(g=!1,te){var t=e.unstable_now();x=t;var i=!0;try{a:{m=!1,h&&(h=!1,v(ne),ne=-1),p=!0;var a=f;try{b:{for(b(t),d=n(c);d!==null&&!(d.expirationTime>t&&S());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&ce(ee,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?ae():te=!1}}}var ae;if(typeof y==`function`)ae=function(){y(ie)};else if(typeof MessageChannel<`u`){var oe=new MessageChannel,se=oe.port2;oe.port1.onmessage=ie,ae=function(){se.postMessage(null)}}else ae=function(){_(ie,0)};function ce(t,n){ne=_(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125<e?console.error(`forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported`):re=0<e?Math.floor(1e3/e):5},e.unstable_getCurrentPriorityLevel=function(){return f},e.unstable_next=function(e){switch(f){case 1:case 2:case 3:var t=3;break;default:t=f}var n=f;f=t;try{return e()}finally{f=n}},e.unstable_requestPaint=function(){g=!0},e.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=f;f=e;try{return t()}finally{f=n}},e.unstable_scheduleCallback=function(r,i,a){var o=e.unstable_now();switch(typeof a==`object`&&a?(a=a.delay,a=typeof a==`number`&&0<a?o+a:o):a=o,r){case 1:var s=-1;break;case 2:s=250;break;case 5:s=1073741823;break;case 4:s=1e4;break;default:s=5e3}return s=a+s,r={id:u++,callback:i,priorityLevel:r,startTime:a,expirationTime:s,sortIndex:-1},a>o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(ne),ne=-1):h=!0,ce(ee,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,te||(te=!0,ae()))),r},e.unstable_shouldYield=S,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),qe=We(((e,t)=>{t.exports=Ke()})),Je=We((e=>{var t=Be();function n(e){var t=`https://react.dev/errors/`+e;if(1<arguments.length){t+=`?args[]=`+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+=`&args[]=`+encodeURIComponent(arguments[n])}return`Minified React error #`+e+`; visit `+t+` for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`}function r(){}var i={d:{f:r,r:function(){throw Error(n(522))},D:r,C:r,L:r,m:r,X:r,S:r,M:r},p:0,findDOMNode:null},a=Symbol.for(`react.portal`),o=Symbol.for(`react.recoverable`),s=Symbol.for(`react.optimistic_key`);function c(e,t,n){var r=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:a,key:r==null?null:r===s?s:``+r,children:e,containerInfo:t,implementation:n}}var l=t.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function u(e,t){if(e===`font`)return``;if(typeof t==`string`)return t===`use-credentials`?t:``}e.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=i,e.browser=function(e){return{$$typeof:o,_reason:e}},e.createPortal=function(e,t){var r=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)throw Error(n(299));return c(e,t,null,r)},e.flushSync=function(e){var t=l.T,n=i.p;try{if(l.T=null,i.p=2,e)return e()}finally{l.T=t,i.p=n,i.d.f()}},e.preconnect=function(e,t){typeof e==`string`&&(t?(t=t.crossOrigin,t=typeof t==`string`?t===`use-credentials`?t:``:void 0):t=null,i.d.C(e,t))},e.prefetchDNS=function(e){typeof e==`string`&&i.d.D(e)},e.preinit=function(e,t){if(typeof e==`string`&&t&&typeof t.as==`string`){var n=t.as,r=u(n,t.crossOrigin),a=typeof t.integrity==`string`?t.integrity:void 0,o=typeof t.fetchPriority==`string`?t.fetchPriority:void 0;n===`style`?i.d.S(e,typeof t.precedence==`string`?t.precedence:void 0,{crossOrigin:r,integrity:a,fetchPriority:o}):n===`script`&&i.d.X(e,{crossOrigin:r,integrity:a,fetchPriority:o,nonce:typeof t.nonce==`string`?t.nonce:void 0})}},e.preinitModule=function(e,t){if(typeof e==`string`){if(typeof t==`object`&&t){if(t.as==null||t.as===`script`){var n=u(t.as,t.crossOrigin);i.d.M(e,{crossOrigin:n,integrity:typeof t.integrity==`string`?t.integrity:void 0,nonce:typeof t.nonce==`string`?t.nonce:void 0,fetchPriority:typeof t.fetchPriority==`string`?t.fetchPriority:void 0})}}else t??i.d.M(e)}},e.preload=function(e,t){if(typeof e==`string`&&typeof t==`object`&&t&&typeof t.as==`string`){var n=t.as,r=u(n,t.crossOrigin);i.d.L(e,n,{crossOrigin:r,integrity:typeof t.integrity==`string`?t.integrity:void 0,nonce:typeof t.nonce==`string`?t.nonce:void 0,type:typeof t.type==`string`?t.type:void 0,fetchPriority:typeof t.fetchPriority==`string`?t.fetchPriority:void 0,referrerPolicy:typeof t.referrerPolicy==`string`?t.referrerPolicy:void 0,imageSrcSet:typeof t.imageSrcSet==`string`?t.imageSrcSet:void 0,imageSizes:typeof t.imageSizes==`string`?t.imageSizes:void 0,media:typeof t.media==`string`?t.media:void 0})}},e.preloadModule=function(e,t){if(typeof e==`string`){if(t){var n=u(t.as,t.crossOrigin);i.d.m(e,{as:typeof t.as==`string`&&t.as!==`script`?t.as:void 0,crossOrigin:n,integrity:typeof t.integrity==`string`?t.integrity:void 0,nonce:typeof t.nonce==`string`?t.nonce:void 0,fetchPriority:typeof t.fetchPriority==`string`?t.fetchPriority:void 0})}else i.d.m(e)}},e.requestFormReset=function(e){i.d.r(e)},e.unstable_batchedUpdates=function(e,t){return e(t)},e.useFormState=function(e,t,n){return l.H.useFormState(e,t,n)},e.useFormStatus=function(){return l.H.useHostTransitionStatus()},e.version=`19.3.1`})),Ye=We(((e,t)=>{function n(){if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE==`function`)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=Je()})),Xe=We((e=>{var t=qe(),n=Be(),r=Ye();function i(e){var t=`https://react.dev/errors/`+e;if(1<arguments.length){t+=`?args[]=`+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+=`&args[]=`+encodeURIComponent(arguments[n])}return`Minified React error #`+e+`; visit `+t+` for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`}function a(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function o(e){for(var t=e,n=t;n&&!n.alternate;)t=n,t.flags&4098&&(e=t.return),n=t.return;for(;t.return;)t=t.return;return t.tag===3?e:null}function s(e){if(e.tag===13){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function c(e){if(e.tag===31){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function l(e){if(o(e)!==e)throw Error(i(188))}function u(e){var t=e.alternate;if(!t){if(t=o(e),t===null)throw Error(i(188));return t===e?e:null}for(var n=e,r=t;;){var a=n.return;if(a===null)break;var s=a.alternate;if(s===null){if(r=a.return,r!==null){n=r;continue}break}if(a.child===s.child){for(s=a.child;s;){if(s===n)return l(a),e;if(s===r)return l(a),t;s=s.sibling}throw Error(i(188))}if(n.return!==r.return)n=a,r=s;else{for(var c=!1,u=a.child;u;){if(u===n){c=!0,n=a,r=s;break}if(u===r){c=!0,r=a,n=s;break}u=u.sibling}if(!c){for(u=s.child;u;){if(u===n){c=!0,n=s,r=a;break}if(u===r){c=!0,r=s,n=a;break}u=u.sibling}if(!c)throw Error(i(189))}}if(n.alternate!==r)throw Error(i(190))}if(n.tag!==3)throw Error(i(188));return n.stateNode.current===n?e:t}function d(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e;for(e=e.child;e!==null;){if(t=d(e),t!==null)return t;e=e.sibling}return null}function f(e,t,n,r,i,a){for(;e!==null;){if((e.tag===5||e.tag===27||e.tag===6)&&n(e,r,i,a)||(e.tag!==22||e.memoizedState===null)&&(t||e.tag!==5&&e.tag!==27)&&f(e.child,t,n,r,i,a))return!0;e=e.sibling}return!1}function p(e){for(e=e.return;e!==null;){if(e.tag===3||e.tag===5||e.tag===27)return e;e=e.return}return null}function m(e){var t=!1;for(e=e.return;e!==null&&(e.tag===4&&(t=!0),e.tag!==3&&e.tag!==5&&e.tag!==27);)e=e.return;return t}function h(e){var t=[null,null],n=p(e);return n===null||g(t,e,n.child,{foundSelf:!1}),t}function g(e,t,n,r){for(;n!==null;){if(n===t)r.foundSelf=!0;else if(n.tag===5||n.tag===27||n.tag===6){if(r.foundSelf)return e[1]=n,!0;e[0]=n}else if((n.tag!==22||n.memoizedState===null)&&g(e,t,n.child,r))return!0;n=n.sibling}return!1}function _(e){switch(e.tag){case 5:case 27:case 6:return e.stateNode;case 3:return e.stateNode.containerInfo;default:throw Error(i(559))}}var v=null,y=null;function b(e,t,n){return e===n||e===t&&(v=e,!0)}function ee(e,t,n){return e===n?(y=e,!1):e===t&&(y!==null&&(v=e),!0)}function te(e){if(e===null)return null;do e=e===null?null:e.return;while(e&&e.tag!==5&&e.tag!==27&&e.tag!==3);return e||null}function ne(e,t,n){for(var r=0,i=e;i;i=n(i))r++;i=0;for(var a=t;a;a=n(a))i++;for(;0<r-i;)e=n(e),r--;for(;0<i-r;)t=n(t),i--;for(;r--;){if(e===t||t!==null&&e===t.alternate)return e;e=n(e),t=n(t)}return null}var re=Object.assign,x=Symbol.for(`react.element`),S=Symbol.for(`react.transitional.element`),ie=Symbol.for(`react.portal`),ae=Symbol.for(`react.fragment`),oe=Symbol.for(`react.strict_mode`),se=Symbol.for(`react.profiler`),ce=Symbol.for(`react.consumer`),le=Symbol.for(`react.context`),ue=Symbol.for(`react.forward_ref`),de=Symbol.for(`react.suspense`),fe=Symbol.for(`react.suspense_list`),pe=Symbol.for(`react.memo`),me=Symbol.for(`react.lazy`),he=Symbol.for(`react.activity`),ge=Symbol.for(`react.legacy_hidden`),_e=Symbol.for(`react.memo_cache_sentinel`),ve=Symbol.for(`react.view_transition`),ye=Symbol.for(`react.recoverable`),be=Symbol.iterator;function xe(e){return typeof e!=`object`||!e?null:(e=be&&e[be]||e[`@@iterator`],typeof e==`function`?e:null)}var Se=Symbol.for(`react.client.reference`);function Ce(e){if(e==null)return null;if(typeof e==`function`)return e.$$typeof===Se?null:e.displayName||e.name||null;if(typeof e==`string`)return e;switch(e){case ae:return`Fragment`;case se:return`Profiler`;case oe:return`StrictMode`;case de:return`Suspense`;case fe:return`SuspenseList`;case he:return`Activity`;case ve:return`ViewTransition`}if(typeof e==`object`)switch(e.$$typeof){case ie:return`Portal`;case le:return e.displayName||`Context`;case ce:return(e._context.displayName||`Context`)+`.Consumer`;case ue:var t=e.render;return e=e.displayName,e||=(e=t.displayName||t.name||``,e===``?`ForwardRef`:`ForwardRef(`+e+`)`),e;case pe:return t=e.displayName||null,t===null?Ce(e.type)||`Memo`:t;case me:t=e._payload,e=e._init;try{return Ce(e(t))}catch{}}return null}var we=Array.isArray,C=n.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,w=r.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,Te={pending:!1,data:null,method:null,action:null},Ee=[],De=-1;function Oe(e){return{current:e}}function ke(e){0>De||(e.current=Ee[De],Ee[De]=null,De--)}function Ae(e,t){De++,Ee[De]=e.current,e.current=t}var je=Oe(null),Me=Oe(null),Ne=Oe(null),Pe=Oe(null);function Fe(e,t){switch(Ae(Ne,t),Ae(Me,e),Ae(je,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Sp(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Sp(t),e=Cp(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}ke(je),Ae(je,e)}function Ie(){ke(je),ke(Me),ke(Ne)}function Le(e){var t=e.memoizedState;t!==null&&(yh._currentValue=t.memoizedState,Ae(Pe,e)),t=je.current;var n=Cp(t,e.type);t!==n&&(Ae(Me,e),Ae(je,n))}function Re(e){Me.current===e&&(ke(je),ke(Me)),Pe.current===e&&(ke(Pe),yh._currentValue=Te)}var ze,T;function Ve(e){if(ze===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);ze=t&&t[1]||``,T=-1<e.stack.indexOf(`
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./TeamPage-D8bcLIes.js","./account-D29x4uz9.js","./auth-client-Bkk9PzK9.js","./AppsPanel-Dq0tvHKE.js","./AccountPage-NUE9p2aP.js"])))=>i.map(i=>d[i]);
2
+ import{$ as e,A as t,C as n,D as r,E as i,F as a,G as o,H as s,I as c,J as l,K as u,L as d,M as f,N as p,O as m,P as h,Q as g,R as _,S as v,T as y,U as b,V as ee,W as te,X as ne,Y as re,Z as x,_ as S,_t as ie,a as ae,at as oe,b as se,c as ce,ct as le,d as ue,dt as de,et as fe,f as pe,ft as me,g as he,gt as ge,h as _e,ht as ve,i as ye,it as be,j as xe,k as Se,l as Ce,lt as we,m as C,mt as w,n as Te,nt as Ee,o as De,ot as Oe,p as ke,pt as Ae,q as je,r as Me,rt as Ne,s as Pe,st as Fe,t as Ie,tt as Le,u as Re,ut as ze,v as T,vt as Be,w as Ve,x as He,y as Ue,yt as We,z as Ge}from"./account-D29x4uz9.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var Ke=We((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0<n;){var r=n-1>>>1,a=e[r];if(0<i(a,t))e[r]=t,e[n]=a,n=r;else break a}}function n(e){return e.length===0?null:e[0]}function r(e){if(e.length===0)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;a:for(var r=0,a=e.length,o=a>>>1;r<o;){var s=2*(r+1)-1,c=e[s],l=s+1,u=e[l];if(0>i(c,n))l<a&&0>i(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(l<a&&0>i(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function ee(e){if(h=!1,b(e),!m){if(n(c)!==null)m=!0,te||(te=!0,ae());else{var t=n(l);t!==null&&ce(ee,t.startTime-e)}}}var te=!1,ne=-1,re=5,x=-1;function S(){return g?!0:!(e.unstable_now()-x<re)}function ie(){if(g=!1,te){var t=e.unstable_now();x=t;var i=!0;try{a:{m=!1,h&&(h=!1,v(ne),ne=-1),p=!0;var a=f;try{b:{for(b(t),d=n(c);d!==null&&!(d.expirationTime>t&&S());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&ce(ee,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?ae():te=!1}}}var ae;if(typeof y==`function`)ae=function(){y(ie)};else if(typeof MessageChannel<`u`){var oe=new MessageChannel,se=oe.port2;oe.port1.onmessage=ie,ae=function(){se.postMessage(null)}}else ae=function(){_(ie,0)};function ce(t,n){ne=_(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125<e?console.error(`forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported`):re=0<e?Math.floor(1e3/e):5},e.unstable_getCurrentPriorityLevel=function(){return f},e.unstable_next=function(e){switch(f){case 1:case 2:case 3:var t=3;break;default:t=f}var n=f;f=t;try{return e()}finally{f=n}},e.unstable_requestPaint=function(){g=!0},e.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=f;f=e;try{return t()}finally{f=n}},e.unstable_scheduleCallback=function(r,i,a){var o=e.unstable_now();switch(typeof a==`object`&&a?(a=a.delay,a=typeof a==`number`&&0<a?o+a:o):a=o,r){case 1:var s=-1;break;case 2:s=250;break;case 5:s=1073741823;break;case 4:s=1e4;break;default:s=5e3}return s=a+s,r={id:u++,callback:i,priorityLevel:r,startTime:a,expirationTime:s,sortIndex:-1},a>o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(ne),ne=-1):h=!0,ce(ee,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,te||(te=!0,ae()))),r},e.unstable_shouldYield=S,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),qe=We(((e,t)=>{t.exports=Ke()})),Je=We((e=>{var t=Be();function n(e){var t=`https://react.dev/errors/`+e;if(1<arguments.length){t+=`?args[]=`+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+=`&args[]=`+encodeURIComponent(arguments[n])}return`Minified React error #`+e+`; visit `+t+` for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`}function r(){}var i={d:{f:r,r:function(){throw Error(n(522))},D:r,C:r,L:r,m:r,X:r,S:r,M:r},p:0,findDOMNode:null},a=Symbol.for(`react.portal`),o=Symbol.for(`react.recoverable`),s=Symbol.for(`react.optimistic_key`);function c(e,t,n){var r=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:a,key:r==null?null:r===s?s:``+r,children:e,containerInfo:t,implementation:n}}var l=t.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function u(e,t){if(e===`font`)return``;if(typeof t==`string`)return t===`use-credentials`?t:``}e.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=i,e.browser=function(e){return{$$typeof:o,_reason:e}},e.createPortal=function(e,t){var r=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)throw Error(n(299));return c(e,t,null,r)},e.flushSync=function(e){var t=l.T,n=i.p;try{if(l.T=null,i.p=2,e)return e()}finally{l.T=t,i.p=n,i.d.f()}},e.preconnect=function(e,t){typeof e==`string`&&(t?(t=t.crossOrigin,t=typeof t==`string`?t===`use-credentials`?t:``:void 0):t=null,i.d.C(e,t))},e.prefetchDNS=function(e){typeof e==`string`&&i.d.D(e)},e.preinit=function(e,t){if(typeof e==`string`&&t&&typeof t.as==`string`){var n=t.as,r=u(n,t.crossOrigin),a=typeof t.integrity==`string`?t.integrity:void 0,o=typeof t.fetchPriority==`string`?t.fetchPriority:void 0;n===`style`?i.d.S(e,typeof t.precedence==`string`?t.precedence:void 0,{crossOrigin:r,integrity:a,fetchPriority:o}):n===`script`&&i.d.X(e,{crossOrigin:r,integrity:a,fetchPriority:o,nonce:typeof t.nonce==`string`?t.nonce:void 0})}},e.preinitModule=function(e,t){if(typeof e==`string`){if(typeof t==`object`&&t){if(t.as==null||t.as===`script`){var n=u(t.as,t.crossOrigin);i.d.M(e,{crossOrigin:n,integrity:typeof t.integrity==`string`?t.integrity:void 0,nonce:typeof t.nonce==`string`?t.nonce:void 0,fetchPriority:typeof t.fetchPriority==`string`?t.fetchPriority:void 0})}}else t??i.d.M(e)}},e.preload=function(e,t){if(typeof e==`string`&&typeof t==`object`&&t&&typeof t.as==`string`){var n=t.as,r=u(n,t.crossOrigin);i.d.L(e,n,{crossOrigin:r,integrity:typeof t.integrity==`string`?t.integrity:void 0,nonce:typeof t.nonce==`string`?t.nonce:void 0,type:typeof t.type==`string`?t.type:void 0,fetchPriority:typeof t.fetchPriority==`string`?t.fetchPriority:void 0,referrerPolicy:typeof t.referrerPolicy==`string`?t.referrerPolicy:void 0,imageSrcSet:typeof t.imageSrcSet==`string`?t.imageSrcSet:void 0,imageSizes:typeof t.imageSizes==`string`?t.imageSizes:void 0,media:typeof t.media==`string`?t.media:void 0})}},e.preloadModule=function(e,t){if(typeof e==`string`){if(t){var n=u(t.as,t.crossOrigin);i.d.m(e,{as:typeof t.as==`string`&&t.as!==`script`?t.as:void 0,crossOrigin:n,integrity:typeof t.integrity==`string`?t.integrity:void 0,nonce:typeof t.nonce==`string`?t.nonce:void 0,fetchPriority:typeof t.fetchPriority==`string`?t.fetchPriority:void 0})}else i.d.m(e)}},e.requestFormReset=function(e){i.d.r(e)},e.unstable_batchedUpdates=function(e,t){return e(t)},e.useFormState=function(e,t,n){return l.H.useFormState(e,t,n)},e.useFormStatus=function(){return l.H.useHostTransitionStatus()},e.version=`19.3.1`})),Ye=We(((e,t)=>{function n(){if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE==`function`)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=Je()})),Xe=We((e=>{var t=qe(),n=Be(),r=Ye();function i(e){var t=`https://react.dev/errors/`+e;if(1<arguments.length){t+=`?args[]=`+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+=`&args[]=`+encodeURIComponent(arguments[n])}return`Minified React error #`+e+`; visit `+t+` for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`}function a(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function o(e){for(var t=e,n=t;n&&!n.alternate;)t=n,t.flags&4098&&(e=t.return),n=t.return;for(;t.return;)t=t.return;return t.tag===3?e:null}function s(e){if(e.tag===13){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function c(e){if(e.tag===31){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function l(e){if(o(e)!==e)throw Error(i(188))}function u(e){var t=e.alternate;if(!t){if(t=o(e),t===null)throw Error(i(188));return t===e?e:null}for(var n=e,r=t;;){var a=n.return;if(a===null)break;var s=a.alternate;if(s===null){if(r=a.return,r!==null){n=r;continue}break}if(a.child===s.child){for(s=a.child;s;){if(s===n)return l(a),e;if(s===r)return l(a),t;s=s.sibling}throw Error(i(188))}if(n.return!==r.return)n=a,r=s;else{for(var c=!1,u=a.child;u;){if(u===n){c=!0,n=a,r=s;break}if(u===r){c=!0,r=a,n=s;break}u=u.sibling}if(!c){for(u=s.child;u;){if(u===n){c=!0,n=s,r=a;break}if(u===r){c=!0,r=s,n=a;break}u=u.sibling}if(!c)throw Error(i(189))}}if(n.alternate!==r)throw Error(i(190))}if(n.tag!==3)throw Error(i(188));return n.stateNode.current===n?e:t}function d(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e;for(e=e.child;e!==null;){if(t=d(e),t!==null)return t;e=e.sibling}return null}function f(e,t,n,r,i,a){for(;e!==null;){if((e.tag===5||e.tag===27||e.tag===6)&&n(e,r,i,a)||(e.tag!==22||e.memoizedState===null)&&(t||e.tag!==5&&e.tag!==27)&&f(e.child,t,n,r,i,a))return!0;e=e.sibling}return!1}function p(e){for(e=e.return;e!==null;){if(e.tag===3||e.tag===5||e.tag===27)return e;e=e.return}return null}function m(e){var t=!1;for(e=e.return;e!==null&&(e.tag===4&&(t=!0),e.tag!==3&&e.tag!==5&&e.tag!==27);)e=e.return;return t}function h(e){var t=[null,null],n=p(e);return n===null||g(t,e,n.child,{foundSelf:!1}),t}function g(e,t,n,r){for(;n!==null;){if(n===t)r.foundSelf=!0;else if(n.tag===5||n.tag===27||n.tag===6){if(r.foundSelf)return e[1]=n,!0;e[0]=n}else if((n.tag!==22||n.memoizedState===null)&&g(e,t,n.child,r))return!0;n=n.sibling}return!1}function _(e){switch(e.tag){case 5:case 27:case 6:return e.stateNode;case 3:return e.stateNode.containerInfo;default:throw Error(i(559))}}var v=null,y=null;function b(e,t,n){return e===n||e===t&&(v=e,!0)}function ee(e,t,n){return e===n?(y=e,!1):e===t&&(y!==null&&(v=e),!0)}function te(e){if(e===null)return null;do e=e===null?null:e.return;while(e&&e.tag!==5&&e.tag!==27&&e.tag!==3);return e||null}function ne(e,t,n){for(var r=0,i=e;i;i=n(i))r++;i=0;for(var a=t;a;a=n(a))i++;for(;0<r-i;)e=n(e),r--;for(;0<i-r;)t=n(t),i--;for(;r--;){if(e===t||t!==null&&e===t.alternate)return e;e=n(e),t=n(t)}return null}var re=Object.assign,x=Symbol.for(`react.element`),S=Symbol.for(`react.transitional.element`),ie=Symbol.for(`react.portal`),ae=Symbol.for(`react.fragment`),oe=Symbol.for(`react.strict_mode`),se=Symbol.for(`react.profiler`),ce=Symbol.for(`react.consumer`),le=Symbol.for(`react.context`),ue=Symbol.for(`react.forward_ref`),de=Symbol.for(`react.suspense`),fe=Symbol.for(`react.suspense_list`),pe=Symbol.for(`react.memo`),me=Symbol.for(`react.lazy`),he=Symbol.for(`react.activity`),ge=Symbol.for(`react.legacy_hidden`),_e=Symbol.for(`react.memo_cache_sentinel`),ve=Symbol.for(`react.view_transition`),ye=Symbol.for(`react.recoverable`),be=Symbol.iterator;function xe(e){return typeof e!=`object`||!e?null:(e=be&&e[be]||e[`@@iterator`],typeof e==`function`?e:null)}var Se=Symbol.for(`react.client.reference`);function Ce(e){if(e==null)return null;if(typeof e==`function`)return e.$$typeof===Se?null:e.displayName||e.name||null;if(typeof e==`string`)return e;switch(e){case ae:return`Fragment`;case se:return`Profiler`;case oe:return`StrictMode`;case de:return`Suspense`;case fe:return`SuspenseList`;case he:return`Activity`;case ve:return`ViewTransition`}if(typeof e==`object`)switch(e.$$typeof){case ie:return`Portal`;case le:return e.displayName||`Context`;case ce:return(e._context.displayName||`Context`)+`.Consumer`;case ue:var t=e.render;return e=e.displayName,e||=(e=t.displayName||t.name||``,e===``?`ForwardRef`:`ForwardRef(`+e+`)`),e;case pe:return t=e.displayName||null,t===null?Ce(e.type)||`Memo`:t;case me:t=e._payload,e=e._init;try{return Ce(e(t))}catch{}}return null}var we=Array.isArray,C=n.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,w=r.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,Te={pending:!1,data:null,method:null,action:null},Ee=[],De=-1;function Oe(e){return{current:e}}function ke(e){0>De||(e.current=Ee[De],Ee[De]=null,De--)}function Ae(e,t){De++,Ee[De]=e.current,e.current=t}var je=Oe(null),Me=Oe(null),Ne=Oe(null),Pe=Oe(null);function Fe(e,t){switch(Ae(Ne,t),Ae(Me,e),Ae(je,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Sp(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Sp(t),e=Cp(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}ke(je),Ae(je,e)}function Ie(){ke(je),ke(Me),ke(Ne)}function Le(e){var t=e.memoizedState;t!==null&&(yh._currentValue=t.memoizedState,Ae(Pe,e)),t=je.current;var n=Cp(t,e.type);t!==n&&(Ae(Me,e),Ae(je,n))}function Re(e){Me.current===e&&(ke(je),ke(Me)),Pe.current===e&&(ke(Pe),yh._currentValue=Te)}var ze,T;function Ve(e){if(ze===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);ze=t&&t[1]||``,T=-1<e.stack.indexOf(`
3
3
  at`)?` (<anonymous>)`:-1<e.stack.indexOf(`@`)?`@unknown:0:0`:``}return`
4
4
  `+ze+e+T}var He=!1;function Ue(e,t){if(!e||He)return``;He=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var r={DetermineComponentFrameRoot:function(){try{if(t){var n=function(){throw Error()};if(Object.defineProperty(n.prototype,"props",{set:function(){throw Error()}}),typeof Reflect==`object`&&Reflect.construct){try{Reflect.construct(n,[])}catch(e){var r=e}Reflect.construct(e,[],n)}else{try{n.call()}catch(e){r=e}n=!1;try{var i=Object.getOwnPropertyDescriptor(e.prototype,`props`);Object.defineProperty(e.prototype,"props",{configurable:!0,set:function(){throw Error()}}),n=!0,new e}finally{n&&(i===void 0?delete e.prototype.props:Object.defineProperty(e.prototype,"props",i))}}}else{try{throw Error()}catch(e){r=e}(n=e())&&typeof n.catch==`function`&&n.catch(function(){})}}catch(e){if(e&&r&&typeof e.stack==`string`)return[e.stack,r.stack]}return[null,null]}};r.DetermineComponentFrameRoot.displayName=`DetermineComponentFrameRoot`;var i=Object.getOwnPropertyDescriptor(r.DetermineComponentFrameRoot,`name`);i&&i.configurable&&Object.defineProperty(r.DetermineComponentFrameRoot,"name",{value:`DetermineComponentFrameRoot`});var a=r.DetermineComponentFrameRoot(),o=a[0],s=a[1];if(o&&s){var c=o.split(`
5
5
  `),l=s.split(`
@@ -16,7 +16,7 @@ Error generating stack: `+e.message+`
16
16
  zremrangebyrank zremrangebylex lrem xdel xtrim getdel drop flushdb flushall`);function Kt(e){let t=e.toLowerCase();return Ht.has(t)?`SELECT`:Ut.has(t)?`INSERT`:Wt.has(t)?`UPDATE`:Gt.has(t)?`DELETE`:`OTHER`}var qt=e=>String(e.attributes[`db.query.text`]??e.name),Jt=e=>e.spans.filter(e=>e.category===`db`),Yt=/^\s*(SET|RESET|BEGIN|START\s+TRANSACTION|COMMIT|END|ROLLBACK|SAVEPOINT|RELEASE|DISCARD|USE)\b/i,Xt=e=>Rt(e)?Vt(e):Yt.test(qt(e)),Zt=e=>Jt(e).filter(e=>!Xt(e)),Qt=/\?|\$\d+|%s|%\(\w+\)s|(?<![:\w]):[A-Za-z_]\w*|@[A-Za-z_]\w*/,$t=e=>String(e.attributes[`wizelens.db.parameters`]??e.attributes[`wizelens.db.fingerprint`]??``),en=e=>e.attributes[`wizelens.db.parameters`]==null&&e.attributes[`wizelens.db.fingerprint`]==null&&(Rt(e)||Qt.test(qt(e))),tn=`Queries that waited together`;function nn(e){let t=[],n=-1/0;for(let r of[...e].sort((e,t)=>e.startMs-t.startMs))r.startMs<n?t[t.length-1].push(r):t.push([r]),n=Math.max(n,r.startMs+r.durationMs);return t}var rn=e=>qt(e).trim().split(/\s+/)[0].toUpperCase();function D(e){return{kind:`slow-query`,severity:`warning`,title:`Slow query: ${e.durationMs.toFixed(1)} ms`,shape:qt(e),count:1,totalMs:e.durationMs,spanIds:[e.spanId]}}function an(e){let t=Pt(e);return{kind:`db-wait`,severity:`warning`,title:`${e.length===1?`${rn(e[0])} took ${t.toFixed(0)} ms`:`${e.length} slow queries ran at the same time (${t.toFixed(0)} ms)`}: they likely waited for a connection or a lock`,shape:tn,count:e.length,totalMs:t,spanIds:e.map(e=>e.spanId)}}var on=e=>e.length>=3||e.every(Xt);function sn(e,t=100){return nn(Jt(e).filter(e=>e.durationMs>=t)).flatMap(e=>on(e)?[an(e)]:e.map(D))}var cn=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,ln=/^\d+$/;function un(e){let t=e.indexOf(`?`),n=t>=0?e.slice(0,t):e,r=t>=0?e.slice(t+1):``,i=n.split(`/`).map(e=>ln.test(e)||cn.test(e)?`{}`:e).join(`/`);return r?`${i}?${r.split(`&`).filter(Boolean).map(e=>{let t=e.indexOf(`=`);return t>=0?`${e.slice(0,t)}={}`:e}).join(`&`)}`:i}function dn(e){let t=String(e.attributes[`http.request.method`]??`GET`).toUpperCase(),n=e.attributes[`url.full`];if(typeof n==`string`)try{let e=new URL(n);return`${t} ${e.host}${un(e.pathname+e.search)}`}catch{}let r=e.attributes[`server.address`],i=e.attributes[`server.port`],a=String(e.attributes[`url.path`]??e.name);return`${t} ${r??``}${i?`:${i}`:``}${un(a)}`}function fn(e,t){let n=new Map;for(let r of e){let e=t(r),i=n.get(e);i?i.push(r):n.set(e,[r])}return n}var pn=e=>e.reduce((e,t)=>e+t.durationMs,0);function mn(e){let t=fn(Zt(e).filter(e=>!en(e)),e=>`${qt(e)}\u0000${$t(e)}`),n=[];for(let e of t.values())e.length<2||n.push({kind:`duplicate-query`,severity:`warning`,title:`Same query with same parameters ran ${e.length} times`,shape:qt(e[0]),count:e.length,totalMs:pn(e),spanIds:e.map(e=>e.spanId)});return n}function hn(e,t=5){let n=[];for(let[r,i]of fn(Zt(e),qt))i.length<t||n.push({kind:`n+1-db`,severity:`warning`,title:`N+1 query: ran ${i.length} times`,shape:r,count:i.length,totalMs:pn(i),spanIds:i.map(e=>e.spanId)});return n}function gn(e,t=5){let n=[],r=e.spans.filter(e=>e.category===`http.client`);for(let[e,i]of fn(r,dn))i.length<t||n.push({kind:`n+1-http`,severity:`warning`,title:`N+1 HTTP: called ${i.length} times`,shape:e,count:i.length,totalMs:pn(i),spanIds:i.map(e=>e.spanId)});return n}function _n(e){let t=e.events.find(e=>e.name===`exception`),n=e=>t?.attributes[e]==null?null:String(t.attributes[e]);return{spanId:e.spanId,service:e.service,name:e.name,message:n(`exception.message`)??e.statusMessage??`error`,type:n(`exception.type`),stack:n(`exception.stacktrace`)}}function vn(e){return e.spans.filter(ve).map(e=>({kind:`error`,severity:`error`,title:`${e.service}: ${_n(e).message}`,shape:e.name,count:1,totalMs:e.durationMs,spanIds:[e.spanId]}))}var yn={nPlusOneThreshold:5,slowQueryMs:100};function bn(e,t={}){let n=t.nPlusOneThreshold??yn.nPlusOneThreshold;return[...vn(e),...hn(e,n),...gn(e,n),...mn(e),...sn(e,t.slowQueryMs??yn.slowQueryMs)]}function xn(e,t=500){if(!e)return`neutral`;let n=e.status??0;return e.error||n>=500?`critical`:e.totalMs===null?`info`:n>=400||e.totalMs>=t?`warning`:e.insights===null?`info`:e.insights>0?`opportunity`:`success`}var Sn=e=>e.filter(e=>e.kind!==`error`),Cn=(e,t)=>e.startMs-t.startMs;function wn(e){let t=e.spans.filter(e=>ct(e)===`fetch`).sort(Cn)[0],n=Ae(e.spans),r=e.spans.filter(e=>e.category===`db`),i=t?.attributes[rt],a=typeof i==`number`&&Number.isFinite(i)?Math.max(0,i):null,o=null;if(n){let t=e.spans.filter(e=>e.service===n.service),r=t.filter(e=>e.category===`db`),i=t.filter(e=>e.category===`http.client`),a=e=>Ft(e,n.startMs,n.startMs+n.durationMs);o={codeMs:Math.max(0,n.durationMs-a([...r,...i])),dbMs:a(r),httpOutMs:a(i),httpOutCount:i.length}}return{totalMs:t?t.durationMs+(a??0):e.durationMs,serverMs:n?.durationMs??null,dbMs:Pt(r),dbTotalMs:It(r),dbCount:r.length,dbSlowestMs:Math.max(0,...r.map(e=>e.durationMs)),renderMs:a,service:n?.service??null,server:o}}function Tn(e){let t=Math.max(e.totalMs,0),n=Math.min(e.renderMs??0,t),r=Math.min(Math.max(e.serverMs??0,e.dbMs),t-n),i=Math.min(e.dbMs,r);return{server:r-i,db:i,render:n,other:Math.max(0,t-r-n)}}var En=(e,t)=>{let n=e?.attributes[t];return n==null||n===``?null:String(n)},Dn=(e,t)=>e.startMs-t.startMs;function On(e){return e?Object.entries(e.attributes).filter(([e])=>e.startsWith(_t)).map(([e,t])=>t===null||t===``||t===!0?e.slice(_t.length):`${e.slice(_t.length)}:${String(t)}`):[]}function kn(e,t){let n=En(e,`url.path`);if(n){let t=En(e,`url.query`);return t?`${n}?${t}`:n}let r=En(t,`url.full`);if(!r)return e?.name??t?.name??`/`;try{let e=new URL(r);return e.pathname+e.search}catch{return r}}function An(e,t,n){return`${e} ${En(t,`http.route`)??un(n)}`}function jn(e,t){if(En(e,bt.system)){let t=`${En(e,bt.service)??`service`}/${En(e,bt.method)??`method`}`;return{method:`gRPC`,path:`/${t}`,endpoint:`gRPC ${t}`}}let n=(En(e,`http.request.method`)??En(t,`http.request.method`)??`GET`).toUpperCase(),r=kn(e,t);return{method:n,path:r,endpoint:An(n,e,r)}}function Mn(e,t={}){let n=Ae(e.spans),r=e.spans.filter(e=>ct(e)===`fetch`).sort(Dn)[0];if(!n&&!r)return null;let i=wn(e),a=e.spans.filter(e=>e.category===`http.client`),o=bn(e,t),s=e.spans.filter(ve).length,c=Sn(o).length,{method:l,path:u,endpoint:d}=jn(n,r),f=n?.attributes[`http.response.status_code`]??r?.attributes[`http.response.status_code`],p=typeof f==`number`?f:f==null?null:Number(f)||null;return{traceId:e.traceId,startMs:r?.startMs??n?.startMs??e.startMs,method:l,path:u,endpoint:d,status:p,aborted:n?.attributes[ft]===!0,durationMs:i.totalMs,serverMs:i.serverMs,dbMs:i.dbMs,dbCount:i.dbCount,fetchCount:a.length,fetchMs:Pt(a),renderMs:i.renderMs,networkMs:r&&n?Math.max(0,r.durationMs-n.durationMs):null,service:n?.service??`browser`,services:e.services,errors:s,findings:o,insights:c,health:xn({status:p,error:s>0,totalMs:i.totalMs,insights:c}),userAgent:En(n,`user_agent.original`),clientAddress:En(n,`client.address`),user:En(n,`enduser.id`),requestId:En(n,dt),tags:On(n)}}var Nn=Oe(e=>Mn(e)),Pn=new WeakMap;function Fn(e,t){if(t.slowQueryMs===yn.slowQueryMs&&t.nPlusOneThreshold===yn.nPlusOneThreshold)return Nn(e);let n=`${t.slowQueryMs}|${t.nPlusOneThreshold}`,r=Pn.get(e);return r||Pn.set(e,r=new Map),r.has(n)||r.set(n,Mn(e,t)),r.get(n)}function In(e){let t=[];for(let n of e){let e=Nn(n);e&&t.push(e)}return t.sort((e,t)=>t.startMs-e.startMs)}var Ln=e=>e.errors>0||(e.status??0)>=500,Rn=16,zn=1,Bn=20,Vn=50,Hn=e=>typeof e==`number`&&Number.isFinite(e)?e:0;function Un(e){let t=e.attributes[ut];if(typeof t!=`string`)return[];try{let e=JSON.parse(t);return Array.isArray(e)?e.flatMap(e=>{let t=e;return!t||typeof t.name!=`string`||!t.name?[]:[{name:t.name,renders:Hn(t.renders),actualMs:Hn(t.actualMs),selfMs:Hn(t.selfMs),wasted:Hn(t.wasted),context:Hn(t.context)}]}):[]}catch{return[]}}function Wn(e,t){let n=[];return e.selfMs<zn||((t>0?e.renders/t>Bn:e.renders>Vn)&&n.push(`Re-renders frequently`),e.wasted>=5&&e.wasted/Math.max(1,e.renders)>=.3&&n.push(`Re-renders with the same props`),e.context>=5&&e.context/Math.max(1,e.renders)>=.5&&n.push(`Context value changes often`),e.renders>0&&e.selfMs/e.renders>=Rn&&n.push(`Slow render`)),n}function Gn(e,t){let n=t>0?e/t:0;return n>=.2?`high`:n>=.05?`medium`:`low`}var Kn=(e,t)=>{let n=e.attributes[t],r=typeof n==`number`?n:typeof n==`string`&&n!==``?Number(n):NaN;return Number.isFinite(r)?r:null};function qn(e){let t=e.attributes[at],n=e.attributes[`url.full`];return{traceId:e.traceId,startMs:e.startMs,route:typeof t==`string`&&t?t:`/`,navigation:e.attributes[`wizelens.browser.navigation`]===`spa`?`spa`:`load`,url:typeof n==`string`?n:null,renderMs:Kn(e,lt.renderMs)??(e.durationMs>0?e.durationMs:null),ttfbMs:Kn(e,lt.ttfbMs),ssrMs:Kn(e,lt.ssrMs),clientRenderMs:Kn(e,lt.clientRenderMs),hydrationMs:Kn(e,lt.hydrationMs),fcpMs:Kn(e,lt.fcpMs),lcpMs:Kn(e,lt.lcpMs),cls:Kn(e,lt.cls),inpMs:Kn(e,lt.inpMs),loadMs:Kn(e,lt.loadMs),imageMs:Kn(e,lt.imageMs),images:Kn(e,lt.images),largeImages:Kn(e,lt.largeImages)}}var Jn=e=>`${(e/1e3).toFixed(1)} s`;function Yn(e){let t=[],n=[];(e.avgLcpMs??0)>4e3?t.push(`Slow largest paint (${Jn(e.avgLcpMs)})`):(e.avgLcpMs??0)>2500&&n.push(`Largest paint needs work (${Jn(e.avgLcpMs)})`),(e.avgCls??0)>.25?t.push(`Layout shifts (CLS ${e.avgCls.toFixed(2)})`):(e.avgCls??0)>.1&&n.push(`Some layout shift (CLS ${e.avgCls.toFixed(2)})`),(e.avgRenderMs??0)>1e3&&t.push(`Slow render (${Jn(e.avgRenderMs)})`),e.largeImages>0&&n.push(`Large images without lazy loading`);let r=e.avgSsrMs??0,i=e.avgSsrRenderMs??e.avgRenderMs;return r>200&&i&&r/i>.3&&n.push(`Server render is ${Math.min(100,Math.round(r/i*100))}% of render time`),{issue:t.length?`high`:n.length?`minor`:`none`,issues:[...t,...n]}}var Xn={high:`high`,minor:`medium`,none:`low`};function Zn(e){return{key:`render|route|${e.route}`,kind:`render`,area:`render`,impact:Xn[e.issue],title:e.issue===`high`?`Render bottleneck`:`Render opportunity`,description:`${e.route}: ${e.issues.join(`; `)}. Seen in ${e.views} page view${e.views===1?``:`s`}.`,shape:e.route,occurrences:e.views,count:e.views,totalMs:e.totalRenderMs,endpoints:[e.route],lastSeenMs:e.lastSeenMs,exampleTraceId:e.exampleTraceId}}function Qn(e){return{key:`render|component|${e.name}`,kind:`render`,area:`render`,impact:e.impact,title:`Component hotspot: ${e.name}`,description:`${e.issues.join(`; `)}. ${e.renders} renders, ${Math.round(e.selfMs)} ms in its own code.`,shape:e.name,occurrences:e.renders,count:e.renders,totalMs:e.selfMs,endpoints:e.routes,lastSeenMs:e.lastSeenMs,exampleTraceId:e.exampleTraceId}}var $n={"n+1-db":`N+1 query pattern`,"n+1-http":`Excessive fetch requests`,"duplicate-query":`Repeated query opportunity`,"slow-query":`Slow query opportunity`,"db-wait":`Database wait`};function er(e){let t=/\b(?:FROM|INTO|UPDATE)\s+["`[]?([\w.]+)/i.exec(e)?.[1];return t?`A query on ${t}`:`A query`}function tr(e,t,n,r,i){let a=Math.round(n);return e===`n+1-db`?`${er(t)} runs ${a} times per request in ${i}. Load the rows in one query (eager loading or a join).`:e===`n+1-http`?`${i} makes ${a} similar calls per request. Batch them or cache the result.`:e===`duplicate-query`?`${er(t)} runs ${a} times with the same parameters in ${i}. Reuse the first result.`:e===`db-wait`?`${a===1?`A slow SET or BEGIN`:`${a} slow queries at the same time`} in ${i} waited about ${Math.round(r)} ms. They likely waited for a connection or a lock. Check the pool size, and whether it happens only on the first request.`:`${er(t)} takes ${Math.round(r)} ms on average in ${i}. Check its indexes and how many rows it reads.`}function nr(e,t,n,r){return e===`slow-query`||e===`db-wait`?r>=1e3?`high`:r>=300?`medium`:`low`:n>=500||t>=20?`high`:n>=100||t>=5?`medium`:`low`}function rr(e){let t=[];for(let n of e.findings){if(n.kind===`error`)continue;let r=n.kind===`n+1-http`?n.shape:Fe(n.shape);t.push({kind:n.kind,shape:r,count:n.count,totalMs:n.totalMs,endpoint:e.endpoint,startMs:e.startMs,traceId:e.traceId})}return t}function ir(e,t){let n=t.kind===`db-wait`?t.totalMs/t.occurrences:t.totalMs/Math.max(1,t.count);return{key:e,kind:t.kind,area:t.kind===`n+1-http`?`http`:`database`,impact:nr(t.kind,t.occurrences,t.totalMs,n),title:$n[t.kind],description:tr(t.kind,t.shape,t.count/t.occurrences,n,t.endpoints[0]),shape:t.shape,occurrences:t.occurrences,count:t.count,totalMs:t.totalMs,endpoints:t.endpoints,lastSeenMs:t.lastSeenMs,exampleTraceId:t.exampleTraceId}}var ar={high:0,medium:1,low:2},or=(e,t)=>ar[e.impact]-ar[t.impact]||t.totalMs-e.totalMs||t.lastSeenMs-e.lastSeenMs;function sr(e,t,n,r=24){let i=t&&t.length>0?t.length:null;return{value:e.length,previous:i,change:le(e.length,i),series:de(e,e=>e.lastSeenMs,n,r)}}var cr=[`SELECT`,`INSERT`,`UPDATE`,`DELETE`,`OTHER`],lr=/\b(?:FROM|INTO|UPDATE|JOIN)\s+["`[]?([\w.]+)/i;function ur(e){let t=e.attributes[`db.operation.name`]??/^\s*(\w+)/.exec(qt(e))?.[1]??``;if(Rt(e))return Kt(String(t));let n=String(t).toUpperCase();return cr.includes(n)?n:`OTHER`}function dr(e){let t=e.attributes[`db.collection.name`];return t!=null&&t!==``?String(t):lr.exec(qt(e))?.[1]?.replace(/[\]"`]/g,``)??null}function fr(e){let t=Nn(e)?.endpoint??e.rootName;return e.spans.filter(e=>e.category===`db`).map(n=>{let r=n.attributes[`db.response.returned_rows`];return{span:n,traceId:e.traceId,startMs:n.startMs,durationMs:n.durationMs,endpoint:t,query:Fe(qt(n)),operation:ur(n),table:dr(n),system:String(n.attributes[`db.system.name`]??`database`),rows:typeof r==`number`?r:r==null?null:Number(r)||null,error:ve(n)}})}var pr=Oe(fr),mr=e=>e.flatMap(pr),hr=`Web App`,gr=e=>e===`browser`?hr:e,_r=e=>e===`Web App`?`browser`:e;function vr(e){return e.replace(/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/gi,`{id}`).replace(/\b[0-9a-f]{16,}\b/gi,`{id}`).replace(/\d+/g,`#`).trim()}function yr(e){let t=e.spans.filter(ve),n=t.filter(e=>e.events.some(e=>e.name===`exception`));return n.length?n:t}var br=e=>typeof e==`string`&&e?e:null,xr=(e,t,n,r)=>`${e}|${t}|${vr(n)}${r?`|${r}`:``}`;function Sr(e,t,n,r){let i=_n(t),a=i.type??(t.statusMessage?.startsWith(`HTTP`)?`HttpError`:`Error`),o=gr(t.service),s=ct(t)!==null,c=t.attributes[at],l=t.events.find(e=>e.name===`exception`),u=s?br(l?.attributes[st]):null;return{key:xr(o,a,i.message,u),traceId:e.traceId,spanId:t.spanId,timeMs:l?.timeMs??t.startMs+t.durationMs,type:a,message:i.message,stack:i.stack,service:o,endpoint:n?.endpoint??(typeof c==`string`?c:e.rootName),method:n?.method??null,path:n?.path??(typeof c==`string`?c:null),status:n?.status??null,critical:r,browser:s,frame:u,release:br(t.attributes[ot]),userAgent:n?.userAgent??null,user:n?.user??null,tags:n?.tags??[]}}function Cr(e){let t=yr(e);if(t.length===0)return[];let n=Nn(e),r=(n?.status??0)>=500||e.logs.some(e=>e.level===`critical`);return t.map(t=>Sr(e,t,n,r))}var wr=Oe(Cr),Tr=e=>e.flatMap(wr).sort((e,t)=>t.timeMs-e.timeMs),Er=(e,t)=>e.attributes[t]==null||e.attributes[t]===``?null:String(e.attributes[t]),Dr=e=>e.category===`messaging`&&e.kind===`producer`,Or=e=>e.category===`messaging`&&e.kind===`consumer`;function kr(e){return`${Er(e,xt.system)??`queue`} · ${Er(e,xt.destination)??`unknown`}`}function Ar(e){return e.filter(e=>e.category===`messaging`).map(e=>({spanId:e.spanId,service:e.service,operation:Er(e,xt.operation)??(e.kind===`producer`?`send`:`process`),queue:kr(e),messageId:Er(e,xt.messageId),durationMs:e.durationMs,startMs:e.startMs,error:e.status===`error`})).sort((e,t)=>e.startMs-t.startMs)}var jr=1e3;function Mr(e,t,n){return e===0?`idle`:t>=10?`unhealthy`:t>=1||(n??0)>=jr?`degraded`:`healthy`}var Nr=e=>ve(e)||Number(e.attributes[`http.response.status_code`]??0)>=500,Pr=(e,t)=>e.attributes[t]==null?null:String(e.attributes[t]);function Fr(e){let t=Pr(e,`db.system.name`)??`database`,n=Pr(e,`db.namespace`);return n?`${t} · ${n}`:t}function Ir(e){let t=new Set(e.spans.filter(e=>e.category===`http.server`&&e.parentSpanId).map(e=>e.parentSpanId));return e.spans.filter(e=>e.category===`http.client`&&!t.has(e.spanId))}function Lr(e){let t=Pr(e,`url.full`);if(t)try{return new URL(t).host}catch{}return Pr(e,`server.address`)??`unknown host`}function Rr(e){return Dr(e)?{from:e.service,to:kr(e)}:Or(e)?{from:kr(e),to:e.service}:null}function zr(e,t){if(e.category===`db`)return Fr(e);if(e.category!==`http.client`&&ct(e)!==`fetch`)return null;let n=t.get(e.spanId);return n?n.service:e.category===`http.client`?Lr(e):null}function Br(e){let t=[],n=new Map(e.spans.filter(e=>e.category===`http.server`&&e.parentSpanId).map(e=>[e.parentSpanId,e]));for(let r of e.spans){let e=Rr(r);e&&t.push({...e,span:r});let i=e?null:zr(r,n);i&&t.push({from:r.category===`browser`?`Web App`:r.service,to:i,span:r})}return t}var Vr={browser:0,network:1,routing:2,handler:3,service:4,queue:5,external:6,database:7,render:8},Hr=(e,t)=>typeof e.attributes[t]==`number`?e.attributes[t]:null,Ur=e=>e.startMs+e.durationMs;function Wr(e,t){return[[e.startMs,t.startMs],[Ur(t),Ur(e)]].filter(([e,t])=>t>e)}function Gr(e,t){let n=Math.min(Hr(e,`wizelens.server.routed_ms`)??0,t),r={key:`service:${e.service}`,label:e.service,kind:`service`,owner:e.service,ms:t-n,segs:[[e.startMs+n,Ur(e)]]};return n<=0?[r]:[{key:`routing`,label:`Routing`,kind:`routing`,owner:e.service,ms:n,segs:[[e.startMs,e.startMs+n]]},r]}function Kr(e,t,n){let r=[{key:`browser`,label:`Browser`,kind:`browser`,owner:`Web App`,ms:e.durationMs,segs:[[e.startMs,Ur(e)]]}];r.push({key:`network`,label:`Network`,kind:`network`,owner:`Network`,ms:n,segs:t?Wr(e,t):[[e.startMs,Ur(e)]]});let i=Hr(e,rt);return i&&r.push({key:`render`,label:`Render`,kind:`render`,owner:`Web App`,ms:i,segs:[[Ur(e),Ur(e)+i]]}),r}var qr=(e,t,n,r,i,a)=>({key:`page:${e}`,label:t,kind:n,owner:`Web App`,ms:a-i,segs:[[r.startMs+i,r.startMs+a]]});function Jr(e){let t=Hr(e,lt.ttfbMs),n=Hr(e,lt.fcpMs),r=Hr(e,lt.lcpMs),i=Hr(e,lt.loadMs);if(t===null)return[qr(`route`,`Route render`,`render`,e,0,Hr(e,lt.renderMs)??e.durationMs)];let a=[qr(`document`,`Server response (TTFB)`,`network`,e,0,t)];return n!==null&&n>t&&a.push(qr(`client`,`Client render (first paint)`,`render`,e,t,n)),r!==null&&n!==null&&r>n&&a.push(qr(`content`,`Main content paint`,`render`,e,n,r)),i!==null&&a.push(qr(`load`,`Page load`,`browser`,e,0,i)),a}function Yr(e,t){let n=Math.max(0,e.durationMs-Pt(t.filter(e=>!Or(e)))),r=t.find(e=>e.category===`http.server`),i=ct(e);return i===`fetch`?Kr(e,r,n):i===`pageview`?Jr(e):i===null?e.category===`http.server`?Gr(e,n):Dr(e)?[{key:`queue:${kr(e)}`,label:kr(e),kind:`queue`,owner:e.service,ms:n,segs:[[e.startMs,Ur(e)]]}]:Or(e)?[{key:`service:${e.service}`,label:e.service,kind:`service`,owner:e.service,ms:n,segs:[[e.startMs,Ur(e)]]}]:e.category===`db`?[{key:`db:${Fr(e)}`,label:Fr(e),kind:`database`,owner:e.service,ms:n,segs:[[e.startMs,Ur(e)]]}]:e.category===`http.client`&&r?[{key:`network`,label:`Network`,kind:`network`,owner:`Network`,ms:n,segs:Wr(e,r)}]:e.category===`http.client`?[{key:`ext:${Lr(e)}`,label:Lr(e),kind:`external`,owner:e.service,ms:n,segs:[[e.startMs,Ur(e)]]}]:e.attributes[`wizelens.layer`]===`handler`?[{key:`handler`,label:`Handler`,kind:`handler`,owner:e.service,ms:n,segs:[[e.startMs,Ur(e)]]}]:[{key:`service:${e.service}`,label:e.service,kind:`service`,owner:e.service,ms:n,segs:[]}]:[]}function Xr(e){let t=new Map(e.spans.map(e=>[e.spanId,e]));return e.spans.filter(Or).flatMap(e=>{let n=e.parentSpanId?t.get(e.parentSpanId):void 0;if(!n||!Dr(n)||e.startMs<=Ur(n))return[];let r=`Queue wait (${kr(e)})`;return[{key:`wait:${kr(e)}`,label:r,kind:`queue`,owner:kr(e),ms:e.startMs-Ur(n),segs:[[Ur(n),e.startMs]]}]})}function Zr(e){let t=Ne(e.spans.filter(e=>e.parentSpanId),e=>e.parentSpanId);return[...e.spans.flatMap(e=>Yr(e,t.get(e.spanId)??[])),...Xr(e)]}function Qr(e){let t=[];for(let[n,r]of Ne(Zr(e),e=>e.key)){let i=r.flatMap(e=>e.segs).sort((e,t)=>e[0]-t[0]),a=r[0];t.push({key:n,label:a.label,kind:a.kind,totalMs:r.reduce((e,t)=>e+t.ms,0),segments:i.map(([t,n])=>({startMs:t-e.startMs,durationMs:n-t})),envelope:a.kind===`browser`})}let n=e=>e.segments[0]?.startMs??1/0;return t.sort((e,t)=>n(e)-n(t)||Vr[e.kind]-Vr[t.kind])}var $r=(e,t)=>Yr(e,t).find(e=>e.kind!==`browser`)?.label??e.service;function ei(e,t=10){let n=[];for(let t of e){let e=w(t.spans),r=Ae(t.spans),i=Ne(t.spans.filter(e=>e.parentSpanId),e=>e.parentSpanId);for(let a of t.spans)a!==e&&a!==r&&a.category!==`browser`&&n.push({traceId:t.traceId,spanId:a.spanId,name:a.name,service:a.service,layer:$r(a,i.get(a.spanId)??[]),durationMs:a.durationMs,startMs:a.startMs})}return n.sort((e,t)=>t.durationMs-e.durationMs).slice(0,t)}function ti(e){let t=Nn(e);if(t)return t.durationMs;let n=e.spans.find(e=>ct(e)===`pageview`);return n?Hr(n,lt.renderMs)??n.durationMs:e.durationMs}var ni=[[/\b[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b/gi,`<uuid>`],[/"[^"\n]{0,200}"|'[^'\n]{0,200}'|`[^`\n]{0,200}`/g,`<str>`],[/\b0x[0-9a-f]+\b/gi,`<id>`],[/\b(?=[0-9a-f]*\d)(?=[0-9a-f]*[a-f])[0-9a-f]{8,}\b/gi,`<id>`],[/\b(?=[A-Za-z0-9_-]*\d)(?=[A-Za-z0-9_-]*[A-Za-z])[A-Za-z0-9_-]{16,}\b/g,`<id>`],[/\d+(?:\.\d+)*/g,`<num>`]];function ri(e){let t=(e.split(`
17
17
  `,1)[0]??``).trim();for(let[e,n]of ni)t=t.replace(e,n);return t=t.replace(/\s+/g,` `),t.length>200?t.slice(0,200):t}var ii=new Map;function ai(e){let t=ii.get(e);if(t!==void 0)return t;let n=wt(ri(e));return ii.size>5e4&&ii.clear(),ii.set(e,n),n}var oi=[`trace`,`debug`,`info`,`warn`,`error`,`critical`];function si(e){return e.logs.map((t,n)=>({key:`${e.traceId}:${n}`,traceId:e.traceId,traceName:Ct(e.traceId)?``:e.rootName,spanId:t.spanId,timeMs:t.timeMs,level:t.level,service:gr(t.service),category:t.category,message:t.message,attributes:t.attributes}))}var ci=Oe(si),li=e=>e.flatMap(ci).sort((e,t)=>t.timeMs-e.timeMs),ui=e=>oi.indexOf(e);function di(e,t){let n=ui(t.minLevel),r=t.query.trim().toLowerCase();return e.filter(e=>(t.exact?ui(e.level)===n:ui(e.level)>=n)&&(!t.service||e.service===t.service)&&(!t.category||e.category===t.category)&&(!t.traceId||e.traceId===t.traceId)&&(!t.pattern||ai(e.message)===t.pattern)&&(!t.origin||t.origin===`outside`===Ct(e.traceId))&&(!r||e.message.toLowerCase().includes(r)||e.category.toLowerCase().includes(r)||e.traceName.toLowerCase().includes(r)||e.traceId.startsWith(r)))}var fi=6048e5,pi=6e4,mi=6e4,hi=Object.keys(fe);function gi(e){return hi.find(t=>fe[t].ms>=e)??hi[hi.length-1]}function _i(e,t){let n=Math.floor(Number(e.from)),r=Math.floor(Number(e.to));if(!e.from||!e.to||!Number.isFinite(n)||!Number.isFinite(r)||r>t+mi)return null;let i=Math.min(r,t);return i-n>=pi?{from:n,to:i}:null}var vi=(e,t,n)=>_i(n,t)??me(e,t),yi=e=>e.compare===`week`?`week`:`previous`,bi=(e,t)=>t===`week`?{from:e.from-fi,to:e.to-fi}:ze(e);function xi(t,n,r){return r===`week`?`vs. same time last week`:n?`vs. previous period`:e[t]}var Si=1.04,Ci=.01,wi=Math.log(Si),Ti=e=>e>.01?Math.max(1,Math.ceil(Math.log(e/Ci)/wi)):0,Ei=e=>e===0?0:2*Ci*Si**e/2.04;function Di(e){let t={};for(let n of e){let e=Ti(n);t[e]=(t[e]??0)+1}return t}function Oi(e,t,n=1){for(let[r,i]of Object.entries(t)){let t=Number(r),a=(e[t]??0)+n*i;Math.abs(a)<1e-9?delete e[t]:e[t]=a}}var ki=e=>Object.entries(e).map(([e,t])=>[Number(e),t]).sort((e,t)=>e[0]-t[0]);function Ai(e,t,n){let r=ki(e).filter(([,e])=>e>0);if(t<=0||r.length===0)return null;let i=Math.min(t-1,Math.max(0,Math.ceil(n/100*t)-1)),a=0;for(let[e,t]of r)if(a+=t,a>i+1e-9)return Ei(e);return Ei(r[r.length-1][0])}function ji(e){let t=ki(e).filter(([,e])=>e>1e-9);return t.length?Ei(t[t.length-1][0]):null}function Mi(e,t){let n=Ti(t),r=0;for(let[t,i]of Object.entries(e))Number(t)<=n&&(r+=i);return r}var Ni=[`error_rate`,`p95_ms`,`requests`],Pi=e=>typeof e==`string`&&Ni.includes(e),Fi={high:2,medium:3,low:4},Ii=e=>typeof e==`string`&&Object.hasOwn(Fi,e),Li=Fi.medium;function Ri(e,t){return e===`requests`?t.n:t.n<=1e-9?null:e===`error_rate`?t.err/t.n*100:t.hist?Ai(t.hist,t.n,95):null}function zi(e){let t=e.reduce((e,t)=>e+t,0)/e.length,n=e.length>1?e.reduce((e,n)=>e+(n-t)**2,0)/(e.length-1):0;return{mean:t,sd:Math.sqrt(n)}}function Bi(e,t,n,r){if(e===`requests`)return Math.max(n,Math.sqrt(Math.max(t,1)),.1*t);if(e===`error_rate`){let e=Math.min(1,Math.max(0,t/100));return Math.max(n,100*Math.sqrt(e*(1-e)/Math.max(r.n,1)),.5)}return Math.max(n,.1*t,5)}function Vi(e,t){return e===`requests`?t.n>=10:e===`error_rate`?t.err>=5:t.n>=10}function Hi(e,t,n,r=Li){let i=Ri(e,t),a=n.map(t=>Ri(e,t)).filter(e=>e!==null);if(i===null||a.length<2)return null;let{mean:o,sd:s}=zi(a),c=o+r*Bi(e,o,s,t);return{value:i,normal:o,upper:c,above:Vi(e,t)&&i>c}}var Ui=e=>e.upper>0?e.value/e.upper:0,Wi=[`req`,`req.part`,`trace`,`ins`,`ins.ep`,`bn.layer`,`bn.owner`,`db`,`db.q`,`db.qd`,`db.qe`,`db.t`,`db.op`,`err`,`err.t`,`err.e`],O=(e=[],t={})=>({counters:e,ints:e.map((e,t)=>t),hist:!1,top:null,ids:0,...t}),Gi=[`dbCount`,`withInsights`,`insights`],Ki={trace:O([`slow`]),req:O(Gi,{hist:!0}),"req.dim":O(Gi),"req.svc":O([`dbCount`,`withInsights`,`primary`]),"req.part":O([],{hist:!0}),svc:O([],{hist:!0,top:`newest`}),"svc.ep":O([],{hist:!0,ids:20}),"ep.call":O(),"ep.q":O(),edge:O([],{top:`newest`,hist:!0}),"bn.layer":O([],{top:`newest`}),"bn.owner":O(),ins:O([`count`],{top:`newest`}),"ins.ep":O(),db:O([`slow`]),"db.q":O([`slow`],{top:`largest`,ids:20}),"db.qd":O([`slow`],{top:`largest`}),"db.qe":O(),"db.t":O([`withRows`,`rows`]),"db.op":O(),err:O([`critical`]),"err.g":O([`critical`],{top:`newest`,ids:50}),"err.ge":O(),"err.t":O(),"err.s":O(),"err.e":O(),log:O(),"log.s":O(),"log.p":O([],{top:`newest`}),pv:O(),"pv.route":O([],{top:`newest`,ids:20}),"pv.m":O(),"pv.large":O([],{hist:!0}),"pv.g":O([],{hist:!0}),react:O(),rc:O([`renders`,`actualMs`,`selfMs`,`wasted`,`context`],{ints:[0,3,4],top:`newest`}),"rc.route":O(),rel:O([],{hist:!0}),usr:O([],{hist:!0}),"err.u":O(),"ins.u":O(),"ep.u":O()},qi={...Ki,...Object.fromEntries(Wi.map(e=>[`${e}@svc`,Ki[e]]))},Ji={...Object.fromEntries(Wi.map(e=>[e,`${e}@svc`])),log:`log.s`};Object.keys(qi);var k=(...e)=>e.join(``),Yi=e=>e.split(``);function Xi(e,t){let n=Ji[e.kind];return n&&n!==`log.s`?[e,...[...new Set(t)].map(t=>({...e,kind:n,key:k(t,e.key)}))]:[e]}function Zi(e,t){let n=Number.parseInt(t.slice(0,13),16);return e+(Number.isFinite(n)?1-n/2**52:0)*1e-4}var A=(e,t,n,r={})=>({kind:e,key:t,timeMs:n,n:1,err:0,sum:0,...r}),Qi=()=>[,,,,,,].fill(0),$i=(e=!1)=>({n:0,err:0,sum:0,c:Qi(),hist:e?{}:null,firstMs:1/0,lastMs:-1/0,top:null,topRank:-1/0,ids:[]});function ea(e,t,n,r){if(r<=0)return;let i=n?[...t,...e.ids]:[...e.ids,...t];e.ids=[...new Set(i)].slice(0,r)}function ta(e,t,n,r){let i=t.timeMs>=e.lastMs;e.n+=t.n,e.err+=t.err,e.sum+=t.sum,t.c?.forEach((t,n)=>e.c[n]=(e.c[n]??0)+t),r.hist&&t.values?.length&&Oi(e.hist??={},Di(t.values)),e.firstMs=Math.min(e.firstMs,t.timeMs),e.lastMs=Math.max(e.lastMs,t.timeMs),r.top&&t.top&&t.top.rank>e.topRank&&Object.assign(e,{top:t.top.data,topRank:t.top.rank}),ea(e,[n],i,r.ids)}var j=e=>e.n?e.sum/e.n:null;function na(e,t){let n=t.times!==!1&&e.n>0;return{n:e.n,err:e.err,sum:e.sum,c:[...e.c],hist:t.hist&&e.hist?e.hist:null,firstMs:n?e.firstMs:0,lastMs:n?e.lastMs:0,top:t.top?e.top:null,topRank:t.top&&e.top!==null?e.topRank:0,ids:t.ids?e.ids:[]}}var M=(e,t,n,r={})=>({type:`groups`,id:e,kind:t,window:n,...r}),N=(e,t,n,r,i={})=>({type:`series`,id:e,kind:t,window:n,buckets:r,...i}),ra=(e,t,n,r={})=>({type:`list`,id:e,table:t,window:n,filter:{},sort:{key:`time`,desc:!0},...r});function ia(e){let t=new Set;return e.filter(e=>!t.has(`${e.type}:${e.id}`)&&!!t.add(`${e.type}:${e.id}`))}var P=(e,t)=>e.groups[t]?.rows??[],aa=(e,t)=>e.groups[t]?.total??0;function oa(e){let t=$i();for(let n of e)t.n+=n.n,t.err+=n.err,t.sum+=n.sum,n.c.forEach((e,n)=>t.c[n]=(t.c[n]??0)+e),n.hist&&Oi(t.hist??={},n.hist),t.firstMs=Math.min(t.firstMs,n.firstMs),t.lastMs=Math.max(t.lastMs,n.lastMs);return t}var sa=(e,t)=>oa(P(e,t).map(e=>e.agg)),ca=(e,t)=>new Map(P(e,t).map(e=>[e.key,e.agg]));function F(e,t,n,r=``){return e.series[t]?.byKey[r]??Array.from({length:n},()=>$i())}function I(e,t,n,r){let i=r.map(r=>F(e,t,n,r));return Array.from({length:n},(e,t)=>oa(i.map(e=>e[t])))}var la=e=>e.map(e=>e.n),ua=e=>e.map(j),da=(e,t)=>e.map(e=>e.c[t]??0),fa=(e,t)=>e.lists[t]??{items:[],total:0,page:1,pageSize:0},pa=(e,t)=>e<t?-1:+(e>t),ma=e=>(t,n)=>e(n)-e(t)||n.agg.lastMs-t.agg.lastMs||pa(t.key,n.key),ha=[`cur-1w`,`cur-2w`,`cur-3w`,`cur-4w`],ga=[`cur-1d`,`cur-2d`,`cur-3d`,`cur-4d`,`cur-5d`,`cur-6d`],_a=e=>e===`week`?ha:ga,va=e=>`probe.${String(e)}`,ya=()=>ha.map(e=>M(va(e),`trace`,e));function ba(e){return ha.filter(t=>sa(e,va(t)).n>0).length>=2?`week`:`day`}function xa(e,t,n){return{values:t.map((t,r)=>n[r]?.value??Ri(e,t)),normals:n.map(e=>e?.normal??null),uppers:n.map(e=>e?.upper??null)}}function Sa(e){let t=[];return e.forEach((e,n)=>{if(!e?.above)return;let r=t[t.length-1];r&&r.to===n-1?(r.to=n,Ui(e)>Ui(r.peak)&&(r.peak=e)):t.push({from:n,to:n,peak:e})}),t}function Ca(e,t,n){let r=t.length-1;return e===r||e===r-1&&!Vi(n,t[r])}function wa(e,t,n){let r=e.key.indexOf(``),i=r<0?e.key:e.key.slice(0,r),a=n.rowInfo(i);if(!a)return[];let o=e.cur.map((r,i)=>Hi(t,r,e.samples.map(e=>e[i]),n.spreads)),s=Sa(o);if(!s.length)return[];let c=xa(t,e.cur,o),l=r<0?null:e.key.slice(r+1);return s.map(r=>({id:`${t}|${e.key}|${n.starts[r.from]}`,metric:t,row:i,...a,endpoint:l,startMs:n.starts[r.from],endMs:n.starts[r.to]+n.bucketMs,ongoing:Ca(r.to,e.cur,t),peak:r.peak,series:c}))}function Ta(e,t){return e.flatMap(e=>Ni.flatMap(n=>wa(e,n,t))).sort((e,t)=>e.startMs-t.startMs||(e.id<t.id?-1:+(e.id>t.id)))}var Ea=e=>{let t=new Set(e.map(e=>`${e.from}\u0000${e.to}`));return{calls:(e,n)=>t.has(`${e}\u0000${n}`)}},Da=e=>new Set(e.anomalies.map(e=>e.name));function Oa(e,t){let n=Da(e),r=t.versions.filter(r=>r.isNew&&n.has(r.service)&&r.firstMs>=e.startMs-t.nearMs&&r.firstMs<e.startMs+t.bucketMs).sort((e,t)=>t.firstMs-e.firstMs||(e.version<t.version?-1:1))[0];return r?{kind:`release`,service:r.service,version:r.version,atMs:r.firstMs}:null}function ka(e,t){let n=Da(e),r=t.errors.filter(r=>r.isNew&&n.has(r.service)&&r.firstMs>=e.startMs-t.nearMs&&r.firstMs<e.endMs),i=t=>Math.abs(t.firstMs-e.startMs),a=r.sort((e,t)=>i(e)-i(t)||t.count-e.count||(e.key<t.key?-1:1))[0];return a?{kind:`error`,key:a.key,service:a.service,type:a.type,message:a.message,atMs:a.firstMs,count:a.count}:null}function Aa(e){let t=[...e.anomalies.filter(e=>e.kind===`database`&&e.endpoint!==null)].sort((e,t)=>Ui(t.peak)-Ui(e.peak))[0];return t?{kind:`query`,database:t.name,row:t.row,query:t.endpoint,metric:t.metric,value:t.peak.value,normal:t.peak.normal}:null}function ja(e,t){let n=[...Da(e)];if(n.length<2)return null;let r=n.filter(e=>n.some(n=>n!==e&&t.calls(n,e))&&!n.some(n=>n!==e&&t.calls(e,n))),i=e.anomalies.find(e=>r.includes(e.name));return i?{kind:`downstream`,service:i.name,row:i.row,serviceKind:i.kind}:null}var Ma={error_rate:`fails more than`,p95_ms:`is slower than`,requests:`runs more often than`};function Na(e){return e.kind===`release`?`${e.service} ${e.version} was released as it started.`:e.kind===`error`?`A new error in ${e.service}: ${e.type}: ${e.message}`:e.kind===`query`?`A query on ${e.database} ${Ma[e.metric]} normal: ${e.query}`:`${e.service}, further down the calls, is above normal too.`}function Pa(e,t){return[Oa(e,t),ka(e,t),Aa(e),ja(e,t.map)].filter(e=>e!==null)}var Fa=2e3,Ia={error_rate:`Error rate`,p95_ms:`p95 duration`,requests:`Traffic`},La=(e,t,n)=>e.name===t.name||n.calls(e.name,t.name)||n.calls(t.name,e.name);function Ra(e,t,n){let r=e.slice(0,Fa),i=r.map((e,t)=>t),a=e=>i[e]===e?e:i[e]=a(i[e]);for(let e=0;e<r.length;e++)for(let o=e+1;o<r.length&&r[o].startMs-r[e].startMs<=n;o++)La(r[e],r[o],t)&&(i[a(o)]=a(e));let o=new Map;return r.forEach((e,t)=>o.get(a(t))?.push(e)??o.set(a(t),[e])),[...o.values()]}function za(e){let t=2166136261;for(let n=0;n<e.length;n++)t=Math.imul(t^e.charCodeAt(n),16777619)>>>0;return t.toString(36)}function Ba(e){let t=new Map;for(let n of e)t.has(n.row)||t.set(n.row,{row:n.row,name:n.name,kind:n.kind});return[...t.values()]}function Va(e,t){return e?e.kind===`query`?e.database:e.service:t.name}function Ha(e,t,n){let r=e.filter(e=>e.name===t),i=[...r.length?r:e].sort((e,t)=>Ui(t.peak)-Ui(e.peak))[0],a=n>1?` and ${n-1} more`:``;return`${Ia[i.metric]} above normal on ${t}${a}`}function Ua(e,t){let n=e[0],r=n.startMs,i=Math.max(...e.map(e=>e.endMs)),a=Pa({startMs:r,endMs:i,anomalies:e},t),o=a[0]??null,s=Ba(e),c=new Set(s.map(e=>e.name)).size;return{id:za(`${n.row}|${n.metric}|${r}`),title:Ha(e,Va(o,n),c),metric:n.metric,startMs:r,endMs:i,ongoing:e.some(e=>e.ongoing),services:s,anomalies:[...e].sort((e,t)=>Ui(t.peak)-Ui(e.peak)||e.startMs-t.startMs).slice(0,20),anomalyCount:e.length,cause:o,causes:a}}function Wa(e,t){return Ra(e,t.map,t.nearMs).map(e=>Ua(e,t)).sort((e,t)=>Number(t.ongoing)-Number(e.ongoing)||t.startMs-e.startMs||(e.id<t.id?-1:1))}function Ga(e,t){let n=e.startMs,r={err:+!!e.error,sum:e.durationMs,c:[+(e.durationMs>=t)]},i={system:e.system,traceId:e.traceId,durationMs:e.durationMs},a=Zi(e.durationMs,e.traceId),o=[A(`db`,``,n,r),A(`db.q`,e.query,n,{...r,top:{rank:a,data:i}}),A(`db.qd`,k(e.operation,Fr(e.span),e.query),n,{...r,top:{rank:a,data:i}}),A(`db.qe`,k(e.query,e.endpoint),n),A(`db.op`,e.operation,n,{sum:e.durationMs})];return e.table!==null&&o.push(A(`db.t`,e.table,n,{sum:e.durationMs,c:[e.rows===null?0:1,e.rows??0]})),o.flatMap(t=>Xi(t,[gr(e.span.service)]))}var Ka=(e,t)=>mr([e]).flatMap(e=>Ga(e,t)),qa=8192,Ja=e=>e.stack&&e.stack.length>8192?{...e,stack:e.stack.slice(0,qa)}:e;function Ya(e,t){let n=e.timeMs,r={c:[+!!e.critical]};return[...t?[A(`err.u`,k(e.key,t),n)]:[],A(`err`,``,n,r),A(`err.g`,e.key,n,{...r,top:{rank:n,data:Ja(e)}}),A(`err.ge`,k(e.key,e.endpoint),n),A(`err.t`,e.type,n),A(`err.s`,e.service,n),A(`err.e`,e.endpoint,n)].flatMap(t=>Xi(t,[e.service]))}var Xa=(e,t=null)=>Tr([e]).flatMap(e=>Ya(e,t)),Za=e=>({pattern:ri(e.message),message:e.message.slice(0,500),category:e.category,traceId:e.traceId}),Qa=e=>e.flatMap(e=>[A(`log`,e.level,e.timeMs),A(`log.s`,k(e.service,e.level),e.timeMs),A(`log.p`,k(e.service,e.level,ai(e.message),Ct(e.traceId)?`o`:`r`),e.timeMs,{top:{rank:e.timeMs,data:Za(e)}})]),$a=(e,t)=>M(e,`rel`,`all`,{order:{by:`lastMs`,desc:!0,limit:50},...t?{filter:{parts:[t,null]}}:{}});function eo(e,t){return P(e,t).map(e=>{let[t=``,n=``]=Yi(e.key);return{service:t,version:n,firstMs:e.agg.firstMs,lastMs:e.agg.lastMs}}).sort((e,t)=>t.firstMs-e.firstMs||e.version.localeCompare(t.version))}function to(e,t,n,r){let i=r===null?null:{from:r,to:1/0};if(!n)return i;let a=eo(e,t),o=a.find(e=>e.version===n),s=o?{from:o.firstMs,to:ro(a,o)}:{from:1/0,to:1/0};return i=i?{from:Math.max(i.from,s.from),to:Math.min(i.to,s.to)}:s,i}var no=(e,t)=>t>=e.from&&t<e.to;function ro(e,t){let n=e.filter(e=>e.service===t.service&&e.firstMs>t.firstMs).map(e=>e.firstMs);return n.length?Math.min(...n):1/0}var io=[M(`meta.prev`,`trace`,`prev`),$a(`meta.rel`)],ao=e=>({range:e.range,window:e.window,prev:e.prev,compareLabel:xi(e.range,!!e.custom,e.compare??`previous`),hasPrev:sa(e,`meta.prev`).n>0,sampled:null,settling:e.settling??null,custom:!!e.custom,compare:e.compare??`previous`,releases:eo(e,`meta.rel`).filter(t=>t.firstMs>=e.window.from&&t.firstMs<e.window.to)}),oo=e=>e.service?.trim()||void 0,so=e=>e?{service:e}:{};function co(e,t,n,r,i){let a=Number(e[t]);return Number.isFinite(a)&&a>0?Math.min(i,Math.max(r,Math.floor(a))):n}var lo=(e,t)=>({page:co(e,`page`,1,1,1e6),size:co(e,`size`,t,5,5e3)}),uo=[`method`,`status`,`duration`,`service`,`q`,`endpoint`,`user`,`insights`],fo=[[``,`All Statuses`],[`2xx`,`2xx Success`],[`3xx`,`3xx Redirect`],[`4xx`,`4xx Client error`],[`5xx`,`5xx Server error`],[`failed`,`Failed (any error)`]],po={fast:[`Under 100 ms`,0,100],medium:[`100–500 ms`,100,500],slow:[`500 ms–1 s`,500,1e3],slowest:[`Over 1 s`,1e3,1/0]},mo=[[``,`Any Duration`],...Object.entries(po).map(([e,[t]])=>[e,t])],ho=new Set(fo.map(([e])=>e));function go(e){let t=t=>(e instanceof URLSearchParams?e.get(t):e[t])??``,n=ho.has(t(`status`))?t(`status`):``,r=Object.hasOwn(po,t(`duration`))?t(`duration`):``;return{method:t(`method`),status:n,duration:r,service:t(`service`),q:t(`q`),endpoint:t(`endpoint`),user:t(`user`),insights:t(`insights`)===`1`?`1`:``}}function _o(e,t){if(!t)return!0;if(t===`failed`)return e.errors>0||(e.status??0)>=500;let n=e.status??0,r=Number(t[0])*100;return n>=r&&n<r+100}function vo(e){let t=Object.hasOwn(po,e)?po[e]:void 0;return t?[t[1],t[2]]:null}function yo(e,t){let n=vo(t);return!n||e.durationMs>=n[0]&&e.durationMs<n[1]}function bo(e,t){if(!t)return!0;let n=t.toLowerCase(),r=[e.path,e.endpoint,e.user,e.requestId,e.clientAddress,...e.tags];return e.traceId.startsWith(n)||r.some(e=>e?.toLowerCase().includes(n))}function xo(e,t){return e.filter(e=>(!t.method||e.method===t.method)&&(!t.service||e.service===t.service||e.services.includes(t.service))&&_o(e,t.status)&&yo(e,t.duration)&&(!t.endpoint||e.endpoint===t.endpoint)&&(!t.user||e.user===t.user)&&(!t.insights||e.insights>0)&&bo(e,t.q.trim()))}var So=e=>uo.some(t=>e[t]!==``),Co={time:e=>e.startMs,path:e=>e.path,method:e=>e.method,status:e=>e.status??0,duration:e=>e.durationMs,sql:e=>e.dbCount,fetch:e=>e.fetchMs,service:e=>e.service,insights:e=>e.insights,errors:e=>e.errors,db:e=>e.dbMs},wo=e=>!!e&&e in Co;function To(e,t){let n=Co[t.key],r=t.desc?-1:1;return[...e].sort((e,t)=>{let i=n(e),a=n(t);return(i<a?-1:+(i>a))*r})}var Eo=e=>({service:oo(e)??``,status:e.status===`error`||e.status===`ok`?e.status:``,duration:e.duration&&vo(e.duration)?e.duration:``,q:e.q?.trim()??``,sort:e.sort===`duration`?`duration`:`time`}),Do=e=>({...e.q?{q:e.q}:{},...e.service?{service:_r(e.service)}:{},...e.status?{status:e.status}:{},...e.duration?{duration:e.duration}:{}});function Oo(e,t){if(t.service&&!e.services.includes(t.service)||t.status===`error`&&e.status!==`error`||t.status===`ok`&&e.status===`error`)return!1;let n=t.duration?vo(t.duration):null;return!n||e.durationMs>=n[0]&&e.durationMs<n[1]}var ko=e=>({route:`rr.${e}.route`,m:`rr.${e}.m`,large:`rr.${e}.large`,rc:`rc.${e}`,rcRoute:`rc.${e}.route`,views:`pv.${e}`});function Ao(e){let t=ko(e);return[M(t.route,`pv.route`,e,{top:!0}),M(t.m,`pv.m`,e),M(t.large,`pv.large`,e,{hist:!0})]}function jo(e){let t=ko(e);return[M(t.rc,`rc`,e,{top:!0}),M(t.rcRoute,`rc.route`,e),M(t.views,`pv`,e)]}var Mo=(e,t)=>sa(e,ko(t).views).n,No=e=>e.top?.traceId??``;function Po(e,t,n,r){let i=t=>n.get(k(e,t)),a=e=>{let t=i(e);return t?j(t):null},o=r.get(e)?.hist,s={avgRenderMs:a(`render`),avgSsrMs:a(`ssr`),avgLcpMs:a(`lcp`),avgCls:a(`cls`),largeImages:Math.max(0,Math.round((o&&ji(o))??0)),avgSsrRenderMs:a(`ssrRender`)};return{route:e,views:t.n,...s,avgHydrationMs:a(`hydration`),...Yn(s),totalRenderMs:i(`render`)?.sum??0,lastSeenMs:t.lastMs,exampleTraceId:No(t)}}function Fo(e,t){let n=ko(t),r=ca(e,n.m),i=ca(e,n.large);return[...P(e,n.route)].sort(ma(e=>e.agg.n)).map(e=>Po(e.key,e.agg,r,i))}function Io(e,t){let n=new Map;for(let{key:r}of P(e,t)){let[e=``,t=``]=Yi(r);n.set(e,[...n.get(e)??[],t])}return n}function Lo(e,t){let n=ko(t),r=P(e,n.rc),i=Io(e,n.rcRoute),a=Mo(e,t),o=r.reduce((e,t)=>e+(t.agg.c[2]??0),0);return r.map(({key:e,agg:t})=>{let[n=0,r=0,s=0,c=0,l=0]=t.c;return{name:e,renders:n,avgMs:n>0?r/n:0,selfMs:s,totalMs:r,wasted:c,context:l,impact:Gn(s,o),issues:Wn({renders:n,selfMs:s,wasted:c,context:l},a),routes:[...i.get(e)??[]].sort(),lastSeenMs:t.lastMs,exampleTraceId:No(t)}}).sort((e,t)=>t.selfMs-e.selfMs||t.renders-e.renders||t.lastSeenMs-e.lastSeenMs)}var Ro=e=>({ins:`ig.${e}.ins`,ep:`ig.${e}.ins.ep`});function zo(e,t=`all`,n){let r=Ro(e),i=n?{service:n}:{},a=[M(r.ins,`ins`,e,{top:!0,...i}),M(r.ep,`ins.ep`,e,i)];return t===`all`&&(!n||n===`Web App`)?[...a,...Ao(e),...jo(e)]:a}function Bo(e,t){let n=new Map;for(let{key:r}of[...P(e,t)].sort(ma(e=>e.agg.lastMs))){let[e=``,t=``]=Yi(r);n.set(e,[...n.get(e)??[],t])}return n}function Vo(e,t,n){let r=t.top;return ir(e,{kind:r.kind,shape:r.shape,occurrences:t.n,count:t.c[0]??0,totalMs:t.sum,lastSeenMs:t.lastMs,exampleTraceId:r.traceId,endpoints:n.length?n:[r.endpoint]})}function Ho(e,t){let n=Ro(t),r=Bo(e,n.ep);return[...P(e,n.ins)].sort(ma(e=>e.agg.lastMs)).map(e=>Vo(e.key,e.agg,r.get(e.key)??[]))}function Uo(e,t,n=`all`){let r=Ho(e,t);if(n===`requests`)return r.sort(or);let i=Fo(e,t).filter(e=>e.issue!==`none`).map(Zn),a=Lo(e,t).filter(e=>e.issues.length>0).map(Qn);return[...r,...i,...a].sort(or)}var Wo=24,Go=15,Ko=25,L=8;function qo(e){let t=e.rootUrl??e.rootName;if(!/^https?:\/\//.test(t))return t;let n=new URL(t);return n.pathname+n.search}var Jo=e=>({traceId:e.traceId,startMs:e.startMs,path:qo(e),durationMs:ti(e),health:Nn(e)?.health??null,status:e.status,services:e.services}),Yo=({traceId:e,startMs:t,path:n,durationMs:r,health:i,status:a,services:o})=>({traceId:e,startMs:t,path:n,durationMs:r,health:i,status:a,services:o});function Xo(e,t){return{count:e.n,avgSpans:j(e),slow:e.c[0]??0,series:{count:la(t),avgSpans:ua(t),slow:da(t,0)}}}function Zo(e,t){let n=e.reduce((e,t)=>e+t.agg.sum,0);return[...e].sort(ma(e=>e.agg.sum)).slice(0,L).map(({key:e,agg:r})=>{let i=r.top,a=n?r.sum/n*100:0;return{key:e,label:t===`layer`?i?.label??e:e,kind:t===`layer`?i?.kind??`service`:`owner`,totalMs:r.sum,share:a}})}function Qo(e){let t=sa(e,`meta.prev`).n>0;return{cur:Xo(sa(e,`t.cur`),F(e,`t.series`,Wo)),prev:Xo(sa(e,`t.prev`),F(e,`t.prevSeries`,Wo)),insights:Uo(e,`cur`).length,prevInsights:t?Uo(e,`prev`).length:null,insightSeries:da(F(e,`ins.series`,Wo),2)}}var $o=e=>({type:`trace`,id:`selected`,traceId:e,windows:[`cur`,`prev`]}),es={needs:e=>{let t=e.searchIds?{...Eo(e.params),q:``}:Eo(e.params),n=t.service||void 0,r=so(n);return ia([...io,M(`t.cur`,`trace`,`cur`,r),M(`t.prev`,`trace`,`prev`,r),N(`t.series`,`trace`,`cur`,Wo,r),N(`t.prevSeries`,`trace`,`prev`,Wo,r),...zo(`cur`,`all`,n),...zo(`prev`,`all`,n),N(`ins.series`,`req`,`cur`,Wo,r),ra(`recent`,`traces`,`cur`,{filter:{...Do(t),...e.searchIds?{traceIds:e.searchIds}:{}},sort:{key:t.sort,desc:!0},page:lo(e.params,Go)}),M(`bn.layer`,`bn.layer`,`cur`,{top:!0,...r}),M(`bn.owner`,`bn.owner`,`cur`,r),ra(`critical`,`critical`,`cur`,{filter:n?{service:_r(n)}:{},sort:{key:`duration`,desc:!0},limit:Ko}),...e.params.trace?[$o(e.params.trace)]:[]])},followUp:(e,t)=>e.params.trace?[]:[$o(fa(t,`recent`).items[0]?.traceId??null)],model(e){let t=fa(e,`recent`);return{meta:ao(e),cards:Qo(e),recent:t.items.map(Yo),matching:t.total??t.items.length,filter:Eo(e.params),page:t.page,size:t.pageSize,bottlenecks:{layer:Zo(P(e,`bn.layer`),`layer`),service:Zo(P(e,`bn.owner`),`service`)},critical:fa(e,`critical`).items,selected:e.traces.selected??null}}};function ts(e){let{findings:t,...n}=e;return n}var ns=e=>({...Jo(e),startMs:e.startMs,spanCount:e.spanCount,slow:ti(e)>=500}),rs=e=>li([e]),is=(e,t)=>ei([e],t),as=[`render`,`ssr`,`hydration`,`lcp`,`cls`,`ssrRender`],os=[`render`,`ssr`,`client`,`hydration`,`image`,`cls`],ss={render:e=>e.renderMs,ssr:e=>e.ssrMs,hydration:e=>e.hydrationMs,lcp:e=>e.lcpMs,cls:e=>e.cls,ssrRender:e=>e.ssrMs===null?null:e.renderMs},cs={render:e=>e.renderMs,ssr:e=>e.ssrMs,client:e=>e.clientRenderMs,hydration:e=>e.hydrationMs,image:e=>e.imageMs,cls:e=>e.cls};function ls(e){let t=e.startMs,n=[A(`pv`,``,t),A(`pv.route`,e.route,t,{top:{rank:t,data:{traceId:e.traceId}}})];for(let r of as){let i=ss[r](e);i!==null&&n.push(A(`pv.m`,k(e.route,r),t,{sum:i}))}e.largeImages!==null&&n.push(A(`pv.large`,e.route,t,{sum:e.largeImages,values:[e.largeImages]}));for(let r of os){let i=cs[r](e);i!==null&&n.push(A(`pv.g`,r,t,{sum:i,values:[i]}))}return n}function us(e){let t=e.startMs,n=e.attributes[at],r=[A(`react`,``,t)];for(let i of Un(e))r.push(A(`rc`,i.name,t,{c:[i.renders,i.actualMs,i.selfMs,i.wasted,i.context],top:{rank:t,data:{traceId:e.traceId}}})),typeof n==`string`&&n&&r.push(A(`rc.route`,k(i.name,n),t));return r}function ds(e){return e.spans.flatMap(e=>{let t=ct(e);return t===`pageview`?ls(qn(e)):t===`react`?us(e):[]})}function fs(e){let t=e??0;return t>=100&&t<600?`${Math.floor(t/100)}xx`:`none`}function ps(e){return e>=0?e<100?`fast`:e<500?`medium`:e<1e3?`slow`:`slowest`:`none`}var ms=e=>[e.method,fs(e.status),Ln(e)?`1`:`0`,ps(e.durationMs)],hs=[{key:`request`,pick:e=>e.durationMs},{key:`server`,pick:e=>e.serverMs},{key:`database`,pick:e=>e.serverMs===null?null:e.dbMs},{key:`render`,pick:e=>e.renderMs},{key:`network`,pick:e=>e.networkMs}],gs=(e,t)=>`${e}|${t}`;function _s(e){return rr(e).flatMap(t=>{let n=gs(t.kind,t.shape),r={kind:t.kind,shape:t.shape,endpoint:t.endpoint,traceId:t.traceId,startMs:t.startMs};return[A(`ins`,n,e.startMs,{sum:t.totalMs,c:[t.count],top:{rank:e.startMs,data:r}}),A(`ins.ep`,k(n,t.endpoint),e.startMs),...e.user?[A(`ins.u`,k(n,e.user),e.startMs)]:[]]})}function vs(e){return hs.flatMap(t=>{let n=t.pick(e);return n===null?[]:[A(`req.part`,t.key,e.startMs,{sum:n,values:[n]})]})}function ys(e,t){return e.user?[A(`usr`,e.user,e.startMs,{...t,values:[e.durationMs]}),A(`ep.u`,k(gr(e.service),e.endpoint,e.user),e.startMs)]:[]}function bs(e){let t=e.startMs,n=ms(e),r={err:+!!Ln(e),sum:e.durationMs},i=+(e.insights>0),a=[A(`req`,``,t,{...r,c:[e.dbCount,i,e.insights],values:[e.durationMs]}),A(`req.dim`,k(...n),t,{...r,c:[e.dbCount,i,e.insights]})];for(let o of new Set([e.service,...e.services]))a.push(A(`req.svc`,k(o,...n),t,{...r,c:[e.dbCount,i,+(o===e.service)]}));let o=[e.service,...e.services].map(gr);return[...a,...vs(e),..._s(e),...ys(e,r)].flatMap(e=>Xi(e,o))}function xs(e,t){if(t===`database`)return Fe(qt(e));if(t===`external`)return dn(e);let n=e.attributes[`http.route`],r=e.attributes[`http.request.method`];return typeof n==`string`&&typeof r==`string`?`${r} ${n}`:e.name}var Ss=e=>k(e,``);function Cs(e,t){let n=Ss(t);return e.map(({key:e,agg:t})=>({name:e.slice(n.length),count:t.n,avgMs:j(t),errors:t.err}))}function ws(e,t){return{incoming:e.filter(e=>e.to===t),outgoing:e.filter(e=>e.from===t)}}var Ts=(e,t)=>t?e.find(e=>e.key===t)??e.find(e=>e.name===t)??null:null;function Es(e,t){for(let n=e;n;n=n.parentSpanId?t.get(n.parentSpanId):void 0)if(n.category===`http.server`)return n.service===e.service?n:null;return null}var Ds=e=>k(`api:${e.service}`,xs(e,`api`));function Os(e){let t=new Map(e.spans.map(e=>[e.spanId,e])),n=(e,n,r)=>{let i=Es(e,t);return i?[A(n,k(Ds(i),r),e.startMs,{err:+!!Nr(e),sum:e.durationMs})]:[]},r=Br(e).flatMap(({to:e,span:t})=>t.category===`browser`?[]:n(t,`ep.call`,e)),i=e.spans.filter(e=>e.category===`db`).flatMap(e=>n(e,`ep.q`,Fe(qt(e))));return[...r,...i]}function ks(e){let t=new Map(e.spans.map(e=>[e.spanId,e]));return e.spans.flatMap(e=>{let n=Nt(e),r=e.parentSpanId?t.get(e.parentSpanId):void 0;return!n||r&&r.service===e.service?[]:[A(`rel`,k(gr(e.service),n),e.startMs,{err:+!!Nr(e),sum:e.durationMs,values:[e.durationMs]})]})}var As=(e,t)=>e.attributes[t]==null?null:String(e.attributes[t]);function js(e,t){return e.category===`http.server`?{key:`api:${e.service}`,name:e.service,kind:`api`,detail:null}:ct(e)===`fetch`?{key:`web:browser`,name:`Web App`,kind:`web`,detail:`browser`}:e.category===`db`?{key:`db:${Fr(e)}`,name:Fr(e),kind:`database`,detail:As(e,`db.system.name`)}:t.has(e)?{key:`ext:${Lr(e)}`,name:Lr(e),kind:`external`,detail:Lr(e)}:Dr(e)?{key:`queue:${kr(e)}`,name:kr(e),kind:`queue`,detail:kr(e)}:Or(e)?{key:`worker:${e.service}`,name:e.service,kind:`worker`,detail:null}:null}var Ms=new Set([`api`,`web`,`database`,`external`]);function Ns(e){let t=new Set(Ir(e));return e.spans.flatMap(e=>{let n=js(e,t);if(!n)return[];let{key:r,...i}=n,a={err:+!!Nr(e),sum:e.durationMs},o=[A(`svc`,r,e.startMs,{...a,values:[e.durationMs],top:{rank:e.startMs,data:i}})];return Ms.has(n.kind)&&o.push(A(`svc.ep`,k(r,xs(e,n.kind)),e.startMs,{...a,values:[e.durationMs]})),o})}function Ps(e){return Br(e).map(({from:e,to:t,span:n})=>A(`edge`,k(e,t),n.startMs,{err:+!!Nr(n),sum:n.durationMs,values:[n.durationMs],top:{rank:n.startMs,data:{from:e,to:t}}}))}var Fs=e=>[...new Set(e.spans.map(e=>gr(e.service)))];function Is(e){let t=Zr(e).filter(e=>e.kind!==`browser`&&e.ms>0&&!e.key.startsWith(`page:`)),n=e.startMs,r=Fs(e);return t.flatMap(e=>[A(`bn.layer`,e.key,n,{sum:e.ms,top:{rank:n,data:{label:e.label,kind:e.kind}}}),A(`bn.owner`,e.owner,n,{sum:e.ms})]).flatMap(e=>Xi(e,r))}var Ls=e=>[...Ns(e),...Ps(e),...Is(e)],Rs=yn.slowQueryMs,zs={slowQueryMs:Rs,nPlusOneThreshold:yn.nPlusOneThreshold,criticalPerTrace:5};function Bs(e){return Xi(A(`trace`,``,e.startMs,{sum:e.spanCount,c:[+(ti(e)>=500)]}),Fs(e))}function Vs(e,t){let n=Fn(e,t),r=rs(e),i=Ct(e.traceId),a=[...i?[]:Bs(e),...n?bs(n):[],...Ls(e),...Os(e),...Ka(e,t.slowQueryMs),...Xa(e,n?.user??null),...Qa(r),...ds(e),...ks(e)];return{traceId:e.traceId,startMs:e.startMs,request:n?ts(n):null,trace:i?null:ns(e),logs:r,critical:is(e,t.criticalPerTrace),contributions:a}}var Hs=new WeakMap;function Us(e,t={}){let n={...zs,...t},r=`${n.slowQueryMs}|${n.nPlusOneThreshold}|${n.criticalPerTrace}`,i=Hs.get(e);i||Hs.set(e,i=new Map);let a=i.get(r);if(a)return a;let o=Vs(e,n);return i.set(r,o),o}function Ws(e,t){return{prefix:k(e,t?.prefix??``),...t?.keys?{keys:t.keys.map(t=>k(e,t))}:{},...t?.parts?{parts:[e,...t.parts]}:{}}}function Gs(e){if(e.type!==`groups`&&e.type!==`series`||e.service===void 0)return e;let t=Ji[e.kind];if(!t)throw Error(`${e.kind} has no per-service kind`);let{service:n,...r}=e;return{...r,kind:t,filter:Ws(n,e.filter)}}var Ks=e=>{let t=k(e,``);return e=>e.startsWith(t)?e.slice(t.length):e};function qs(e,t){let n={...e.groups},r={...e.series};for(let e of t){if(e.type===`groups`&&e.service!==void 0&&n[e.id]){let t=Ks(e.service);n[e.id]={...n[e.id],rows:n[e.id].rows.map(e=>({...e,key:t(e.key)}))}}if(e.type===`series`&&e.service!==void 0&&r[e.id]){let t=Ks(e.service);r[e.id]={byKey:Object.fromEntries(Object.entries(r[e.id].byKey).map(([n,r])=>[e.split?t(n):n,r]))}}}return{...e,groups:n,series:r}}var Js=[{name:`10s`,ms:1e4,keepMs:222e5,table:`rollup_10s`,hist:`hist_10s`},{name:`5m`,ms:3e5,keepMs:18e7,table:`rollup_5m`,hist:`hist_5m`},{name:`1h`,ms:36e5,keepMs:null,table:`rollup_1h`,hist:`hist_1h`}],Ys=(e,t)=>e.keepMs??t,Xs=(e,t,n)=>t-n-e.ms;function Zs(e,t,n,r){return Math.floor(t/e.ms)*e.ms>Xs(e,n,Ys(e,r))}function Qs(e,t){let n=Js.find(n=>Zs(n,e.from,t,1/0))??Js[Js.length-1];return{from:Math.floor(e.from/n.ms)*n.ms,to:e.to}}var $s=(e,t,n)=>({tier:e,from:t,to:t+e.ms,weight:n/e.ms});function ec(e,t,n,r){if(e>=t)return[];let i=Js[n-1];if(i&&Zs(i,e,r.now,r.retentionMs))return tc(e,t,n-1,r);let a=Js[n];return[$s(a,Math.floor(e/a.ms)*a.ms,t-e)]}function tc(e,t,n,r){let i=Js[n],a=Math.ceil(e/i.ms)*i.ms,o=Math.floor(t/i.ms)*i.ms;if(a>o)return ec(e,t,n,r);let s=a<o?[{tier:i,from:a,to:o,weight:1}]:[];return[...ec(e,a,n,r),...s,...ec(o,t,n,r)]}function nc(e,t){let n=n=>Zs(n,e.from,t.now,t.retentionMs),r=Js.map((t,r)=>t.ms<=(e.to-e.from)/24&&n(t)?r:-1).filter(e=>e>=0);if(r.length)return r[r.length-1];let i=Js.findIndex(n);return i>=0?i:Js.length-1}function rc(e,t,n){return e.to<=e.from?[]:tc(e.from,e.to,nc(e,{now:t,retentionMs:n}),{now:t,retentionMs:n})}function ic(e,t,n,r){let i=(e.to-e.from)/t,a=Js.filter(t=>Zs(t,e.from,n,r)),o=a.length?a:[Js[Js.length-1]],s=o.filter(e=>e.ms*4<=i),c=s.length?s[s.length-1]:o[0];return{tier:c,mode:i/c.ms>=8?`sql`:`split`}}function ac(e,t,n,r){let i=(n.to-n.from)/r,a=[],o=Math.max(e,n.from),s=Math.min(e+t,n.to);for(let e=Math.max(0,Math.floor((o-n.from)/i));e<r&&n.from+e*i<s;e++){let r=Math.min(s,n.from+(e+1)*i)-Math.max(o,n.from+e*i);r>0&&a.push({index:e,share:r/t})}return a}function oc(e,t,n,r={slowQueryMs:Rs},i=null){let a=_i(n,t),o=Qs(a??me(e,t),t),s=yi(n);return{range:a?gi(a.to-a.from):e,window:o,prev:bi(o,s),now:t,params:n,options:r,settling:i,custom:!!a,compare:s}}function sc(e,t){return{groups:{...e.groups,...t.groups},series:{...e.series,...t.series},lists:{...e.lists,...t.lists},traces:{...e.traces,...t.traces}}}var cc=(e,t,n)=>qs(e.runSync(t.map(Gs),n),t);function lc(e,t,n){let r=cc(n,e.needs(t),t),i=e.followUp?.(t,r)??[],a=i.length?sc(r,cc(n,i,t)):r;return e.model({...t,...a})}var uc={needs:()=>[M(`err`,`err`,`cur`)],model:e=>({errors:sa(e,`err`).n})},dc={avg:`avg`,count:`n`,total:`sum`},fc=e=>!!e&&Object.hasOwn(dc,e),pc=e=>({service:oo(e)??``,q:e.q?.trim()??``,table:e.table?.trim()??``,operation:e.operation?.trim().toUpperCase()??``,database:e.database?.trim()??``,sort:fc(e.sort)?e.sort:`avg`}),mc=e=>!!(e.operation||e.database);function hc(e,t){let{page:n,size:r}=lo(t,15),i=[e.q,e.table].filter(Boolean),a={...mc(e)?{parts:[e.operation||null,e.database||null,null]}:{},...i.length?{contains:i}:{}},o={by:dc[e.sort],desc:!0,limit:r,offset:(n-1)*r};return M(`db.q`,mc(e)?`db.qd`:`db.q`,`cur`,{top:!0,filter:a,order:o,...so(e.service||void 0)})}var gc=e=>Yi(e).at(-1),_c=e=>({queries:e.n,avgMs:j(e),slow:e.c[0]??0,totalMs:e.sum}),vc=e=>({total:la(e),slow:da(e,0),avg:ua(e)});function yc(e){let t=new Map;for(let{key:n}of[...e].sort(ma(e=>e.agg.n))){let[e=``,r=``]=Yi(n);t.set(e,[...t.get(e)??[],r])}return t}function bc(e){let t=yc(P(e,`db.qe`));return P(e,`db.q`).map(({key:e,agg:n})=>{let r=n.top,i=gc(e);return{key:e,query:i,count:n.n,avgMs:n.sum/n.n,maxMs:r.durationMs,totalMs:n.sum,slow:n.c[0]??0,errors:n.err,endpoints:t.get(i)??[],system:r.system,exampleTraceId:r.traceId}})}function xc(e){return P(e,`db.t`).map(({key:e,agg:t})=>({table:e,queries:t.n,avgMs:t.sum/t.n,totalMs:t.sum,rows:(t.c[0]??0)>0?t.c[1]??0:null}))}function Sc(e){let t=ca(e,`db.op`);return cr.map(e=>{let n=t.get(e);return{operation:e,count:n?.n??0,avgMs:n?j(n):null,totalMs:n?.sum??0}})}function Cc(e,t,n){let r=_c(sa(e,`db.prev`)),i=r.queries>0,a=Uo(e,`prev`,`requests`).filter(e=>e.area===`database`).length;return{queries:i?le(t.queries,r.queries):null,avgMs:le(t.avgMs,r.avgMs),slow:i?le(t.slow,r.slow):null,insights:i?le(n,a):null}}var wc={order:{by:`n`,desc:!0,limit:200}},Tc={needs:e=>{let t=pc(e.params),n=t.service||void 0,r=so(n);return ia([...io,M(`db.cur`,`db`,`cur`,r),M(`db.prev`,`db`,`prev`,r),...zo(`cur`,`requests`,n),...zo(`prev`,`requests`,n),hc(t,e.params),M(`db.qe`,`db.qe`,`cur`,r),M(`db.t`,`db.t`,`cur`,{...wc,...r}),M(`db.op`,`db.op`,`cur`,r),M(`dbs`,`svc`,`cur`,{filter:{prefix:`db:`}}),N(`chart`,`db`,`cur`,48,r),N(`sparks`,`db`,`cur`,24,r)])},model(e){let t=_c(sa(e,`db.cur`)),n=Uo(e,`cur`,`requests`).filter(e=>e.area===`database`),r=vc(F(e,`sparks`,24));return{meta:ao(e),slowMs:e.options.slowQueryMs,summary:t,insights:n,queries:bc(e),queryShapes:aa(e,`db.q`),filter:pc(e.params),...lo(e.params,15),databases:P(e,`dbs`).map(e=>e.key.slice(3)).sort(),tables:xc(e),tableCount:aa(e,`db.t`),operations:Sc(e),starts:Ee(e.window,48),chart:vc(F(e,`chart`,48)),change:Cc(e,t,n.length),sparks:{queries:r.total,avgMs:r.avg,slow:r.slow}}}},Ec=e=>e===`unresolved`||e===`resolved`||e===`ignored`||e===`all`,Dc=e=>M(`life`,`err.g`,`all`,e?{filter:{prefix:`${e}|`}}:{}),Oc=e=>new Map(P(e,`life`).map(e=>[e.key,{firstMs:e.agg.firstMs,lastMs:e.agg.lastMs}])),kc=(e,t,n,r)=>jt(e[At(`error`,n)],t.get(n)?.lastMs??0,r);function Ac(e,t,n,r,i){let a=e.issues??{},o=Oc(t),s=Object.values(a).filter(e=>e.kind===`error`).map(e=>e.key),c=(t,n)=>n.includes(kc(a,o,t,e.now)),l=i?[...i]:void 0;(n===`resolved`||n===`ignored`)&&(l=(l??s).filter(e=>c(e,[n]))),r&&(l=(l??[...o.keys()]).filter(e=>no(r,o.get(e)?.firstMs??0)));let u=n===`unresolved`?s.filter(e=>c(e,[`resolved`,`ignored`])):[];return{...l?{keys:l}:{},...u.length?{exclude:u}:{}}}function jc(e,t){let n=e.issues??{},r=Oc(e);return Object.fromEntries(t.map(t=>{let i=r.get(t);return[t,{status:kc(n,r,t,e.now),firstSeenMs:i?.firstMs??0,isNew:(i?.firstMs??0)>=e.window.from,assignee:n[At(`error`,t)]?.assignee??null}]}))}var Mc=e=>({service:oo(e)??``,type:e.type?.trim()??``,endpoint:e.endpoint?.trim()??``,critical:e.critical===`1`,q:e.q?.trim()??``,sort:e.sort===`count`?`count`:`recent`,status:Ec(e.status)?e.status:`unresolved`,fresh:e.new===`1`,release:oo(e)?e.release?.trim()??``:``,user:e.user?.trim()??``}),Nc=e=>!!(e.service||e.type||e.endpoint||e.critical||e.q||e.fresh||e.release||e.user||e.status!==`unresolved`),Pc=e=>M(`ep.groups`,`err.ge`,`cur`,{filter:{parts:[null,e]}}),Fc=e=>P(e,`ep.groups`).map(e=>Yi(e.key)[0]);function Ic(e,t,n={}){let{page:r,size:i}=lo(t,15),a=[e.type?`|${e.type}|`:``,e.q].filter(Boolean);return M(`groups`,`err.g`,`cur`,{top:!0,ids:!0,filter:{...e.service?{prefix:`${e.service}|`}:{},...a.length?{contains:a}:{},...n},order:{by:e.sort===`count`?`n`:`lastMs`,desc:!0,limit:i,offset:(r-1)*i},...e.critical?{having:{by:`c0`,min:.5}}:{}})}var Lc=16,Rc=50,zc=50;function Bc(e){let t=new Map;for(let{key:n}of[...e].sort(ma(e=>e.agg.lastMs))){let[e=``,r=``]=Yi(n);t.set(e,[...t.get(e)??[],r])}return t}function Vc({key:e,agg:t},n=new Map){let r=t.top,{type:i,message:a,service:o,endpoint:s}=r,c=(n.get(e)??[]).slice(0,zc);return{key:e,type:i,message:a,service:o,endpoint:s,count:t.n,firstSeenMs:t.firstMs,lastSeenMs:t.lastMs,critical:(t.c[0]??0)>0,latest:r,endpoints:c,traceIds:t.ids.slice(0,zc)}}function Hc(e,t){let n=sa(e,`req.${t}`);return{exceptions:sa(e,`err.${t}`).n,errorRate:we(n.err,n.n),endpoints:aa(e,`err.e.${t}`),critical:P(e,`err.g.${t}`).filter(e=>(e.agg.c[0]??0)>0).length}}function Uc(e){let t=ca(e,`err.s.cur`),n=ca(e,`err.s.prev`),r=new Map;for(let{key:t,agg:n}of P(e,`req.svc`)){let e=gr(Yi(t)[0]),i=r.get(e)??{n:0,err:0};r.set(e,{n:i.n+n.n,err:i.err+n.err})}return[...new Set([...t.keys(),...r.keys()])].map(i=>{let a=r.get(i)??{n:0,err:0},o=la(F(e,`trend`,Lc,i));return{service:i,exceptions:t.get(i)?.n??0,requests:a.n,errorRate:we(a.err,a.n),prevExceptions:n.get(i)?.n??0,trend:o}}).filter(e=>e.exceptions>0||e.requests>0).sort((e,t)=>t.exceptions-e.exceptions||t.requests-e.requests||(e.service<t.service?-1:1))}function Wc(e,t){let n=Hc(e,`prev`),r=sa(e,`meta.prev`).n>0,i=(e,t)=>r?le(e,t):null;return{exceptions:i(t.exceptions,n.exceptions),errorRate:i(t.errorRate,n.errorRate),endpoints:i(t.endpoints,n.endpoints),critical:i(t.critical,n.critical)}}var Gc=(e,t)=>[M(`req.${e}`,`req`,e,so(t)),M(`err.${e}`,`err`,e,so(t)),M(`err.g.${e}`,`err.g`,e,t?{filter:{prefix:`${t}|`}}:{}),M(`err.e.${e}`,`err.e`,e,{order:{by:`n`,desc:!0,limit:0},...so(t)}),M(`err.s.${e}`,`err.s`,e)];function Kc(e){let t=so(e);return[...io,...Gc(`cur`,e),...Gc(`prev`,e),M(`err.ge`,`err.ge`,`cur`,e?{filter:{prefix:`${e}|`}}:{}),M(`err.t`,`err.t`,`cur`,t),M(`endpoints`,`err.e`,`cur`,{order:{by:`n`,desc:!0,limit:Rc},...t}),M(`req.svc`,`req.svc`,`cur`),N(`trend`,`err.s`,`cur`,Lc,{split:!0}),N(`chart`,`err`,`cur`,48,t),N(`chart.prev`,`err`,`prev`,48,t),N(`sparks`,`err`,`cur`,24,t),N(`rate`,`req`,`cur`,24,t)]}function qc(e,t){let n=e.endpoint?Fc(t):void 0,r=e.user?P(t,`user.groups`).map(e=>Yi(e.key)[0]):void 0;return n&&r?n.filter(e=>r.includes(e)):n??r}var Jc=e=>e?[M(`selected`,`err.g`,`cur`,{top:!0,ids:!0,filter:{keys:[e]}})]:[],Yc={needs:e=>{let t=Mc(e.params),n=t.endpoint?[Pc(t.endpoint)]:[],r=t.service?[$a(`rel.svc`,t.service)]:[],i=t.user?[M(`user.groups`,`err.u`,`cur`,{filter:{parts:[null,t.user]},order:{by:`n`,desc:!0,limit:5e3}})]:[];return ia([...Jc(e.params.group),...Kc(t.service||void 0),Dc(t.service),...n,...r,...i])},followUp(e,t){let n=Mc(e.params),r=to(t,`rel.svc`,n.release,n.fresh?e.window.from:null);return[Ic(n,e.params,Ac(e,t,n.status,r,qc(n,t)))]},model(e){let t=Hc(e,`cur`),n=Bc(P(e,`err.ge`)),r=F(e,`chart`,48),i=F(e,`sparks`,24);return{meta:ao(e),hasRequests:sa(e,`req.cur`).n>0,exceptions:t.exceptions,filter:Mc(e.params),groups:P(e,`groups`).map(e=>Vc(e,n)),groupCount:aa(e,`groups`),...lo(e.params,15),endpoints:P(e,`endpoints`).map(e=>({endpoint:e.key,count:e.agg.n})),issues:jc(e,[...P(e,`groups`),...P(e,`selected`)].map(e=>e.key)),hasIssues:!!e.issues,releases:eo(e,`rel.svc`).map(e=>({version:e.version,firstMs:e.firstMs})),selected:P(e,`selected`).map(e=>Vc(e,n))[0]??null,types:[...P(e,`err.t`)].sort(ma(e=>e.agg.n)).map(e=>({type:e.key,count:e.agg.n})),services:Uc(e),starts:Ee(e.window,48),chart:{plain:r.map(e=>e.n-(e.c[0]??0)),critical:da(r,0),prev:la(F(e,`chart.prev`,48))},cards:t,change:Wc(e,t),sparks:{exceptions:la(i),errorRate:F(e,`rate`,24).map(e=>e.n?e.err/e.n*100:null),critical:da(i,0)}}}},Xc=10,Zc=(e,t,n)=>M(e,t,`cur`,{filter:{parts:[...n,null]},order:{by:`n`,desc:!0,limit:Xc}});function Qc(e,t){return{count:aa(e,t),top:P(e,t).map(e=>({user:Yi(e.key).at(-1),count:e.agg.n}))}}var $c=e=>({count:e.length,high:e.filter(e=>e.impact===`high`).length,totalMs:e.reduce((e,t)=>e+t.totalMs,0)});function el(e,t){if(t.area&&t.area!==`all`&&e.area!==t.area||t.endpoint&&!e.endpoints.includes(t.endpoint)||t.impact&&t.impact!==`all`&&e.impact!==t.impact)return!1;let n=(t.q??``).toLowerCase();return!n||`${e.title} ${e.description} ${e.shape} ${e.endpoints.join(` `)}`.toLowerCase().includes(n)}function tl(e,t){let n=e.issues??{},r=new Map(P(e,`ins.life`).map(e=>[e.key,e.agg.firstMs]));return Object.fromEntries(t.map(t=>{let i=r.get(t.key)??t.lastSeenMs,a=n[At(`insight`,t.key)];return[t.key,{status:jt(a,t.lastSeenMs,e.now),firstSeenMs:i,isNew:i>=e.window.from,assignee:a?.assignee??null}]}))}var nl={needs:e=>{let t=oo(e.params),n=M(`ins.life`,`ins`,`all`,t?{service:t}:{}),r=t?[$a(`rel.svc`,t)]:[],i=e.params.key?[Zc(`users`,`ins.u`,[e.params.key])]:[];return ia([...io,...zo(`cur`,`all`,t),...zo(`prev`,`all`,t),n,...r,...i])},model(e){let t=Uo(e,`cur`),n=Uo(e,`prev`),r=Ec(e.params.status)?e.params.status:`unresolved`,i=tl(e,t),a=e=>r===`all`||i[e.key].status===r||r===`unresolved`&&i[e.key].status===`regressed`,o=to(e,`rel.svc`,oo(e.params)?e.params.release??``:``,null),s=t.filter(t=>el(t,e.params)&&a(t)&&(!o||no(o,i[t.key].firstSeenMs)));return{meta:ao(e),totals:$c(t),prevTotals:$c(n),found:sr(t,n,e.window),groups:s.slice(0,200),matching:s.length,selected:e.params.key?t.find(t=>t.key===e.params.key)??null:null,issues:i,hasIssues:!!e.issues,releases:eo(e,`rel.svc`).map(e=>({version:e.version,firstMs:e.firstMs})),selectedUsers:e.params.key?Qc(e,`users`):null}}},rl=[{key:`info`,label:`Info and below`,levels:[`trace`,`debug`,`info`]},{key:`warn`,label:`Warnings`,levels:[`warn`]},{key:`error`,label:`Errors`,levels:[`error`,`critical`]}],il=e=>!!e&&oi.includes(e),al=e=>({minLevel:il(e.level)?e.level:`trace`,exact:e.exact===`1`&&il(e.level),service:e.service??``,category:e.category??``,traceId:e.trace??``,query:e.q??``,pattern:e.pattern??``,origin:e.origin===`request`||e.origin===`outside`?e.origin:``,user:e.user?.trim()??``}),ol=e=>({minLevel:e.minLevel,...e.exact?{exactLevel:!0}:{},...e.service?{logService:e.service}:{},...e.category?{category:e.category}:{},...e.traceId?{traceId:e.traceId}:{},...e.query?{q:e.query}:{},...e.pattern?{pattern:e.pattern}:{},...e.origin?{logOrigin:e.origin}:{}});function sl(e,t){let n=ca(e,t),r=e=>n.get(e)?.n??0;return{total:oi.reduce((e,t)=>e+r(t),0),warnings:r(`warn`),errors:r(`error`)+r(`critical`),critical:r(`critical`)}}function cl(e,t){let n=t.total>0,r=(e,t)=>n?le(e,t):null;return{total:r(e.total,t.total),warnings:r(e.warnings,t.warnings),errors:r(e.errors,t.errors),critical:r(e.critical,t.critical)}}var ll=1e3,ul=(e,t,n)=>ra(`rows`,`logs`,`cur`,{filter:n?{...ol({...t,query:e.searchIds?``:t.query}),traceIds:n}:ol(t),page:lo(e.params,30)}),dl={needs:e=>{let t=al(e.params),n=so(t.service||void 0);return ia([...io,M(`log.cur`,`log`,`cur`,n),M(`log.prev`,`log`,`prev`,n),M(`log.s`,`log.s`,`cur`),...t.user?[ra(`user.traces`,`requests`,`cur`,{filter:{user:t.user},limit:ll})]:[ul(e,t,e.searchIds)],N(`volume`,`log`,`cur`,48,{split:!0,...n}),N(`sparks`,`log`,`cur`,24,{split:!0,...n})])},followUp(e,t){let n=al(e.params);if(!n.user)return[];let r=fa(t,`user.traces`).items.map(e=>e.traceId);return[ul(e,n,e.searchIds?r.filter(t=>e.searchIds.includes(t)):r)]},model(e){let t=sl(e,`log.cur`),n=fa(e,`rows`),r=t=>la(I(e,`sparks`,24,t));return{meta:ao(e),filter:al(e.params),totalLines:t.total,services:[...new Set(P(e,`log.s`).map(e=>Yi(e.key)[0]))].sort(),rows:n.items,matching:n.total??n.items.length,page:n.page,pageSize:n.pageSize,starts:Ee(e.window,48),volume:Object.fromEntries(rl.map(t=>[t.key,la(I(e,`volume`,48,t.levels))])),cards:t,change:cl(t,sl(e,`log.prev`)),sparks:{total:r(oi),warnings:r([`warn`]),errors:r([`error`,`critical`]),critical:r([`critical`])}}}},fl=(e,t)=>fa(e,t).total??0,pl={needs:e=>{let t=ol(al(e.params));return ia([...io,ra(`cur`,`logs`,`cur`,{filter:t,limit:0,count:!0,aggregate:{buckets:48}}),ra(`prev`,`logs`,`prev`,{filter:t,limit:0,count:!0})])},model(e){let t=fa(e,`cur`).aggregate?.series??[],n=fl(e,`cur`),r=fl(e,`prev`);return{meta:ao(e),starts:Ee(e.window,48),lines:t.map(e=>e.n),errors:t.map(e=>e.err),total:n,errorTotal:fa(e,`cur`).aggregate?.total.err??0,change:r>0?le(n,r):null}}};function ml(e,t){let n=al(e.params),r=ui(n.minLevel);return P(t,`pat`).flatMap(e=>{let[t=``,i=`info`,a=``,o=`r`]=Yi(e.key),s=ui(i),c=!n.origin||n.origin===`outside`==(o===`o`);return(n.exact?s===r:s>=r)&&(!n.pattern||a===n.pattern)&&c&&e.agg.n>0?[{key:e.key,service:t,level:i,id:a,n:e.agg.n}]:[]})}function hl(e){let t=new Map;for(let n of e){let e=t.get(n.id)??{id:n.id,n:0,keys:[]};e.n+=n.n,e.keys.push(n),t.set(n.id,e)}return[...t.values()].sort((e,t)=>t.n-e.n||(e.id<t.id?-1:1))}var gl=e=>{let t=al(e.params).service;return t?{parts:[t,null,null,null]}:void 0};function _l(e,t,n){let r=t.keys.map(e=>e.key),i=P(e,`pat.top`).filter(e=>r.includes(e.key)).sort((e,t)=>t.agg.topRank-e.agg.topRank)[0]?.agg.top??null,a=P(e,`pat.prev`).filter(e=>r.includes(e.key)).reduce((e,t)=>e+t.agg.n,0),o=t.keys.reduce((e,t)=>ui(t.level)>ui(e)?t.level:e,oi[0]);return{id:t.id,pattern:i?.pattern??``,sample:i?.message??``,category:i?.category??``,traceId:i?.traceId??``,count:t.n,change:a>0?le(t.n,a):null,share:n?t.n/n*100:0,level:o,services:[...new Set(t.keys.map(e=>e.service))].sort(),series:la(I(e,`pat.s`,24,r))}}var vl={needs:e=>ia([...io,M(`pat`,`log.p`,`cur`,{filter:gl(e)})]),followUp(e,t){let n=hl(ml(e,t)).slice(0,50).flatMap(e=>e.keys.map(e=>e.key));return n.length?[M(`pat.top`,`log.p`,`cur`,{top:!0,filter:{keys:n}}),M(`pat.prev`,`log.p`,`prev`,{filter:{keys:n}}),N(`pat.s`,`log.p`,`cur`,24,{split:!0,filter:{keys:n}})]:[]},model(e){let t=hl(ml(e,e)),n=t.reduce((e,t)=>e+t.n,0);return{meta:ao(e),total:t.length,lines:n,rows:t.slice(0,50).map(t=>_l(e,t,n))}}},yl=(e,t,n)=>({value:e,previous:t,change:le(e,t),series:n}),bl=e=>e.n?we(e.err,e.n):null;function xl(e,t,n){let r=t.n>0,i=e=>r?e:null;return{total:yl(e.n,i(t.n),la(n)),avgDuration:yl(j(e),i(j(t)),ua(n)),sqlQueries:yl(e.c[0]??0,i(t.c[0]??0),da(n,0)),errorRate:yl(bl(e),i(bl(t)),n.map(bl)),withInsights:yl(e.c[1]??0,i(t.c[1]??0),da(n,1))}}function Sl(e,t,n,r){let i={...n?{filter:n}:{},...r?{service:r}:{}};return[M(`${e}.cur`,t,`cur`,i),M(`${e}.prev`,t,`prev`,i),N(`${e}.series`,t,`cur`,24,i)]}var Cl=(e,t)=>xl(sa(e,`${t}.cur`),sa(e,`${t}.prev`),F(e,`${t}.series`,24)),wl=(e,t)=>e?.[t]??500;function Tl(e,t){if(!e.n||!e.hist)return{score:null,targetMs:t,satisfied:0,tolerating:0,frustrated:e.n};let n=(e.n-e.err)/e.n,r=Mi(e.hist,t)*n,i=(Mi(e.hist,4*t)-Mi(e.hist,t))*n;return{score:(r+i/2)/e.n,targetMs:t,satisfied:r,tolerating:i,frustrated:e.n-r-i}}function El(e){let t=e.reduce((e,t)=>e+t.satisfied+t.tolerating+t.frustrated,0);if(!t)return null;let n=t=>e.reduce((e,n)=>e+n[t],0),r=new Set(e.map(e=>e.targetMs));return{score:(n(`satisfied`)+n(`tolerating`)/2)/t,targetMs:r.size===1?e[0].targetMs:0,satisfied:n(`satisfied`),tolerating:n(`tolerating`),frustrated:n(`frustrated`)}}function Dl(e){return e>=.94?`Excellent`:e>=.85?`Good`:e>=.7?`Fair`:e>=.5?`Poor`:`Unacceptable`}var Ol=e=>M(`apdex`,`svc`,`cur`,{hist:!0,...e?{filter:{keys:[e]}}:{}});function kl(e){let t=new Map;for(let n of P(e,`apdex`)){let[r,...i]=n.key.split(`:`);if(r!==`api`&&r!==`worker`)continue;let a=gr(i.join(`:`));t.set(a,Tl(n.agg,wl(e.apdex,a)))}return t}var Al=e=>El([...kl(e).values()]),jl={api:0,web:1,database:2,external:3,queue:4,worker:5},Ml=e=>`svc.${e}`,Nl=`edge.cur`,Pl=e=>[M(Ml(e),`svc`,e,{hist:!0,top:!0})],Fl=()=>[M(Nl,`edge`,`cur`,{top:!0,hist:!0})];function Il({key:e,agg:t}){let n=t.top,r=we(t.err,t.n),i=t.hist?Ai(t.hist,t.n,95):null;return{key:e,name:n.name,kind:n.kind,status:Mr(t.n,r,i),requests:t.n,errors:t.err,errorRate:r,avgMs:j(t),p95Ms:i,detail:n.detail}}function Ll(e,t){let n=P(e,Ml(t)),r=new Set(n.filter(e=>e.key.startsWith(`api:`)).map(e=>e.key.slice(4)));return n.filter(e=>!(e.key.startsWith(`worker:`)&&r.has(e.key.slice(7)))).map(Il).sort((e,t)=>t.requests-e.requests||jl[e.kind]-jl[t.kind])}function Rl(e){return[...P(e,Nl)].sort(ma(e=>e.agg.n)).map(({agg:e})=>{let{from:t,to:n}=e.top;return{from:t,to:n,calls:e.n,avgMs:j(e),errors:e.err,p95Ms:e.hist?Ai(e.hist,e.n,95):null}})}var zl=[{key:`request`,label:`Request`,shade:100},{key:`server`,label:`Server`,shade:70},{key:`database`,label:`Database`,shade:55},{key:`render`,label:`Render`,shade:42},{key:`network`,label:`Network`,shade:30}],Bl=5,Vl=5,Hl=3,Ul=50,Wl=5;function Gl(e,t){let n=tl(e,t);return t.filter(e=>n[e.key].status===`unresolved`||n[e.key].status===`regressed`)}function Kl(e){let t=P(e,`err.recent`),n=jc(e,t.map(e=>e.key));return t.flatMap(e=>{let t=n[e.key],r=t.status===`regressed`?`regressed`:t.isNew&&t.status===`unresolved`?`new`:null;return r?[{group:Vc(e),why:r}]:[]}).slice(0,Wl)}function ql(e){let t=ca(e,`timing`);return zl.map(e=>{let n=t.get(e.key);return{key:e.key,label:e.label,avg:n?j(n):null,p95:n?.hist?Ai(n.hist,n.n,95):null,shade:e.shade}})}function Jl(e){let t=F(e,`activity`,48),n=la(F(e,`activity.prev`,48));return{starts:Ee(e.window,48),requests:la(t),errors:t.map(e=>e.err),avgDuration:ua(t),prevRequests:n}}function Yl(e,t){let n=Ll(e,`cur`);if(!t)return n;let r=new Set(Rl(e).filter(e=>e.from===t).map(e=>e.to));return n.filter(e=>e.name===t||r.has(e.name))}var Xl={needs:e=>{let t=oo(e.params),n=so(t);return ia([...io,...Sl(`h`,`req`,void 0,t),N(`activity`,`req`,`cur`,48,n),N(`activity.prev`,`req`,`prev`,48,n),M(`timing`,`req.part`,`cur`,{hist:!0,...n}),...Pl(`cur`),...t?Fl():[],ra(`recent`,`requests`,`cur`,{limit:Vl,filter:t?{service:_r(t)}:{}}),...zo(`cur`,`all`,t),...zo(`prev`,`all`,t),Dc(t??``),Ol(t?`api:${_r(t)}`:void 0),M(`err.recent`,`err.g`,`cur`,{top:!0,order:{by:`lastMs`,desc:!0,limit:Ul},...t?{filter:{prefix:`${t}|`}}:{}})])},model(e){let t=Uo(e,`cur`),n=Cl(e,`h`);return{meta:ao(e),empty:n.total.value===0,headlines:n,insightsFound:sr(t,Uo(e,`prev`),e.window),activity:Jl(e),timing:ql(e),services:Yl(e,oo(e.params)).slice(0,Bl),recent:fa(e,`recent`).items,insights:Gl(e,t).slice(0,Hl),freshErrors:Kl(e),apdex:Al(e)}}},Zl=[{key:`ssr`,phase:`ssr`,label:`Server-side rendering (SSR)`,kind:`ms`},{key:`client`,phase:`client`,label:`Client render`,kind:`ms`},{key:`hydration`,phase:`hydration`,label:`Hydration`,kind:`ms`},{key:`images`,phase:`image`,label:`Image loading`,kind:`ms`},{key:`cls`,phase:`cls`,label:`Layout shift`,kind:`score`}],Ql=e=>e?.hist?Ai(e.hist,e.n,75):null,$l=e=>e?j(e):null;function eu(e,t){let n=ca(e,`pv.g.cur`);return Zl.map(e=>({key:e.key,label:e.label,value:(t===`avg`?$l:Ql)(n.get(e.phase)),kind:e.kind}))}function tu(e,t){let n=$l(ca(e,`pv.g.cur`).get(t)),r=$l(ca(e,`pv.g.prev`).get(t));return{value:n,change:le(n,r),series:ua(F(e,`cards`,24,t))}}var nu=e=>Lo(e,`cur`).filter(e=>e.issues.length>0).map(e=>e.name);function ru(e,t){let n=Lo(e,`prev`).filter(e=>e.issues.length>0).length,r=e.series.issues?.byKey??{},i=Array.from({length:24},(e,t)=>Object.values(r).reduce((e,n)=>e+(n[t]?.c[0]??0),0));return{value:t,change:sa(e,`react.prev`).n>0?le(t,n):null,series:i}}var iu=()=>[...io,...Ao(`cur`),...jo(`cur`),...jo(`prev`),M(`react.cur`,`react`,`cur`),M(`react.prev`,`react`,`prev`),M(`pv.g.cur`,`pv.g`,`cur`,{hist:!0}),M(`pv.g.prev`,`pv.g`,`prev`),N(`cards`,`pv.g`,`cur`,24,{split:!0,filter:{keys:[`render`,`ssr`,`hydration`]}}),N(`p75`,`pv.g`,`cur`,24,{hist:!0,filter:{keys:[`render`]}}),N(`views`,`pv`,`cur`,24)],au={needs:()=>ia(iu()),followUp(e,t){let n=nu(t);return n.length?[N(`issues`,`rc`,`cur`,24,{split:!0,filter:{keys:n}})]:[]},model(e){let t=(e.params.q??``).trim().toLowerCase(),n=Lo(e,`cur`),r=n.filter(e=>!t||e.name.toLowerCase().includes(t)),i=Fo(e,`cur`).filter(e=>!t||e.route.toLowerCase().includes(t)),a=n.filter(e=>e.issues.length>0).length;return{meta:ao(e),views:Mo(e,`cur`),routes:i.slice(0,200),routeCount:i.length,components:r.slice(0,200),componentCount:r.length,hasReact:sa(e,`react.cur`).n>0,starts:Ee(e.window,24),chart:{avg:ua(F(e,`cards`,24,`render`)),p75:F(e,`p75`,24).map(e=>Ql(e)),views:la(F(e,`views`,24))},phases:{avg:eu(e,`avg`),p75:eu(e,`p75`)},cards:{render:tu(e,`render`),ssr:tu(e,`ssr`),hydration:tu(e,`hydration`),issues:ru(e,a)}}}},ou=new Set(mo.map(([e])=>e).filter(Boolean));function su(e){let t={};for(let n of[`method`,`status`,`q`,`endpoint`,`user`])e[n]&&(t[n]=e[n]);return e.service&&(t.service=_r(e.service)),e.insights&&(t.insights=!0),ou.has(e.duration)&&(t.duration=e.duration),t}function cu(e){let t=e.status===`failed`?null:e.status||null,n=[e.method||null,t,e.status===`failed`?`1`:null,ou.has(e.duration)?e.duration:null],r=e.service?[_r(e.service),...n]:n;return r.some(e=>e!==null)?{parts:r}:void 0}var lu=e=>({key:wo(e.sort)?e.sort:`time`,desc:e.desc!==`0`});function uu(e,t){let n=t?{...go(e),q:``}:go(e),r={...su(n),...t?{traceIds:t}:{}},i=!!t||n.q.trim()!==``||!!(n.endpoint||n.user||n.insights),a=[...io,ra(`rows`,`requests`,`cur`,{filter:r,sort:lu(e),page:lo(e,15),...i?{aggregate:{buckets:24}}:{}}),M(`opt.dim`,`req.dim`,`cur`),M(`opt.svc`,`req.svc`,`cur`)];return i?a.push(ra(`prev`,`requests`,`prev`,{filter:r,limit:0,aggregate:{buckets:24}})):a.push(...Sl(`h`,n.service?`req.svc`:`req.dim`,cu(n))),e.trace&&a.push(ra(`selected`,`requests`,`cur`,{filter:{traceId:e.trace},limit:1})),ia(a)}function du(e){let t=fa(e,`rows`).aggregate,n=fa(e,`prev`).aggregate;return!t||!n?Cl(e,`h`):xl(t.total,n.total,t.series)}var fu=e=>[...new Set(e)].sort(),pu={needs:e=>uu(e.params,e.searchIds),model(e){let t=fa(e,`rows`),n=P(e,`opt.svc`).filter(e=>(e.agg.c[2]??0)>0);return{meta:ao(e),headlines:du(e),options:{methods:fu(P(e,`opt.dim`).map(e=>Yi(e.key)[0])),services:fu(n.map(e=>gr(Yi(e.key)[0])))},filtered:So(go(e.params)),rows:t.items,total:t.total??t.items.length,page:t.page,pageSize:t.pageSize,selected:e.params.trace?fa(e,`selected`).items[0]??null:null}}},mu=50,hu=(e,t)=>e.hist&&e.n?Ai(e.hist,e.n,t):null;function gu(e){return e.n?{count:e.n,errors:e.err,errorRate:we(e.err,e.n),avgMs:j(e),p50Ms:hu(e,50),p95Ms:hu(e,95),p99Ms:hu(e,99)}:null}var _u=e=>[...e].sort(ma(e=>e.agg.n)).map(e=>({name:Yi(e.key).at(-1),count:e.agg.n,errors:e.agg.err,avgMs:j(e.agg)}));function vu(e){let t=e.service??``,n=t.includes(`:`)?t:`api:${t}`,r=e.endpoint??``;return{rowKey:n,name:n.slice(n.indexOf(`:`)+1),endpoint:r,key:k(n,r)}}function yu(e){let t=F(e,`chart`,48);return{count:la(t),errors:t.map(e=>e.err),p50:t.map(e=>hu(e,50)),p95:t.map(e=>hu(e,95)),p99:t.map(e=>hu(e,99)),prevCount:la(F(e,`chart.prev`,48))}}var bu={needs:e=>{let t=vu(e.params),n={filter:{keys:[t.key]}},r={by:`n`,desc:!0,limit:mu};return ia([...io,M(`ep`,`svc.ep`,`cur`,{hist:!0,ids:!0,...n}),M(`ep.prev`,`svc.ep`,`prev`,{hist:!0,...n}),N(`chart`,`svc.ep`,`cur`,48,{hist:!0,...n}),N(`chart.prev`,`svc.ep`,`prev`,48,n),M(`q`,`ep.q`,`cur`,{filter:{prefix:k(t.key,``)},order:r}),M(`call`,`ep.call`,`cur`,{filter:{prefix:k(t.key,``)},order:r}),M(`ge`,`err.ge`,`cur`,{filter:{prefix:`${gr(t.name)}|`,parts:[null,t.endpoint]}}),ra(`slowest`,`requests`,`cur`,{filter:{endpoint:t.endpoint,service:_r(t.name)},sort:{key:`duration`,desc:!0},limit:10}),Zc(`users`,`ep.u`,[gr(t.name),t.endpoint])])},followUp(e,t){let n=P(t,`ep`)[0]?.agg.ids??[],r=[...new Set(P(t,`ge`).map(e=>Yi(e.key)[0]))];return[...n.length?[ra(`recent`,`requests`,`cur`,{filter:{traceIds:n},limit:n.length})]:[],...r.length?[M(`errors`,`err.g`,`cur`,{top:!0,filter:{keys:r},order:{by:`n`,desc:!0,limit:mu}})]:[]]},model(e){let t=vu(e.params);return{meta:ao(e),service:t.name,endpoint:t.endpoint,totals:gu(sa(e,`ep`)),prev:gu(sa(e,`ep.prev`)),starts:Ee(e.window,48),chart:yu(e),slowest:fa(e,`slowest`).items,recent:fa(e,`recent`).items,queries:_u(P(e,`q`)),calls:_u(P(e,`call`)),errors:P(e,`errors`).map(e=>Vc(e)),users:Qc(e,`users`)}}},xu=50,Su=e=>({filter:{keys:[e]}}),Cu={needs:e=>{let t=e.params.group??``;return ia([...io,M(`g`,`err.g`,`cur`,{top:!0,ids:!0,...Su(t)}),M(`g.prev`,`err.g`,`prev`,Su(t)),M(`ge`,`err.ge`,`cur`,{filter:{prefix:k(t,``)}}),N(`chart`,`err.g`,`cur`,48,Su(t)),N(`chart.prev`,`err.g`,`prev`,48,Su(t)),M(`life`,`err.g`,`all`,Su(t)),Zc(`users`,`err.u`,[t])])},followUp(e,t){let n=P(t,`g`)[0]?.agg.ids.slice(0,xu)??[];return n.length?[ra(`requests`,`requests`,`cur`,{filter:{traceIds:n},limit:xu}),ra(`traces`,`traces`,`cur`,{filter:{traceIds:n},limit:xu})]:[]},model(e){let t=P(e,`g`)[0],n=[...P(e,`ge`)].sort(ma(e=>e.agg.n)),r=F(e,`chart`,48);return{meta:ao(e),group:t?Vc(t,new Map([[t.key,n.map(e=>Yi(e.key)[1])]])):null,prevCount:sa(e,`g.prev`).n,starts:Ee(e.window,48),chart:{count:la(r),critical:da(r,0),prev:la(F(e,`chart.prev`,48))},endpoints:n.map(e=>({endpoint:Yi(e.key)[1],count:e.agg.n})),requests:fa(e,`requests`).items,traces:fa(e,`traces`).items,issue:t?jc(e,[t.key])[t.key]??null:null,hasIssues:!!e.issues,users:Qc(e,`users`)}}};function wu(e,t){let n=new Map;for(let r of e){let e=t(r);e&&n.set(e,(n.get(e)??0)+1)}return[...n].map(([e,t])=>({value:e,count:t})).sort((e,t)=>t.count-e.count||(e.value<t.value?-1:1))}var Tu=e=>e.n?{count:e.n,avgMs:j(e),totalMs:e.sum,slow:e.c[0]??0,errors:e.err}:null;function Eu(e,t){let[n=``,r=``]=Yi(e.key);return{service:t?n.slice(n.indexOf(`:`)+1):n,endpoint:t?r:``,count:e.agg.n,avgMs:j(e.agg)}}var Du={needs:e=>{let t=e.params.q??``,n={filter:{keys:[t]}};return ia([...io,M(`q`,`db.q`,`cur`,{top:!0,ids:!0,...n}),M(`q.prev`,`db.q`,`prev`,n),N(`chart`,`db.q`,`cur`,48,n),N(`chart.prev`,`db.q`,`prev`,48,n),M(`svc`,`db.q@svc`,`cur`,{filter:{parts:[null,t]}}),M(`ep`,`ep.q`,`cur`,{filter:{parts:[null,null,t]}})])},followUp(e,t){let n=P(t,`q`)[0]?.agg.ids??[];return n.length?[ra(`traces`,`traces`,`cur`,{filter:{traceIds:n},limit:n.length})]:[]},model(e){let t=F(e,`chart`,48);return{meta:ao(e),query:e.params.q??``,slowMs:e.options.slowQueryMs,totals:Tu(sa(e,`q`)),prev:Tu(sa(e,`q.prev`)),slowest:P(e,`q`)[0]?.agg.top??null,starts:Ee(e.window,48),chart:{count:la(t),avgMs:ua(t),slow:da(t,0),prevCount:la(F(e,`chart.prev`,48))},services:[...P(e,`svc`)].sort(ma(e=>e.agg.n)).map(e=>Eu(e,!1)),endpoints:[...P(e,`ep`)].sort(ma(e=>e.agg.n)).map(e=>Eu(e,!0)),traces:fa(e,`traces`).items}}},Ou=e=>Object.fromEntries(as.map(t=>[t,e(t)]));function ku(e,t){return{views:la(F(e,`views`,48)),prevViews:la(F(e,`views.prev`,48)),...Ou(n=>ua(F(e,`m.series`,48,k(t,n))))}}var Au={needs:e=>{let t=e.params.route??``,n={filter:{keys:[t]}},r={filter:{prefix:k(t,``)}};return ia([...io,M(`r`,`pv.route`,`cur`,{ids:!0,...n}),M(`r.prev`,`pv.route`,`prev`,n),M(`m`,`pv.m`,`cur`,r),N(`views`,`pv.route`,`cur`,48,n),N(`views.prev`,`pv.route`,`prev`,48,n),N(`m.series`,`pv.m`,`cur`,48,{...r,split:!0}),M(`rc`,`rc.route`,`cur`,{filter:{parts:[null,t]}})])},followUp(e,t){let n=P(t,`r`)[0]?.agg.ids??[];return n.length?[ra(`loads`,`traces`,`cur`,{filter:{traceIds:n},limit:n.length})]:[]},model(e){let t=e.params.route??``,n=ca(e,`m`);return{meta:ao(e),route:t,views:sa(e,`r`).n,prevViews:sa(e,`r.prev`).n,averages:Ou(e=>{let r=n.get(k(t,e));return r?j(r):null}),starts:Ee(e.window,48),chart:ku(e,t),components:[...P(e,`rc`)].sort(ma(e=>e.agg.n)).map(e=>({name:Yi(e.key)[0],count:e.agg.n})),loads:fa(e,`loads`).items}}},ju=10,Mu=e=>[$a(`rel.all`,e),M(`rel.cur`,`rel`,`cur`,{filter:{parts:[e,null]},hist:!0}),Dc(e)];function Nu(e,t){let n=eo(e,`rel.all`),r=ca(e,`rel.cur`),i=P(e,`life`).map(e=>e.agg.firstMs);return n.slice(0,ju).map(e=>{let a=r.get(k(t,e.version)),o=ro(n,e),s=a?.n??0;return{version:e.version,firstMs:e.firstMs,lastMs:e.lastMs,requests:s,errors:a?.err??0,errorRate:s?(a?.err??0)/s:0,p95Ms:a?.hist&&s?Ai(a.hist,s,95):null,newErrors:i.filter(t=>t>=e.firstMs&&t<o).length}})}var Pu=50,Fu=10,Iu=10,Lu=new Set([`api`,`worker`]),Ru=e=>Lu.has(e);function zu(e){let t=gr(e);return[M(`err.g`,`err.g`,`cur`,{top:!0,filter:{prefix:`${t}|`},order:{by:`n`,desc:!0,limit:Pu}}),M(`err.cur`,`err.s`,`cur`,{filter:{keys:[t]}}),M(`err.prev`,`err.s`,`prev`,{filter:{keys:[t]}}),ra(`slowest`,`requests`,`cur`,{filter:{service:e},sort:{key:`duration`,desc:!0},limit:Fu,count:!0}),ra(`logs`,`logs`,`cur`,{filter:{logService:t},limit:Iu,count:!0}),M(`log.s`,`log.s`,`cur`,{filter:{parts:[t,null]}}),...Mu(t)]}function Bu(e){return{groups:[...P(e,`err.g`)].sort(ma(e=>e.agg.n)).map(e=>Vc(e)),total:aa(e,`err.g`),exceptions:sa(e,`err.cur`).n,prevExceptions:sa(e,`err.prev`).n}}function Vu(e,t){let n=fa(e,`logs`),r=ca(e,`log.s`),i=e=>r.get(k(gr(t),e))?.n??0;return{rows:n.items,total:n.total??n.items.length,warnings:i(`warn`),errors:i(`error`)+i(`critical`)}}function Hu(e){let t=F(e,`chart`,48),n=la(F(e,`chart.prev`,48));return{requests:la(t),errors:t.map(e=>e.err),avgMs:ua(t),p95Ms:t.map(e=>e.hist&&e.n?Ai(e.hist,e.n,95):null),prevRequests:n}}var Uu={groups:[],total:0,exceptions:0,prevExceptions:0},Wu={rows:[],total:0,warnings:0,errors:0},Gu={needs:()=>ia([...io,...Pl(`cur`),...Pl(`prev`),...Fl()]),followUp(e,t){let n=Ts(Ll(t,`cur`),e.params.service??null);return n?[M(`svc.ep`,`svc.ep`,`cur`,{filter:{prefix:Ss(n.key)},order:{by:`n`,desc:!0,limit:200}}),N(`chart`,`svc`,`cur`,48,{filter:{keys:[n.key]},hist:!0}),N(`chart.prev`,`svc`,`prev`,48,{filter:{keys:[n.key]}}),...Ru(n.kind)?[...zu(n.name),Ol(n.key)]:[]]:[]},model(e){let t=Ts(Ll(e,`cur`),e.params.service??null),n=!!t&&Ru(t.kind),r=fa(e,`slowest`);return{meta:ao(e),row:t,prevRow:t?Ll(e,`prev`).find(e=>e.key===t.key)??null:null,owned:n,starts:Ee(e.window,48),chart:Hu(e),endpoints:t?Cs([...P(e,`svc.ep`)].sort(ma(e=>e.agg.n)),t.key):[],endpointCount:aa(e,`svc.ep`),...t?ws(Rl(e),t.name):{incoming:[],outgoing:[]},errors:n?Bu(e):Uu,slowest:r.items,requestCount:r.total??r.items.length,logs:n&&t?Vu(e,t.name):Wu,versions:n&&t?Nu(e,gr(t.name)):[],apdex:n&&t?kl(e).get(gr(t.name))??null:null}}},Ku=24,qu=10;function Ju(e){let t=e.filter(e=>e.kind===`api`),n=t.reduce((e,t)=>e+t.requests,0),r=t.reduce((e,t)=>e+t.errors,0);return{apis:t.length,databases:e.filter(e=>e.kind===`database`).length,served:n,errorRate:n?we(r,n):null}}function Yu(e,t,n){return{row:t,endpoints:Cs([...P(e,`svc.ep`)].sort(ma(e=>e.agg.n)),t.key),starts:Ee(e.window,Ku),traffic:la(F(e,`traffic`,Ku)),...ws(n,t.name)}}var Xu={needs:()=>ia([...io,...Pl(`cur`),...Pl(`prev`),...Fl(),N(`served`,`svc`,`cur`,Ku,{filter:{prefix:`api:`}})]),followUp(e,t){let n=Ts(Ll(t,`cur`),e.params.service??null);if(!n)return[];let r={by:`n`,desc:!0,limit:qu};return[{type:`groups`,id:`svc.ep`,kind:`svc.ep`,window:`cur`,filter:{prefix:Ss(n.key)},order:r},N(`traffic`,`svc`,`cur`,Ku,{filter:{keys:[n.key]}})]},model(e){let t=Ll(e,`cur`),n=Rl(e),r=Ts(t,e.params.service??null),i=F(e,`served`,Ku);return{meta:ao(e),rows:t,edges:n,summary:Ju(t),prevSummary:Ju(Ll(e,`prev`)),served:la(i),failed:i.map(e=>e.err),selected:r?Yu(e,r,n):null}}},Zu=()=>({groups:{},series:{},lists:{},traces:{}}),Qu=864e5,$u=/^cur-(\d+)([dw])$/;function ed(e,t){if(typeof t==`object`)return t;if(t===`cur`)return e.window;if(t===`prev`)return e.prev;if(t===`all`)return{from:0,to:e.now};if(t===`before`)return{from:e.window.from-7*Qu,to:e.window.from};let n=$u.exec(t),r=n?Number(n[1])*(n[2]===`w`?7:1)*Qu:0;return{from:e.window.from-r,to:e.window.to-r}}var td=e=>e.replace(/[A-Z]/g,e=>e.toLowerCase());function nd(e,t){if(!t)return!0;if(t.contains?.some(t=>!td(e).includes(td(t)))||t.exclude?.includes(e)||t.prefix!==void 0&&!e.startsWith(t.prefix)||t.keys&&!t.keys.includes(e))return!1;if(!t.parts)return!0;let n=Yi(e);return n.length===t.parts.length&&t.parts.every((e,t)=>e===null||e===n[t])}function rd(e,t){return t===`avg`?j(e)??-1/0:t===`n`||t===`sum`||t===`lastMs`?e[t]:e.c[Number(t.slice(1))]??0}function id(e,t,n){let r=n?-1:1;return[...e].sort((e,n)=>(rd(e.agg,t)-rd(n.agg,t))*r||(e.key<n.key?-1:+(e.key>n.key)))}var ad=6e4,od={"15m":ad,"1h":2.5*ad,"6h":15*ad,"24h":30*ad,"7d":240*ad,"30d":720*ad};function sd(e){let t=od[e.range],n=Math.floor(e.window.from/t)*t,r=Math.max(n+t,Math.ceil(Math.max(e.now,e.window.to)/t)*t);return{window:{from:n,to:r},buckets:Math.round((r-n)/t),bucketMs:t}}var cd=(e,t)=>ed({window:e.window,prev:e.window,now:e.window.to},t),ld=500,R=200,z=[{id:`svc`,kind:`svc`},{id:`ep`,kind:`svc.ep`}],B=(e,t)=>`pb.${e}.${String(t)}`,ud=()=>ia([...io,...Pl(`cur`),...Fl(),...ya(),M(`pb.ver`,`rel`,`cur`),M(`pb.err`,`err.g`,`cur`,{top:!0,order:{by:`n`,desc:!0,limit:ld}})]);function dd(e,t){return P(e,`pb.err`).filter(e=>e.agg.firstMs>t.window.from).sort((e,t)=>t.agg.firstMs-e.agg.firstMs||(e.key<t.key?-1:1)).slice(0,R).map(e=>e.key)}function fd(e,t){let n=sd(e),r=[`cur`,..._a(ba(t))],i=z.flatMap(e=>r.map(t=>N(B(e.id,t),e.kind,cd(n,t),n.buckets,{split:!0,hist:!0}))),a=P(t,`pb.ver`).map(e=>e.key).slice(0,R),o=dd(t,e);return[...i,...a.length?[M(`pb.ver.before`,`rel`,`before`,{filter:{keys:a}})]:[],...o.length?[M(`pb.err.before`,`err.g`,`before`,{filter:{keys:o}})]:[]]}var pd=e=>e.reduce((e,t)=>e+t.n,0);function md(e,t){let n=_a(t);return z.flatMap(t=>{let r=e.series[B(t.id,`cur`)]?.byKey??{},i=n.map(n=>e.series[B(t.id,n)]?.byKey??{});return Object.entries(r).map(([e,t])=>({key:e,cur:t,samples:i.map(t=>t[e]).filter(e=>!!e&&pd(e)>0)}))})}function hd(e,t){return _a(t).filter(t=>Object.values(e.series[B(`svc`,t)]?.byKey??{}).some(e=>pd(e)>0)).length}function gd(e){let t=new Set(P(e,`pb.ver.before`).map(e=>e.key));return P(e,`pb.ver`).map(e=>{let[n=``,r=``]=Yi(e.key);return{service:n,version:r,firstMs:e.agg.firstMs,isNew:!t.has(e.key)}})}function _d(e,t){let n=new Set(P(e,`pb.err.before`).map(e=>e.key)),r=new Set(dd(e,t));return P(e,`pb.err`).map(e=>{let t=Vc(e);return{key:t.key,service:t.service,type:t.type,message:t.message,firstMs:t.firstSeenMs,count:t.count,isNew:r.has(e.key)&&!n.has(e.key)}})}var vd=9e5,yd=e=>Ii(e)?e:`medium`,bd=(e,t)=>e.services.some(e=>e.row===t||e.name===t);function xd(e,t,n){let r=t.problem?e.find(e=>e.id===t.problem):void 0;if(r)return r;let i=Number(t.at);if(!t.at||!Number.isFinite(i))return null;let a=t.focus,o=e=>i<e.startMs?e.startMs-i:i>e.endMs?i-e.endMs:0;return e.filter(e=>(!a||bd(e,a))&&o(e)<=2*n).sort((e,t)=>o(e)-o(t)||t.startMs-e.startMs)[0]??null}function Sd(e){let t=new Map(P(e,Ml(`cur`)).map(e=>[e.key,e.agg.top]));return e=>t.get(e)??null}function Cd(e){let t=ba(e),{window:n,buckets:r,bucketMs:i}=sd(e),a=Ee(n,r),o=yd(e.params.sensitivity),s=Fi[o]??Li,c=Ta(md(e,t),{starts:a,bucketMs:i,spreads:s,rowInfo:Sd(e)}),l=Math.max(2*i,vd),u=Wa(c,{versions:gd(e),errors:_d(e,e),map:Ea(Rl(e)),nearMs:l,bucketMs:i}),d=hd(e,t),f=e.params.service?u.filter(t=>bd(t,e.params.service)):u;return{meta:ao(e),baseline:{mode:t,samples:d,learning:d<2},sensitivity:o,starts:a,bucketMs:i,problems:f.slice(0,50),total:f.length,ongoing:f.filter(e=>e.ongoing).length,anomalies:f.reduce((e,t)=>e+t.anomalyCount,0),services:new Set(f.flatMap(e=>e.services.map(e=>e.row))).size,selected:xd(u,e.params,l)}}var wd={needs:()=>ud(),followUp:fd,model:Cd},Td=[16,24,48],Ed=100,Dd=200,Od=new Set([`api`,`web`]),kd=e=>Td.find(t=>String(t)===e.buckets)??24,Ad=e=>({requests:e.n,errors:e.err,errorRatePercent:we(e.err,e.n),avgMs:j(e),p95Ms:e.hist&&e.n?Ai(e.hist,e.n,95):null});function jd(e,t,n){return t?N(`ts`,`svc.ep`,`cur`,n,{filter:e?{keys:[k(e.key,t)]}:{parts:[null,t]},hist:!0}):e?N(`ts`,`svc`,`cur`,n,{filter:{keys:[e.key]},hist:!0}):N(`ts`,`req`,`cur`,n,{hist:!0})}var Md=(e,t)=>t?[t]:e.filter(e=>Od.has(e.kind)).slice(0,Ed);function Nd(e,t,n){return t.flatMap((t,n)=>P(e,`ep.${n}`).map(({key:e,agg:n})=>({service:t.name,kind:t.kind,endpoint:e.slice(Ss(t.key).length),...Ad(n)}))).filter(e=>!n||e.endpoint===n).sort((e,t)=>t.requests-e.requests||e.endpoint.localeCompare(t.endpoint))}var Pd={needs:()=>ia([...io,...Pl(`cur`)]),followUp(e,t){let n=Ll(t,`cur`),r=Ts(n,e.params.service??null);if(e.params.service&&!r)return[];let i=Md(n,r).map((e,t)=>M(`ep.${t}`,`svc.ep`,`cur`,{filter:{prefix:Ss(e.key)},hist:!0,order:{by:`n`,desc:!0,limit:Dd}}));return[jd(r,e.params.endpoint??``,kd(e.params)),...i]},model(e){let t=kd(e.params),n=Ll(e,`cur`),r=Ts(n,e.params.service??null),i=!e.params.service||!!r,a=i?F(e,`ts`,t):[],o=Ee(e.window,t);return{meta:ao(e),scope:{service:r?.name??e.params.service??null,endpoint:e.params.endpoint||null,found:i},bucketMs:(e.window.to-e.window.from)/t,points:a.map((e,t)=>({start:o[t],...Ad(e)})),totals:Ad(oa(a)),endpoints:i?Nd(e,Md(n,r),e.params.endpoint??``):[]}}},Fd=`wizelens-uptime`,Id=[`GET`,`HEAD`,`POST`,`PUT`,`PATCH`,`DELETE`,`OPTIONS`],Ld=`200-299`,Rd=(e,t)=>e===null?null:Math.floor((e-t)/864e5),zd=(e,t)=>{let n=Rd(e,t);return n!==null&&n<14},Bd=e=>`/uptime/${e}`;function Vd(e){let t=/^\S+ \/uptime\/([A-Za-z0-9_-]+)$/.exec(e);return t?t[1]:null}var Hd=`api:${Fd}`;function Ud(e){return e?{keys:Id.map(t=>k(Hd,`${t} ${Bd(e)}`))}:{prefix:Ss(Hd)}}function Wd(e){let t=new Map,n=Ss(Hd);for(let{key:r}of P(e,`ep`)){let e=Vd(r.slice(n.length));e&&t.set(e,[...t.get(e)??[],r])}return t}function Gd(e,t,n){let r=oa(P(e,`ep`).filter(e=>n.includes(e.key)).map(e=>e.agg)),i=I(e,`chart`,48,n);return{checkId:t,runs:r.n,failures:r.err,avgMs:j(r),avgMsSeries:ua(i),runSeries:i.map(e=>e.n),failSeries:i.map(e=>e.err)}}function Kd(e){let t=sa(e,`ep`),n=sa(e,`ep.prev`);return{runs:t.n,failures:t.err,avgMs:j(t),prevRuns:n.n,prevFailures:n.err,prevAvgMs:j(n)}}var qd={needs:e=>{let t=Ud(e.params.check||void 0);return ia([...io,M(`ep`,`svc.ep`,`cur`,{filter:t,order:{by:`n`,desc:!0,limit:200}}),M(`ep.prev`,`svc.ep`,`prev`,{filter:t}),N(`chart`,`svc.ep`,`cur`,48,{filter:t,split:!0})])},model(e){let t=[...Wd(e)].map(([t,n])=>Gd(e,t,n)).sort((e,t)=>t.runs-e.runs||(e.checkId<t.checkId?-1:1));return{meta:ao(e),starts:Ee(e.window,48),checks:t,totals:Kd(e)}}},Jd=(e,t)=>({user:e,requests:t.n,errors:t.err,errorRate:t.n?we(t.err,t.n):null,avgMs:t.n?t.sum/t.n:null,p95Ms:t.hist&&t.n?Ai(t.hist,t.n,95):null,lastSeenMs:t.lastMs}),Yd=25,Xd={needs:e=>{let{page:t,size:n}=lo(e.params,Yd),r=e.params.q?.trim(),i=r?{filter:{contains:[r]}}:{};return ia([...io,M(`usr`,`usr`,`cur`,{hist:!0,...i,order:{by:`n`,desc:!0,limit:n,offset:(t-1)*n}})])},model:e=>({meta:ao(e),users:[...P(e,`usr`)].sort(ma(e=>e.agg.n)).map(e=>Jd(e.key,e.agg)),total:aa(e,`usr`),...lo(e.params,Yd)})},Zd={needs:e=>{let t=e.params.user??``;return ia([...io,M(`usr`,`usr`,`cur`,{hist:!0,filter:{keys:[t]}}),ra(`recent`,`requests`,`cur`,{filter:{user:t},sort:{key:`time`,desc:!0},limit:25,aggregate:{buckets:48}}),ra(`slowest`,`requests`,`cur`,{filter:{user:t},sort:{key:`duration`,desc:!0},limit:10}),M(`u.groups`,`err.u`,`cur`,{filter:{parts:[null,t]},order:{by:`n`,desc:!0,limit:50}})])},followUp(e,t){let n=P(t,`u.groups`).map(e=>Yi(e.key)[0]);return n.length?[M(`groups`,`err.g`,`cur`,{top:!0,filter:{keys:n}})]:[]},model(e){let t=e.params.user??``,n=P(e,`usr`)[0]?.agg,r=fa(e,`recent`).aggregate?.series??[],i=new Map(P(e,`groups`).map(e=>[e.key,Vc(e)])),a=P(e,`u.groups`).flatMap(e=>{let t=i.get(Yi(e.key)[0]);return t?[{group:t,count:e.agg.n}]:[]});return{meta:ao(e),user:t,totals:n?.n?Jd(t,n):null,starts:Ee(e.window,48),chart:{requests:r.map(e=>e.n),errors:r.map(e=>e.err),avgMs:ua(r)},recent:fa(e,`recent`).items,slowest:fa(e,`slowest`).items,errors:a}}},Qd={error_rate:{label:`Error rate`,unit:`%`},p95_ms:{label:`p95 request duration`,unit:`ms`},avg_ms:{label:`Average request duration`,unit:`ms`},requests:{label:`Requests`,unit:``},new_errors:{label:`New error types`,unit:``},slow_queries:{label:`Slow queries`,unit:``},log_count:{label:`Log lines`,unit:``}};function $d(e){let t=al(e),n=t.minLevel===`trace`?[]:[t.exact?t.minLevel:`${t.minLevel} and up`],r=t.origin===`outside`?[`outside requests`]:t.origin===`request`?[`in requests`]:[],i=[t.service&&`service ${t.service}`,t.category&&`category ${t.category}`,t.pattern&&`pattern ${t.pattern}`,t.query&&`"${t.query}"`];return[...n,...r,...i].filter(Boolean).join(`, `)}[5,15,60,360,1440].map(e=>e*6e4),[0,15,60,240,1440].map(e=>e*6e4);var ef=(e,t)=>e.mutedUntilMs!==null&&e.mutedUntilMs>t,tf=[`B`,`KB`,`MB`,`GB`,`TB`];function nf(e){let t=Math.abs(e);return t===0?`0`:t>=100?Math.round(e).toLocaleString(`en-US`):t>=10?e.toFixed(1):t>=1?e.toFixed(2):e.toPrecision(2)}function rf(e){let t=0;for(;Math.abs(e)>=1024&&t<tf.length-1;)e/=1024,t++;return`${nf(e)} ${tf[t]}`}function af(e){let t=Math.abs(e);return t>=60?`${nf(e/60)} min`:t>=1?`${nf(e)} s`:t>=.001||t===0?`${nf(e*1e3)} ms`:`${nf(e*1e6)} µs`}var of=e=>e.replace(/\{([^}]*)\}/g,`$1`);function sf(e,t){if(e==null||!Number.isFinite(e))return`—`;if(t===`1`||t===`s/s`||t===`%`)return`${nf(t===`%`?e:e*100)}%`;if(t===`By`)return rf(e);if(t===`By/s`)return`${rf(e)}/s`;if(t===`s`)return af(e);if(t===`ms`)return af(e/1e3);if(t===`us`||t===`µs`)return af(e/1e6);if(t===`ns`)return af(e/1e9);if(t===`/s`)return`${nf(e)}/s`;let n=of(t);return n?`${nf(e)} ${n}`:nf(e)}var cf=[[/^(process|system|v8js|nodejs|dotnet|jvm|go|python|cpython|container)\./,`runtime`],[/^(http|kestrel|aspnetcore|signalr|url)\./,`http`],[/^db\./,`database`],[/^messaging\./,`messaging`],[/^rpc\./,`rpc`]],lf=[`runtime`,`http`,`database`,`messaging`,`rpc`,`custom`],uf=e=>cf.find(([t])=>t.test(e))?.[1]??`custom`,df=e=>e.kind===`histogram`?`percentiles`:e.kind===`sum`&&e.monotonic?`rate`:`value`,ff=(e,t)=>t===`rate`?`${e===`1`?``:e}/s`:e,pf=(e,t)=>e.length===t.length&&e.every((e,n)=>e===t[n]);function mf(e,t,n){return n?e:t?e.count<t.count||!pf(e.bounds,t.bounds)?e:{...e,count:e.count-t.count,sum:e.sum-t.sum,counts:e.counts.map((e,n)=>e-(t.counts[n]??0))}:null}function hf(e,t){let n=(e,t)=>e==null?t??null:t==null?e:Math.min(e,t),r=(e,t)=>e==null?t??null:t==null?e:Math.max(e,t);if(!e)return{bounds:[...t.bounds],counts:[...t.counts],count:t.count,sum:t.sum,min:t.min??null,max:t.max??null};let i=pf(e.bounds,t.bounds)&&e.counts.length===t.counts.length;return{bounds:i?e.bounds:[],counts:i?e.counts.map((e,n)=>e+t.counts[n]):[],count:e.count+t.count,sum:e.sum+t.sum,min:n(e.min,t.min),max:r(e.max,t.max)}}function gf(e,t){let n=e[0]?.display??`value`;if(n===`percentiles`){let r=Array.from({length:t},(t,n)=>e.reduce((e,t)=>t.hists[n]?hf(e,t.hists[n]):e,null));return{display:n,values:Array(t).fill(null),hists:r}}return{display:n,values:Array.from({length:t},(t,r)=>{let i=e.map(e=>e.values[r]).filter(e=>e!=null);if(i.length===0)return null;let a=i.reduce((e,t)=>e+t,0);return n===`rate`?a:a/i.length}),hists:[]}}function _f(e,t){if(e.count<=0||e.counts.length===0)return null;let n=t*e.count,r=0;for(let t=0;t<e.counts.length;t++){let i=e.counts[t];if(i>0&&r+i>=n){let a=t===0?e.min??Math.min(0,e.bounds[0]??0):e.bounds[t-1],o=a+((t<e.bounds.length?e.bounds[t]:e.max??e.bounds.at(-1)??a)-a)*((n-r)/i);return Math.min(e.max??o,Math.max(e.min??o,o))}r+=i}return e.max??e.bounds.at(-1)??null}function vf(e,t){return!e||e.count<=0?null:t===`avg`?e.sum/e.count:_f(e,t===`p50`?.5:t===`p95`?.95:.99)}var yf=(e,t)=>e.display===`percentiles`?e.hists.map(e=>vf(e,t)):e.values,bf={rateDelta:0,rateMs:0};function xf(e,t){if(e.kind!==`sum`||!e.monotonic)return bf;let n=e.value??0;if(e.temporality===`delta`){let r=e.startMs===void 0?t?e.timeMs-t.lastMs:0:e.timeMs-e.startMs;return r>0?{rateDelta:n,rateMs:r}:bf}return!t||t.lastValue===null?bf:{rateDelta:n>=t.lastValue?n-t.lastValue:n,rateMs:e.timeMs-t.lastMs}}function Sf(e,t,n){if(!e.histogram)return null;let r=e.temporality===`delta`;if(!r&&n)return null;let i=mf(e.histogram,t?.lastHist??void 0,r);return i&&i.count>0?hf(null,i):null}function Cf(e,t){let n=t!==null&&e.timeMs<=t.lastMs,r=e.value??null,i=n&&e.temporality!==`delta`?bf:xf(e,n?null:t),a=e.timeMs;return{row:{cnt:1,vsum:r??0,vmin:r,vmax:r,firstMs:a,firstV:r,lastMs:a,lastV:r,...i,hist:Sf(e,t,n)},next:n?t:{lastMs:a,lastValue:r,lastHist:e.histogram??null}}}var wf=(e,t)=>e===null?t:t===null?e:Math.min(e,t),Tf=(e,t)=>e===null?t:t===null?e:Math.max(e,t);function Ef(e,t){if(!e)return t;let n=t.firstMs<e.firstMs?t:e,r=t.lastMs>=e.lastMs?t:e;return{cnt:e.cnt+t.cnt,vsum:e.vsum+t.vsum,vmin:wf(e.vmin,t.vmin),vmax:Tf(e.vmax,t.vmax),firstMs:n.firstMs,firstV:n.firstV,lastMs:r.lastMs,lastV:r.lastV,rateDelta:e.rateDelta+t.rateDelta,rateMs:e.rateMs+t.rateMs,hist:t.hist?hf(e.hist,t.hist):e.hist}}function Df(e,t){if(t===1)return e;let n=e.hist&&{...e.hist,count:e.hist.count*t,sum:e.hist.sum*t,counts:e.hist.counts.map(e=>e*t)};return{...e,cnt:e.cnt*t,vsum:e.vsum*t,rateDelta:e.rateDelta*t,rateMs:e.rateMs*t,hist:n}}function Of(e,t){let n=[...e].sort((e,t)=>e.timeMs-t.timeMs),r=[],i=t;for(let e of n){let{row:t,next:n}=Cf(e,i);r.push({timeMs:e.timeMs,row:t}),i=n}return{rows:r,state:i}}function kf(e,t,n,r){if(r.mode===`split`)return ac(e,r.tier.ms,t,n);let i=e+r.tier.ms/2;return i<t.from||i>=t.to?[]:[{index:Math.min(n-1,Math.floor((i-t.from)/((t.to-t.from)/n))),share:1}]}function Af(e,t,n,r){if(r)return kf(Math.floor(e/r.tier.ms)*r.tier.ms,t,n,r);let i=Le(e,t,n);return i<0?[]:[{index:i,share:1}]}function jf(e,t,n){for(let{index:r,share:i}of n)e[r]=Ef(e[r]??null,Df(t,i))}var Mf=e=>Array(e).fill(null),Nf=e=>e?.hist&&e.hist.count>0?e.hist:null;function Pf(e,t,n){let r=e=>t?.[e]??null;return e===`percentiles`?{display:e,values:Array(n).fill(null),hists:Array.from({length:n},(e,t)=>Nf(r(t)))}:{display:e,values:Array.from({length:n},(t,n)=>{let i=r(n);return i?e===`rate`?i.rateMs>0?i.rateDelta/i.rateMs*1e3:null:i.cnt>0?i.vsum/i.cnt:null:null}),hists:[]}}function Ff(e){let t=Object.keys(e.attributes).sort().map(t=>[t,e.attributes[t]]);return`${e.name}\u0000${e.service}\u0000${JSON.stringify(t)}`}function If(e,t){let n={id:e,name:t.name,service:t.service,kind:t.kind,unit:t.unit,description:t.description??``,attributes:t.attributes};return t.monotonic!==void 0&&(n.monotonic=t.monotonic),t.temporality&&(n.temporality=t.temporality),n}function Lf(e){let t=new Map;for(let n of e){let e=Ff(n),r=t.get(e);r?r.push(n):t.set(e,[n])}return[...t].sort(([e],[t])=>e<t?-1:+(e>t)).map(([e,t])=>({info:If(e,t.reduce((e,t)=>t.timeMs>=e.timeMs?t:e)),rows:Of(t,null).rows}))}function Rf(e,t,n,r){let i=null,a=r.tiers?rc(t,n,1/0):[];for(let{timeMs:n,row:o}of e){if(!r.tiers){n>=t.from&&n<t.to&&(i=Ef(i,o));continue}let e=a.find(e=>{let t=Math.floor(n/e.tier.ms)*e.tier.ms;return t>=e.from&&t<e.to});e&&(i=Ef(i,Df(o,e.weight)))}return i}function zf(e,t,n,r){let i=Mf(n);for(let{timeMs:a,row:o}of e)jf(i,o,Af(a,t,n,r));return i}var Bf=(e,t,n,r)=>r.tiers?ic(e,t,n,1/0):null;function Vf(e,t,n,r,i={}){let a=i.tiers?Qs(vi(t,n,r),n):vi(t,n,r),o=Bf(a,24,n,i),s=Bf(a,60,n,i),c=Lf(e).flatMap(e=>{let t=Rf(e.rows,a,n,i);if(!t||t.cnt<=0)return[];let r=zf(e.rows,a,24,o);return[{...e.info,total:t,spark:r,line:zf(e.rows,a,60,s)}]}),l=r.service||``;return{range:t,window:a,params:r,services:[...new Set(c.map(e=>e.service))].sort(),series:l?c.filter(e=>e.service===l):c}}var Hf={last:`Newest value`,avg:`Average`,max:`Highest`,p95:`p95`,p99:`p99`,rate:`Per second`},Uf=[`level`,`exact`,`service`,`category`,`q`,`pattern`,`origin`],Wf=500;function Gf(e){let t={};if(!e||typeof e!=`object`)return t;let n=e;for(let e of Uf)typeof n[e]==`string`&&n[e]&&(t[e]=n[e].slice(0,Wf));return t}function Kf(e){let t=new URLSearchParams(Gf(e)).toString();return t?`#/logs?${t}`:`#/logs`}function qf(e){let t=/^#\/logs(?:\?(.*))?$/.exec(e);return t?Gf(Object.fromEntries(new URLSearchParams(t[1]??``))):null}var Jf={overview:Xl,requests:pu,traces:es,database:Tc,rendering:au,errors:Yc,logs:dl,"log-patterns":vl,"log-chart":pl,services:Xu,service:Gu,error:Cu,endpoint:bu,query:Du,route:Au,insights:nl,badges:uc,uptime:qd,problems:wd,users:Xd,user:Zd,traffic:Pd},Yf=e=>Jf[e],Xf=(e,t,n)=>lc(Yf(e),t,n),Zf=[{key:`cpu`,label:`CPU`,names:[`process.cpu.utilization`,`dotnet.process.cpu.time`,`process.cpu.time`]},{key:`memory`,label:`Memory`,names:[`process.memory.usage`,`dotnet.process.memory.working_set`,`process.runtime.dotnet.working_set`]},{key:`heap`,label:`Heap`,names:[`v8js.memory.heap.used`,`dotnet.gc.last_collection.heap.size`,`jvm.memory.used`]},{key:`loop`,label:`Event loop delay`,names:[`nodejs.eventloop.delay.p99`]},{key:`gc`,label:`GC`,names:[`dotnet.gc.pause.time`,`v8js.gc.duration`,`jvm.gc.duration`],stat:`p95`},{key:`threads`,label:`Thread pool queue`,names:[`dotnet.thread_pool.queue.length`]},{key:`requests`,label:`Request time`,names:[`http.server.request.duration`],stat:`p95`}],Qf=10,V=[`p50`,`p95`,`p99`,`avg`];function $f(e){let t=new Map;for(let n of e){let e=t.get(n.name);e?e.push(n):t.set(n.name,[n])}return t}var ep=e=>[...e].reverse().find(e=>e!=null)??null,tp=e=>V.includes(e.stat)?e.stat:`p95`,np=(e,t)=>e.filter(e=>!t||e.service===t);function rp(e,t,n){let r=t===`spark`?24:60;return gf(np(e,n).map(e=>Pf(df(e),e[t],r)),r)}function ip(e,t,n){let r=np(e,n);return r.length===0?null:df(r[0])===`value`?r.reduce((e,t)=>e+(t.total.lastV??0),0)/r.length:ep(yf(rp(r,`line`),t))}function ap(e,t,n){let r=t.reduce((e,t)=>t.total.lastMs>e.total.lastMs?t:e),i=df(r),a=ff(r.unit,i),o=yf(rp(t,`spark`),n),s=ip(t,n),c=[...new Set(t.map(e=>e.service))].sort();return{name:e,kind:r.kind,unit:r.unit,displayUnit:a,display:i,description:r.description,area:uf(e),services:c,series:t.length,last:s,lastText:sf(s,a),spark:o}}function op(e,t){if(t===`service`)return e.service;let n=e.attributes[t];return n==null?`(none)`:String(n)}function sp(e,t){let n=Object.entries(e.attributes).map(([e,t])=>`${e}=${t}`);return t&&n.unshift(e.service),n.join(` · `)||e.service}function cp(e,t,n){let r=new Map,i=new Set(e.map(e=>e.service)).size>1;for(let n of e){let e=t?op(n,t):sp(n,i),a=r.get(e);a?a.push(n):r.set(e,[n])}let a=[...r].map(([e,t])=>{let r=yf(rp(t,`line`),n);return{label:e,values:r,size:r.reduce((e,t)=>e+Math.abs(t??0),0)}});return a.sort((e,t)=>t.size-e.size||e.label.localeCompare(t.label)),{lines:a.slice(0,Qf).map(({label:e,values:t})=>({label:e,values:t})),hidden:Math.max(0,a.length-Qf)}}function lp(e){let t=e.filter(e=>e!=null);return t.length===0?{last:null,min:null,max:null,avg:null}:{last:ep(e),min:Math.min(...t),max:Math.max(...t),avg:t.reduce((e,t)=>e+t,0)/t.length}}function up(e,t,n,r){let i=tp(r),a=new Set(t.map(e=>e.service)),o=new Set(t.flatMap(e=>Object.keys(e.attributes))),s=[...a.size>1?[`service`]:[],...[...o].sort()],c=s.includes(r.group??``)?r.group:``,l=rp(t,`line`),u=l.display===`percentiles`,d=(n.to-n.from)/60/1e3;return{...ap(e,t,i),stat:i,groupBy:c,groupKeys:s,buckets:Ee(n,60),...cp(t,c,i),percentiles:u?Object.fromEntries(V.map(e=>[e,l.hists.map(t=>vf(t,e))])):null,countRate:u?l.hists.map(e=>e?e.count/d:null):null,summary:{...lp(yf(l,i)),last:ip(t,i)}}}function dp(e,t){let n=(t??``).split(`,`).map(e=>e.split(`=`)).filter(e=>e.length===2&&e[0].trim()).map(([e,t])=>[e.trim(),t.trim()]);return n.length===0?e:e.filter(e=>n.every(([t,n])=>op(e,t)===n))}function fp(e){let t={service:new Set(e.map(e=>e.service))};for(let n of e)for(let e of Object.keys(n.attributes))(t[e]??=new Set).add(op(n,e));return Object.fromEntries(Object.entries(t).map(([e,t])=>[e,[...t].sort().slice(0,50)]))}function pp(e,t){return t.flatMap(t=>{let n=Zf.flatMap(n=>{let r=n.names.find(n=>e.get(n)?.some(e=>e.service===t));if(!r)return[];let i=e.get(r),a=rp(i,`spark`,t),o=ff(i[0].unit,a.display),s=yf(a,n.stat??`p95`),c=ip(i,n.stat??`p95`,t);return[{key:n.key,label:n.label,metric:r,unit:o,last:c,lastText:sf(c,o),spark:s}]});return n.length>0?[{service:t,stats:n}]:[]})}function mp(e,t,n){let r=dp(t,n.params.where),i=up(e,r.length?r:t,n.window,n.params),a=r.length===0?{lines:[],percentiles:null,countRate:null,summary:{last:null,min:null,max:null,avg:null}}:{};return{...i,...a,where:n.params.where??``,values:fp(t)}}function hp(e){let t=e.params.service||``,n=$f(e.series),r=tp(e.params),i=(e.params.q??``).toLowerCase(),a=[...n].filter(([e])=>!i||e.toLowerCase().includes(i)).map(([e,t])=>ap(e,t,r)).sort((e,t)=>lf.indexOf(e.area)-lf.indexOf(t.area)||e.name.localeCompare(t.name)),o=e.params.metric&&n.get(e.params.metric),s=Math.round(e.series.reduce((e,t)=>e+t.total.cnt,0));return{meta:{range:e.range,window:e.window,sampled:null,points:s},services:e.services,catalog:a,selected:o?mp(e.params.metric,o,e):null,runtime:pp(n,t?[t]:e.services)}}var gp=e=>hp(Vf(e.points,e.range,e.now,e.params)),_p=(e,t)=>e<t?-1:+(e>t),vp=e=>(t,n)=>e(n)-e(t)||_p(t.traceId,n.traceId),yp=(e,t)=>(!t.traceId||e===t.traceId)&&(!t.traceIds||t.traceIds.includes(e));function bp(e,t,n){let r=e.flatMap(e=>e.request&&be(e.request.startMs,n)&&yp(e.traceId,t)?[e.request]:[]),i={method:t.method??``,status:t.status??``,duration:t.duration??``,service:t.service??``,q:t.q??``,endpoint:t.endpoint??``,user:t.user??``,insights:t.insights?`1`:``};return xo(r.sort(vp(e=>e.startMs)),i)}function xp(e,t){return To(e,{key:wo(t.sort.key)?t.sort.key:`time`,desc:t.sort.desc})}function Sp(e,t,n,r){let i=(t.q??``).trim().toLowerCase(),a=e=>!i||e.traceId.startsWith(i)||e.path.toLowerCase().includes(i)||e.services.some(e=>e.toLowerCase().includes(i)),o=e.flatMap(e=>e.trace&&be(e.trace.startMs,n)&&yp(e.traceId,t)&&a(e.trace)&&Oo(e.trace,t)?[e.trace]:[]).sort(vp(e=>e.startMs));return r.sort.key===`duration`?o.sort((e,t)=>(r.sort.desc?t.durationMs-e.durationMs:e.durationMs-t.durationMs)||vp(e=>e.startMs)(e,t)):r.sort.desc?o:o.reverse()}var Cp=e=>Number(e.key.slice(e.key.lastIndexOf(`:`)+1));function wp(e,t,n,r){let i=di(e.flatMap(e=>yp(e.traceId,t)?e.logs.filter(e=>be(e.timeMs,n)):[]),{minLevel:t.minLevel??`trace`,exact:t.exactLevel,service:t.logService??``,category:t.category??``,query:t.q??``,pattern:t.pattern??``,origin:t.logOrigin??``});return i.sort((e,t)=>t.timeMs-e.timeMs||_p(e.traceId,t.traceId)||Cp(e)-Cp(t)),r?i:i.reverse()}function Tp(e,t,n){return e.flatMap(e=>yp(e.traceId,t)?e.critical.filter(e=>be(e.startMs,n)&&(!t.service||e.service===t.service)):[]).sort((e,t)=>t.durationMs-e.durationMs||vp(e=>e.startMs)(e,t)||_p(e.spanId,t.spanId))}function Ep(e,t,n){let r={...qi.req,hist:!1},i=$i(),a=Array.from({length:n},()=>$i());for(let o of e){let e=A(`req`,``,o.startMs,{err:+!!Ln(o),sum:o.durationMs,c:[o.dbCount,+(o.insights>0),o.insights]});ta(i,e,o.traceId,r);let s=Le(o.startMs,t,n);s>=0&&ta(a[s],e,o.traceId,r)}return{total:na(i,{times:!1}),series:a.map(e=>na(e,{times:!1}))}}function Dp(e,t,n){let r={...qi.log},i=$i(),a=Array.from({length:n},()=>$i());for(let o of e){let e=A(`log`,``,o.timeMs,{err:+(ui(o.level)>=ui(`error`))});ta(i,e,o.traceId,r);let s=Le(o.timeMs,t,n);s>=0&&ta(a[s],e,o.traceId,r)}return{total:na(i,{times:!1}),series:a.map(e=>na(e,{times:!1}))}}function Op(e,t){if(t.page){let n=t.page.size,r=Math.min(Math.max(1,t.page.page),Math.max(1,Math.ceil(e.length/n)));return{items:e.slice((r-1)*n,r*n),total:e.length,page:r,pageSize:n}}let n=t.limit===void 0?e:e.slice(0,t.limit);return{items:n,total:t.count?e.length:null,page:1,pageSize:n.length}}function kp(e,t,n){let r=t.filter;if(t.table===`traces`)return Op(Sp(e,r,n,t),t);if(t.table===`logs`){let i=wp(e,r,n,t.sort.desc),a=Op(i,t);return t.aggregate&&(a.aggregate=Dp(i,n,t.aggregate.buckets)),a}if(t.table===`critical`)return Op(Tp(e,r,n),t);let i=bp(e,r,n),a=Op(xp(i,t),t);return t.aggregate&&(a.aggregate=Ep(i,n,t.aggregate.buckets)),a}function Ap(e){let t=new Map;for(let n of e)for(let e of n.contributions){let r=t.get(e.kind);r?r.push({c:e,traceId:n.traceId}):t.set(e.kind,[{c:e,traceId:n.traceId}])}for(let e of t.values())e.sort((e,t)=>t.c.timeMs-e.c.timeMs);return t}function jp(e,t,n){let r=qi[t.kind],i=new Map;for(let{c:a,traceId:o}of e){if(!be(a.timeMs,n)||!nd(a.key,t.filter))continue;let e=i.get(a.key);e||i.set(a.key,e=$i(r.hist)),ta(e,a,o,r)}let a=e=>e.n>.5&&(!t.having||rd(e,t.having.by)>=t.having.min),o=[...i].filter(([,e])=>a(e)).map(([e,n])=>({key:e,agg:na(n,t)}));if(!t.order)return{rows:o.sort((e,t)=>e.key<t.key?-1:+(e.key>t.key)),total:o.length};let s=t.order.offset??0;return{rows:id(o,t.order.by,t.order.desc).slice(s,s+t.order.limit),total:o.length}}function Mp(e,t,n){let r=qi[t.kind],i=()=>Array.from({length:t.buckets},()=>$i(r.hist)),a=t.split?{}:{"":i()};for(let{c:o,traceId:s}of e){let e=nd(o.key,t.filter)?Le(o.timeMs,n,t.buckets):-1;e<0||ta((a[t.split?o.key:``]??=i())[e],o,s,r)}let o=Object.entries(a).map(([e,n])=>[e,n.map(e=>na(e,{hist:t.hist,times:!1}))]);return{byKey:Object.fromEntries(o)}}function Np(e,t,n){let r=t.windows.map(e=>ed(n,e));return(t.traceId?e.find(e=>e.traceId===t.traceId&&r.some(t=>be(e.startMs,t))):void 0)||e.filter(e=>be(e.startMs,n.window)).reduce((e,t)=>!e||t.startMs>e.startMs?t:e,null)}function Pp(e,t={}){let n=null,r=null,i=()=>n??=e.map(e=>Us(e,t)),a=e=>(r??=Ap(i())).get(e)??[];return{facts:i,runSync(t,n){let r=Zu();for(let o of t)o.type===`groups`?r.groups[o.id]=jp(a(o.kind),o,ed(n,o.window)):o.type===`series`?r.series[o.id]=Mp(a(o.kind),o,ed(n,o.window)):o.type===`list`?r.lists[o.id]=kp(i(),o,ed(n,o.window)):r.traces[o.id]=Np(e,o,n);return r}}}var Fp=[`requests`,`traces`,`spans`,`logs`],Ip=Fp,Lp=[`requests`,`traces`,`spans`],Rp={service:{type:`text`,help:`Service name`,kinds:Ip},env:{type:`text`,help:`Environment`,kinds:Ip},trace:{type:`id`,help:`Trace id, or its start`,kinds:Ip},span:{type:`id`,help:`Span id, or its start`,kinds:[`spans`,`logs`]},name:{type:`text`,help:`Span name, or the trace's root span name`,kinds:[`traces`,`spans`,`logs`]},method:{type:`text`,help:`HTTP method`,kinds:Lp},path:{type:`text`,help:`URL path`,kinds:Lp},route:{type:`text`,help:`Route template, such as /orders/{id}`,kinds:[`requests`,`spans`]},status:{type:`status`,help:`HTTP status (500, 5xx) or span status (ok, error, unset)`,kinds:Lp},duration:{type:`duration`,help:`Duration: 250ms, 1.5s, 2m`,kinds:Lp},level:{type:`level`,help:`Log level: trace, debug, info, warn, error, critical`,kinds:[`logs`]},category:{type:`text`,help:`Log category, or span category (db, http.client, ...)`,kinds:[`spans`,`logs`]},kind:{type:`text`,help:`Span kind: server, client, internal, producer, consumer`,kinds:[`spans`]},user:{type:`text`,help:`End user id`,kinds:[`requests`,`spans`]},error:{type:`bool`,help:`true when it failed`,kinds:Ip},message:{type:`text`,help:`Log message`,kinds:[`logs`]},tag:{type:`text`,help:`Tag: a tag rule's name, or a tag the app sets`,kinds:Ip}},zp=e=>Object.hasOwn(Rp,e),Bp=class extends Error{start;end;constructor(e,t,n){super(e),this.start=t,this.end=n,this.name=`SearchError`}},Vp={chars:2e3,terms:64,depth:16},Hp=e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),Up=e=>RegExp(`^${e.map(e=>e===null?`[\\s\\S]*`:Hp(e)).join(``)}$`,`i`);function Wp(e,t,n){return t===`>`?e>n:t===`>=`?e>=n:t===`<`?e<n:t===`<=`?e<=n:e===n}var Gp=e=>e!=null&&e!==``;function Kp(e){let t=typeof e==`string`&&e.trim()?Number(e):e;return typeof t==`number`&&Number.isFinite(t)?t:null}function qp(e,t,n){switch(e.type){case`exists`:return Gp;case`string`:{let t=e.value.toLowerCase();return n?e=>Gp(e)&&String(e).toLowerCase().startsWith(t):e=>Gp(e)&&String(e).toLowerCase()===t}case`pattern`:{let t=Up(e.pieces);return e=>Gp(e)&&t.test(String(e))}case`number`:return n=>{let r=Kp(n);return r!==null&&Wp(r,t,e.value)};case`bool`:return t=>t===e.value;case`statusClass`:return t=>typeof t==`number`&&Math.floor(t/100)===e.value;case`level`:{let n=ui(e.value);return e=>typeof e==`string`&&ui(e)>=0&&Wp(ui(e),t,n)}default:return t=>typeof t==`string`&&t===e.value}}var Jp=e=>t=>Array.isArray(t)?t.some(e):e(t);function Yp(e){if(e.field===`tag`)return()=>!1;let t=Rp[e.field].kinds,n=e.field===`status`&&e.value.type===`spanStatus`?`outcome`:e.field,r=Jp(qp(e.value,e.cmp,Rp[e.field].type===`id`));return e=>t.includes(e.kind)&&r(e.fields[n])}function Xp(e){let t=qp(e.value,e.cmp,!1);return n=>n.attrs.some(n=>Object.hasOwn(n,e.key)&&t(n[e.key]))}function Zp(e){if(!e)return()=>!0;switch(e.type){case`and`:{let t=e.items.map(Zp);return e=>t.every(t=>t(e))}case`or`:{let t=e.items.map(Zp);return e=>t.some(t=>t(e))}case`not`:{let t=Zp(e.item);return e=>!t(e)}case`text`:{let t=e.value.toLowerCase();return e=>e.text.some(e=>e.includes(t))}case`field`:return Yp(e);default:return Xp(e)}}var Qp=e=>e.flatMap(e=>e==null||e===``?[]:[String(e).toLowerCase()]),$p=(e,t)=>e[t]===void 0||e[t]===null?null:String(e[t]),em=e=>Kp(e),tm=e=>[e.statusMessage,...e.events.filter(e=>e.name===`exception`).map(e=>$p(e.attributes,`exception.message`))],nm=oi.indexOf(`error`);function rm(e){if(!e||!/^[a-z][a-z0-9+.-]*:\/\//i.test(e))return e?.split(`?`)[0]??null;try{return new URL(e).pathname}catch{return e.split(`?`)[0]}}function im(e,t){let n=e.attributes,r=$p(n,`url.path`)??$p(n,`url.full`),i=rm(r);return{kind:`spans`,text:Qp([e.name,r,$p(n,`db.query.text`),...tm(e)]),fields:{service:e.service,env:t,trace:e.traceId,span:e.spanId,name:e.name,method:$p(n,`http.request.method`),path:i,route:$p(n,`http.route`),status:em(n[`http.response.status_code`]),outcome:e.status,duration:e.durationMs,category:e.category,kind:e.kind,user:$p(n,`enduser.id`),error:ge(e)},attrs:[n]}}function am(e,t){return{kind:`logs`,text:Qp([e.message,e.category,e.traceName]),fields:{service:e.service===gr(`browser`)?[e.service,`browser`]:e.service,env:t,trace:e.traceId,span:e.spanId,name:e.traceName,level:e.level,category:e.category,message:e.message,error:oi.indexOf(e.level)>=nm},attrs:[e.attributes]}}function om(e,t){let n=sm(e);return{kind:`traces`,text:Qp([e.rootName,e.rootUrl,...e.services,...n]),fields:{service:e.services.length?e.services:[e.service],env:t,trace:e.traceId,name:e.rootName,method:e.rootMethod,path:rm(e.rootUrl),status:e.rootStatusCode,outcome:e.status,duration:e.durationMs,error:e.status===`error`||e.errorCount>0},attrs:e.spans.map(e=>e.attributes)}}var sm=e=>e.spans.flatMap(tm);function cm(e,t=[],n,r=[]){let i=e.errors>0||(e.status??0)>=500,a=e.endpoint.slice(e.endpoint.indexOf(` `)+1);return{kind:`requests`,text:Qp([e.path,e.endpoint,e.user,e.requestId,e.clientAddress,...e.tags,...r]),fields:{service:[e.service,...e.services],env:n,trace:e.traceId,method:e.method,path:rm(e.path),route:a,status:e.status,outcome:i?`error`:`ok`,duration:e.durationMs,user:e.user,error:i},attrs:t}}var lm=e=>typeof e==`string`?e:null;function um(e,t){let n=e.fields;return{traceId:String(n.trace),spanId:String(n.span),startMs:t,durationMs:Number(n.duration),service:String(n.service),name:String(n.name),kind:n.kind,category:n.category,status:n.outcome,method:lm(n.method),path:lm(n.path),route:lm(n.route),httpStatus:typeof n.status==`number`?n.status:null,user:lm(n.user)}}var dm=e=>e.key.slice(e.key.lastIndexOf(`:`)+1);function fm(e,t){let n=Nn(e);if(!n)return[];let r=ts(n);return[{kind:`requests`,timeMs:r.startMs,owner:``,doc:cm(r,e.spans.map(e=>e.attributes),t,sm(e)),item:()=>r}]}function pm(e,t,n){return t===`requests`?fm(e,n):t===`traces`?Ct(e.traceId)?[]:[{kind:t,timeMs:e.startMs,owner:``,doc:om(e,n),item:()=>ns(e)}]:t===`logs`?li([e]).map(e=>({kind:t,timeMs:e.timeMs,owner:dm(e),doc:am(e,n),item:()=>e})):e.spans.map(e=>{let r=im(e,n);return{kind:t,timeMs:e.startMs,owner:e.spanId,doc:r,item:()=>um(r,e.startMs)}})}var mm=e=>btoa(JSON.stringify([e.timeMs,e.traceId,e.owner]));function hm(e){if(!e)return null;try{let[t,n,r]=JSON.parse(atob(e));return typeof t!=`number`||typeof n!=`string`||typeof r!=`string`?null:{timeMs:t,traceId:n,owner:r}}catch{return null}}function gm(e,t){return e.timeMs===t.timeMs?e.traceId===t.traceId?e.owner===t.owner?0:e.owner<t.owner?-1:1:e.traceId<t.traceId?-1:1:t.timeMs-e.timeMs}function _m(e,t,n){let r=e.slice(0,t),i=r[r.length-1];return{rows:r,next:e.length>t&&i?mm(n(i)):null}}var vm=e=>Math.max(1,Math.min(200,Math.floor(e??50)));function ym(e,t){let n=Zp(t.node),r=vm(t.limit),i=e=>({timeMs:e.timeMs,traceId:String(e.doc.fields.trace),owner:e.owner}),a=[],o=t.traceIds?new Set(t.traceIds):null;for(let r of e)if(!o||o.has(r.traceId))for(let e of pm(r,t.kind,t.env))e.timeMs<t.window.from||e.timeMs>=t.window.to||t.cursor&&gm(i(e),t.cursor)<=0||n(e.doc)&&a.push(e);a.sort((e,t)=>gm(i(e),i(t)));let{rows:s,next:c}=_m(a,r,i);return{kind:t.kind,items:s.map(e=>e.item()),next:c}}var bm={status:[`ok`,`error`,`unset`,`2xx`,`3xx`,`4xx`,`5xx`],level:oi,error:[`true`,`false`],kind:[`server`,`client`,`internal`,`producer`,`consumer`]},xm={service:`spans`,env:`traces`,name:`spans`,method:`spans`,path:`spans`,route:`spans`,category:`spans`,user:`spans`},Sm=(e,t)=>e.toLowerCase().startsWith(t.toLowerCase()),Cm=e=>Object.entries(Rp).filter(([t])=>Sm(t,e)).map(([e,t])=>({value:e,help:t.help})),wm=(e,t)=>zp(e)?(bm[e]??[]).filter(e=>Sm(e,t)).map(e=>({value:e})):[];function Tm(e,t){return[...e].sort((e,t)=>t[1]-e[1]||(e[0]<t[0]?-1:1)).slice(0,t).map(([e,t])=>({value:e,count:t}))}function Em(e,t){let n=new Map,r=t.field===null?t.prefix.replace(/^@/,``):t.prefix,i=(e,t=String(e))=>{e!=null&&e!==``&&Sm(String(e),r)&&n.set(t,(n.get(t)??0)+1)},a=t.field,o=a===null||a.startsWith(`@`)?`spans`:zp(a)?xm[a]:void 0;if(!o)return n;for(let n of e)for(let e of pm(n,o,t.env))e.timeMs<t.window.from||e.timeMs>=t.window.to||(a===null?Object.entries(e.doc.attrs[0]??{}).forEach(([e,t])=>t!==null&&t!==``&&i(e,`@${e}`)):a.startsWith(`@`)?i(e.doc.attrs[0]?.[a.slice(1)]):i(e.doc.fields[a]));return n}function Dm(e,t){return[...t.field===null?t.prefix.startsWith(`@`)?[]:Cm(t.prefix):wm(t.field,t.prefix),...Tm(Em(e,t),t.limit)].slice(0,t.limit)}var Om=/\s/,km=new Set([`OR`,`AND`,`NOT`]);function Am(e,t,n){let r=t+1;for(;r<e.length&&e[r]!==`"`;)e[r]===`\\`&&r+1<e.length&&r++,n.push({c:e[r],lit:!0}),r++;if(r>=e.length)throw new Bp(`This quote is never closed.`,t,e.length);return r+1}function jm(e,t){let n=[],r=t;for(;r<e.length&&!Om.test(e[r])&&e[r]!==`(`&&e[r]!==`)`;)e[r]===`"`?r=Am(e,r,n):e[r]===`\\`&&r+1<e.length?(n.push({c:e[r+1],lit:!0}),r+=2):n.push({c:e[r++],lit:!1});return{chars:n,end:r}}var Mm=e=>e.every(e=>!e.lit)?e.map(e=>e.c).join(``):null;function Nm(e){let t=[],n=0;for(;n<e.length;){let r=e[n];if(Om.test(r))n++;else if(r===`(`||r===`)`)t.push({type:r,start:n,end:++n});else{let i=r===`-`&&n+1<e.length&&!Om.test(e[n+1]),{chars:a,end:o}=jm(e,i?n+1:n),s=Mm(a);if(!i&&s!==null&&km.has(s))t.push({type:s,start:n,end:o});else if(a.length||i)t.push({type:`term`,chars:a,neg:i,start:n,end:o});else if(o===n)throw new Bp(`Unexpected character.`,n,n+1);n=o}}return t}var Pm=/^((?:\d+(?:\.\d+)?|\.\d+)(?:e[+-]?\d+)?)(us|µs|ms|s|m|h)?$/i,Fm={us:.001,µs:.001,ms:1,s:1e3,m:6e4,h:36e5},Im=/^-?(\d+(?:\.\d+)?|\.\d+)(e[+-]?\d+)?$/i,Lm={warning:`warn`,err:`error`,fatal:`critical`,crit:`critical`},Rm=new Set([`ok`,`error`,`unset`]),zm=class extends Error{},Bm=e=>e.map(e=>e.c).join(``);function Vm(e){if(!e.some(e=>e.c===`*`&&!e.lit))return null;let t=[],n=``;for(let r of e)r.c===`*`&&!r.lit?(n&&t.push(n),t[t.length-1]!==null&&t.push(null),n=``):n+=r.c;return n&&t.push(n),t}function Hm(e){let t=Pm.exec(e.trim());if(!t)throw new zm(`"${e}" is not a duration. Use 250ms, 1.5s, or 2m.`);return Number(t[1])*Fm[(t[2]??`ms`).toLowerCase()]}function Um(e){let t=e.toLowerCase(),n=Lm[t]??oi.find(e=>e===t);if(!n)throw new zm(`"${e}" is not a log level. Use ${oi.join(`, `)}.`);return n}function Wm(e,t){let n=e.toLowerCase();if(t===`=`&&Rm.has(n))return{type:`spanStatus`,value:n};if(t===`=`&&/^[1-5]xx$/.test(n))return{type:`statusClass`,value:Number(n[0])};if(/^\d{3}$/.test(n))return{type:`number`,value:Number(n)};throw new zm(`"${e}" is not a status. Use 404, 5xx, ok, error, or unset.`)}function Gm(e){let t=e.toLowerCase();if(t===`true`||t===`false`)return{type:`bool`,value:t===`true`};throw new zm(`"${e}" is not true or false.`)}function Km(e,t,n){if(t!==`=`)throw new zm(`This field holds ${n===`id`?`ids`:`text`}. It cannot use ${t}.`);let r=Vm(e);return r?{type:`pattern`,pieces:r}:{type:`string`,value:Bm(e)}}function qm(e,t,n){let r=Bm(t);if(e===`text`||e===`id`)return Km(t,n,e);if(e===`duration`)return{type:`number`,value:Hm(r)};if(e===`status`)return Wm(r,n);if(e===`level`)return{type:`level`,value:Um(r)};if(n!==`=`)throw new zm(`true or false cannot use < or >.`);return Gm(r)}function Jm(e,t){let n=Bm(e);if(t===`=`)return Km(e,t,`text`);if(!Im.test(n))throw new zm(`${t} needs a number, not "${n}".`);return{type:`number`,value:Number(n)}}var Ym=new Set([`status`,`duration`,`level`]),Xm=/^@?[A-Za-z_][\w.-]*$/,Zm=[`>=`,`<=`,`>`,`<`],Qm=e=>e.map(e=>e.c).join(``);function $m(e){let t=e.findIndex(e=>e.lit),n=e.slice(0,t<0?2:Math.min(2,t)).map(e=>e.c).join(``),r=Zm.find(e=>n.startsWith(e));return r?{cmp:r,rest:e.slice(r.length)}:{cmp:`=`,rest:[...e]}}function eh(e){for(let t=0;t+1<e.length;t++)if(e[t].c===`.`&&e[t+1].c===`.`&&!e[t].lit&&!e[t+1].lit)return t;return-1}var th=(e,t,n)=>e.startsWith(`@`)?{type:`attr`,key:e.slice(1),cmp:t,value:n}:{type:`field`,field:e,cmp:t,value:n};function nh(e,t,n){let r=t.startsWith(`@`);if(!r&&!zp(t))throw new Bp(`Unknown field "${t}". Use @${t} for an attribute, or put the text in quotes.`,e.start,e.end);let i=r?null:Rp[t].type,a=(e,t)=>i?qm(i,e,t):Jm(e,t),{cmp:o,rest:s}=$m(n);if(!s.length)throw new Bp(`${t} needs a value.`,e.start,e.end);try{if(o===`=`&&s.length===1&&s[0].c===`*`&&!s[0].lit)return th(t,`=`,{type:`exists`});let e=o===`=`?eh(s):-1;if(e<0)return th(t,o,a(s,o));if(i&&!Ym.has(i))throw new zm(`${t} cannot take a range.`);let[n,r]=[s.slice(0,e),s.slice(e+2)];if(!n.length||!r.length)throw new zm(`A range needs both ends, such as 200..299.`);return{type:`and`,items:[th(t,`>=`,a(n,`>=`)),th(t,`<=`,a(r,`<=`))]}}catch(t){throw t instanceof zm?new Bp(t.message,e.start,e.end):t}}function rh(e){let t=e.chars.findIndex(e=>e.c===`:`&&!e.lit),n=t>0?e.chars.slice(0,t):[],r=n.every(e=>!e.lit)?Qm(n):``,i=e.chars[t+1]?.c===`/`&&e.chars[t+2]?.c===`/`,a=Xm.test(r)&&!i?nh(e,r,e.chars.slice(t+1)):ih(e.chars);return a?e.neg?{type:`not`,item:a}:a:e.neg?{type:`not`,item:{type:`and`,items:[]}}:null}function ih(e){let t=e.filter(e=>e.lit||e.c!==`*`).map(e=>e.c).join(``);return t?{type:`text`,value:t}:null}function ah(e,t){let n=t.flatMap(t=>t.type===e?t.items:[t]);return n.length===1?n[0]:{type:e,items:n}}var oh=class{src;tokens;i=0;terms=0;constructor(e,t){this.src=e,this.tokens=t}parse(){if(!this.tokens.length)return null;let e=this.or(0),t=this.tokens[this.i];if(t)throw new Bp(t.type===`)`?`This ) has no matching (.`:`Unexpected text.`,t.start,t.end);return e.type===`and`&&!e.items.length?null:e}or(e){let t=this.tokens[this.i];if(t?.type===`OR`)throw new Bp(`OR needs something before it.`,t.start,t.end);let n=[this.and(e)];for(;this.peek(`OR`);){let t=this.tokens[this.i++];if(this.atEnd()||this.peek(`OR`))throw new Bp(`OR needs something after it.`,t.start,t.end);n.push(this.and(e))}return ah(`or`,n)}and(e){let t=[];for(;!this.atEnd()&&!this.peek(`OR`);){if(this.peek(`AND`)){let e=this.tokens[this.i++];if(!t.length||this.atEnd())throw new Bp(`AND needs something on both sides.`,e.start,e.end)}let n=this.unary(e);n&&t.push(n)}return ah(`and`,t)}unary(e){if(e>Vp.depth)throw new Bp(`Too many nested parts.`,this.tokens[this.i].start,this.src.length);let t=this.tokens[this.i++];if(t.type===`NOT`)return this.negate(t,e);if(t.type===`(`)return this.group(t,e);if(t.type!==`term`)throw new Bp(`Unexpected ${t.type}.`,t.start,t.end);if(++this.terms>Vp.terms)throw new Bp(`A search can have at most ${Vp.terms} parts.`,t.start,t.end);return t.neg&&!t.chars.length?this.negate(t,e):rh(t)}negate(e,t){if(this.atEnd()||this.peek(`)`)||this.peek(`OR`))throw new Bp(`NOT needs something after it.`,e.start,e.end);return{type:`not`,item:this.unary(t+1)??{type:`and`,items:[]}}}group(e,t){if(this.peek(`)`))throw new Bp(`These parentheses are empty.`,e.start,this.tokens[this.i].end);let n=this.or(t+1);if(!this.peek(`)`))throw new Bp(`This ( is never closed.`,e.start,e.end);return this.i++,n.type===`and`&&!n.items.length?null:n}peek(e){return this.tokens[this.i]?.type===e}atEnd(){return this.i>=this.tokens.length||this.peek(`)`)}};function sh(e){if(e.length>Vp.chars)throw new Bp(`A search can be at most ${Vp.chars} characters.`,Vp.chars,e.length);return new oh(e,Nm(e)).parse()}var ch=/[\s"\\():*]|^[-<>]|^(OR|AND|NOT)$|\.\./;function lh(e){return ch.test(e)||!e?`"${e.replace(/["\\]/g,e=>`\\${e}`)}"`:e}var uh=e=>e.map(e=>e===null?`*`:lh(e)).join(``);function dh(e){switch(e.type){case`string`:return lh(e.value);case`pattern`:return uh(e.pieces);case`number`:return String(e.value);case`bool`:return String(e.value);case`statusClass`:return`${e.value}xx`;case`exists`:return`*`;default:return e.value}}var fh=(e,t,n,r)=>`${e}:${t===`=`?``:t}${r&&n.type===`number`?`${n.value}ms`:dh(n)}`;function ph(e,t){switch(e.type){case`and`:return e.items.length?mh(e.items.map(e=>ph(e,!0)).join(` `),t&&e.items.length>1):`*`;case`or`:return mh(e.items.map(e=>ph(e,!0)).join(` OR `),t);case`not`:return e.item.type===`and`||e.item.type===`or`||e.item.type===`not`?`NOT ${ph(e.item,!0)}`:`-${ph(e.item,!0)}`;case`text`:return lh(e.value);case`field`:return fh(e.field,e.cmp,e.value,e.field===`duration`);default:return fh(`@${e.key}`,e.cmp,e.value,!1)}}var mh=(e,t)=>t?`(${e})`:e,hh=e=>e?ph(e,!1):``;function gh(e){try{return{ok:!0,node:sh(e)}}catch(e){if(e instanceof Bp)return{ok:!1,error:e.message,start:e.start,end:e.end};throw e}}var _h={type:`not`,item:{type:`and`,items:[]}},vh=e=>e.length===0?_h:e.length===1?e[0]:{type:`or`,items:e},yh=(e,t)=>({type:`attr`,key:`${_t}${e}`,cmp:`=`,value:t===void 0?{type:`exists`}:{type:`string`,value:t}});function bh(e,t,n){let r=e.value;if(r.type===`exists`)return vh(t.map(e=>e.node));if(r.type===`pattern`){let e=Up(r.pieces);return vh(t.filter(t=>e.test(t.name)).map(e=>e.node))}if(r.type!==`string`)return _h;let i=r.value.indexOf(`:`);if(i>0)return yh(r.value.slice(0,i),r.value.slice(i+1));let a=t.find(e=>e.name===r.value.toLowerCase());return a||n.add(r.value.toLowerCase()),vh([...a?[a.node]:[],yh(r.value)])}function xh(e,t,n){return e.type===`and`||e.type===`or`?{type:e.type,items:e.items.map(e=>xh(e,t,n))}:e.type===`not`?{type:`not`,item:xh(e.item,t,n)}:e.type===`field`&&e.field===`tag`?bh(e,t,n):e}function Sh(e,t){let n=new Set;return{node:e&&xh(e,t,n),unknownTags:[...n]}}var Ch=1e3,wh=e=>e.type!==`text`&&(e.type!==`and`||e.items.some(wh));function Th(e){if(!e?.trim())return!1;let t=gh(e);return t.ok&&t.node!==null&&wh(t.node)}var Eh={requests:`requests`,traces:`traces`,logs:`logs`};function Dh(e,t,n,r,i=[],a=Ch){let o=gh(n);if(!o.ok)return[];let s=Sh(o.node,i).node,c=new Set,l=null;do{let n=ym(e,{kind:t,node:s,window:r,limit:200,cursor:hm(l)});for(let e of n.items)c.add(e.traceId);l=n.next}while(l&&c.size<a);return[...c].slice(0,a)}var Oh=1e3,kh=24,Ah=e=>{let t=e;return t.startMs??t.timeMs??0};async function jh(e,t,n,r,i){let a=[],o=null;do{let s=await e({kind:t,node:n,window:r,limit:200,cursor:hm(o),env:i});for(let e of s.items)a.push(Ah(e));o=s.next}while(o&&a.length<1e3);return{times:a.slice(0,Oh),more:!!o}}async function Mh(e,t,n,r,i){let a=await Promise.all(Fp.map(t=>jh(e,t,n,r,i))),o=Object.fromEntries(Fp.map((e,t)=>[e,{n:a[t].times.length,more:a[t].more}])),s=Ee(r,kh),c=(r.to-r.from)/kh,l=Array(kh).fill(0);for(let e of a[Fp.indexOf(t)].times){let t=Math.floor((e-r.from)/c);t>=0&&t<kh&&l[t]++}return{counts:o,starts:s,histogram:l}}var Nh=(e,t)=>Math.max(0,(e.endMs??t)-e.startMs),Ph=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`,Fh=new Int8Array(128).fill(-1);for(let e=0;e<64;e++)Fh[Ph.charCodeAt(e)]=e;function Ih(e){let t=0,n=0,r;do{let i=e.text.charCodeAt(e.i++);if(r=i<128?Fh[i]:-1,r<0)throw Error(`Not a valid source map mapping.`);t+=(r&31)*2**n,n+=5}while(r&32);let i=Math.floor(t/2);return t%2==1?-i:i}var Lh=e=>e.i<e.text.length&&e.text[e.i]!==`,`&&e.text[e.i]!==`;`;function Rh(e){let t=[[]],n={text:e,i:0},r=0,i=[0,0,0,0];for(;n.i<e.length;){let a=e[n.i];if(a===`;`)t.push([]),r=0,n.i++;else if(a===`,`)n.i++;else{r+=Ih(n);let e=[r];for(let t=0;t<4&&Lh(n);t++)e.push(i[t]+=Ih(n));t[t.length-1].push(e)}}for(let e of t)e.sort((e,t)=>e[0]-t[0]);return t}var zh=e=>Array.isArray(e)?e.map(e=>typeof e==`string`?e:``):[];function Bh(e,t){if(typeof t!=`string`||!t)return e;let n=t.endsWith(`/`)?t:`${t}/`;return e.map(e=>/^[a-z]+:/i.test(e)||e.startsWith(`/`)?e:n+e)}function Vh(e){let t=e.sections.flatMap(e=>{let t=e,n=t?.map?Hh(t.map):null;return n?[{line:Number(t.offset?.line)||0,column:Number(t.offset?.column)||0,map:n}]:[]});return{file:typeof e.file==`string`?e.file:null,sources:[],sourcesContent:[],names:[],mappings:``,sections:t}}function Hh(e){let t;try{t=typeof e==`string`?JSON.parse(e.replace(/^\)\]\}'[^\n]*\n/,``)):e}catch{return null}if(!t||typeof t!=`object`||Number(t.version)!==3)return null;if(Array.isArray(t.sections))return Vh(t);if(typeof t.mappings!=`string`)return null;let n=Array.isArray(t.sourcesContent)?t.sourcesContent.map(e=>typeof e==`string`?e:null):[];return{file:typeof t.file==`string`?t.file:null,sources:Bh(zh(t.sources),t.sourceRoot),sourcesContent:n,names:zh(t.names),mappings:t.mappings}}function Uh(e,t){let n=0,r=e.length-1,i=null;for(;n<=r;){let a=n+r>>1;e[a][0]<=t?(i=e[a],n=a+1):r=a-1}return i}function Wh(e,t,n){let r=e.sections,i;for(let e of r)(e.line<t||e.line===t&&e.column<=n)&&(i=e);return i?Gh(i.map,t-i.line,t===i.line?n-i.column:n):null}function Gh(e,t,n){if(e.sections)return Wh(e,t,n);e.lines??=Rh(e.mappings);let r=Uh(e.lines[t]??[],n);if(!r||r.length<4)return null;let i=e.sources[r[1]];return i===void 0?null:{source:i,line:r[2]+1,column:r[3]+1,name:r.length>4?e.names[r[4]]??null:null,content:e.sourcesContent[r[1]]??null}}function Kh(e,t,n){if(t<1||n<1)return null;try{return Gh(e,t-1,n-1)}catch{return null}}var qh=/^\s*at (?:async )?(?:(.*?) \()?(\S+?):(\d+):(\d+)\)?$/,Jh=/^\s*(.*?)@(\S+?):(\d+):(\d+)$/,Yh=/^\s*((?:https?|file|webpack):\/\/\S+?):(\d+):(\d+)$/;function Xh(e){if(e.includes(`eval at `)||e.includes(`(native)`))return null;let t=qh.exec(e);if(t)return{fn:t[1]||null,url:t[2],line:Number(t[3]),column:Number(t[4]),raw:e.trim()};let n=Jh.exec(e);if(n)return{fn:n[1]||null,url:n[2],line:Number(n[3]),column:Number(n[4]),raw:e.trim()};let r=Yh.exec(e);return r?{fn:null,url:r[1],line:Number(r[2]),column:Number(r[3]),raw:e.trim()}:null}function Zh(e,t=50){if(!e)return[];let n=[];for(let r of e.split(/\r?\n/)){let e=Xh(r);if(e&&n.push(e),n.length>=t)break}return n}var Qh=`[A-Za-z_$][\\w$]*`,$h=[RegExp(`function\\s*\\*?\\s*(${Qh})\\s*\\(`),RegExp(`(?:const|let|var)\\s+(${Qh})\\s*(?::[^=]+)?=\\s*(?:async\\s*)?(?:function\\b|\\([^)]*\\)[^=]*=>|${Qh}\\s*=>)`),RegExp(`(${Qh})\\s*:\\s*(?:async\\s*)?(?:function\\b|\\([^)]*\\)[^=]*=>)`),RegExp(`^\\s*(?:(?:public|private|protected|static|async|override|get|set)\\s+)*(${Qh})\\s*(?:<[^>]*>)?\\([^)]*\\)[^{;]*\\{`)],eg=new Set([`if`,`for`,`while`,`switch`,`catch`,`function`,`return`,`with`,`do`,`else`]),tg=300,ng=(e,t)=>e.split(t).length-1;function rg(e){for(let t of $h){let n=t.exec(e);if(n&&!eg.has(n[1]))return n[1]}return null}function ig(e,t,n){let r=e.split(/\r?\n/);if(t<1||t>r.length)return null;let i=0;for(let e=t-1;e>=0&&e>=t-tg;e--){let a=e===t-1?r[e].slice(0,Math.max(0,n-1)):r[e];i+=ng(a,`}`)-ng(a,`{`);let o=rg(a);if(o&&(i<0||e===t-1))return o;i<0&&(i=0)}return null}var ag=300,og=/(^|\/)node_modules\/|^webpack\/(bootstrap|runtime)|^\(webpack\)|^vite\/|^\0/;function sg(e){let t=e.replace(/\\/g,`/`).replace(/[?#].*$/,``);t=t.replace(/^webpack:\/\/[^/]*\//,``).replace(/^[a-z]+:\/\/\/?/i,``).replace(/^\[project\]\//,``);let n=t.lastIndexOf(`node_modules/`);if(n>=0)return t.slice(n);for(;/^\.\.?\//.test(t);)t=t.replace(/^\.\.?\//,``);let r=t.indexOf(`/src/`);return r>=0&&(/^[a-z]:\//i.test(t)||t.startsWith(`/`))?t.slice(r+1):t.replace(/^\/+/,``)}var cg=(e,t)=>!og.test(e??``)&&!t.includes(`/node_modules/`);function lg(e,t,n){if(!e||n<=0)return null;let r=e.split(/\r?\n/),i=Math.max(1,t-n),a=r.slice(i-1,Math.min(r.length,t+n)).map(e=>e.length>ag?`${e.slice(0,ag)}…`:e);return a.length?{start:i,lines:a}:null}function ug(e,t,n){let r=t?Kh(t,e.line,e.column):null;if(!r)return{raw:e,source:null,line:null,column:null,fn:e.fn,inApp:cg(null,e.url),context:null};let i=sg(r.source),a=(r.content?ig(r.content,r.line,r.column):null)??e.fn;return{raw:e,source:i,line:r.line,column:r.column,fn:a,inApp:cg(i,e.url),context:lg(r.content,r.line,n)}}async function dg(e,t,n,r={}){let i=Zh(e,r.maxFrames??50),a=new Map,o=e=>(a.has(e)||a.set(e,n(e,t).catch(()=>null)),a.get(e)),s=r.context??3;return Promise.all(i.map(async e=>ug(e,await o(e.url),s)))}var fg=/^(localhost|127(?:\.\d{1,3}){3}|\[::1\]|::1|[^.]+\.localhost)$/i,pg=e=>/^https?:$/.test(e.protocol)&&fg.test(e.hostname);function mg(e){let t=e.slice(-4096),n=null;for(let e of t.matchAll(/[#@]\s*sourceMappingURL=([^\s'"*]+)/g))n=e[1];return n}function hg(e){let t=/^data:[^,]*?(;base64)?,(.*)$/s.exec(e);if(!t)return null;try{if(!t[1])return decodeURIComponent(t[2]);let e=atob(t[2]);return new TextDecoder().decode(Uint8Array.from(e,e=>e.charCodeAt(0)))}catch{return null}}async function gg(e,t){if(!e.allow(t))return null;try{let n=await e.fetch(t.href,{signal:AbortSignal.timeout(e.timeoutMs)});if(!n.ok||Number(n.headers.get(`content-length`)??0)>e.maxBytes)return null;let r=await n.text();return r.length>e.maxBytes?null:{text:r,header:n.headers.get(`sourcemap`)??n.headers.get(`x-sourcemap`)}}catch{return null}}async function _g(e,t,n){if(t.startsWith(`data:`)){let e=hg(t);return e?Hh(e):null}let r=await gg(e,new URL(t,n));return r?Hh(r.text):null}function vg(e={}){let t={fetch:e.fetch??((...e)=>globalThis.fetch(...e)),allow:e.allow??pg,maxBytes:e.maxBytes??33554432,timeoutMs:e.timeoutMs??5e3};return async e=>{let n;try{n=new URL(e)}catch{return null}let r=await gg(t,n),i=r?r.header??mg(r.text):null;return i?_g(t,i,n):_g(t,`${n.origin}${n.pathname}.map`,n)}}function yg(e,t={}){let n=t.max??50,r=t.missMs??6e4,i=t.hitMs??1/0,a=t.now??Date.now,o=new Map;return async(t,s)=>{let c=`${s??``}\n${t}`,l=o.get(c),u=l?a()-l.at:0;if(l&&u<(await l.map?i:r))return o.delete(c),o.set(c,l),l.map;let d={map:e(t,s).catch(()=>null),at:a()};for(o.set(c,d);o.size>n;)o.delete(o.keys().next().value);return d.map}}function bg(e){let t=e.attributes[ot];return typeof t==`string`&&t?t:null}var xg=`api/sourcemaps/resolve`,Sg=[`blue`,`green`,`amber`,`orange`,`red`,`violet`,`slate`],Cg={name:40,query:2e3,rules:50,matchItems:200};function wg(e){return e.flatMap(e=>{if(!e.enabled)return[];let t=gh(e.query);return t.ok&&t.node?[{name:e.name,color:e.color,node:t.node}]:[]})}function Tg(e){return e?e.type===`and`||e.type===`or`?e.items.some(Tg):e.type===`not`?Tg(e.item):e.type===`field`&&e.field===`tag`:!1}var Eg=(e,t)=>`${e} ${t}`;function Dg(e,t){return e===`spans`?t.spanId:e===`logs`?dm(t):``}var Og={endpoints:{fields:new Set([`service`,`method`,`route`,`path`]),text:!1},services:{fields:new Set([`service`]),text:!1},errors:{fields:new Set([`service`,`error`]),text:!0},users:{fields:new Set([`user`]),text:!1}};function kg(e,t){return e.type===`and`||e.type===`or`?e.items.every(e=>kg(e,t)):e.type===`not`?kg(e.item,t):e.type===`text`?Og[t].text:e.type===`field`&&Og[t].fields.has(e.field)}var Ag=e=>[...new Set([e,_r(e),gr(e)])];function jg(e,t){let n=t.indexOf(` `),[r,i]=n>0?[t.slice(0,n),t.slice(n+1)]:[null,t];return{kind:`requests`,text:[],fields:{service:Ag(e),method:r,route:i,path:i},attrs:[]}}var Mg=e=>({kind:`requests`,text:[],fields:{user:e},attrs:[]}),Ng=e=>({kind:`requests`,text:[],fields:{service:Ag(e)},attrs:[]});function Pg(e){return{kind:`requests`,text:[e.type,e.message,vr(e.message)].map(e=>e.toLowerCase()),fields:{service:Ag(e.service),error:!0,outcome:`error`},attrs:[]}}function Fg(e,t,n){return e.filter(e=>kg(e.node,t)&&Zp(e.node)(n)).map(e=>e.name)}var Ig=(e,t)=>({type:`field`,field:e,cmp:`=`,value:{type:`string`,value:t}}),Lg=(...e)=>hh(e.length===1?e[0]:{type:`and`,items:e});function Rg(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,Cg.name).replace(/-+$/,``)||`tag`}function zg(e,t){let n=t.indexOf(` `),r=n>0?[Ig(`method`,t.slice(0,n)),Ig(`route`,t.slice(n+1))]:[Ig(`route`,t)];return{label:`This endpoint (${t})`,name:Rg(t),query:Lg(Ig(`service`,_r(e)),...r)}}var Bg=e=>({label:`This service (${e})`,name:Rg(e),query:Lg(Ig(`service`,_r(e)))}),Vg=e=>({label:`This user (${e})`,name:Rg(`user-${e}`),query:Lg(Ig(`user`,e))});function Hg(e){return vr(e).split(/\{id\}|#/).map(e=>e.trim()).reduce((e,t)=>t.length>e.length?t:e,``).slice(0,120)}function Ug(e){let t=Hg(e.message)||e.type,n=Lg(Ig(`service`,_r(e.service)),{type:`field`,field:`error`,cmp:`=`,value:{type:`bool`,value:!0}},{type:`text`,value:t});return{label:`This error (${e.type})`,name:Rg(e.type),query:n}}var Wg=e=>({label:`This search`,name:Rg(e.replace(/[@:]/g,` `)),query:e});function Gg(e,t){let n=t.toLowerCase();return e.filter(e=>e.enabled&&e.name.startsWith(n)).map(e=>({value:e.name,help:e.builtIn?`Built-in tag`:e.query}))}var Kg=(e,t)=>e.field===`tag`?Gg(t,e.prefix).slice(0,e.limit):null,qg=864e5,Jg=Object.keys(fe),Yg={"in-app":`In-app`,hub:`Local hub`,cloud:`Cloud`};function Xg(e){let t=new Set(e?.capabilities??$e),n=e?.storage?.maxAgeMs??qg,r=t.has(`serverStats`)?n:Math.min(n,g),i=Jg.filter(e=>fe[e].ms<=r);return{mode:e?.mode??`in-app`,has:e=>t.has(e),keptMs:n,ranges:i.length?i:[Jg[0]],service:e?.service??null}}function H(){let{info:e}=Se();return(0,E.useMemo)(()=>Xg(e),[e])}function Zg(){let[e,t]=te(),{ranges:n}=H();return[n.includes(e)?e:n[n.length-1],t]}function Qg(e){return e>=2*qg?`${Math.round(e/qg)} days`:e>=36e5?`${Math.round(e/36e5)} h`:`${Math.round(e/6e4)} min`}function $g(t,n,r){let i=me(n,r),a=ze(i),o=t.filter(e=>be(e.startMs,i)),s=t.filter(e=>be(e.startMs,a));return{range:n,compareLabel:e[n],window:i,prev:a,traces:o,prevTraces:s,requests:In(o),prevRequests:In(s)}}function e_(){let e=Se(),[t]=Zg();return(0,E.useMemo)(()=>({...$g(e.traces,t,e.updatedMs),all:e.traces,loading:e.loading}),[e.traces,e.updatedMs,e.loading,t])}var t_=e=>e?.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase();function n_(e,t,n=[]){if(t==null)throw Error(`[lucide]: iconNode is required when icon name is used`);return{name:t_(e),size:24,node:t,...n.length>0?{aliases:n}:{}}}var r_=e=>{let t=``,n=!1;for(let r of e)r===`-`||r===`_`||r<=` `?n=t.length>0:(t.length===0?t+=r.toLowerCase():t+=n?r.toUpperCase():r,n=!1);return t},i_=e=>{let t=r_(e);return t.charAt(0).toUpperCase()+t.slice(1)},a_=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),o_={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":2,"stroke-linecap":`round`,"stroke-linejoin":`round`};function s_(e){return e!=null}function c_(e,t={}){let n=t.attributeNames??{},r=e=>n[e]??e,i=e.size??e.width??o_.width,a=e.size??e.height??o_.height,o=e.aliases?.filter(e=>typeof e==`string`&&e.trim()!==``).map(e=>`lucide-${e}`)??[],s=[...e.name?[`lucide-${e.name}`]:[],...o],c=t.className?.split(` `).filter(Boolean)??[],l=t.includeDefaultClasses===!1?a_(...c):a_(`lucide`,...s,...c),u=t.absoluteStrokeWidth?Number(t.strokeWidth??o_[`stroke-width`])*Number(e.size??e.width??o_.width)/Number(t.size??t.width??o_.width):t.strokeWidth??o_[`stroke-width`];return[`svg`,{...Object.entries(o_).reduce((e,[t,n])=>(e[r(t)]=n,e),{}),...`color`in t&&t.color&&{[r(`stroke`)]:t.color},...`size`in t&&s_(t.size)&&{[r(`width`)]:t.size,[r(`height`)]:t.size},...`width`in t&&s_(t.width)&&{[r(`width`)]:t.width},...`height`in t&&s_(t.height)&&{[r(`height`)]:t.height},[r(`stroke-width`)]:u,...l&&{[r(`class`)]:l},[r(`viewBox`)]:`0 0 ${i} ${a}`,...t.hasA11yProp===!1?{[r(`aria-hidden`)]:`true`}:{},...`attributes`in t&&t.attributes},e.node.map(e=>{let[n,i,a]=e,o=t.nonScalingStroke?{[r(`vector-effect`)]:`non-scaling-stroke`,...i}:i;return a?[n,o,a]:[n,o]})]}function l_(e,t={}){return c_(e,{...t,attributeNames:{...t.attributeNames,class:`className`,"stroke-width":`strokeWidth`,"stroke-linecap":`strokeLinecap`,"stroke-linejoin":`strokeLinejoin`,"vector-effect":`vectorEffect`}})}var u_=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},d_=(0,E.createContext)({}),f_=()=>(0,E.useContext)(d_),p_=(0,E.forwardRef)(({color:e,size:t,width:n,height:r,strokeWidth:i,absoluteStrokeWidth:a,nonScalingStroke:o,className:s=``,children:c,iconNode:l=[],icon:u={node:l,aliases:[],size:24},...d},f)=>{let{size:p=24,strokeWidth:m=2,absoluteStrokeWidth:h=!1,nonScalingStroke:g=!1,color:_=`currentColor`,className:v=``}=f_()??{},y=!!c||u_(d),[b,ee,te=[]]=l_(u,{color:e??_,width:n??t??p,height:r??t??p,strokeWidth:i??m,absoluteStrokeWidth:a??h,nonScalingStroke:o??g,className:a_(v,s),hasA11yProp:y,attributes:d});return(0,E.createElement)(b,{ref:f,...ee},[...te.map(([e,t])=>(0,E.createElement)(e,t)),...Array.isArray(c)?c:[c]])});function U(e,t=[],n=[]){let r=typeof e==`string`?n_(e,t,n):e,i=(0,E.forwardRef)(({className:e,...t},n)=>(0,E.createElement)(p_,{ref:n,icon:r,className:e,...t}));return r.name&&(i.displayName=i_(r.name)),i}var m_={name:`activity`,size:24,node:[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`,key:`169zse`}]]};m_.node;var h_=U(m_),g_={name:`arrow-down`,size:24,node:[[`path`,{d:`M12 5v14`,key:`s699le`}],[`path`,{d:`m19 12-7 7-7-7`,key:`1idqje`}]]};g_.node;var __=U(g_),v_={name:`arrow-left`,size:24,node:[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]};v_.node;var y_=U(v_),b_={name:`arrow-right`,size:24,node:[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`m12 5 7 7-7 7`,key:`xquz4c`}]]};b_.node;var x_=U(b_),S_={name:`arrow-up`,size:24,node:[[`path`,{d:`m5 12 7-7 7 7`,key:`hav0vg`}],[`path`,{d:`M12 19V5`,key:`x0mq9r`}]]};S_.node;var C_=U(S_),w_={name:`bell-plus`,size:24,node:[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M15 8h6`,key:`8ybuxh`}],[`path`,{d:`M18 5v6`,key:`g5ayrv`}],[`path`,{d:`M20.002 14.464a9 9 0 0 0 .738.863A1 1 0 0 1 20 17H4a1 1 0 0 1-.74-1.673C4.59 13.956 6 12.499 6 8a6 6 0 0 1 8.75-5.332`,key:`1abcvy`}]]};w_.node;var T_=U(w_),E_={name:`bell`,size:24,node:[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}]]};E_.node;var D_=U(E_),O_={name:`bell-ring`,size:24,node:[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M22 8c0-2.3-.8-4.3-2-6`,key:`5bb3ad`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}],[`path`,{d:`M4 2C2.8 3.7 2 5.7 2 8`,key:`tap9e0`}]]};O_.node;var k_=U(O_),A_={name:`book-open`,size:24,node:[[`path`,{d:`M12 5v16`,key:`1f6ucr`}],[`path`,{d:`M20.001 19A2 2 0 0022 17V5a2 2 0 00-1.999-2L16 3.002A5 5 0 0012 5a5 5 0 00-4-2H4a2 2 0 00-2 2v12a2 2 0 001.999 2H8a5 5 0 014 2 5 5 0 014-2z`,key:`1fyvmf`}]]};A_.node;var j_=U(A_),M_={name:`bookmark`,size:24,node:[[`path`,{d:`M17 3a2 2 0 0 1 2 2v15a1 1 0 0 1-1.496.868l-4.512-2.578a2 2 0 0 0-1.984 0l-4.512 2.578A1 1 0 0 1 5 20V5a2 2 0 0 1 2-2z`,key:`oz39mx`}]]};M_.node;var N_=U(M_),P_={name:`box`,size:24,node:[[`path`,{d:`M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z`,key:`hh9hay`}],[`path`,{d:`m3.3 7 8.7 5 8.7-5`,key:`g66t2b`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}]]};P_.node;var F_=U(P_),I_={name:`boxes`,size:24,node:[[`path`,{d:`M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z`,key:`lc1i9w`}],[`path`,{d:`m7 16.5-4.74-2.85`,key:`1o9zyk`}],[`path`,{d:`m7 16.5 5-3`,key:`va8pkn`}],[`path`,{d:`M7 16.5v5.17`,key:`jnp8gn`}],[`path`,{d:`M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z`,key:`8zsnat`}],[`path`,{d:`m17 16.5-5-3`,key:`8arw3v`}],[`path`,{d:`m17 16.5 4.74-2.85`,key:`8rfmw`}],[`path`,{d:`M17 16.5v5.17`,key:`k6z78m`}],[`path`,{d:`M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z`,key:`1xygjf`}],[`path`,{d:`M12 8 7.26 5.15`,key:`1vbdud`}],[`path`,{d:`m12 8 4.74-2.85`,key:`3rx089`}],[`path`,{d:`M12 13.5V8`,key:`1io7kd`}]]};I_.node;var L_=U(I_),R_={name:`bug`,size:24,node:[[`path`,{d:`M12 20v-9`,key:`1qisl0`}],[`path`,{d:`M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z`,key:`uouzyp`}],[`path`,{d:`M14.12 3.88 16 2`,key:`qol33r`}],[`path`,{d:`M21 21a4 4 0 0 0-3.81-4`,key:`1b0z45`}],[`path`,{d:`M21 5a4 4 0 0 1-3.55 3.97`,key:`5cxbf6`}],[`path`,{d:`M22 13h-4`,key:`1jl80f`}],[`path`,{d:`M3 21a4 4 0 0 1 3.81-4`,key:`1fjd4g`}],[`path`,{d:`M3 5a4 4 0 0 0 3.55 3.97`,key:`1d7oge`}],[`path`,{d:`M6 13H2`,key:`82j7cp`}],[`path`,{d:`m8 2 1.88 1.88`,key:`fmnt4t`}],[`path`,{d:`M9 7.13V6a3 3 0 1 1 6 0v1.13`,key:`1vgav8`}]]};R_.node;var z_=U(R_),B_={name:`calendar`,size:24,node:[[`path`,{d:`M8 2v3`,key:`1ioesn`}],[`path`,{d:`M16 2v3`,key:`otl347`}],[`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`2`,key:`h1oib`}],[`path`,{d:`M3 9h18`,key:`1pudct`}]]};B_.node;var V_=U(B_),H_={name:`chart-column`,size:24,node:[[`path`,{d:`M3 3v16a2 2 0 0 0 2 2h16`,key:`c24i48`}],[`path`,{d:`M18 17V9`,key:`2bz60n`}],[`path`,{d:`M13 17V5`,key:`1frdt8`}],[`path`,{d:`M8 17v-3`,key:`17ska0`}]],aliases:[`bar-chart-3`]};H_.node;var U_=U(H_),W_={name:`check`,size:24,node:[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]};W_.node;var G_=U(W_),K_={name:`chevron-down`,size:24,node:[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]};K_.node;var q_=U(K_),J_={name:`chevron-left`,size:24,node:[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]};J_.node;var Y_=U(J_),X_={name:`chevron-right`,size:24,node:[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]};X_.node;var Z_=U(X_),Q_={name:`circle-check`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m16 9-5.5 5.5L8 12`,key:`xofnsj`}]],aliases:[`check-circle-2`]};Q_.node;var $_=U(Q_),ev={name:`clock`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 6v6l4 2`,key:`mmk7yg`}]]};ev.node;var tv=U(ev),nv={name:`cog`,size:24,node:[[`path`,{d:`M11 10.27 7 3.34`,key:`16pf9h`}],[`path`,{d:`m11 13.73-4 6.93`,key:`794ttg`}],[`path`,{d:`M12 22v-2`,key:`1osdcq`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M14 12h8`,key:`4f43i9`}],[`path`,{d:`m17 20.66-1-1.73`,key:`eq3orb`}],[`path`,{d:`m17 3.34-1 1.73`,key:`2wel8s`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`m20.66 17-1.73-1`,key:`sg0v6f`}],[`path`,{d:`m20.66 7-1.73 1`,key:`1ow05n`}],[`path`,{d:`m3.34 17 1.73-1`,key:`nuk764`}],[`path`,{d:`m3.34 7 1.73 1`,key:`1ulond`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}],[`circle`,{cx:`12`,cy:`12`,r:`8`,key:`46899m`}]]};nv.node;var rv=U(nv),iv={name:`copy`,size:24,node:[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]};iv.node;var av=U(iv),ov={name:`cpu`,size:24,node:[[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M17 20v2`,key:`1rnc9c`}],[`path`,{d:`M17 2v2`,key:`11trls`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M2 17h2`,key:`7oei6x`}],[`path`,{d:`M2 7h2`,key:`asdhe0`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`M20 17h2`,key:`1fpfkl`}],[`path`,{d:`M20 7h2`,key:`1o8tra`}],[`path`,{d:`M7 20v2`,key:`4gnj0m`}],[`path`,{d:`M7 2v2`,key:`1i4yhu`}],[`rect`,{x:`4`,y:`4`,width:`16`,height:`16`,rx:`2`,key:`1vbyd7`}],[`rect`,{x:`8`,y:`8`,width:`8`,height:`8`,rx:`1`,key:`z9xiuo`}]]};ov.node;var sv=U(ov),cv={name:`database`,size:24,node:[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`,key:`1wlel7`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`,key:`mv7ke4`}]]};cv.node;var lv=U(cv),uv={name:`download`,size:24,node:[[`path`,{d:`M12 15V3`,key:`m9g1x1`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}],[`path`,{d:`m7 10 5 5 5-5`,key:`brsn70`}]]};uv.node;var dv=U(uv),fv={name:`external-link`,size:24,node:[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]};fv.node;var pv=U(fv),mv={name:`eye`,size:24,node:[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`,key:`1nclc0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]};mv.node;var hv=U(mv),gv={name:`face-slightly-smiling`,size:24,node:[[`path`,{d:`M15 10V9`,key:`4dkmfx`}],[`path`,{d:`M16.472 15a6 6 0 01-8.943 0`,key:`7qomzy`}],[`path`,{d:`M9 10V9`,key:`1lazqi`}],[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]],aliases:[`smile`]};gv.node;var _v=U(gv),vv={name:`file-search`,size:24,node:[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`circle`,{cx:`11.5`,cy:`14.5`,r:`2.5`,key:`1bq0ko`}],[`path`,{d:`M13.3 16.3 15 18`,key:`2quom7`}]]};vv.node;var yv=U(vv),bv={name:`file-text`,size:24,node:[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 9H8`,key:`b1mrlr`}],[`path`,{d:`M16 13H8`,key:`t4e002`}],[`path`,{d:`M16 17H8`,key:`z1uh3a`}]]};bv.node;var xv=U(bv),Sv={name:`folder-cog`,size:24,node:[[`path`,{d:`M10.3 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.98a2 2 0 0 1 1.69.9l.66 1.2A2 2 0 0 0 12 6h8a2 2 0 0 1 2 2v3.3`,key:`128dxu`}],[`path`,{d:`m14.305 19.53.923-.382`,key:`3m78fa`}],[`path`,{d:`m15.228 16.852-.923-.383`,key:`npixar`}],[`path`,{d:`m16.852 15.228-.383-.923`,key:`5xggr7`}],[`path`,{d:`m16.852 20.772-.383.924`,key:`dpfhf9`}],[`path`,{d:`m19.148 15.228.383-.923`,key:`1reyyz`}],[`path`,{d:`m19.53 21.696-.382-.924`,key:`1goivc`}],[`path`,{d:`m20.772 16.852.924-.383`,key:`htqkph`}],[`path`,{d:`m20.772 19.148.924.383`,key:`9w9pjp`}],[`circle`,{cx:`18`,cy:`18`,r:`3`,key:`1xkwt0`}]],aliases:[`folder-cog-2`]};Sv.node;var Cv=U(Sv),wv={name:`gauge`,size:24,node:[[`path`,{d:`m12 14 4-4`,key:`9kzdfg`}],[`path`,{d:`M3.34 19a10 10 0 1 1 17.32 0`,key:`19p75a`}]]};wv.node;var Tv=U(wv),Ev={name:`git-branch`,size:24,node:[[`path`,{d:`M15 6a9 9 0 0 0-9 9V3`,key:`1cii5b`}],[`circle`,{cx:`18`,cy:`6`,r:`3`,key:`1h7g24`}],[`circle`,{cx:`6`,cy:`18`,r:`3`,key:`fqmcym`}]]};Ev.node;var Dv=U(Ev),Ov={name:`git-compare`,size:24,node:[[`circle`,{cx:`18`,cy:`18`,r:`3`,key:`1xkwt0`}],[`circle`,{cx:`6`,cy:`6`,r:`3`,key:`1lh9wr`}],[`path`,{d:`M13 6h3a2 2 0 0 1 2 2v7`,key:`1yeb86`}],[`path`,{d:`M11 18H8a2 2 0 0 1-2-2V9`,key:`19pyzm`}]]};Ov.node;var kv=U(Ov),Av={name:`globe`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20`,key:`13o1zl`}],[`path`,{d:`M2 12h20`,key:`9i4pu4`}]]};Av.node;var jv=U(Av),Mv={name:`hard-drive`,size:24,node:[[`path`,{d:`M10 16h.01`,key:`1bzywj`}],[`path`,{d:`M2.212 11.577a2 2 0 0 0-.212.896V18a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-5.527a2 2 0 0 0-.212-.896L18.55 5.11A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z`,key:`18tbho`}],[`path`,{d:`M21.946 12.013H2.054`,key:`zqlbp7`}],[`path`,{d:`M6 16h.01`,key:`1pmjb7`}]]};Mv.node;var Nv=U(Mv),Pv={name:`heart-pulse`,size:24,node:[[`path`,{d:`M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5`,key:`mvr1a0`}],[`path`,{d:`M3.22 13H9.5l.5-1 2 4.5 2-7 1.5 3.5h5.27`,key:`auskq0`}]]};Pv.node;var Fv=U(Pv),Iv={name:`house`,size:24,node:[[`path`,{d:`M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8`,key:`5wwlr5`}],[`path`,{d:`M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z`,key:`r6nss1`}]],aliases:[`home`]};Iv.node;var Lv=U(Iv),Rv={name:`inbox`,size:24,node:[[`polyline`,{points:`22 12 16 12 14 15 10 15 8 12 2 12`,key:`o97t9d`}],[`path`,{d:`M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z`,key:`oot6mr`}]]};Rv.node;var zv=U(Rv),Bv={name:`layers`,size:24,node:[[`path`,{d:`M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z`,key:`zw3jo`}],[`path`,{d:`M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12`,key:`1wduqc`}],[`path`,{d:`M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17`,key:`kqbvx6`}]],aliases:[`layers-3`]};Bv.node;var Vv=U(Bv),Hv={name:`layout-dashboard`,size:24,node:[[`rect`,{width:`7`,height:`9`,x:`3`,y:`3`,rx:`1`,key:`10lvy0`}],[`rect`,{width:`7`,height:`5`,x:`14`,y:`3`,rx:`1`,key:`16une8`}],[`rect`,{width:`7`,height:`9`,x:`14`,y:`12`,rx:`1`,key:`1hutg5`}],[`rect`,{width:`7`,height:`5`,x:`3`,y:`16`,rx:`1`,key:`ldoo1y`}]]};Hv.node;var Uv=U(Hv),Wv={name:`lightbulb`,size:24,node:[[`path`,{d:`M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5`,key:`1gvzjb`}],[`path`,{d:`M9 18h6`,key:`x1upvd`}],[`path`,{d:`M10 22h4`,key:`ceow96`}]]};Wv.node;var Gv=U(Wv),Kv={name:`link-2`,size:24,node:[[`path`,{d:`M9 17H7A5 5 0 0 1 7 7h2`,key:`8i5ue5`}],[`path`,{d:`M15 7h2a5 5 0 1 1 0 10h-2`,key:`1b9ql8`}],[`line`,{x1:`8`,x2:`16`,y1:`12`,y2:`12`,key:`1jonct`}]]};Kv.node;var qv=U(Kv),Jv={name:`list`,size:24,node:[[`path`,{d:`M3 5h.01`,key:`18ugdj`}],[`path`,{d:`M3 12h.01`,key:`nlz23k`}],[`path`,{d:`M3 19h.01`,key:`noohij`}],[`path`,{d:`M8 5h13`,key:`1pao27`}],[`path`,{d:`M8 12h13`,key:`1za7za`}],[`path`,{d:`M8 19h13`,key:`m83p4d`}]]};Jv.node;var Yv=U(Jv),Xv={name:`log-out`,size:24,node:[[`path`,{d:`m16 17 5-5-5-5`,key:`1bji2h`}],[`path`,{d:`M21 12H9`,key:`dn1m92`}],[`path`,{d:`M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4`,key:`1uf3rs`}]]};Xv.node;var Zv=U(Xv),Qv={name:`memory-stick`,size:24,node:[[`path`,{d:`M12 12v-2`,key:`fwoke6`}],[`path`,{d:`M12 18v-2`,key:`qj6yno`}],[`path`,{d:`M16 12v-2`,key:`heuere`}],[`path`,{d:`M16 18v-2`,key:`s1ct0w`}],[`path`,{d:`M2 11h1.5`,key:`15p63e`}],[`path`,{d:`M20 18v-2`,key:`12ehxp`}],[`path`,{d:`M20.5 11H22`,key:`khsy7a`}],[`path`,{d:`M4 18v-2`,key:`1c3oqr`}],[`path`,{d:`M8 12v-2`,key:`1mwtfd`}],[`path`,{d:`M8 18v-2`,key:`qcmpov`}],[`rect`,{x:`2`,y:`6`,width:`20`,height:`10`,rx:`2`,key:`1qcswk`}]]};Qv.node;var $v=U(Qv),ey={name:`monitor`,size:24,node:[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`,key:`48i651`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`,key:`1svkeh`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`,key:`vw1qmm`}]]};ey.node;var ty=U(ey),ny={name:`moon`,size:24,node:[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`,key:`kfwtm`}]]};ny.node;var ry=U(ny),iy={name:`network`,size:24,node:[[`rect`,{x:`16`,y:`16`,width:`6`,height:`6`,rx:`1`,key:`4q2zg0`}],[`rect`,{x:`2`,y:`16`,width:`6`,height:`6`,rx:`1`,key:`8cvhb9`}],[`rect`,{x:`9`,y:`2`,width:`6`,height:`6`,rx:`1`,key:`1egb70`}],[`path`,{d:`M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3`,key:`1jsf9p`}],[`path`,{d:`M12 12V8`,key:`2874zd`}]]};iy.node;var ay=U(iy),oy={name:`octagon-x`,size:24,node:[[`path`,{d:`m15 9-6 6`,key:`1uzhvr`}],[`path`,{d:`M2.586 16.726A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2h6.624a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586z`,key:`2d38gg`}],[`path`,{d:`m9 9 6 6`,key:`z0biqf`}]],aliases:[`x-octagon`]};oy.node;var sy=U(oy),cy={name:`paintbrush`,size:24,node:[[`path`,{d:`m14.622 17.897-10.68-2.913`,key:`vj2p1u`}],[`path`,{d:`M18.376 2.622a1 1 0 1 1 3.002 3.002L17.36 9.643a.5.5 0 0 0 0 .707l.944.944a2.41 2.41 0 0 1 0 3.408l-.944.944a.5.5 0 0 1-.707 0L8.354 7.348a.5.5 0 0 1 0-.707l.944-.944a2.41 2.41 0 0 1 3.408 0l.944.944a.5.5 0 0 0 .707 0z`,key:`18tc5c`}],[`path`,{d:`M9 8c-1.804 2.71-3.97 3.46-6.583 3.948a.507.507 0 0 0-.302.819l7.32 8.883a1 1 0 0 0 1.185.204C12.735 20.405 16 16.792 16 15`,key:`ytzfxy`}]]};cy.node;var ly=U(cy),uy={name:`plus`,size:24,node:[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]};uy.node;var dy=U(uy),fy={name:`plug`,size:24,node:[[`path`,{d:`M12 22v-5`,key:`1ega77`}],[`path`,{d:`M15 8V2`,key:`18g5xt`}],[`path`,{d:`M17 8a1 1 0 0 1 1 1v4a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1z`,key:`1xoxul`}],[`path`,{d:`M9 8V2`,key:`14iosj`}]]};fy.node;var py=U(fy),my={name:`refresh-cw`,size:24,node:[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]};my.node;var hy=U(my),gy={name:`rocket`,size:24,node:[[`path`,{d:`M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5`,key:`qeys4`}],[`path`,{d:`M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09`,key:`u4xsad`}],[`path`,{d:`M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z`,key:`676m9`}],[`path`,{d:`M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05`,key:`92ym6u`}]]};gy.node;var _y=U(gy),vy={name:`rotate-ccw`,size:24,node:[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]};vy.node;var yy=U(vy),by={name:`save`,size:24,node:[[`path`,{d:`M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z`,key:`1c8476`}],[`path`,{d:`M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7`,key:`1ydtos`}],[`path`,{d:`M7 3v4a1 1 0 0 0 1 1h7`,key:`t51u73`}]]};by.node;var xy=U(by),Sy={name:`search`,size:24,node:[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]};Sy.node;var Cy=U(Sy),wy={name:`server`,size:24,node:[[`rect`,{width:`20`,height:`8`,x:`2`,y:`2`,rx:`2`,ry:`2`,key:`ngkwjq`}],[`rect`,{width:`20`,height:`8`,x:`2`,y:`14`,rx:`2`,ry:`2`,key:`iecqi9`}],[`line`,{x1:`6`,x2:`6.01`,y1:`6`,y2:`6`,key:`16zg32`}],[`line`,{x1:`6`,x2:`6.01`,y1:`18`,y2:`18`,key:`nzw8ys`}]]};wy.node;var Ty=U(wy),Ey={name:`settings-2`,size:24,node:[[`path`,{d:`M14 17H5`,key:`gfn3mx`}],[`path`,{d:`M19 7h-9`,key:`6i9tg`}],[`circle`,{cx:`17`,cy:`17`,r:`3`,key:`18b49y`}],[`circle`,{cx:`7`,cy:`7`,r:`3`,key:`dfmy0x`}]]};Ey.node;var Dy=U(Ey),Oy={name:`settings`,size:24,node:[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`,key:`1i5ecw`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]};Oy.node;var ky=U(Oy),Ay={name:`share-2`,size:24,node:[[`circle`,{cx:`18`,cy:`5`,r:`3`,key:`gq8acd`}],[`circle`,{cx:`6`,cy:`12`,r:`3`,key:`w7nqdw`}],[`circle`,{cx:`18`,cy:`19`,r:`3`,key:`1xt0gg`}],[`line`,{x1:`8.59`,x2:`15.42`,y1:`13.51`,y2:`17.49`,key:`47mynk`}],[`line`,{x1:`15.41`,x2:`8.59`,y1:`6.51`,y2:`10.49`,key:`1n3mei`}]]};Ay.node;var jy=U(Ay),My={name:`siren`,size:24,node:[[`path`,{d:`M7 18v-6a5 5 0 1 1 10 0v6`,key:`pcx96s`}],[`path`,{d:`M5 21a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-1a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2z`,key:`1b4s83`}],[`path`,{d:`M21 12h1`,key:`jtio3y`}],[`path`,{d:`M18.5 4.5 18 5`,key:`g5sp9y`}],[`path`,{d:`M2 12h1`,key:`1uaihz`}],[`path`,{d:`M12 2v1`,key:`11qlp1`}],[`path`,{d:`m4.929 4.929.707.707`,key:`1i51kw`}],[`path`,{d:`M12 12v6`,key:`3ahymv`}]]};My.node;var Ny=U(My),Py={name:`skull`,size:24,node:[[`path`,{d:`m12.5 17-.5-1-.5 1h1z`,key:`3me087`}],[`path`,{d:`M15 22a1 1 0 0 0 1-1v-1a2 2 0 0 0 1.56-3.25 8 8 0 1 0-11.12 0A2 2 0 0 0 8 20v1a1 1 0 0 0 1 1z`,key:`1o5pge`}],[`circle`,{cx:`15`,cy:`12`,r:`1`,key:`1tmaij`}],[`circle`,{cx:`9`,cy:`12`,r:`1`,key:`1vctgf`}]]};Py.node;var Fy=U(Py),Iy={name:`sliders-horizontal`,size:24,node:[[`path`,{d:`M10 5H3`,key:`1qgfaw`}],[`path`,{d:`M12 19H3`,key:`yhmn1j`}],[`path`,{d:`M14 3v4`,key:`1sua03`}],[`path`,{d:`M16 17v4`,key:`1q0r14`}],[`path`,{d:`M21 12h-9`,key:`1o4lsq`}],[`path`,{d:`M21 19h-5`,key:`1rlt1p`}],[`path`,{d:`M21 5h-7`,key:`1oszz2`}],[`path`,{d:`M8 10v4`,key:`tgpxqk`}],[`path`,{d:`M8 12H3`,key:`a7s4jb`}]]};Iy.node;var Ly=U(Iy),Ry={name:`star`,size:24,node:[[`path`,{d:`M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z`,key:`r04s7s`}]]};Ry.node;var zy=U(Ry),By={name:`sun`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`m4.93 4.93 1.41 1.41`,key:`149t6j`}],[`path`,{d:`m17.66 17.66 1.41 1.41`,key:`ptbguv`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`m6.34 17.66-1.41 1.41`,key:`1m8zz5`}],[`path`,{d:`m19.07 4.93-1.41 1.41`,key:`1shlcs`}]]};By.node;var Vy=U(By),Hy={name:`tag`,size:24,node:[[`path`,{d:`M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z`,key:`vktsd0`}],[`circle`,{cx:`7.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`kqv944`}]]};Hy.node;var Uy=U(Hy),Wy={name:`target`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`circle`,{cx:`12`,cy:`12`,r:`6`,key:`1vlfrh`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}]]};Wy.node;var Gy=U(Wy),Ky={name:`timer`,size:24,node:[[`line`,{x1:`10`,x2:`14`,y1:`2`,y2:`2`,key:`14vaq8`}],[`line`,{x1:`12`,x2:`15`,y1:`14`,y2:`11`,key:`17fdiu`}],[`circle`,{cx:`12`,cy:`14`,r:`8`,key:`1e1u0o`}]]};Ky.node;var qy=U(Ky),Jy={name:`trash`,size:24,node:[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]],aliases:[`trash-2`]};Jy.node;var Yy=U(Jy),Xy={name:`triangle-alert`,size:24,node:[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]],aliases:[`alert-triangle`]};Xy.node;var Zy=U(Xy),Qy={name:`upload`,size:24,node:[[`path`,{d:`M12 3v12`,key:`1x0j5s`}],[`path`,{d:`m17 8-5-5-5 5`,key:`7q97r8`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}]]};Qy.node;var $y=U(Qy),eb={name:`user-round`,size:24,node:[[`circle`,{cx:`12`,cy:`8`,r:`5`,key:`1hypcn`}],[`path`,{d:`M20 21a8 8 0 0 0-16 0`,key:`rfgkzh`}]],aliases:[`user-2`]};eb.node;var tb=U(eb),nb={name:`users`,size:24,node:[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`path`,{d:`M16 3.128a4 4 0 0 1 0 7.744`,key:`16gr8j`}],[`path`,{d:`M22 21v-2a4 4 0 0 0-3-3.87`,key:`kshegd`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}]]};nb.node;var rb=U(nb),ib={name:`waypoints`,size:24,node:[[`path`,{d:`m10.586 5.414-5.172 5.172`,key:`4mc350`}],[`path`,{d:`m18.586 13.414-5.172 5.172`,key:`8c96vv`}],[`path`,{d:`M6 12h12`,key:`8npq4p`}],[`circle`,{cx:`12`,cy:`20`,r:`2`,key:`144qzu`}],[`circle`,{cx:`12`,cy:`4`,r:`2`,key:`muu5ef`}],[`circle`,{cx:`20`,cy:`12`,r:`2`,key:`1xzzfp`}],[`circle`,{cx:`4`,cy:`12`,r:`2`,key:`1hvhnz`}]]};ib.node;var ab=U(ib),ob={name:`x`,size:24,node:[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]};ob.node;var sb=U(ob),cb={name:`zap`,size:24,node:[[`path`,{d:`M15.914 4a1.5 1.5 0 00-2.474-1.561l-9 9A1.5 1.5 0 005.5 14h4.002a.5.5 0 01.471.666L8.086 20a1.5 1.5 0 002.475 1.56l9-9A1.5 1.5 0 0018.5 10h-3.997a.5.5 0 01-.472-.667z`,key:`1v7up4`}]]};cb.node;var lb=U(cb),ub=We((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),db=We(((e,t)=>{t.exports=ub()})),W=db();function fb({title:e,subtitle:t,children:n}){return(0,W.jsxs)(`header`,{className:`wl-page-head`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`h1`,{children:e}),(0,W.jsx)(`p`,{children:t})]}),n&&(0,W.jsx)(`div`,{className:`wl-page-actions`,children:n})]})}function G({title:e,action:t,flush:n=!1,className:r=``,children:i}){return(0,W.jsxs)(`section`,{className:`wl-panel${n?` wl-panel-flush`:``} ${r}`,children:[(e||t)&&(0,W.jsxs)(`div`,{className:`wl-panel-head`,children:[typeof e==`string`?(0,W.jsx)(`h2`,{children:e}):e,t]}),i]})}function pb({href:e,label:t=`View all`}){return(0,W.jsxs)(`a`,{className:`wl-view-all`,href:e,children:[t,` `,(0,W.jsx)(x_,{"aria-hidden":`true`})]})}function K({title:e,children:t}){return(0,W.jsxs)(`div`,{className:`wl-empty`,children:[e&&(0,W.jsx)(`strong`,{children:e}),t]})}function mb({rows:e}){return(0,W.jsx)(`dl`,{className:`wl-kv`,children:e.map(([e,t],n)=>(0,W.jsxs)(`div`,{style:{display:`contents`},children:[(0,W.jsx)(`dt`,{children:e}),(0,W.jsx)(`dd`,{children:t??`–`})]},n))})}function hb({tabs:e,value:t,onChange:n}){return(0,W.jsx)(`div`,{className:`wl-tabbar`,role:`tablist`,children:e.map(([e,r])=>(0,W.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":t===e,className:t===e?`wl-active`:``,onClick:()=>n(e),children:r},e))})}var gb=`–`;function q(e){return e==null||!Number.isFinite(e)?gb:e===0?`0 ms`:e<1?`${e.toFixed(2)} ms`:e<10?`${e.toFixed(1)} ms`:e<1e3?`${Math.round(e)} ms`:`${(e/1e3).toFixed(e<1e4?2:1)} s`}var _b=e=>e===`week`?`Last week`:`Period before`,J=e=>e==null||!Number.isFinite(e)?gb:Math.round(e).toLocaleString(`en-US`),vb=(e,t)=>t>e?`${J(e)} of ${J(t)}`:J(t);function yb(e){return e==null||!Number.isFinite(e)?gb:e===0?`0%`:Math.abs(e)<10?`${e.toFixed(2).replace(/\.?0+$/,``)}%`:`${Math.round(e)}%`}function bb(e){return e==null||!Number.isFinite(e)?gb:e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1024/1024).toFixed(1)} MB`}function xb(e){return e>=1e6?`${(e/1e6).toFixed(1).replace(/\.0$/,``)}M`:e>=1e4?`${Math.round(e/1e3)}K`:J(e)}var Sb={utc:!1,hour12:!0},Cb=e=>void(Sb=e),wb=()=>Sb.utc,Tb=e=>({...e,...e.hour?{hour12:Sb.hour12}:{},...Sb.utc?{timeZone:`UTC`}:{}}),Eb=e=>new Date(e).toLocaleTimeString(`en-US`,Tb({hour:`numeric`,minute:`2-digit`,second:`2-digit`})),Db=e=>new Date(e).toLocaleDateString(`en-US`,Tb({month:`short`,day:`numeric`,year:`numeric`})),Ob=e=>new Date(e).toLocaleString(`en-US`,Tb({month:`short`,day:`numeric`,year:`numeric`,hour:`numeric`,minute:`2-digit`})),kb=1728e5,Ab=(e,t=0)=>t>kb?new Date(e).toLocaleDateString(`en-US`,Tb({month:`short`,day:`numeric`})):new Date(e).toLocaleTimeString(`en-US`,Tb({hour:`numeric`,minute:`2-digit`})),jb=(e,t=0)=>t>kb?new Date(e).toLocaleString(`en-US`,Tb({month:`short`,day:`numeric`,hour:`numeric`})):Ab(e);function Mb(e){let t=new Date(Sb.utc?e:e-new Date(e).getTimezoneOffset()*6e4),n=(e,t=2)=>String(e).padStart(t,`0`);return`${n(t.getUTCHours())}:${n(t.getUTCMinutes())}:${n(t.getUTCSeconds())}.${n(t.getUTCMilliseconds(),3)}`}function Nb(e,t=Date.now()){let n=Math.max(0,Math.round((t-e)/1e3));if(n<5)return`just now`;if(n<60)return`${n}s ago`;let r=Math.round(n/60);if(r<60)return`${r}m ago`;let i=Math.round(r/60);return i<24?`${i}h ago`:Db(e)}function Pb(e,t){let n=t.indexOf(e);if(n>=0)return n%8;let r=0;for(let t of e)r=r*31+t.charCodeAt(0)|0;return Math.abs(r)%8}var Fb=e=>e.slice(0,8),Ib={error:`Error`,"n+1-db":`N+1 query`,"n+1-http":`N+1 HTTP`,"duplicate-query":`Duplicate`,"slow-query":`Slow query`,"db-wait":`Database wait`};function Lb({findings:e,onSelect:t}){return e.length===0?(0,W.jsxs)(`section`,{className:`wl-insights wl-insights-clean`,"aria-label":`Insights`,children:[(0,W.jsx)(`span`,{className:`wl-insight-ok`,children:`✓`}),` No problems found in this request.`]}):(0,W.jsx)(`section`,{className:`wl-insights`,"aria-label":`Insights`,children:e.map((e,n)=>(0,W.jsxs)(`button`,{type:`button`,className:`wl-insight wl-insight-${e.severity}`,onClick:()=>t(e),children:[(0,W.jsx)(`span`,{className:`wl-fbadge wl-fbadge-${e.kind.replace(`+`,`p`)}`,children:Ib[e.kind]}),(0,W.jsx)(`span`,{className:`wl-insight-title`,children:e.title}),(0,W.jsx)(`code`,{className:`wl-insight-shape`,children:e.shape}),(0,W.jsx)(`span`,{className:`wl-insight-ms`,children:q(e.totalMs)})]},`${e.kind}-${n}`))})}var Rb={info:`info`,success:`success`,opportunity:`warning`,warning:`orange`,critical:`danger`,neutral:`neutral`},zb=e=>Rb[e];function Bb(e){return e===null?`neutral`:e>=500?`danger`:e>=400?`warning`:`success`}function Vb({tone:e,title:t}){return(0,W.jsx)(`span`,{className:`wl-dot wl-tone-${e}`,title:t})}function Hb({tone:e,children:t,colorText:n=!1}){return(0,W.jsxs)(`span`,{className:`wl-dot-text${n?` wl-text-tone-${e}`:``}`,children:[(0,W.jsx)(Vb,{tone:e}),t]})}function Y({tone:e,children:t}){return(0,W.jsx)(`span`,{className:`wl-badge wl-badge-${e}`,children:t})}var Ub={high:`High`,medium:`Medium`,low:`Low`},Wb=({impact:e})=>(0,W.jsx)(Y,{tone:e,children:Ub[e]});function Gb({n:e}){return e>0?(0,W.jsx)(`span`,{className:`wl-count`,children:e}):(0,W.jsx)(`span`,{className:`wl-muted`,children:`–`})}function Kb({text:e,label:t=`Copy`,asLink:n=!1}){let[r,i]=(0,E.useState)(!1),a=()=>{navigator.clipboard?.writeText(e).then(()=>{i(!0),setTimeout(()=>i(!1),1200)})};return n?(0,W.jsx)(`button`,{type:`button`,className:`wl-link-btn`,onClick:a,children:r?`Copied`:t}):(0,W.jsx)(`button`,{type:`button`,className:`wl-copy-btn`,onClick:a,title:t,"aria-label":t,children:r?(0,W.jsx)(G_,{}):(0,W.jsx)(av,{})})}function X({value:e,options:t,onChange:n,label:r,small:i=!1}){return(0,W.jsx)(`select`,{className:`wl-select${i?` wl-small`:``}`,value:e,"aria-label":r,onChange:e=>n(e.target.value),children:t.map(([e,t])=>(0,W.jsx)(`option`,{value:e,children:t},e))})}function qb({value:e,onChange:t,placeholder:n}){return(0,W.jsxs)(`label`,{className:`wl-input`,children:[(0,W.jsx)(Cy,{"aria-hidden":`true`}),(0,W.jsx)(`input`,{type:`search`,value:e,placeholder:n,onChange:e=>t(e.target.value)})]})}function Jb(e,t){let n=[...new Set([1,2,3,e-1,e,e+1,t].filter(e=>e>=1&&e<=t))].sort((e,t)=>e-t),r=[];return n.forEach((e,t)=>{t>0&&e-n[t-1]>1&&r.push(null),r.push(e)}),r}function Yb({page:e,pageSize:t,total:n,noun:r,onPage:i,onPageSize:a}){let o=Math.max(1,Math.ceil(n/t)),s=n===0?0:(e-1)*t+1,c=Math.min(n,e*t);return(0,W.jsxs)(`div`,{className:`wl-pager`,children:[(0,W.jsxs)(`span`,{children:[J(s),`–`,J(c),` of `,J(n),` `,r]}),(0,W.jsxs)(`div`,{className:`wl-pages`,children:[(0,W.jsx)(`button`,{type:`button`,"aria-label":`Previous page`,disabled:e<=1,onClick:()=>i(e-1),children:(0,W.jsx)(Y_,{size:16})}),Jb(e,o).map((t,n)=>t===null?(0,W.jsx)(`span`,{children:`…`},`gap-${n}`):(0,W.jsx)(`button`,{type:`button`,className:t===e?`wl-active`:void 0,onClick:()=>i(t),children:J(t)},t)),(0,W.jsx)(`button`,{type:`button`,"aria-label":`Next page`,disabled:e>=o,onClick:()=>i(e+1),children:(0,W.jsx)(Z_,{size:16})}),(0,W.jsx)(X,{small:!0,label:`Rows per page`,value:String(t),options:[[`15`,`15 / page`],[`30`,`30 / page`],[`50`,`50 / page`],[`100`,`100 / page`]],onChange:e=>a(Number(e))})]})]})}function Xb({label:e,title:t,buttonClass:n=`wl-top-btn`,onOpen:r,children:i}){let[a,o]=(0,E.useState)(!1),s=(0,E.useRef)(null);return(0,E.useEffect)(()=>{if(!a)return;let e=e=>!s.current?.contains(e.target)&&o(!1),t=e=>e.key===`Escape`&&o(!1);return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[a]),(0,W.jsxs)(`div`,{className:`wl-menu-anchor`,ref:s,children:[(0,W.jsx)(`button`,{type:`button`,className:n,"aria-haspopup":`true`,"aria-expanded":a,title:t,"aria-label":t,onClick:()=>{a||r?.(),o(!a)},children:e}),a&&(0,W.jsx)(`div`,{className:`wl-menu`,role:`menu`,children:i(()=>o(!1))})]})}var Zb=[[`1`,`1 day`],[`7`,`7 days`],[`30`,`30 days`]];function Qb({traceId:e}){let[t,n]=(0,E.useState)(`7`),[r,i]=(0,E.useState)(null),[a,o]=(0,E.useState)(null),s=()=>{o(null),x(`POST`,`./api/projects/${c().project}/shares`,{traceId:e,days:Number(t)}).then(i,e=>o(e instanceof Error?e.message:String(e)))};return(0,W.jsx)(Xb,{label:(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(qv,{"aria-hidden":`true`}),` Share`]}),title:`Share a read-only link`,buttonClass:`wl-btn`,children:()=>(0,W.jsxs)(`div`,{className:`wl-share`,children:[(0,W.jsx)(`div`,{className:`wl-menu-head`,children:`Read-only link`}),(0,W.jsx)(`p`,{className:`wl-muted wl-small`,children:`Anyone with the link sees this trace, and nothing else. Secrets were removed when the trace was stored.`}),(0,W.jsxs)(`div`,{className:`wl-share-row`,children:[(0,W.jsx)(X,{small:!0,label:`Link lasts`,value:t,options:Zb,onChange:n}),(0,W.jsx)(`button`,{type:`button`,className:`wl-btn wl-btn-primary`,onClick:s,children:`Create link`})]}),r&&(0,W.jsxs)(`div`,{className:`wl-share-link`,children:[(0,W.jsx)(`code`,{className:`wl-mono wl-small`,children:r.url}),(0,W.jsx)(Kb,{text:r.url,label:`Copy link`}),(0,W.jsxs)(`span`,{className:`wl-muted wl-small`,children:[`Works until `,Db(r.expiresMs),`. Revoke it on the Team page.`]})]}),a&&(0,W.jsx)(`div`,{className:`wl-banner wl-banner-error`,children:a})]})})}function $b({trace:e}){return(0,W.jsxs)(`button`,{type:`button`,className:`wl-btn`,onClick:()=>{let t=URL.createObjectURL(new Blob([JSON.stringify(e,null,2)],{type:`application/json`}));Object.assign(document.createElement(`a`),{href:t,download:`trace-${e.traceId}.json`}).click(),URL.revokeObjectURL(t)},title:`Download this trace as JSON`,children:[(0,W.jsx)(dv,{"aria-hidden":`true`}),` JSON`]})}var ex=/^[0-9a-f]{32}$/;function tx({trace:e}){let[t,n]=(0,E.useState)(!1),[r,i]=(0,E.useState)(``),{traces:a}=Se(),o=a.filter(t=>t.rootName===e.rootName&&t.traceId!==e.traceId).slice(0,5),s=t=>T(S(`trace`,[e.traceId,`compare`,t]));return(0,W.jsxs)(`span`,{className:`wl-compare`,children:[(0,W.jsxs)(`button`,{type:`button`,className:`wl-btn`,onClick:()=>n(!t),"aria-expanded":t,children:[(0,W.jsx)(kv,{"aria-hidden":`true`}),` Compare`]}),t&&(0,W.jsxs)(`div`,{className:`wl-menu wl-compare-menu`,children:[(0,W.jsx)(`form`,{onSubmit:e=>(e.preventDefault(),ex.test(r.trim())&&s(r.trim())),children:(0,W.jsx)(`input`,{className:`wl-compare-input`,value:r,onChange:e=>i(e.target.value),placeholder:`Paste a trace id`,"aria-label":`Trace id to compare with`})}),o.length>0&&(0,W.jsx)(`div`,{className:`wl-menu-head`,children:`Same request, newest`}),o.map(e=>(0,W.jsxs)(`button`,{type:`button`,className:`wl-menu-item`,onClick:()=>s(e.traceId),children:[(0,W.jsx)(`span`,{className:`wl-mono`,children:Fb(e.traceId)}),(0,W.jsxs)(`span`,{className:`wl-muted wl-small`,children:[Eb(e.startMs),` · `,q(e.durationMs)]})]},e.traceId))]})]})}function nx(e){let t=new Map;for(let n of e)for(let e of n.spanIds){let r=t.get(e)??new Set;r.add(n.kind),t.set(e,r)}return t}var rx={"duplicate-query":`DUP`,"n+1-db":`N+1`,"n+1-http":`N+1`,"slow-query":`SLOW`,"db-wait":`WAIT`};function ix({kinds:e}){return e?(0,W.jsx)(W.Fragment,{children:[...e].filter(e=>rx[e]).map(e=>(0,W.jsx)(`span`,{className:`wl-fbadge wl-fbadge-${e.replace(`+`,`p`)}`,children:rx[e]},e))}):null}function ax(e,t){return[t.selected===e.spanId?`wl-selected`:``,t.highlight.has(e.spanId)?`wl-highlight`:``,ve(e)?`wl-row-error`:``].join(` `).trim()}function ox({service:e,services:t}){return(0,W.jsx)(`span`,{className:`wl-chip wl-svc wl-svc-${Pb(e,t)}`,children:e})}var sx=e=>e>=500?`wl-pill-err`:e>=400?`wl-pill-warn`:`wl-pill-ok`;function cx({trace:e,timing:t}){let n=[[`Total`,q(t.totalMs)],[`Server`,q(t.serverMs)],[`Database`,q(t.dbMs)],[`Render`,q(t.renderMs)],[`Started`,Mb(e.startMs)],[`Spans`,String(e.spanCount)],[`Queries`,String(e.dbCount)],[`HTTP calls`,String(e.httpClientCount)]];return(0,W.jsxs)(`dl`,{className:`wl-stats`,children:[n.map(([e,t])=>(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`dt`,{children:e}),(0,W.jsx)(`dd`,{children:t})]},e)),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`dt`,{children:`Services`}),(0,W.jsx)(`dd`,{className:`wl-chips`,children:e.services.map(t=>(0,W.jsx)(ox,{service:t,services:e.services},t))})]})]})}function lx({timing:e,failed:t}){let n=Tn(e),r=t=>`${t/Math.max(e.totalMs,.001)*100}%`,i=[[t?`wl-c-error`:`wl-c-server`,`Server code`,n.server],[`wl-c-db`,`Database`,n.db],[`wl-c-render`,`Render`,n.render],[`wl-c-other`,`Network and other`,n.other]];return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{className:`wl-split-bar`,"aria-hidden":`true`,children:i.map(([e,,t])=>(0,W.jsx)(`i`,{className:e,style:{width:r(t)}},e))}),(0,W.jsx)(`div`,{className:`wl-legend`,children:i.map(([e,t,n])=>(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`i`,{className:e}),` `,t,` `,(0,W.jsx)(`b`,{children:q(n)})]},t))})]})}function ux({trace:e,timing:t,health:n,loading:r,onRefresh:i,backHref:a,actions:o,tags:s}){let c=e.rootStatusCode;return(0,W.jsxs)(`section`,{className:`wl-panel wl-trace-head`,children:[a&&(0,W.jsxs)(`a`,{className:`wl-back`,href:a,children:[(0,W.jsx)(y_,{size:14,"aria-hidden":`true`}),` All traces`]}),(0,W.jsxs)(`div`,{className:`wl-trace-title`,children:[(0,W.jsxs)(`h1`,{children:[(0,W.jsx)(`span`,{className:`wl-h-dot wl-h-${n}`,title:`Health: ${n}`}),e.rootName,c!=null&&(0,W.jsx)(`span`,{className:`wl-pill wl-small-chip ${sx(c)}`,children:c})]}),(0,W.jsxs)(`span`,{className:`wl-trace-actions`,children:[o,i&&(0,W.jsxs)(`button`,{type:`button`,className:`wl-btn`,onClick:i,disabled:r,children:[(0,W.jsx)(hy,{"aria-hidden":`true`}),` `,r?`Refreshing…`:`Refresh`]})]})]}),s,(0,W.jsx)(cx,{trace:e,timing:t}),(0,W.jsx)(lx,{timing:t,failed:n===`critical`}),(0,W.jsxs)(`div`,{className:`wl-muted wl-small wl-mono`,children:[(0,W.jsx)(Kb,{text:e.traceId,label:`Copy trace id`}),`trace `,e.traceId]})]})}var dx={tags:[],editable:!1,max:Cg.rules},fx=null,px=null,mx=new Set,hx=()=>c().project,gx=()=>{let e=c().project;return e?`?project=${encodeURIComponent(e)}`:``};function _x(e){fx=e,mx.forEach(e=>e())}async function vx(){let e=hx();px=e;let t=await ne(`./api/tags${gx()}`).catch(()=>dx);px===e&&(px=null,_x({key:e,list:t,active:wg(t.tags)}))}var yx=()=>vx(),bx=e=>(mx.add(e),()=>void mx.delete(e));d(()=>{fx&&fx.key!==hx()&&vx()});function xx(){let e=H().has(`tags`),t=(0,E.useSyncExternalStore)(bx,()=>fx);return(0,E.useEffect)(()=>{e&&px===null&&(!fx||fx.key!==hx())&&vx()},[e,t]),e?t&&t.key===hx()?t:null:{list:dx,active:[]}}var Sx=()=>fx?.list.tags??[],Cx=e=>`./api/tags${e?`/${encodeURIComponent(e)}`:``}${gx()}`,wx=e=>x(`POST`,Cx(),e).then(e=>(yx(),e)),Tx=(e,t)=>x(`PATCH`,Cx(e),t).then(e=>(yx(),e)),Ex=(e,t)=>x(`PATCH`,Cx(e),{enabled:t}).then(e=>(yx(),e)),Dx=e=>x(`DELETE`,Cx(e)).then(()=>void yx());async function Ox(e,t){let n=c().env,r=gx(),i=`./api/tags/match${r}${n?`${r?`&`:`?`}env=${encodeURIComponent(n)}`:``}`,a=[];for(let e=0;e<t.length;e+=Cg.matchItems)a.push(t.slice(e,e+Cg.matchItems));let o=await Promise.all(a.map(t=>x(`POST`,i,{kind:e,items:t})));return Object.assign({},...o.map(e=>e.matches))}var kx=[];async function Ax(e,t){if(e!==`traces`)return Ox(e,t);let[n,r]=await Promise.all([Ox(`traces`,t),Ox(`requests`,t)]),i={...r};for(let[e,t]of Object.entries(n))i[e]=[...new Set([...i[e]??[],...t])];return i}function jx(e,t,n){let r=xx(),i=(0,E.useMemo)(()=>t.map(n),[t]),a=i.map(e=>Eg(e.traceId,e.owner)).join(`,`),[o,s]=(0,E.useState)({});return(0,E.useEffect)(()=>{if(!r?.active.length||!i.length)return s({});let t=!0;return Ax(e,i).then(e=>t&&s(e),()=>t&&s({})),()=>void(t=!1)},[e,a,r]),(0,E.useMemo)(()=>e=>{let t=n(e),i=new Set(o[Eg(t.traceId,t.owner)]??[]);return(r?.list.tags??[]).filter(e=>i.has(e.name))},[o,r])}function Mx(){let e=xx();return(0,E.useMemo)(()=>{if(!e?.active.length)return()=>kx;let t=new Map(e.list.tags.map(e=>[e.name,e]));return(n,r)=>Fg(e.active,n,r).flatMap(e=>t.get(e)??[])},[e])}var Nx=e=>({traceId:e.traceId,owner:``,timeMs:e.startMs}),Px=e=>({traceId:e.traceId,owner:dm(e),timeMs:e.timeMs});function Fx({tag:e}){let t=`${e.builtIn?`Built-in tag`:`Tag`}: ${e.query}`;return(0,W.jsx)(`a`,{className:`wl-tag wl-tag-${e.color}`,href:S(`search`,[],{q:`tag:${e.name}`}),title:t,onClick:e=>e.stopPropagation(),children:e.name})}function Ix({tags:e}){return e.length?(0,W.jsx)(`span`,{className:`wl-tags`,children:e.map(e=>(0,W.jsx)(Fx,{tag:e},e.name))}):null}function Lx(e,t,n){return e.map(e=>e.key===t?{...e,cell:t=>(0,W.jsxs)(`span`,{className:`wl-tagged`,children:[e.cell(t),(0,W.jsx)(Ix,{tags:n(t)})]})}:e)}var Rx=3e4;function zx(e){let{updatedMs:t}=Se(),n=Math.floor(t/Rx),[r,i]=(0,E.useState)(0),[a,o]=(0,E.useState)({data:null,error:null});(0,E.useEffect)(()=>{if(!e)return;let t=!0;return ne(e).then(e=>t&&o({data:e,error:null}),e=>t&&o(t=>({...t,error:e instanceof Error?e.message:String(e)}))),()=>void(t=!1)},[e,n,r]);let s=(0,E.useCallback)(()=>i(e=>e+1),[]);return{...a,reload:s}}async function Bx(e,t){try{return await e(),t(),null}catch(e){return e instanceof Error?e.message:String(e)}}var Vx=e=>{let t=c();return t.project&&e.set(`project`,t.project),t.env&&e.set(`env`,t.env),e};function Hx(e,t){let n=gh(e.q);if(!n.ok)throw Object.assign(Error(n.error),{start:n.start,end:n.end});let r=Date.now(),{node:i,unknownTags:a}=Sh(n.node,wg(Sx()));return{...ym(m.getSnapshot().traces,{kind:e.kind,node:i,window:{from:r-fe[e.range].ms,to:r},limit:e.limit,cursor:hm(t)}),unknownTags:a}}async function Ux(e,t,n){if(!n)return Hx(e,t);let r=Vx(new URLSearchParams({q:e.q,kind:e.kind,range:e.range,limit:String(e.limit)}));t&&r.set(`cursor`,t);try{return await ne(`./api/search?${r.toString()}`)}catch(t){let n=t instanceof re&&t.status===400?gh(e.q):null;throw n&&!n.ok?Object.assign(Error(n.error),{start:n.start,end:n.end}):t}}function Wx(e){let t=e,n=e instanceof Error?e.message:String(e);return typeof t.start==`number`&&typeof t.end==`number`?{type:`invalid`,message:n,start:t.start,end:t.end}:e instanceof re&&e.status===400?{type:`invalid`,message:n,start:0,end:0}:{type:`down`,message:n}}async function Gx(e,t,n,r){if(!r){let r=Date.now(),i={field:e,prefix:t,window:{from:r-fe[n].ms,to:r},limit:12};return Kg(i,Sx())??Dm(m.getSnapshot().traces,i)}let i=Vx(new URLSearchParams({prefix:t,range:n,limit:`12`}));return e&&i.set(`field`,e),(await ne(`./api/search/suggest?${i.toString()}`)).items}function Kx(e,t){let n=JSON.stringify([e,t]),[r,i]=(0,E.useState)({key:``,pages:[],loading:!0,failure:null,cursor:null}),[a,o]=(0,E.useState)({key:n,cursor:null});a.key!==n&&o({key:n,cursor:null}),(0,E.useEffect)(()=>{let r=!0,o=a.cursor===null;return i(e=>({...e,key:n,loading:!0,...o?{pages:[],failure:null}:{}})),Ux(e,a.cursor,t).then(e=>r&&i(t=>({key:n,pages:o?[e]:[...t.pages,e],loading:!1,failure:null,cursor:e.next}))).catch(e=>r&&i(t=>({...t,key:n,loading:!1,failure:Wx(e)}))),()=>void(r=!1)},[a]);let s=r.key===n?r.pages[r.pages.length-1]:void 0,c=s?.next&&!r.loading?()=>o({key:n,cursor:s.next}):null;return{pages:r.key===n?r.pages:[],loading:r.loading||r.key!==n,failure:r.key===n?r.failure:null,more:c}}function Z({label:e,hint:t,narrow:n=!1,...r}){return(0,W.jsxs)(`label`,{className:`wl-field${n?` wl-field-narrow`:``}`,children:[(0,W.jsx)(`span`,{children:e}),(0,W.jsx)(`input`,{...r}),t&&(0,W.jsx)(`small`,{className:`wl-muted`,children:t})]})}function qx({label:e,hint:t,...n}){return(0,W.jsxs)(`label`,{className:`wl-field`,children:[(0,W.jsx)(`span`,{children:e}),(0,W.jsx)(`textarea`,{...n}),t&&(0,W.jsx)(`small`,{className:`wl-muted`,children:t})]})}function Jx({label:e,value:t,options:n,onChange:r,hint:i}){return(0,W.jsxs)(`label`,{className:`wl-field`,children:[(0,W.jsx)(`span`,{children:e}),(0,W.jsx)(`select`,{className:`wl-select`,value:t,onChange:e=>r(e.target.value),children:n.map(([e,t])=>(0,W.jsx)(`option`,{value:e,children:t},e))}),i&&(0,W.jsx)(`small`,{className:`wl-muted`,children:i})]})}var Yx=({children:e})=>(0,W.jsx)(`div`,{className:`wl-form-row`,children:e});function Xx({label:e,...t}){return(0,W.jsxs)(`label`,{className:`wl-check`,children:[(0,W.jsx)(`input`,{type:`checkbox`,...t}),(0,W.jsx)(`span`,{children:e})]})}var Zx=400,Qx=50;function $x(e){let[t]=Zg(),n=H().has(`search`),[r,i]=(0,E.useState)({state:`idle`});return(0,E.useEffect)(()=>{let r=gh(e.trim());if(!e.trim())return void i({state:`idle`});if(!r.ok)return void i({state:`error`,message:r.error});if(Tg(r.node))return void i({state:`error`,message:`A tag's search cannot use tag:. Copy the other tag's search in instead.`});let a=!0;i({state:`loading`});let o=setTimeout(()=>{Ux({q:e.trim(),kind:`requests`,range:t,limit:Qx},null,n).then(e=>a&&i({state:`done`,paths:e.items.map(e=>`${e.method} ${e.path}`),more:!!e.next}),e=>a&&i({state:`error`,message:e instanceof Error?e.message:String(e)}))},Zx);return()=>(a=!1,clearTimeout(o))},[e,t,n]),r}function eS({query:e}){let t=$x(e),[n]=Zg(),r=fe[n].label.toLowerCase();if(t.state===`idle`)return null;if(t.state===`loading`)return(0,W.jsx)(`div`,{className:`wl-tag-preview wl-muted`,children:`Checking what this finds…`});if(t.state===`error`)return(0,W.jsx)(`div`,{className:`wl-tag-preview wl-text-error`,role:`alert`,children:t.message});if(!t.paths.length)return(0,W.jsxs)(`div`,{className:`wl-tag-preview`,children:[`No requests match in the `,r,`. The tag still shows on any that match later.`]});let i=`${t.paths.length}${t.more?`+`:``} ${t.paths.length===1&&!t.more?`request`:`requests`}`;return(0,W.jsxs)(`div`,{className:`wl-tag-preview`,children:[(0,W.jsxs)(`span`,{children:[`Matches `,i,` in the `,r,`, such as:`]}),(0,W.jsx)(`ul`,{children:t.paths.slice(0,5).map((e,t)=>(0,W.jsx)(`li`,{children:e},t))})]})}function tS({value:e,name:t,onChange:n}){return(0,W.jsxs)(`fieldset`,{className:`wl-tag-colors`,children:[(0,W.jsx)(`legend`,{children:`Color`}),Sg.map(r=>(0,W.jsxs)(`label`,{children:[(0,W.jsx)(`input`,{type:`radio`,name:`tag-color`,value:r,checked:e===r,onChange:()=>n(r),"aria-label":r}),(0,W.jsx)(`span`,{className:`wl-tag wl-tag-${r}`,children:t||r})]},r))]})}function nS({scopes:e,picked:t,onPick:n}){return(0,W.jsxs)(`fieldset`,{className:`wl-tag-scopes`,children:[(0,W.jsx)(`legend`,{children:`Tag what`}),e.map((e,r)=>(0,W.jsxs)(`label`,{className:`wl-check`,children:[(0,W.jsx)(`input`,{type:`radio`,name:`tag-scope`,checked:t===r,onChange:()=>n(r)}),(0,W.jsx)(`span`,{children:e.label})]},e.label))]})}function rS({initial:e,scopes:t,saveLabel:n,onSave:r,onCancel:i}){let[a,o]=(0,E.useState)(e),[s,c]=(0,E.useState)(0),[l,u]=(0,E.useState)(null),[d,f]=(0,E.useState)(!1);return(0,W.jsxs)(`form`,{className:`wl-form`,onSubmit:e=>{e.preventDefault(),f(!0),r({...a,name:a.name.trim().toLowerCase(),query:a.query.trim()}).then(e=>(u(e),f(!1)))},children:[t&&t.length>1&&(0,W.jsx)(nS,{scopes:t,picked:s,onPick:e=>{c(e),o(n=>({...n,name:t[e].name,query:t[e].query}))}}),(0,W.jsx)(Yx,{children:(0,W.jsx)(Z,{label:`Name`,required:!0,value:a.name,onChange:e=>o({...a,name:e.target.value}),placeholder:`checkout`,maxLength:40,hint:`Lowercase letters, digits, - and _. Search it with tag:name.`})}),(0,W.jsx)(tS,{value:a.color,name:a.name.trim().toLowerCase(),onChange:e=>o({...a,color:e})}),(0,W.jsx)(Z,{label:`Search`,required:!0,value:a.query,onChange:e=>o({...a,query:e.target.value}),placeholder:`service:api route:/checkout*`,className:`wl-tag-query`,hint:`Anything that matches this search shows the tag, on old and new data alike.`}),(0,W.jsx)(eS,{query:a.query}),l&&(0,W.jsx)(`div`,{className:`wl-banner wl-banner-error`,role:`alert`,children:l}),(0,W.jsxs)(Yx,{children:[(0,W.jsx)(`button`,{type:`submit`,className:`wl-btn wl-btn-primary`,disabled:d,children:n}),(0,W.jsx)(`button`,{type:`button`,className:`wl-btn`,onClick:i,children:`Cancel`})]})]})}function iS(e){let t=JSON.stringify;return{node:`tags: { rules: [{ name: ${t(e.name)}, query: ${t(e.query)}, color: ${t(e.color)} }] }`,dotnet:`o.Tags.Rules.Add(new(${t(e.name)}, ${t(e.query)}, ${t(e.color)}));`}}function aS({scopes:e,onClose:t}){let[n,r]=(0,E.useState)(0),i=iS({...e[n],color:`blue`});return(0,W.jsxs)(`div`,{className:`wl-form`,children:[e.length>1&&(0,W.jsx)(nS,{scopes:e,picked:n,onPick:r}),(0,W.jsxs)(`p`,{children:[`Tags here come from the `,(0,W.jsx)(`code`,{children:`tags`}),` option in the app's code. Add this rule, then restart the service.`]}),(0,W.jsx)(`strong`,{children:`Node`}),(0,W.jsx)(`pre`,{className:`wl-tag-code`,children:i.node}),(0,W.jsx)(Kb,{text:i.node,label:`Copy for Node`,asLink:!0}),(0,W.jsx)(`strong`,{children:`.NET`}),(0,W.jsx)(`pre`,{className:`wl-tag-code`,children:i.dotnet}),(0,W.jsx)(Kb,{text:i.dotnet,label:`Copy for .NET`,asLink:!0}),(0,W.jsx)(`div`,{className:`wl-dialog-actions`,children:(0,W.jsx)(`button`,{type:`button`,className:`wl-btn`,onClick:t,children:`Close`})})]})}function oS({scopes:e,onClose:t}){let n=(0,E.useRef)(null),r=xx()?.list.editable??!1;(0,E.useEffect)(()=>n.current?.showModal(),[]);let i=e=>Bx(()=>wx(e),t),a=e[0];return(0,W.jsxs)(`dialog`,{ref:n,className:`wl-dialog wl-tag-dialog`,"aria-labelledby":`wl-tag-this`,onClose:t,onClick:e=>e.target===n.current&&t(),children:[(0,W.jsx)(`h2`,{id:`wl-tag-this`,children:`Tag this`}),r?(0,W.jsx)(rS,{initial:{name:a.name,color:`blue`,query:a.query},scopes:e,saveLabel:`Add tag`,onSave:i,onCancel:t}):(0,W.jsx)(aS,{scopes:e,onClose:t})]})}function sS({scopes:e}){let t=H(),n=xx(),[r,i]=(0,E.useState)(!1);return!t.has(`tags`)||!e.length||!(n?.list.editable||t.mode===`in-app`)?null:(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`button`,{type:`button`,className:`wl-btn`,onClick:()=>i(!0),title:`Make a tag for this, so it stands out everywhere`,children:[(0,W.jsx)(Uy,{"aria-hidden":`true`}),` Tag this`]}),r&&(0,W.jsx)(oS,{scopes:e,onClose:()=>i(!1)})]})}function cS(e){return[...e.rootMethod?[zg(e.service,e.rootName)]:[],Bg(e.service)]}function lS({trace:e}){let t=jx(`traces`,(0,E.useMemo)(()=>[e],[e]),Nx);return(0,W.jsx)(Ix,{tags:t(e)})}var uS=({trace:e})=>(0,W.jsx)(sS,{scopes:cS(e)}),dS=e=>e.category===`http.client`||e.category===`http.server`||e.category===`browser`,fS=e=>e.category===`http.server`?`IN`:e.category===`browser`?`WEB`:`OUT`;function pS({span:e,props:t,kinds:n}){let r=e.attributes,i=r[`http.response.status_code`],a=String(r[`url.full`]??r[`http.route`]??r[`url.path`]??e.name);return(0,W.jsxs)(`tr`,{className:`wl-clickable ${ax(e,t)}`,onClick:()=>t.onSelect(e.spanId),children:[(0,W.jsx)(`td`,{children:(0,W.jsx)(`span`,{className:`wl-cat wl-cat-${e.category.replace(`.`,`-`)}`,children:fS(e)})}),(0,W.jsx)(`td`,{className:`wl-mono`,children:String(r[`http.request.method`]??``)}),(0,W.jsxs)(`td`,{className:`wl-mono wl-wrap`,children:[a,` `,(0,W.jsx)(ix,{kinds:n.get(e.spanId)})]}),(0,W.jsx)(`td`,{children:(0,W.jsx)(ox,{service:e.service,services:t.trace.services})}),(0,W.jsx)(`td`,{className:`wl-num${typeof i==`number`&&i>=400?` wl-text-error`:``}`,children:i??`–`}),(0,W.jsx)(`td`,{className:`wl-num`,children:q(e.durationMs)})]})}function mS(e){let t=e.trace.spans.filter(dS),n=(0,E.useMemo)(()=>nx(e.findings),[e.findings]);return t.length===0?(0,W.jsx)(K,{children:`No HTTP activity in this request.`}):(0,W.jsx)(`div`,{className:`wl-table-wrap`,children:(0,W.jsxs)(`table`,{className:`wl-table`,children:[(0,W.jsx)(`thead`,{children:(0,W.jsxs)(`tr`,{children:[(0,W.jsx)(`th`,{children:`Direction`}),(0,W.jsx)(`th`,{children:`Method`}),(0,W.jsx)(`th`,{children:`URL / route`}),(0,W.jsx)(`th`,{children:`Service`}),(0,W.jsx)(`th`,{className:`wl-num`,children:`Status`}),(0,W.jsx)(`th`,{className:`wl-num`,children:`Duration`})]})}),(0,W.jsx)(`tbody`,{children:t.map(t=>(0,W.jsx)(pS,{span:t,props:e,kinds:n},t.spanId))})]})})}function hS({trace:e,onSelect:t}){let n=Ar(e.spans);return n.length===0?(0,W.jsx)(K,{children:`No messages were sent or handled in this request.`}):(0,W.jsx)(`div`,{className:`wl-table-wrap`,children:(0,W.jsxs)(`table`,{className:`wl-table`,children:[(0,W.jsx)(`thead`,{children:(0,W.jsxs)(`tr`,{children:[(0,W.jsx)(`th`,{children:`Operation`}),(0,W.jsx)(`th`,{children:`Queue`}),(0,W.jsx)(`th`,{children:`Service`}),(0,W.jsx)(`th`,{children:`Message id`}),(0,W.jsx)(`th`,{className:`wl-num`,children:`Duration`})]})}),(0,W.jsx)(`tbody`,{children:n.map(e=>(0,W.jsxs)(`tr`,{className:`wl-clickable${e.error?` wl-row-error`:``}`,onClick:()=>t(e.spanId),children:[(0,W.jsx)(`td`,{children:(0,W.jsx)(`span`,{className:`wl-cat wl-cat-messaging`,children:e.operation})}),(0,W.jsx)(`td`,{className:`wl-mono`,children:e.queue}),(0,W.jsx)(`td`,{children:e.service}),(0,W.jsx)(`td`,{className:`wl-mono wl-muted`,children:e.messageId??`–`}),(0,W.jsx)(`td`,{className:`wl-num`,children:q(e.durationMs)})]},e.spanId))})]})})}var gS=yg(vg({allow:e=>/^https?:$/.test(e.protocol),timeoutMs:8e3}),{max:10,hitMs:3e4});function _S(){let e=c().project;return`./${xg}${e?`?project=${encodeURIComponent(e)}`:``}`}async function vS(e,t,n){if(!e)return dg(t,n.release,gS);let r={stack:t,release:n.release,traceId:n.traceId,spanId:n.spanId};return(await x(`POST`,_S(),r)).frames}function yS(e){let t=H().has(`sourcemaps`),n=e.browser?e.stack:null,[r,i]=(0,E.useState)({key:null,frames:null,loading:!1,error:null}),{release:a,traceId:o,spanId:s}=e,c=n?[t,a??``,o??``,s??``,n].join(`
18
18
  `):null;return(0,E.useEffect)(()=>{if(!n||!c)return;let e=!0;return vS(t,n,{release:a,traceId:o,spanId:s}).then(t=>e&&i({key:c,frames:t,loading:!1,error:null})).catch(t=>e&&i({key:c,frames:null,loading:!1,error:t instanceof Error?t.message:String(t)})),()=>void(e=!1)},[c,t,n,a,o,s]),c?r.key===c?r:{frames:null,loading:!0,error:null}:{frames:null,loading:!1,error:null}}function bS({event:e}){let t=e.stack??`${e.type}: ${e.message}`,n=t.split(/\r?\n/);return(0,W.jsxs)(`div`,{className:`wl-stack`,children:[(0,W.jsx)(`div`,{className:`wl-stack-copy`,children:(0,W.jsx)(Kb,{text:t,label:`Copy stack trace`})}),(0,W.jsx)(`ol`,{children:n.map((e,t)=>(0,W.jsx)(`li`,{children:(0,W.jsx)(`code`,{children:e})},t))}),!e.stack&&(0,W.jsx)(`p`,{className:`wl-muted wl-small`,children:`No stack trace was recorded for this error.`})]})}function xS({event:e}){return(0,W.jsx)(mb,{rows:[[`Method`,e.method??`–`],[`Path`,e.path?(0,W.jsx)(`span`,{className:`wl-mono`,children:e.path}):`–`],[`Status`,e.status===null?`–`:(0,W.jsx)(Hb,{tone:Bb(e.status),children:e.status})],[`Service`,e.service],[`User`,e.user??`–`],[`User agent`,e.userAgent??`–`],[`Trace`,(0,W.jsxs)(`a`,{href:y(e.traceId,`errors`),className:`wl-mono`,children:[e.traceId.slice(0,16),`…`]},`t`)]]})}function SS({event:e}){let t=[...e.tags,e.browser?`browser`:`server`,...e.critical?[`critical`]:[]];return t.length===0?(0,W.jsx)(K,{children:`No tags on this request.`}):(0,W.jsx)(`div`,{className:`wl-chips`,children:t.map(e=>(0,W.jsx)(`span`,{className:`wl-chip${e===`critical`?` wl-chip-red`:` wl-chip-blue`}`,children:e},e))})}var CS=e=>e.source?`${e.source}:${e.line}:${e.column}`:`${e.raw.url}:${e.raw.line}:${e.raw.column}`,wS=(e,t)=>[`${e.type}: ${e.message}`,...t.map(e=>` at ${e.fn??`<anonymous>`} (${CS(e)})`)].join(`
19
- `);function TS({context:e,line:t}){return(0,W.jsx)(`pre`,{className:`wl-src`,children:e.lines.map((n,r)=>{let i=e.start+r;return(0,W.jsxs)(`span`,{className:i===t?`wl-src-line wl-src-hit`:`wl-src-line`,children:[(0,W.jsx)(`span`,{className:`wl-src-no`,children:i}),(0,W.jsx)(`code`,{children:n||` `})]},i)})})}function ES({frame:e,first:t}){let[n,r]=(0,E.useState)(t),i=n?q_:Z_;return(0,W.jsxs)(`li`,{className:e.inApp?`wl-frame`:`wl-frame wl-frame-lib`,children:[(0,W.jsxs)(`button`,{type:`button`,className:`wl-frame-head`,"aria-expanded":n,onClick:()=>r(!n),children:[(0,W.jsx)(i,{"aria-hidden":`true`}),(0,W.jsx)(`code`,{className:`wl-frame-fn`,children:e.fn??`<anonymous>`}),(0,W.jsx)(`span`,{className:`wl-frame-loc`,children:CS(e)})]}),n&&e.context&&(0,W.jsx)(TS,{context:e.context,line:e.line}),n&&(0,W.jsxs)(`div`,{className:`wl-frame-raw`,children:[`Raw: `,e.raw.raw]})]})}function DS(e,t,n){return e.loading?`Reading source maps…`:e.error?`Source maps could not be read: ${e.error}`:n?t?`Source maps of release ${t}`:`Source maps`:`No source map found${t?` for release ${t}`:``}. Showing the raw stack.`}function OS({event:e}){let t=yS(e),[n,r]=(0,E.useState)(`original`);if(!e.browser||!e.stack)return(0,W.jsx)(bS,{event:e});let i=t.frames??[],a=i.some(e=>e.source!==null),o=i.findIndex(e=>e.source!==null&&e.inApp);return(0,W.jsxs)(`div`,{className:`wl-stack-box`,children:[(0,W.jsxs)(`div`,{className:`wl-stack-head`,children:[(0,W.jsx)(`div`,{className:`wl-seg`,role:`tablist`,"aria-label":`Stack view`,children:[`original`,`raw`].map(e=>(0,W.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":n===e,className:n===e?`wl-active`:``,disabled:e===`original`&&!a,onClick:()=>r(e),children:e===`original`?`Original`:`Raw`},e))}),(0,W.jsx)(`span`,{className:`wl-muted wl-small`,children:DS(t,e.release,a)})]}),n===`raw`||!a?(0,W.jsx)(bS,{event:e}):(0,W.jsxs)(`div`,{className:`wl-stack wl-frames-box`,children:[(0,W.jsx)(`div`,{className:`wl-stack-copy`,children:(0,W.jsx)(Kb,{text:wS(e,i),label:`Copy original stack trace`})}),(0,W.jsx)(`ol`,{className:`wl-frames`,children:i.map((e,t)=>(0,W.jsx)(ES,{frame:e,first:t===o},t))})]})]})}function kS({trace:e,onSelect:t}){return e.logs.length===0?(0,W.jsx)(K,{children:`No logs were written during this request.`}):(0,W.jsx)(`div`,{className:`wl-table-wrap`,children:(0,W.jsxs)(`table`,{className:`wl-table`,children:[(0,W.jsx)(`thead`,{children:(0,W.jsxs)(`tr`,{children:[(0,W.jsx)(`th`,{className:`wl-num`,children:`At`}),(0,W.jsx)(`th`,{children:`Level`}),(0,W.jsx)(`th`,{children:`Service`}),(0,W.jsx)(`th`,{children:`Category`}),(0,W.jsx)(`th`,{children:`Message`})]})}),(0,W.jsx)(`tbody`,{children:e.logs.map((n,r)=>(0,W.jsxs)(`tr`,{onClick:()=>n.spanId&&t(n.spanId),className:n.spanId?`wl-clickable`:void 0,children:[(0,W.jsxs)(`td`,{className:`wl-num wl-muted`,children:[`+`,q(n.timeMs-e.startMs)]}),(0,W.jsx)(`td`,{children:(0,W.jsx)(`span`,{className:`wl-lvl wl-lvl-${n.level}`,children:n.level})}),(0,W.jsx)(`td`,{children:(0,W.jsx)(ox,{service:n.service,services:e.services})}),(0,W.jsx)(`td`,{className:`wl-muted wl-small`,children:n.category}),(0,W.jsx)(`td`,{className:`wl-wrap`,children:n.message})]},r))})]})})}function AS({span:e}){let t=_n(e);return(0,W.jsx)(`div`,{onClick:e=>e.stopPropagation(),children:(0,W.jsx)(OS,{event:{type:t.type??`Error`,message:t.message,stack:t.stack,browser:!0,release:bg(e),traceId:e.traceId,spanId:e.spanId}})})}function jS({trace:e,onSelect:t}){let n=new Map(e.spans.map(e=>[e.spanId,e])),r=e.spans.filter(ve).map(_n);return r.length===0?(0,W.jsx)(K,{children:`No errors in this request.`}):(0,W.jsx)(`ul`,{className:`wl-error-list`,children:r.map(r=>(0,W.jsxs)(`li`,{className:`wl-error-item`,onClick:()=>t(r.spanId),children:[(0,W.jsxs)(`div`,{className:`wl-error-head`,children:[(0,W.jsx)(ox,{service:r.service,services:e.services}),(0,W.jsx)(`strong`,{children:r.type??`Error`}),(0,W.jsxs)(`span`,{className:`wl-muted`,children:[`in `,r.name]})]}),(0,W.jsx)(`div`,{className:`wl-error-msg`,children:r.message}),r.stack&&n.get(r.spanId)?.category===`browser`?(0,W.jsx)(AS,{span:n.get(r.spanId)}):r.stack&&(0,W.jsx)(`pre`,{className:`wl-code wl-stack`,children:r.stack})]},r.spanId))})}function MS(e,t,n){return(0,E.useMemo)(()=>{let r=n&&t.find(e=>e.key===n.key);if(!n||!r?.sort)return e;let i=r.sort,a=n.desc?-1:1;return[...e].sort((e,t)=>{let n=i(e),r=i(t);return(n<r?-1:+(n>r))*a})},[e,t,n])}function NS({col:e,sort:t,onSort:n}){let r=e.num?`wl-num`:void 0;if(!e.sort)return(0,W.jsx)(`th`,{className:r,children:e.header});let i=t?.key===e.key,a=i&&t?.desc?__:C_;return(0,W.jsx)(`th`,{className:r,"aria-sort":i?t?.desc?`descending`:`ascending`:`none`,children:(0,W.jsxs)(`button`,{type:`button`,onClick:()=>n(e.key),children:[e.header,i&&(0,W.jsx)(a,{"aria-hidden":`true`})]})})}function Q({columns:e,rows:t,rowKey:n,onRowClick:r,selectedKey:i,empty:a,defaultSort:o,detail:s}){let[c,l]=(0,E.useState)(o??null),u=MS(t,e,c),d=e=>l(t=>t?.key===e?{key:e,desc:!t.desc}:{key:e,desc:!0});return t.length===0&&a?(0,W.jsx)(W.Fragment,{children:a}):(0,W.jsx)(`div`,{className:`wl-table-wrap`,children:(0,W.jsxs)(`table`,{className:`wl-table`,children:[(0,W.jsx)(`thead`,{children:(0,W.jsx)(`tr`,{children:e.map(e=>(0,W.jsx)(NS,{col:e,sort:c,onSort:d},e.key))})}),(0,W.jsx)(`tbody`,{children:u.map(t=>{let a=n(t),o=a===i,c=[r?`wl-clickable`:``,o?`wl-selected`:``].join(` `).trim();return(0,W.jsxs)(E.Fragment,{children:[(0,W.jsx)(`tr`,{className:c||void 0,onClick:r&&(()=>r(t)),children:e.map(e=>(0,W.jsx)(`td`,{className:[e.num?`wl-num`:``,e.className??``].join(` `).trim()||void 0,children:e.cell(t)},e.key))}),o&&s&&(0,W.jsx)(`tr`,{className:`wl-row-detail`,children:(0,W.jsx)(`td`,{colSpan:e.length,children:s(t)})})]},a)})})]})})}var PS={api:F_,web:ty,worker:rv,queue:zv,database:lv,external:jv},FS={api:`API service`,web:`Web app`,worker:`Message worker`,queue:`Queue`,database:`Database`,external:`Outside service`},IS={healthy:[`success`,`Healthy`],degraded:[`warning`,`Degraded`],unhealthy:[`danger`,`Unhealthy`],idle:[`neutral`,`Idle`]},LS=e=>IS[e][0],RS=e=>S(`services`,[encodeURIComponent(e)]),zS=C;function BS({status:e}){let[t,n]=IS[e];return(0,W.jsx)(Hb,{tone:t,colorText:t!==`neutral`,children:n})}function VS({row:e}){let t=PS[e.kind];return(0,W.jsxs)(`span`,{className:`wl-cell-icon`,title:FS[e.kind],children:[(0,W.jsx)(t,{size:18,"aria-hidden":!0}),e.name]})}var HS=[{key:`name`,header:`Service`,cell:e=>(0,W.jsx)(VS,{row:e}),sort:e=>e.name},{key:`status`,header:`Status`,cell:e=>(0,W.jsx)(BS,{status:e.status}),sort:e=>e.errorRate},{key:`requests`,header:`Requests`,num:!0,cell:e=>J(e.requests),sort:e=>e.requests},{key:`errors`,header:`Errors`,num:!0,cell:e=>J(e.errors),sort:e=>e.errors},{key:`rate`,header:`Error rate`,num:!0,cell:e=>yb(e.errorRate),sort:e=>e.errorRate},{key:`avg`,header:`Avg latency`,num:!0,cell:e=>q(e.avgMs),sort:e=>e.avgMs??0},{key:`p95`,header:`p95`,num:!0,cell:e=>q(e.p95Ms),sort:e=>e.p95Ms??0}];function US({rows:e,selectedKey:t}){let r=Mx();return(0,W.jsx)(Q,{columns:Lx(HS,`name`,e=>r(`services`,Ng(e.name))),rows:e,rowKey:e=>e.key,selectedKey:t,onRowClick:e=>n({service:e.key===t?null:e.key}),empty:(0,W.jsx)(K,{title:`No services yet`,children:`Services show up here when they handle a request in this time range.`})})}var WS=e=>S(`hosts`,[encodeURIComponent(e)]),GS=e=>S(`kubernetes`,[`node`,encodeURIComponent(e)]),KS=(e,t)=>S(`kubernetes`,[`pod`,encodeURIComponent(e||`-`),encodeURIComponent(t)]),qS=e=>S(`kubernetes`,[],{view:`pods`,workload:e}),JS=e=>{try{return decodeURIComponent(e??``)}catch{return e??``}},YS=(e,t)=>typeof e[t]==`string`&&e[t]?String(e[t]):``;function XS({attributes:e}){let t=H().has(`infra`),n=YS(e,`k8s.pod.name`),r=YS(e,`k8s.node.name`);return!t||!n&&!r?null:(0,W.jsxs)(`div`,{className:`wl-span-k8s`,children:[n&&(0,W.jsxs)(`a`,{className:`wl-infra-chip`,href:KS(YS(e,`k8s.namespace.name`),n),title:`Open this pod`,children:[(0,W.jsx)(F_,{size:12,"aria-hidden":`true`}),` Pod `,n]}),r&&(0,W.jsxs)(`a`,{className:`wl-infra-chip`,href:GS(r),title:`Open this node`,children:[(0,W.jsx)(Ty,{size:12,"aria-hidden":`true`}),` Node `,r]})]})}function ZS(e){if(typeof e!=`string`)return null;try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}}var QS=(e,t)=>S(`search`,[],{q:`@${e}:${lh(String(t))}`,kind:`spans`});function $S({entries:e,search:t=!1}){return e.length===0?(0,W.jsx)(`div`,{className:`wl-muted wl-small`,children:`None`}):(0,W.jsx)(`table`,{className:`wl-attrs`,children:(0,W.jsx)(`tbody`,{children:[...e].sort(([e],[t])=>e.localeCompare(t)).map(([e,n])=>(0,W.jsxs)(`tr`,{children:[(0,W.jsx)(`th`,{children:e}),(0,W.jsx)(`td`,{className:n===`[redacted]`?`wl-redacted`:void 0,children:n===null?(0,W.jsx)(`span`,{className:`wl-muted`,children:`null`}):t&&n!==`[redacted]`?(0,W.jsx)(`a`,{href:QS(e,n),title:`Find spans with this value`,children:String(n)}):String(n)})]},e))})})}function eC({event:e,trace:t}){let n=e.attributes,r=e.name===`exception`;return(0,W.jsxs)(`div`,{className:`wl-sp-event${r?` wl-sp-exception`:``}`,children:[(0,W.jsxs)(`div`,{className:`wl-sp-event-head`,children:[(0,W.jsx)(`strong`,{children:e.name}),(0,W.jsxs)(`span`,{className:`wl-muted`,children:[`+`,q(e.timeMs-t.startMs)]})]}),r?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`strong`,{children:String(n[`exception.type`]??`Error`)}),`: `,String(n[`exception.message`]??``)]}),n[`exception.stacktrace`]&&(0,W.jsx)(`pre`,{className:`wl-code wl-stack`,children:String(n[`exception.stacktrace`])})]}):(0,W.jsx)($S,{entries:Object.entries(n)})]})}function tC({span:e,trace:t}){return(0,W.jsxs)(`dl`,{className:`wl-sp-facts`,children:[(0,W.jsx)(`dt`,{children:`Service`}),(0,W.jsx)(`dd`,{children:(0,W.jsx)(ox,{service:e.service,services:t.services})}),(0,W.jsx)(`dt`,{children:`Kind`}),(0,W.jsxs)(`dd`,{children:[e.kind,` · `,e.category]}),(0,W.jsx)(`dt`,{children:`Duration`}),(0,W.jsx)(`dd`,{children:q(e.durationMs)}),(0,W.jsx)(`dt`,{children:`Starts at`}),(0,W.jsxs)(`dd`,{children:[`+`,q(e.startMs-t.startMs)]}),(0,W.jsx)(`dt`,{children:`Status`}),(0,W.jsxs)(`dd`,{className:e.status===`error`?`wl-text-error`:void 0,children:[e.status,e.statusMessage?` · ${e.statusMessage}`:``]}),(0,W.jsx)(`dt`,{children:`Span id`}),(0,W.jsx)(`dd`,{className:`wl-mono`,children:e.spanId})]})}function nC({span:e}){let t=e.attributes[`db.query.text`];if(typeof t!=`string`)return null;let n=ZS(e.attributes[`wizelens.db.parameters`]);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`h3`,{children:`Query`}),(0,W.jsx)(`pre`,{className:`wl-code`,children:t}),n&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`h3`,{children:`Parameters`}),(0,W.jsx)(`pre`,{className:`wl-code`,children:n})]})]})}function rC({span:e,trace:t}){let n=gr(e.service),r=Tr([t]).find(t=>t.spanId===e.spanId),i=[[RS(n),n]];return e.category===`http.server`&&i.push([_e(`api:${e.service}`,xs(e,`api`)),`Endpoint`]),e.category===`db`&&i.push([He(Fe(qt(e))),`Query`]),r&&i.push([he(r.key),`Error`]),t.logs.length&&i.push([S(`logs`,[],{trace:t.traceId}),`Request logs`]),(0,W.jsx)(`div`,{className:`wl-sp-links`,children:i.map(([e,t])=>(0,W.jsx)(`a`,{className:`wl-path-chip`,href:e,children:t},e))})}function iC({span:e,trace:t,onClose:n}){let r=Object.entries(e.attributes).filter(([e])=>e!==`db.query.text`&&e!==`wizelens.db.parameters`),i=t.logs.filter(t=>t.spanId===e.spanId);return(0,W.jsxs)(`aside`,{className:`wl-span-panel`,"aria-label":`Span details`,children:[(0,W.jsxs)(`div`,{className:`wl-sp-head`,children:[(0,W.jsx)(`h2`,{title:e.name,children:e.name}),(0,W.jsx)(`button`,{type:`button`,className:`wl-icon-btn`,onClick:n,"aria-label":`Close details`,children:(0,W.jsx)(sb,{size:18})})]}),(0,W.jsx)(tC,{span:e,trace:t}),(0,W.jsx)(rC,{span:e,trace:t}),(0,W.jsx)(XS,{attributes:e.attributes}),(0,W.jsx)(nC,{span:e}),e.events.length>0&&(0,W.jsx)(`h3`,{children:`Events`}),e.events.map((e,n)=>(0,W.jsx)(eC,{event:e,trace:t},n)),i.length>0&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`h3`,{children:`Logs`}),(0,W.jsx)(`ul`,{className:`wl-sp-logs`,children:i.map((e,t)=>(0,W.jsxs)(`li`,{children:[(0,W.jsx)(`span`,{className:`wl-lvl wl-lvl-${e.level}`,children:e.level}),` `,e.message]},t))})]}),(0,W.jsx)(`h3`,{children:`Attributes`}),(0,W.jsx)($S,{entries:r,search:!0})]})}function aC(e){let{trace:t,findings:n,onSelect:r}=e,i=t.spans.filter(e=>e.category===`db`),a=(0,E.useMemo)(()=>nx(n),[n]),o=new Set(i.map(qt)).size,s=i.reduce((e,t)=>e+t.durationMs,0),c=Pt(i);return i.length===0?(0,W.jsx)(K,{children:`No database calls in this request.`}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`wl-tab-summary`,children:[(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`strong`,{children:i.length}),` queries`]}),(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`strong`,{children:o}),` unique`]}),(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`strong`,{children:q(s)}),` total`]}),s-c>=1&&(0,W.jsxs)(`span`,{title:`Queries that ran at the same time count once`,children:[(0,W.jsx)(`strong`,{children:q(c)}),` wall time`]})]}),(0,W.jsx)(`ol`,{className:`wl-sql-list`,children:i.map((n,i)=>(0,W.jsxs)(`li`,{className:`wl-sql-item ${ax(n,e)}`,onClick:()=>r(n.spanId),children:[(0,W.jsxs)(`div`,{className:`wl-sql-meta`,children:[(0,W.jsxs)(`span`,{className:`wl-muted`,children:[`#`,i+1]}),(0,W.jsx)(ox,{service:n.service,services:t.services}),(0,W.jsx)(`span`,{className:`wl-muted`,children:String(n.attributes[`db.system.name`]??``)}),n.attributes[`wizelens.db.adapter`]!=null&&(0,W.jsxs)(`span`,{className:`wl-muted`,children:[`via `,String(n.attributes[`wizelens.db.adapter`])]}),(0,W.jsx)(ix,{kinds:a.get(n.spanId)}),(0,W.jsx)(`span`,{className:`wl-spacer`}),n.attributes[`db.response.returned_rows`]!=null&&(0,W.jsxs)(`span`,{className:`wl-muted`,children:[String(n.attributes[`db.response.returned_rows`]),` rows`]}),(0,W.jsx)(`strong`,{children:q(n.durationMs)})]}),(0,W.jsx)(`pre`,{className:`wl-code wl-sql`,children:qt(n)}),n.attributes[`wizelens.db.parameters`]!=null&&(0,W.jsxs)(`div`,{className:`wl-sql-params wl-mono wl-small`,children:[`params: `,String(n.attributes[`wizelens.db.parameters`])]})]},n.spanId))})]})}function oC(e,t){if(!t.text&&!t.errors&&!t.critical)return null;let n=t.text.trim().toLowerCase(),r=t.critical?kt(e):null,i=e=>(!n||`${e.name} ${e.service}`.toLowerCase().includes(n))&&(!t.errors||ve(e))&&(!r||r.has(e.spanId)),a=new Map(e.spans.map(e=>[e.spanId,e])),o=new Set;for(let t of e.spans.filter(i))for(let e=t;e&&!o.has(e.spanId);e=e.parentSpanId?a.get(e.parentSpanId):void 0)o.add(e.spanId);return o}function sC(e){let[t,n]=(0,E.useState)({text:``,errors:!1,critical:!1});return{filter:t,setFilter:n,keep:(0,E.useMemo)(()=>oC(e,t),[e,t])}}function cC({filter:e,onFilter:t,shown:n,total:r,onExpand:i}){return(0,W.jsxs)(`div`,{className:`wl-wf-bar-tools`,children:[(0,W.jsx)(qb,{value:e.text,onChange:n=>t({...e,text:n}),placeholder:`Find spans by name or service…`}),(0,W.jsx)(Xx,{label:`Errors only`,checked:e.errors,onChange:n=>t({...e,errors:n.target.checked})}),(0,W.jsx)(Xx,{label:`Critical path`,checked:e.critical,onChange:n=>t({...e,critical:n.target.checked})}),(0,W.jsx)(`span`,{className:`wl-muted wl-small`,children:n===r?`${r} spans`:`${n} of ${r} spans`}),(0,W.jsx)(`button`,{type:`button`,className:`wl-link-btn`,onClick:()=>i(!0),children:`Expand all`}),(0,W.jsx)(`button`,{type:`button`,className:`wl-link-btn`,onClick:()=>i(!1),children:`Collapse all`})]})}var lC={"http.server":`IN`,"http.client":`OUT`,db:`SQL`,messaging:`MSG`,browser:`WEB`,internal:`FN`},uC=[0,.25,.5,.75,1],dC=(e,t)=>e.startMs-t.startMs;function fC(e,t,n){let r=new Set(e.map(e=>e.spanId)),i=new Map,a=[];for(let t of e)t.parentSpanId&&r.has(t.parentSpanId)?i.set(t.parentSpanId,[...i.get(t.parentSpanId)??[],t]):a.push(t);let o=[],s=(e,r)=>{if(n&&!n.has(e.spanId))return;let a=(i.get(e.spanId)??[]).sort(dC);if(o.push({span:e,depth:r,hasChildren:a.length>0}),!t.has(e.spanId))for(let e of a)s(e,r+1)};for(let e of a.sort(dC))s(e,0);return o}function pC({total:e}){return(0,W.jsxs)(`div`,{className:`wl-wf-row wl-wf-axis`,"aria-hidden":`true`,children:[(0,W.jsx)(`div`,{className:`wl-wf-label`}),(0,W.jsx)(`div`,{className:`wl-wf-track`,children:uC.map(t=>(0,W.jsx)(`span`,{className:`wl-wf-tick`,style:{left:`${t*100}%`},children:q(e*t)},t))})]})}function mC({row:{span:e,depth:t,hasChildren:n},trace:r,collapsed:i,onToggle:a}){return(0,W.jsxs)(`div`,{className:`wl-wf-label`,style:{paddingLeft:`${8+t*14}px`},title:e.name,children:[n?(0,W.jsx)(`button`,{type:`button`,className:`wl-wf-caret`,"aria-label":i?`Expand`:`Collapse`,onClick:t=>(t.stopPropagation(),a(e.spanId)),children:i?`▸`:`▾`}):(0,W.jsx)(`span`,{className:`wl-wf-caret-space`}),(0,W.jsx)(`span`,{className:`wl-cat wl-cat-${e.category.replace(`.`,`-`)}`,children:lC[e.category]}),(0,W.jsx)(`span`,{className:`wl-wf-name`,children:e.name}),(0,W.jsx)(`span`,{className:`wl-svc-dot wl-svc-${Pb(e.service,r.services)}`,title:e.service})]})}function hC(e){let{span:t,hasChildren:n}=e.row,r=(t.startMs-e.trace.startMs)/e.total*100,i=Math.max(.4,t.durationMs/e.total*100),a=[`wl-wf-row`,e.selected?`wl-selected`:``,e.highlighted?`wl-highlight`:``,ve(t)?`wl-error`:``].join(` `);return(0,W.jsxs)(`div`,{className:a,role:`treeitem`,"aria-selected":e.selected,"aria-expanded":n?!e.collapsed:void 0,tabIndex:0,onClick:()=>e.onSelect(t.spanId),onKeyDown:n=>{(n.key===`Enter`||n.key===` `)&&(n.preventDefault(),e.onSelect(t.spanId))},children:[(0,W.jsx)(mC,{row:e.row,trace:e.trace,collapsed:e.collapsed,onToggle:e.onToggle}),(0,W.jsxs)(`div`,{className:`wl-wf-track`,children:[uC.slice(1,-1).map(e=>(0,W.jsx)(`span`,{className:`wl-wf-grid`,style:{left:`${e*100}%`}},e)),(0,W.jsx)(`span`,{className:`wl-wf-bar wl-k-${t.category.replace(`.`,`-`)}`,style:{left:`${r}%`,width:`${i}%`}}),(0,W.jsxs)(`span`,{className:`wl-wf-dur`,style:r+i>82?{right:`${100-r+.5}%`}:{left:`calc(${r+i}% + 6px)`},children:[q(t.durationMs),n&&e.selfMs<t.durationMs-.5&&(0,W.jsxs)(`span`,{className:`wl-wf-self`,children:[` · self `,q(e.selfMs)]})]})]})]})}function gC({trace:e,selected:t,highlight:n,onSelect:r}){let[i,a]=(0,E.useState)(new Set),{filter:o,setFilter:s,keep:c}=sC(e),l=(0,E.useMemo)(()=>fC(e.spans,i,c),[e.spans,i,c]),u=(0,E.useMemo)(()=>Ot(e),[e]),d=Math.max(e.durationMs,.001),f=t=>a(t?new Set:new Set(e.spans.filter(t=>e.spans.some(e=>e.parentSpanId===t.spanId)).map(e=>e.spanId))),p=e=>a(t=>{let n=new Set(t);return n.delete(e)||n.add(e),n});return e.spans.length===0?(0,W.jsx)(K,{children:`This trace has no spans.`}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(cC,{filter:o,onFilter:s,shown:c?c.size:e.spans.length,total:e.spans.length,onExpand:f}),(0,W.jsxs)(`div`,{className:`wl-waterfall`,role:`tree`,children:[(0,W.jsx)(pC,{total:d}),l.length===0&&(0,W.jsx)(K,{children:`No span matches.`}),l.map(a=>(0,W.jsx)(hC,{row:a,trace:e,total:d,selfMs:u.get(a.span.spanId)??0,selected:t===a.span.spanId,highlighted:n.has(a.span.spanId),collapsed:i.has(a.span.spanId),onSelect:r,onToggle:p},a.span.spanId))]})]})}function _C(e){return[[`timeline`,`Timeline`,e.spanCount],[`sql`,`SQL`,e.spans.filter(e=>e.category===`db`).length],[`http`,`HTTP`,e.spans.filter(e=>e.category===`http.client`||e.category===`http.server`||e.category===`browser`).length],[`messages`,`Messages`,e.spans.filter(e=>e.category===`messaging`).length],[`logs`,`Logs`,e.logs.length],[`errors`,`Errors`,e.errorCount]]}function vC(e){let t={trace:e.trace,findings:e.findings,selected:e.selected,highlight:e.highlight,onSelect:e.onSelect};return e.tab===`sql`?(0,W.jsx)(aC,{...t}):e.tab===`http`?(0,W.jsx)(mS,{...t}):e.tab===`messages`?(0,W.jsx)(hS,{trace:e.trace,onSelect:e.onSelect}):e.tab===`logs`?(0,W.jsx)(kS,{trace:e.trace,onSelect:e.onSelect}):e.tab===`errors`?(0,W.jsx)(jS,{trace:e.trace,onSelect:e.onSelect}):(0,W.jsx)(gC,{trace:e.trace,selected:e.selected,highlight:e.highlight,onSelect:e.onSelect})}function yC(e){let t=e.trace.spans.find(t=>t.spanId===e.selected)??null;return(0,W.jsxs)(`section`,{className:`wl-panel wl-panel-flush`,children:[(0,W.jsx)(`nav`,{className:`wl-tabs`,role:`tablist`,children:_C(e.trace).map(([t,n,r])=>(0,W.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":e.tab===t,className:`wl-tab${e.tab===t?` wl-active`:``}${t===`errors`&&r>0?` wl-tab-error`:``}`,onClick:()=>e.onTab(t),children:[n,(0,W.jsx)(`span`,{className:`wl-tab-count`,children:r})]},t))}),(0,W.jsxs)(`div`,{className:`wl-split${t?` wl-with-panel`:``}`,children:[(0,W.jsx)(`div`,{className:`wl-split-main`,children:(0,W.jsx)(vC,{...e})}),t&&(0,W.jsx)(iC,{span:t,trace:e.trace,onClose:()=>e.onSelect(null)})]})]})}var bC=1500;function xC(e){let t=Se(),[n,r]=(0,E.useState)(null),[i,a]=(0,E.useState)(null),[o,s]=(0,E.useState)(!1),c=(0,E.useCallback)(()=>{s(!0),m.loadTrace(e).then(e=>(r(e),a(null))).catch(e=>a(String(e).includes(`not-found`)?`This trace is no longer stored. It may have been dropped.`:String(e))).finally(()=>s(!1))},[e]);(0,E.useEffect)(()=>{r(null),c();let e=setTimeout(c,bC);return()=>clearTimeout(e)},[c]);let l=t.traces.find(t=>t.traceId===e)??null,u=n&&(!l||n.spanCount>=l.spanCount)?n:l;return{trace:u,error:u?null:i,loading:o,reload:c}}var SC=e=>e.kind===`n+1-http`?`http`:e.kind===`error`?`errors`:e.kind===`n+1-db`||e.kind===`duplicate-query`||e.kind===`slow-query`?`sql`:`timeline`;function CC(e,t,n){let[r,i]=(0,E.useState)(t&&t!==`insights`?t:`timeline`);return(0,E.useEffect)(()=>{t&&t!==`insights`&&i(t)},[t]),[r,t=>{i(t),n&&history.replaceState(null,``,`#/traces/${e}/${t}`)}]}function wC({trace:e,view:t,loading:n=!1,onRefresh:r,shared:i=!1,actions:a}){let[o,s]=CC(e.traceId,t,!i),[c,l]=(0,E.useState)(null),[u,d]=(0,E.useState)(new Set);(0,E.useEffect)(()=>{t===`insights`&&document.getElementById(`wl-insights`)?.scrollIntoView({block:`start`})},[t]);let f=Se().info?.analysis,p=(0,E.useMemo)(()=>bn(e,f??{}),[e,f]),m=(0,E.useMemo)(()=>wn(e),[e]),h=xn({status:e.rootStatusCode,error:e.errorCount>0,totalMs:m.totalMs,insights:Sn(p).length});return(0,W.jsxs)(`div`,{className:`wl-detail`,children:[(0,W.jsx)(ux,{trace:e,timing:m,health:h,loading:n,onRefresh:r,backHref:i?null:S(`traces`,[],{trace:e.traceId}),actions:i?a:(0,W.jsxs)(W.Fragment,{children:[a,(0,W.jsx)(uS,{trace:e})]}),tags:i?null:(0,W.jsx)(lS,{trace:e})}),(0,W.jsx)(`div`,{id:`wl-insights`,children:(0,W.jsx)(Lb,{findings:p,onSelect:e=>{d(new Set(e.spanIds)),l(e.spanIds[0]??null),s(SC(e))}})}),(0,W.jsx)(yC,{trace:e,findings:p,tab:o,selected:c,highlight:u,onTab:s,onSelect:e=>(l(e),d(new Set))})]})}function TC({traceId:e,view:t}){let{trace:n,error:r,loading:i,reload:a}=xC(e),o=H().has(`sharing`);return n?(0,W.jsx)(wC,{trace:n,view:t,loading:i,onRefresh:a,actions:(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(tx,{trace:n}),(0,W.jsx)($b,{trace:n}),o&&(0,W.jsx)(Qb,{traceId:e})]})}):(0,W.jsxs)(G,{children:[(0,W.jsx)(K,{title:`Trace ${e.slice(0,12)}…`,children:r??`Loading trace…`}),r&&(0,W.jsx)(`a`,{href:S(`traces`),children:`Back to traces`})]})}function EC({back:e,icon:t,title:n,mono:r=!1,badge:i,actions:a,stats:o}){return(0,W.jsxs)(`section`,{className:`wl-panel wl-dhead`,children:[(0,W.jsxs)(`a`,{className:`wl-back`,href:e[0],children:[(0,W.jsx)(y_,{size:14,"aria-hidden":`true`}),` `,e[1]]}),(0,W.jsxs)(`h1`,{className:`wl-dhead-title`,children:[(0,W.jsx)(t,{size:22,"aria-hidden":!0}),(0,W.jsx)(`span`,{className:`wl-dhead-name${r?` wl-mono`:``}`,children:n}),i&&(0,W.jsx)(`span`,{className:`wl-dhead-badge`,children:i}),a&&(0,W.jsx)(`span`,{className:`wl-dhead-actions`,children:a})]}),o.length>0&&(0,W.jsx)(`dl`,{className:`wl-stats`,children:o.map(([e,t])=>(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`dt`,{children:e}),(0,W.jsx)(`dd`,{children:t})]},e))})]})}function DC(e,t){let[n,r]=[wn(e),wn(t)];return[{label:`Total`,a:n.totalMs,b:r.totalMs,ms:!0},{label:`Server`,a:n.serverMs??0,b:r.serverMs??0,ms:!0},{label:`Database`,a:n.dbMs,b:r.dbMs,ms:!0},{label:`Render`,a:n.renderMs??0,b:r.renderMs??0,ms:!0},{label:`Spans`,a:e.spanCount,b:t.spanCount,ms:!1},{label:`Queries`,a:e.dbCount,b:t.dbCount,ms:!1},{label:`HTTP calls`,a:e.httpClientCount,b:t.httpClientCount,ms:!1},{label:`Errors`,a:e.errorCount,b:t.errorCount,ms:!1}]}function OC(e,t){let n=e=>{let t=Ot(e),n=new Map;for(let r of e.spans)n.set(r.service,(n.get(r.service)??0)+(t.get(r.spanId)??0));return n},[r,i]=[n(e),n(t)];return[...new Set([...r.keys(),...i.keys()])].map(e=>({label:e,a:r.get(e)??0,b:i.get(e)??0,ms:!0})).sort((e,t)=>Math.abs(t.b-t.a)-Math.abs(e.b-e.a))}var kC=(e,t)=>e.ms?q(t):J(t);function AC({l:e}){let t=e.b-e.a;return Math.abs(t)<(e.ms?.5:1)?(0,W.jsx)(`span`,{className:`wl-muted`,children:`same`}):(0,W.jsxs)(`span`,{className:t>0?`wl-text-error`:`wl-text-ok`,children:[t>0?`+`:`−`,kC(e,Math.abs(t))]})}var jC=(e,t,n)=>[{key:`label`,header:n,cell:e=>e.label},{key:`a`,header:`A · ${Fb(e.traceId)}`,num:!0,cell:e=>kC(e,e.a)},{key:`b`,header:`B · ${Fb(t.traceId)}`,num:!0,cell:e=>kC(e,e.b)},{key:`diff`,header:`B − A`,num:!0,cell:e=>(0,W.jsx)(AC,{l:e})}];function MC({trace:e,label:t}){return(0,W.jsx)(G,{title:`${t}: ${e.rootName}`,action:(0,W.jsx)(pb,{href:y(e.traceId),label:`Open trace`}),children:(0,W.jsx)(gC,{trace:e,selected:null,highlight:new Set,onSelect:()=>{}})})}function NC({a:e,b:t}){let n=xC(e),r=xC(t),i=(0,W.jsx)(EC,{back:[y(e),`Back to trace`],icon:kv,title:`Compare traces`,stats:[[`A`,Fb(e)],[`B`,Fb(t)]]});return!n.trace||!r.trace?(0,W.jsxs)(`div`,{className:`wl-dpage`,children:[i,(0,W.jsx)(G,{children:(0,W.jsx)(K,{children:n.error??r.error??`Loading traces…`})})]}):(0,W.jsxs)(`div`,{className:`wl-dpage`,children:[i,(0,W.jsxs)(`div`,{className:`wl-grid wl-grid-2-even`,children:[(0,W.jsx)(G,{title:`Numbers`,flush:!0,children:(0,W.jsx)(Q,{columns:jC(n.trace,r.trace,``),rows:DC(n.trace,r.trace),rowKey:e=>e.label})}),(0,W.jsx)(G,{title:`Self Time per Service`,flush:!0,children:(0,W.jsx)(Q,{columns:jC(n.trace,r.trace,`Service`),rows:OC(n.trace,r.trace),rowKey:e=>e.label})})]}),(0,W.jsx)(MC,{trace:n.trace,label:`A`}),(0,W.jsx)(MC,{trace:r.trace,label:`B`})]})}var PC=[[`300000`,`5 minutes`],[`900000`,`15 minutes`],[`3600000`,`1 hour`],[`21600000`,`6 hours`],[`86400000`,`24 hours`]],FC=[[`0`,`No reminders`],[`900000`,`Remind every 15 minutes`],[`3600000`,`Remind every hour`],[`14400000`,`Remind every 4 hours`],[`86400000`,`Remind every day`]],IC=e=>PC.find(([t])=>Number(t)===e)?.[1]??`${Math.round(e/6e4)} min`,LC={">":`>`,"<":`<`,">=":`≥`,"<=":`≤`,above_normal:`above normal`},RC={2:`high`,3:`medium`,4:`low`},zC=e=>e.metric===`metric`?``:e.metric===`slo`?`×`:Qd[e.metric].unit,BC=e=>Number.isInteger(e)?String(e):Math.abs(e)<1?e.toPrecision(3):e.toFixed(1),VC=(e,t)=>t===null?`–`:`${BC(t)}${zC(e)===`%`||zC(e)===`×`?zC(e):zC(e)?` ${zC(e)}`:``}`;function HC(e){if(e.metric===`metric`)return`${e.metricName} ${Hf[e.metricStat||`avg`].toLowerCase()}${e.metricService?` (${e.metricService})`:``}`;if(e.metric===`slo`)return`SLO burn rate`;if(e.metric===`log_count`&&$d(e.logSearch??{}))return`Log lines (${$d(e.logSearch??{})})`;let t=e.endpoint?` of ${e.endpoint} (${e.service})`:e.service?` of ${e.service}`:``;return`${Qd[e.metric].label}${t}`}var UC=e=>e.op===`above_normal`?`above normal (${RC[e.threshold]??`${e.threshold} spreads`})`:`${LC[e.op]} ${VC(e,e.threshold)}`,WC=e=>`${HC(e)} ${UC(e)} over ${IC(e.windowMs)}${e.env?` · ${e.env}`:``}`;function GC(){let e=H().has(`accounts`),t=Me(Ce())?.org.role,n=c().project;return{url:(t=``)=>e?`./api/projects/${encodeURIComponent(n)}/alerts${t}`:`./api/alerts${t}?project=${encodeURIComponent(n)}`,ready:!e||!!n,canWrite:!e||t!==void 0&&t!==`viewer`}}var KC=e=>({webhook:`Webhook`,slack:`Slack`,teams:`Teams`,discord:`Discord`,pagerduty:`PagerDuty`,email:`Email`})[e.kind],qC=[[`slack`,`Slack incoming webhook`],[`teams`,`Microsoft Teams webhook`],[`discord`,`Discord webhook`],[`pagerduty`,`PagerDuty (Events API v2)`],[`webhook`,`Webhook (JSON)`]],JC=[...qC,[`email`,`Email to members`]],YC={slack:`https://hooks.slack.com/services/…`,teams:`https://….webhook.office.com/…`,discord:`https://discord.com/api/webhooks/…`,webhook:`https://example.com/wizelens`};function XC({to:e,onChange:t}){let n=Ce(),r=Me(n)?.org,{data:i}=zx(r?`./api/orgs/${r.id}`:null),a=(n,r)=>t(r?[...e,n]:e.filter(e=>e!==n)),o=n?.mail?`Only members with a confirmed email get it.`:`This cloud cannot send email yet: notices go to its log.`;return(0,W.jsxs)(`fieldset`,{className:`wl-check-list`,children:[(0,W.jsx)(`legend`,{children:`Send to these members`}),(i?.members??[]).map(t=>(0,W.jsx)(Xx,{label:`${t.name} (${t.email})`,checked:e.includes(t.email.toLowerCase()),onChange:e=>a(t.email.toLowerCase(),e.target.checked)},t.userId)),(0,W.jsx)(`small`,{className:`wl-muted`,children:o})]})}var ZC=e=>e===`email`?{kind:e,to:[]}:e===`pagerduty`?{kind:e,routingKey:``}:{kind:e,url:``};function QC({channel:e,onChange:t,onRemove:n}){let r=H().has(`accounts`);return(0,W.jsxs)(`div`,{className:`wl-alert-channel`,children:[(0,W.jsxs)(Yx,{children:[(0,W.jsx)(X,{label:`Send to`,value:e.kind,options:r?JC:qC,onChange:n=>t(n===e.kind?e:ZC(n))}),`url`in e&&(0,W.jsx)(Z,{label:`URL`,type:`url`,required:!0,value:e.url,onChange:n=>t({...e,url:n.target.value}),placeholder:YC[e.kind]}),e.kind===`pagerduty`&&(0,W.jsx)(Z,{label:`Routing key`,required:!0,value:e.routingKey,onChange:e=>t({kind:`pagerduty`,routingKey:e.target.value}),placeholder:`The integration key of a PagerDuty service`}),(0,W.jsx)(`button`,{type:`button`,className:`wl-icon-btn wl-alert-channel-remove`,"aria-label":`Remove this channel`,onClick:n,children:(0,W.jsx)(sb,{size:16})})]}),e.kind===`email`&&(0,W.jsx)(XC,{to:e.to,onChange:e=>t({kind:`email`,to:e})})]})}function $C({channels:e,onChange:t}){let n=n=>r=>t(e.map((e,t)=>t===n?r:e));return(0,W.jsxs)(`div`,{className:`wl-alert-channels`,children:[(0,W.jsx)(`div`,{className:`wl-section-title`,children:`Notify`}),e.length===0&&(0,W.jsx)(`p`,{className:`wl-muted wl-small`,children:`No channels: the alert shows on the dashboard and in the bell only.`}),e.map((r,i)=>(0,W.jsx)(QC,{channel:r,onChange:n(i),onRemove:()=>t(e.filter((e,t)=>t!==i))},i)),e.length<5&&(0,W.jsxs)(`button`,{type:`button`,className:`wl-btn`,onClick:()=>t([...e,ZC(`slack`)]),children:[(0,W.jsx)(dy,{"aria-hidden":`true`}),` Add a channel`]})]})}var ew=[[`>`,`is above`],[`>=`,`is at or above`],[`<`,`is below`],[`<=`,`is at or below`],[`above_normal`,`is above normal`]],tw=[[`2`,`High sensitivity`],[`3`,`Medium sensitivity`],[`4`,`Low sensitivity`]];function nw({r:e,set:t}){let n=Pi(e.metric)?ew:ew.filter(([e])=>e!==`above_normal`),r=tw.some(([t])=>Number(t)===e.threshold)?String(e.threshold):`3`;return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(X,{label:`Condition`,value:e.op,options:n,onChange:e=>(t(`op`)(e),e===`above_normal`&&t(`threshold`)(3))}),e.op===`above_normal`?(0,W.jsx)(X,{label:`Sensitivity`,value:r,options:tw,onChange:e=>t(`threshold`)(Number(e))}):(0,W.jsx)(Z,{label:`Threshold`,type:`number`,step:`any`,required:!0,value:e.threshold,onChange:e=>t(`threshold`)(Number(e.target.value))})]})}var rw=()=>(0,W.jsx)(`p`,{className:`wl-muted wl-small`,children:`Fires when any service or endpoint is above its normal: the same window at the same time in earlier weeks (or days, on hosts that keep less). The notice names it and, in the cloud, links to its problem.`}),iw=[[``,`Any level`],[`debug`,`Debug and up`],[`info`,`Info and up`],[`warn`,`Warnings and up`],[`error`,`Errors and up`],[`critical`,`Critical only`]],aw=[[``,`In and outside requests`],[`request`,`In requests`],[`outside`,`Outside requests`]];function ow({search:e,onChange:t}){let n=n=>r=>t(Gf({...e,[n]:r}));return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(Yx,{children:[(0,W.jsx)(X,{label:`Level`,value:e.level??``,options:iw,onChange:n(`level`)}),(0,W.jsx)(Z,{label:`Service (optional)`,value:e.service??``,onChange:e=>n(`service`)(e.target.value),placeholder:`All`}),(0,W.jsx)(Z,{label:`Text (optional)`,value:e.q??``,onChange:e=>n(`q`)(e.target.value),placeholder:`timed out`}),(0,W.jsx)(X,{label:`Written`,value:e.origin??``,options:aw,onChange:n(`origin`)})]}),(0,W.jsxs)(`p`,{className:`wl-muted wl-small`,children:[`Counts the log lines that match `,$d(e)?(0,W.jsx)(`strong`,{children:$d(e)}):`every line`,` over the window.`,(e.category||e.pattern)&&` The category and pattern from the Logs page apply too.`]})]})}var sw=Object.entries(Hf),cw=`wl-alert-metric-names`;function lw({r:e,set:t}){let n=c().project,{data:r}=zx(n?`./api/models/metrics?range=24h&project=${encodeURIComponent(n)}`:null),i=r?.catalog.find(t=>t.name===e.metricName);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(Yx,{children:[(0,W.jsx)(Z,{label:`Metric name`,required:!0,list:cw,value:e.metricName,onChange:e=>t(`metricName`)(e.target.value),placeholder:`process.cpu.utilization`}),(0,W.jsx)(X,{label:`Read`,value:e.metricStat||`avg`,options:sw,onChange:t(`metricStat`)}),(0,W.jsx)(Z,{label:`Service (optional)`,value:e.metricService,onChange:e=>t(`metricService`)(e.target.value),placeholder:`All`})]}),(0,W.jsx)(`datalist`,{id:cw,children:r?.catalog.map(e=>(0,W.jsx)(`option`,{value:e.name,children:e.lastText},e.name))}),(0,W.jsxs)(`p`,{className:`wl-muted wl-small`,children:[`The threshold is in the metric's base unit: seconds, bytes, or 0 to 1 for ratios (0.8 is 80%).`,i&&` ${i.name} is in "${i.unit||`no unit`}" and reads ${i.lastText} now.`]})]})}var uw=3e5,dw={build:``,dismissed:``,subs:new Set};function fw(e){dw.build!==e&&(dw.build=e,dw.subs.forEach(e=>e()))}async function pw(){try{let e=await fetch(`./version.json`,{cache:`no-store`}),t=e.ok?await e.json():null;typeof t?.build==`string`&&t.build!==`mvghioax`&&fw(t.build)}catch{}}function mw(){fw(dw.build||`unknown`)}function hw(){dw.dismissed=dw.build,dw.subs.forEach(e=>e())}function gw(){window.addEventListener(`vite:preloadError`,e=>(e.preventDefault(),mw())),document.addEventListener(`visibilitychange`,()=>document.visibilityState===`visible`&&void pw()),setInterval(()=>document.visibilityState===`visible`&&void pw(),uw)}var _w=e=>(dw.subs.add(e),()=>void dw.subs.delete(e));function vw(){return(0,E.useSyncExternalStore)(_w,()=>!!dw.build&&dw.build!==dw.dismissed)}var yw={url:``,stream:null,users:0,tick:0,subs:new Set};function bw(e){yw.url!==e&&(yw.stream?.close(),yw.url=e,yw.stream=new EventSource(e),yw.stream.addEventListener(`data`,()=>(yw.tick+=1,yw.subs.forEach(e=>e()))),yw.stream.addEventListener(`open`,()=>void pw())),yw.users+=1}function xw(){--yw.users,!(yw.users>0)&&(yw.stream?.close(),yw.stream=null,yw.url=``)}var Sw=e=>(yw.subs.add(e),()=>void yw.subs.delete(e));function Cw(){let e=H().has(`changes`)&&typeof EventSource<`u`,t=c().project,n=e?`./api/changes${t?`?project=${encodeURIComponent(t)}`:``}`:null;return(0,E.useEffect)(()=>{if(n)return bw(n),xw},[n]),(0,E.useSyncExternalStore)(Sw,()=>yw.tick)}var ww=new Set,Tw=0,Ew=()=>(0,E.useSyncExternalStore)(e=>(ww.add(e),()=>ww.delete(e)),()=>Tw);function Dw(e,t){return e?`./api/projects/${encodeURIComponent(t)}/issues`:`./api/issues?project=${encodeURIComponent(t)}`}function Ow(){let e=H(),[t]=b(),n=e.has(`accounts`),r=e.has(`issues`)&&(!n||!!t),{data:i}=zx(r&&n?Dw(!0,t):null);return{on:r,members:i?.members??[]}}async function kw(e,t,n,r,i={}){try{await x(`POST`,Dw(e,c().project),{kind:t,key:n,action:r,...i}),Tw++;for(let e of ww)e();return null}catch(e){return e instanceof Error?e.message:String(e)}}var Aw=new Set,jw=[];function Mw(e){if(e&&JSON.stringify(e)!==JSON.stringify(jw)){jw=e;for(let e of Aw)e()}}function Nw(){let e=(0,E.useSyncExternalStore)(e=>(Aw.add(e),()=>Aw.delete(e)),()=>jw),[t]=u();return t?e.filter(e=>e.service===t):e}var Pw=(0,E.createContext)(null);function Fw(e){let t=(0,E.useContext)(Pw);return t&&t.page===e?t:null}var Iw={window:`wizelens.ui.window`,compare:`wizelens.ui.compare`,tz:`wizelens.ui.tz`,clock:`wizelens.ui.clock`},Lw=e=>e===``||/^\d+-\d+$/.test(e),Rw=e=>e===`previous`||e===`week`,zw=e=>e===`local`||e===`utc`,Bw=e=>e===`12`||e===`24`;function Vw(e){let t=e?/^(\d+)-(\d+)$/.exec(e):null,n=t?{from:Number(t[1]),to:Number(t[2])}:null;return n&&n.to>n.from?n:null}var Hw=e=>e?`${Math.floor(e.from)}-${Math.floor(e.to)}`:``,Uw=()=>s(Iw.window,``,Lw),Ww=()=>s(Iw.compare,`previous`,Rw),Gw=()=>s(Iw.tz,`local`,zw),Kw=()=>s(Iw.clock,`12`,Bw);function qw(){let e=Ge(Iw.compare);return{window:Vw(Ge(Iw.window)),compare:e===`week`?`week`:`previous`}}function Jw(e,t){return{...e?{from:String(e.from),to:String(e.to)}:{},...t===`week`?{compare:t}:{}}}var Yw=e=>l(Iw.window,Hw(e)),Xw=e=>l(Iw.compare,e),Zw=100,Qw={},$w=15e3,eT=12e4,tT=new Set([`services`,`service`]);function nT(e,t,n,r=Qw){let i=n&&!tT.has(e)&&!t.service?{service:n}:{};return{...r,...i,...t}}function rT(){let[e]=Uw(),[t]=Ww();return(0,E.useMemo)(()=>Jw(Vw(e),t),[e,t])}function iT(e,t=Qw){let{query:n}=i(),[r]=u(),a=rT(),o=new URLSearchParams({...nT(e,Object.fromEntries(n),r,a),...t}).toString();return(0,E.useMemo)(()=>Object.fromEntries(new URLSearchParams(o)),[o])}var aT=new WeakMap;function oT(e,t){let n=aT.get(e);n||aT.set(e,n=new Map);let r=n.get(t);return r||n.set(t,r=Pp(e,{slowQueryMs:t})),r}var sT=[];function cT(e,t,n,r,i,a,o){let s=oc(n,i,t,{slowQueryMs:a}),c=Eh[e],l=c&&Th(t.q)?{searchIds:Dh(r,c,t.q,s.window,o)}:{};return Xf(e,{...s,...l},oT(r,a))}function lT(e,t,n){let r=Se(),[i]=Zg(),a=r.info?.analysis?.slowQueryMs??Zw,o=xx()?.active??sT;return{model:(0,E.useMemo)(()=>n?cT(e,t,i,r.traces,r.updatedMs,a,o):null,[n,e,r.traces,r.updatedMs,i,a,t,o]),loading:r.loading,error:null}}function uT(e,t,n){let r=c(),i=new URLSearchParams({...t,range:n});return r.project&&i.set(`project`,r.project),r.env&&i.set(`env`,r.env),`./api/models/${e}?${i.toString()}`}function dT(e,t,n){let[r]=Zg(),{updatedMs:i}=Se(),a=`${`${Cw()}.${Ew()}`} ${Math.floor(i/(H().has(`changes`)?eT:$w))}`,o=n?uT(e,t,r):null,[s,c]=(0,E.useState)({url:null,model:null,error:null});return(0,E.useEffect)(()=>{if(!o)return;let e=!0;return ne(o).then(t=>e&&c({url:o,model:t,error:null})).catch(t=>e&&c(e=>({...e,url:o,error:t instanceof Error?t.message:String(t)}))),()=>void(e=!1)},[o,a]),{model:s.model,loading:s.url!==o&&!s.error,error:s.error}}async function fT(e,t,n,r){let{window:i,compare:a}=qw(),o=nT(e,t,c().service,Jw(i,a));if(r)return ne(uT(e,o,n));let s=m.getSnapshot(),l=s.info?.analysis?.slowQueryMs??Zw;return cT(e,o,n,s.traces,s.updatedMs,l,wg(Sx()))}function pT(){let e=H().has(`serverStats`),t=dT(`badges`,Qw,e);return e?t.model?.errors??0:null}function mT(e,t){let[n]=u(),r=new URLSearchParams(nT(e,t,n)).toString(),i=(0,E.useMemo)(()=>Object.fromEntries(new URLSearchParams(r)),[r]),a=H().has(`serverStats`),o=lT(e,i,!a),s=dT(e,i,a);return a?s:o}function hT(e,t,n=!1){let r=iT(e,t),i=H().has(`serverStats`),a=Fw(e),o=lT(e,r,!i&&!a),s=dT(e,r,i&&!a),c=gT(i?s:o,n,JSON.stringify(r)),l=a?{model:a.model,loading:!1,error:null}:c,u=l.model?.meta?.releases;return(0,E.useEffect)(()=>Mw(u),[u]),l}function gT(e,t,n){let r=(0,E.useRef)(null);return t&&r.current?.key===n?r.current.m:(e.model&&(r.current={key:n,m:e}),e)}var _T=`wl-alert-services`,vT=`wl-alert-endpoints`;function yT({service:e}){let{model:t}=hT(`service`,{service:`api:${_r(e)}`});return(0,W.jsx)(`datalist`,{id:vT,children:t?.endpoints.map(e=>(0,W.jsx)(`option`,{value:e.name},e.name))})}function bT({r:e,set:t}){let{model:n}=hT(`services`),r=[...new Set((n?.rows??[]).filter(e=>e.kind===`api`||e.kind===`worker`||e.kind===`web`).map(e=>e.name))],i=e.metric===`slow_queries`;return(0,W.jsxs)(Yx,{children:[(0,W.jsx)(Z,{label:`Service (optional)`,list:_T,value:e.service,onChange:e=>t(`service`)(e.target.value),placeholder:`All services`}),(0,W.jsx)(Z,{label:`Endpoint (optional)`,list:vT,value:e.endpoint,disabled:!e.service||i,onChange:e=>t(`endpoint`)(e.target.value),placeholder:i?`Counted per service`:e.service?`All endpoints`:`Pick a service first`}),(0,W.jsx)(`datalist`,{id:_T,children:r.map(e=>(0,W.jsx)(`option`,{value:e},e))}),e.service&&!i&&(0,W.jsx)(yT,{service:e.service})]})}function xT(){let e=H().has(`accounts`),t=Me(Ce())?.org.role,n=c().project,r=`?project=${encodeURIComponent(n)}`;return{url:(t=``)=>e?`./api/projects/${encodeURIComponent(n)}/slos${t}`:`./api/slos${t}${r}`,apdexUrl:e?`./api/projects/${encodeURIComponent(n)}/apdex`:`./api/apdex${r}`,ready:!e||!!n,canWrite:!e||t!==void 0&&t!==`viewer`}}var ST=(e,t)=>{if(e===null)return`–`;let n=Math.max(1,(String(t).split(`.`)[1]??``).length);return`${e.toFixed(n)}%`},CT=e=>e===null?`–`:`${e.toFixed(1)}×`,wT=e=>e===null?`–`:e>0?`${Math.round(e*100)}%`:`Spent: ${(1-e).toFixed(1)}× the budget`,TT=e=>e===null?`neutral`:e<=0?`danger`:e<.25?`warning`:`success`;function ET(e){let t=e.endpoint?`${e.endpoint} (${e.service})`:e.service,n=e.kind===`success`?`succeed`:`finish in ${e.thresholdMs} ms`;return`${e.target}% of ${t} requests ${n}, over ${e.windowDays} days`}function DT({r:e,set:t}){let n=xT(),{data:r}=zx(n.ready?n.url():null),i=[[``,`Pick an SLO…`],...(r?.slos??[]).map(e=>[e.slo.id,e.slo.name])];return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Yx,{children:(0,W.jsx)(X,{label:`SLO`,value:e.sloId,options:i,onChange:t(`sloId`)})}),(0,W.jsx)(`p`,{className:`wl-muted wl-small`,children:`A burn rate of 1 spends the error budget exactly over the SLO's window. 14.4 over 1 hour spends 2% of a 30-day budget: a page. 6 over 6 hours is a ticket.`})]})}var OT=[...Object.entries(Qd).map(([e,t])=>[e,`${t.label}${t.unit?` (${t.unit})`:``}`]),[`metric`,`A metric (CPU, memory, your own)`],[`slo`,`An SLO's burn rate (×)`]],kT={name:``,metric:`error_rate`,metricName:``,metricStat:``,metricService:``,op:`>`,threshold:5,windowMs:3e5,env:``,service:``,endpoint:``,channels:[],enabled:!0,remindMs:0,sloId:``,logSearch:{}},AT=e=>Object.fromEntries(Object.keys(kT).map(t=>[t,e[t]]));function jT(e){let t={metricName:``,metricStat:``,metricService:``},n=e.metric===`metric`?{metricStat:e.metricStat||`avg`,service:``,endpoint:``,sloId:``}:e.metric===`slo`?{...t,service:``,endpoint:``}:{...t,sloId:``,endpoint:e.service?e.endpoint:``},r=e.channels.filter(e=>e.kind===`email`?e.to.length>0:e.kind===`pagerduty`?e.routingKey.trim()!==``:e.url.trim()!==``),i=e.metric===`log_count`?{service:``,endpoint:``,logSearch:e.logSearch??{}}:{logSearch:{}};return{...AT(e),...n,...i,channels:r}}function MT({initial:e,title:t,onSave:n,onCancel:r}){let[i,a]=(0,E.useState)(e),[o,s]=(0,E.useState)(null),c=e=>t=>a(n=>({...n,[e]:t}));return(0,W.jsx)(G,{title:t,children:(0,W.jsxs)(`form`,{className:`wl-form`,onSubmit:e=>{e.preventDefault(),n(jT(i)).then(s)},children:[(0,W.jsxs)(Yx,{children:[(0,W.jsx)(Z,{label:`Name`,required:!0,value:i.name,onChange:e=>c(`name`)(e.target.value),placeholder:`Checkout errors`}),(0,W.jsx)(Z,{label:`Environment (optional)`,value:i.env,onChange:e=>c(`env`)(e.target.value),placeholder:`All`})]}),(0,W.jsxs)(Yx,{children:[(0,W.jsx)(X,{label:`Metric`,value:i.metric,options:OT,onChange:e=>(c(`metric`)(e),!Pi(e)&&i.op===`above_normal`&&c(`op`)(`>`))}),(0,W.jsx)(nw,{r:i,set:c}),(0,W.jsx)(X,{label:`Over the last`,value:String(i.windowMs),options:PC,onChange:e=>c(`windowMs`)(Number(e))})]}),i.op===`above_normal`&&(0,W.jsx)(rw,{}),i.metric===`metric`?(0,W.jsx)(lw,{r:i,set:c}):i.metric===`slo`?(0,W.jsx)(DT,{r:i,set:c}):i.metric===`log_count`?(0,W.jsx)(ow,{search:i.logSearch??{},onChange:c(`logSearch`)}):(0,W.jsx)(bT,{r:i,set:c}),(0,W.jsxs)(Yx,{children:[(0,W.jsx)(X,{label:`Remind while firing`,value:String(i.remindMs),options:FC,onChange:e=>c(`remindMs`)(Number(e))}),(0,W.jsx)(Xx,{label:`On`,checked:i.enabled,onChange:e=>c(`enabled`)(e.target.checked)})]}),(0,W.jsx)($C,{channels:i.channels,onChange:c(`channels`)}),o&&(0,W.jsx)(`div`,{className:`wl-banner wl-banner-error`,children:o}),(0,W.jsxs)(Yx,{children:[(0,W.jsx)(`button`,{type:`submit`,className:`wl-btn wl-btn-primary`,children:`Save alert`}),(0,W.jsx)(`button`,{type:`button`,className:`wl-btn`,onClick:r,children:`Cancel`})]})]})})}function NT(e){if(!(e>0))return 1;let t=10**Math.floor(Math.log10(e));for(let n of[1,1.5,2,2.5,3,4,5,6,8,10])if(n*t>=e)return n*t;return 10*t}var PT=(e,t=4)=>Array.from({length:t+1},(n,r)=>e/t*r);function FT(e,t,n){let r=``,i=!1;return e.forEach((e,a)=>{e===null?i=!1:(r+=`${i?`L`:`M`}${t(a).toFixed(1)},${n(e).toFixed(1)}`,i=!0)}),r}function IT(e,t,n,r){if(e.length===0)return``;let i=e.map((e,r)=>`${t(r).toFixed(1)},${n(e??0).toFixed(1)}`);return`M${t(0).toFixed(1)},${r}L${i.join(`L`)}L${t(e.length-1).toFixed(1)},${r}Z`}var LT=e=>Math.max(0,...e.flatMap(e=>e.map(e=>e??0))),RT=6;function zT(e,t){if(e.length<2)return null;let n=e[1]-e[0],r=(t-e[0])/n;return r>=0&&r<e.length?r:null}function BT(e,t){let n=e.flatMap(e=>{let n=zT(t,e.firstMs);return n===null?[]:[{i:n,r:e}]}),r=[];for(let{i:e,r:t}of n.sort((e,t)=>e.i-t.i)){let n=r[r.length-1];n&&e-n.last<1?(n.list.push(t),n.last=e):r.push({index:e,last:e,list:[t]})}return r}var VT=e=>e.length===1?e[0].version:`${e.length} releases`;function HT({releases:e,starts:t,at:n,top:r,base:i}){let a=BT(e,t),o=a.length<=RT;return(0,W.jsx)(`g`,{className:`wl-release-marks`,children:a.map(({index:e,list:t})=>{let a=n(e);return(0,W.jsxs)(`g`,{children:[(0,W.jsx)(`title`,{children:t.map(e=>`${e.service} ${e.version}, first seen ${Ob(e.firstMs)}`).join(`
19
+ `);function TS({context:e,line:t}){return(0,W.jsx)(`pre`,{className:`wl-src`,children:e.lines.map((n,r)=>{let i=e.start+r;return(0,W.jsxs)(`span`,{className:i===t?`wl-src-line wl-src-hit`:`wl-src-line`,children:[(0,W.jsx)(`span`,{className:`wl-src-no`,children:i}),(0,W.jsx)(`code`,{children:n||` `})]},i)})})}function ES({frame:e,first:t}){let[n,r]=(0,E.useState)(t),i=n?q_:Z_;return(0,W.jsxs)(`li`,{className:e.inApp?`wl-frame`:`wl-frame wl-frame-lib`,children:[(0,W.jsxs)(`button`,{type:`button`,className:`wl-frame-head`,"aria-expanded":n,onClick:()=>r(!n),children:[(0,W.jsx)(i,{"aria-hidden":`true`}),(0,W.jsx)(`code`,{className:`wl-frame-fn`,children:e.fn??`<anonymous>`}),(0,W.jsx)(`span`,{className:`wl-frame-loc`,children:CS(e)})]}),n&&e.context&&(0,W.jsx)(TS,{context:e.context,line:e.line}),n&&(0,W.jsxs)(`div`,{className:`wl-frame-raw`,children:[`Raw: `,e.raw.raw]})]})}function DS(e,t,n){return e.loading?`Reading source maps…`:e.error?`Source maps could not be read: ${e.error}`:n?t?`Source maps of release ${t}`:`Source maps`:`No source map found${t?` for release ${t}`:``}. Showing the raw stack.`}function OS({event:e}){let t=yS(e),[n,r]=(0,E.useState)(`original`);if(!e.browser||!e.stack)return(0,W.jsx)(bS,{event:e});let i=t.frames??[],a=i.some(e=>e.source!==null),o=i.findIndex(e=>e.source!==null&&e.inApp);return(0,W.jsxs)(`div`,{className:`wl-stack-box`,children:[(0,W.jsxs)(`div`,{className:`wl-stack-head`,children:[(0,W.jsx)(`div`,{className:`wl-seg`,role:`tablist`,"aria-label":`Stack view`,children:[`original`,`raw`].map(e=>(0,W.jsx)(`button`,{type:`button`,role:`tab`,"aria-selected":n===e,className:n===e?`wl-active`:``,disabled:e===`original`&&!a,onClick:()=>r(e),children:e===`original`?`Original`:`Raw`},e))}),(0,W.jsx)(`span`,{className:`wl-muted wl-small`,children:DS(t,e.release,a)})]}),n===`raw`||!a?(0,W.jsx)(bS,{event:e}):(0,W.jsxs)(`div`,{className:`wl-stack wl-frames-box`,children:[(0,W.jsx)(`div`,{className:`wl-stack-copy`,children:(0,W.jsx)(Kb,{text:wS(e,i),label:`Copy original stack trace`})}),(0,W.jsx)(`ol`,{className:`wl-frames`,children:i.map((e,t)=>(0,W.jsx)(ES,{frame:e,first:t===o},t))})]})]})}function kS({trace:e,onSelect:t}){return e.logs.length===0?(0,W.jsx)(K,{children:`No logs were written during this request.`}):(0,W.jsx)(`div`,{className:`wl-table-wrap`,children:(0,W.jsxs)(`table`,{className:`wl-table`,children:[(0,W.jsx)(`thead`,{children:(0,W.jsxs)(`tr`,{children:[(0,W.jsx)(`th`,{className:`wl-num`,children:`At`}),(0,W.jsx)(`th`,{children:`Level`}),(0,W.jsx)(`th`,{children:`Service`}),(0,W.jsx)(`th`,{children:`Category`}),(0,W.jsx)(`th`,{children:`Message`})]})}),(0,W.jsx)(`tbody`,{children:e.logs.map((n,r)=>(0,W.jsxs)(`tr`,{onClick:()=>n.spanId&&t(n.spanId),className:n.spanId?`wl-clickable`:void 0,children:[(0,W.jsxs)(`td`,{className:`wl-num wl-muted`,children:[`+`,q(n.timeMs-e.startMs)]}),(0,W.jsx)(`td`,{children:(0,W.jsx)(`span`,{className:`wl-lvl wl-lvl-${n.level}`,children:n.level})}),(0,W.jsx)(`td`,{children:(0,W.jsx)(ox,{service:n.service,services:e.services})}),(0,W.jsx)(`td`,{className:`wl-muted wl-small`,children:n.category}),(0,W.jsx)(`td`,{className:`wl-wrap`,children:n.message})]},r))})]})})}function AS({span:e}){let t=_n(e);return(0,W.jsx)(`div`,{onClick:e=>e.stopPropagation(),children:(0,W.jsx)(OS,{event:{type:t.type??`Error`,message:t.message,stack:t.stack,browser:!0,release:bg(e),traceId:e.traceId,spanId:e.spanId}})})}function jS({trace:e,onSelect:t}){let n=new Map(e.spans.map(e=>[e.spanId,e])),r=e.spans.filter(ve).map(_n);return r.length===0?(0,W.jsx)(K,{children:`No errors in this request.`}):(0,W.jsx)(`ul`,{className:`wl-error-list`,children:r.map(r=>(0,W.jsxs)(`li`,{className:`wl-error-item`,onClick:()=>t(r.spanId),children:[(0,W.jsxs)(`div`,{className:`wl-error-head`,children:[(0,W.jsx)(ox,{service:r.service,services:e.services}),(0,W.jsx)(`strong`,{children:r.type??`Error`}),(0,W.jsxs)(`span`,{className:`wl-muted`,children:[`in `,r.name]})]}),(0,W.jsx)(`div`,{className:`wl-error-msg`,children:r.message}),r.stack&&n.get(r.spanId)?.category===`browser`?(0,W.jsx)(AS,{span:n.get(r.spanId)}):r.stack&&(0,W.jsx)(`pre`,{className:`wl-code wl-stack`,children:r.stack})]},r.spanId))})}function MS(e,t,n){return(0,E.useMemo)(()=>{let r=n&&t.find(e=>e.key===n.key);if(!n||!r?.sort)return e;let i=r.sort,a=n.desc?-1:1;return[...e].sort((e,t)=>{let n=i(e),r=i(t);return(n<r?-1:+(n>r))*a})},[e,t,n])}function NS({col:e,sort:t,onSort:n}){let r=e.num?`wl-num`:void 0;if(!e.sort)return(0,W.jsx)(`th`,{className:r,children:e.header});let i=t?.key===e.key,a=i&&t?.desc?__:C_;return(0,W.jsx)(`th`,{className:r,"aria-sort":i?t?.desc?`descending`:`ascending`:`none`,children:(0,W.jsxs)(`button`,{type:`button`,onClick:()=>n(e.key),children:[e.header,i&&(0,W.jsx)(a,{"aria-hidden":`true`})]})})}function Q({columns:e,rows:t,rowKey:n,onRowClick:r,selectedKey:i,empty:a,defaultSort:o,detail:s}){let[c,l]=(0,E.useState)(o??null),u=MS(t,e,c),d=e=>l(t=>t?.key===e?{key:e,desc:!t.desc}:{key:e,desc:!0});return t.length===0&&a?(0,W.jsx)(W.Fragment,{children:a}):(0,W.jsx)(`div`,{className:`wl-table-wrap`,children:(0,W.jsxs)(`table`,{className:`wl-table`,children:[(0,W.jsx)(`thead`,{children:(0,W.jsx)(`tr`,{children:e.map(e=>(0,W.jsx)(NS,{col:e,sort:c,onSort:d},e.key))})}),(0,W.jsx)(`tbody`,{children:u.map(t=>{let a=n(t),o=a===i,c=[r?`wl-clickable`:``,o?`wl-selected`:``].join(` `).trim();return(0,W.jsxs)(E.Fragment,{children:[(0,W.jsx)(`tr`,{className:c||void 0,onClick:r&&(()=>r(t)),children:e.map(e=>(0,W.jsx)(`td`,{className:[e.num?`wl-num`:``,e.className??``].join(` `).trim()||void 0,children:e.cell(t)},e.key))}),o&&s&&(0,W.jsx)(`tr`,{className:`wl-row-detail`,children:(0,W.jsx)(`td`,{colSpan:e.length,children:s(t)})})]},a)})})]})})}var PS={api:F_,web:ty,worker:rv,queue:zv,database:lv,external:jv},FS={api:`API service`,web:`Web app`,worker:`Message worker`,queue:`Queue`,database:`Database`,external:`Outside service`},IS={healthy:[`success`,`Healthy`],degraded:[`warning`,`Degraded`],unhealthy:[`danger`,`Unhealthy`],idle:[`neutral`,`Idle`]},LS=e=>IS[e][0],RS=e=>S(`services`,[encodeURIComponent(e)]),zS=C;function BS({status:e}){let[t,n]=IS[e];return(0,W.jsx)(Hb,{tone:t,colorText:t!==`neutral`,children:n})}function VS({row:e}){let t=PS[e.kind];return(0,W.jsxs)(`span`,{className:`wl-cell-icon`,title:FS[e.kind],children:[(0,W.jsx)(t,{size:18,"aria-hidden":!0}),e.name]})}var HS=[{key:`name`,header:`Service`,cell:e=>(0,W.jsx)(VS,{row:e}),sort:e=>e.name},{key:`status`,header:`Status`,cell:e=>(0,W.jsx)(BS,{status:e.status}),sort:e=>e.errorRate},{key:`requests`,header:`Requests`,num:!0,cell:e=>J(e.requests),sort:e=>e.requests},{key:`errors`,header:`Errors`,num:!0,cell:e=>J(e.errors),sort:e=>e.errors},{key:`rate`,header:`Error rate`,num:!0,cell:e=>yb(e.errorRate),sort:e=>e.errorRate},{key:`avg`,header:`Avg latency`,num:!0,cell:e=>q(e.avgMs),sort:e=>e.avgMs??0},{key:`p95`,header:`p95`,num:!0,cell:e=>q(e.p95Ms),sort:e=>e.p95Ms??0}];function US({rows:e,selectedKey:t}){let r=Mx();return(0,W.jsx)(Q,{columns:Lx(HS,`name`,e=>r(`services`,Ng(e.name))),rows:e,rowKey:e=>e.key,selectedKey:t,onRowClick:e=>n({service:e.key===t?null:e.key}),empty:(0,W.jsx)(K,{title:`No services yet`,children:`Services show up here when they handle a request in this time range.`})})}var WS=e=>S(`hosts`,[encodeURIComponent(e)]),GS=e=>S(`kubernetes`,[`node`,encodeURIComponent(e)]),KS=(e,t)=>S(`kubernetes`,[`pod`,encodeURIComponent(e||`-`),encodeURIComponent(t)]),qS=e=>S(`kubernetes`,[],{view:`pods`,workload:e}),JS=e=>{try{return decodeURIComponent(e??``)}catch{return e??``}},YS=(e,t)=>typeof e[t]==`string`&&e[t]?String(e[t]):``;function XS({attributes:e}){let t=H().has(`infra`),n=YS(e,`k8s.pod.name`),r=YS(e,`k8s.node.name`);return!t||!n&&!r?null:(0,W.jsxs)(`div`,{className:`wl-span-k8s`,children:[n&&(0,W.jsxs)(`a`,{className:`wl-infra-chip`,href:KS(YS(e,`k8s.namespace.name`),n),title:`Open this pod`,children:[(0,W.jsx)(F_,{size:12,"aria-hidden":`true`}),` Pod `,n]}),r&&(0,W.jsxs)(`a`,{className:`wl-infra-chip`,href:GS(r),title:`Open this node`,children:[(0,W.jsx)(Ty,{size:12,"aria-hidden":`true`}),` Node `,r]})]})}function ZS(e){if(typeof e!=`string`)return null;try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}}var QS=(e,t)=>S(`search`,[],{q:`@${e}:${lh(String(t))}`,kind:`spans`});function $S({entries:e,search:t=!1}){return e.length===0?(0,W.jsx)(`div`,{className:`wl-muted wl-small`,children:`None`}):(0,W.jsx)(`table`,{className:`wl-attrs`,children:(0,W.jsx)(`tbody`,{children:[...e].sort(([e],[t])=>e.localeCompare(t)).map(([e,n])=>(0,W.jsxs)(`tr`,{children:[(0,W.jsx)(`th`,{children:e}),(0,W.jsx)(`td`,{className:n===`[redacted]`?`wl-redacted`:void 0,children:n===null?(0,W.jsx)(`span`,{className:`wl-muted`,children:`null`}):t&&n!==`[redacted]`?(0,W.jsx)(`a`,{href:QS(e,n),title:`Find spans with this value`,children:String(n)}):String(n)})]},e))})})}function eC({event:e,trace:t}){let n=e.attributes,r=e.name===`exception`;return(0,W.jsxs)(`div`,{className:`wl-sp-event${r?` wl-sp-exception`:``}`,children:[(0,W.jsxs)(`div`,{className:`wl-sp-event-head`,children:[(0,W.jsx)(`strong`,{children:e.name}),(0,W.jsxs)(`span`,{className:`wl-muted`,children:[`+`,q(e.timeMs-t.startMs)]})]}),r?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`strong`,{children:String(n[`exception.type`]??`Error`)}),`: `,String(n[`exception.message`]??``)]}),n[`exception.stacktrace`]&&(0,W.jsx)(`pre`,{className:`wl-code wl-stack`,children:String(n[`exception.stacktrace`])})]}):(0,W.jsx)($S,{entries:Object.entries(n)})]})}function tC({span:e,trace:t}){return(0,W.jsxs)(`dl`,{className:`wl-sp-facts`,children:[(0,W.jsx)(`dt`,{children:`Service`}),(0,W.jsx)(`dd`,{children:(0,W.jsx)(ox,{service:e.service,services:t.services})}),(0,W.jsx)(`dt`,{children:`Kind`}),(0,W.jsxs)(`dd`,{children:[e.kind,` · `,e.category]}),(0,W.jsx)(`dt`,{children:`Duration`}),(0,W.jsx)(`dd`,{children:q(e.durationMs)}),(0,W.jsx)(`dt`,{children:`Starts at`}),(0,W.jsxs)(`dd`,{children:[`+`,q(e.startMs-t.startMs)]}),(0,W.jsx)(`dt`,{children:`Status`}),(0,W.jsxs)(`dd`,{className:e.status===`error`?`wl-text-error`:void 0,children:[e.status,e.statusMessage?` · ${e.statusMessage}`:``]}),(0,W.jsx)(`dt`,{children:`Span id`}),(0,W.jsx)(`dd`,{className:`wl-mono`,children:e.spanId})]})}function nC({span:e}){let t=e.attributes[`db.query.text`];if(typeof t!=`string`)return null;let n=ZS(e.attributes[`wizelens.db.parameters`]);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`h3`,{children:`Query`}),(0,W.jsx)(`pre`,{className:`wl-code`,children:t}),n&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`h3`,{children:`Parameters`}),(0,W.jsx)(`pre`,{className:`wl-code`,children:n})]})]})}function rC({span:e,trace:t}){let n=gr(e.service),r=Tr([t]).find(t=>t.spanId===e.spanId),i=[[RS(n),n]];return e.category===`http.server`&&i.push([_e(`api:${e.service}`,xs(e,`api`)),`Endpoint`]),e.category===`db`&&i.push([He(Fe(qt(e))),`Query`]),r&&i.push([he(r.key),`Error`]),t.logs.length&&i.push([S(`logs`,[],{trace:t.traceId}),`Request logs`]),(0,W.jsx)(`div`,{className:`wl-sp-links`,children:i.map(([e,t])=>(0,W.jsx)(`a`,{className:`wl-path-chip`,href:e,children:t},e))})}function iC({span:e,trace:t,onClose:n}){let r=Object.entries(e.attributes).filter(([e])=>e!==`db.query.text`&&e!==`wizelens.db.parameters`),i=t.logs.filter(t=>t.spanId===e.spanId);return(0,W.jsxs)(`aside`,{className:`wl-span-panel`,"aria-label":`Span details`,children:[(0,W.jsxs)(`div`,{className:`wl-sp-head`,children:[(0,W.jsx)(`h2`,{title:e.name,children:e.name}),(0,W.jsx)(`button`,{type:`button`,className:`wl-icon-btn`,onClick:n,"aria-label":`Close details`,children:(0,W.jsx)(sb,{size:18})})]}),(0,W.jsx)(tC,{span:e,trace:t}),(0,W.jsx)(rC,{span:e,trace:t}),(0,W.jsx)(XS,{attributes:e.attributes}),(0,W.jsx)(nC,{span:e}),e.events.length>0&&(0,W.jsx)(`h3`,{children:`Events`}),e.events.map((e,n)=>(0,W.jsx)(eC,{event:e,trace:t},n)),i.length>0&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`h3`,{children:`Logs`}),(0,W.jsx)(`ul`,{className:`wl-sp-logs`,children:i.map((e,t)=>(0,W.jsxs)(`li`,{children:[(0,W.jsx)(`span`,{className:`wl-lvl wl-lvl-${e.level}`,children:e.level}),` `,e.message]},t))})]}),(0,W.jsx)(`h3`,{children:`Attributes`}),(0,W.jsx)($S,{entries:r,search:!0})]})}function aC(e){let{trace:t,findings:n,onSelect:r}=e,i=t.spans.filter(e=>e.category===`db`),a=(0,E.useMemo)(()=>nx(n),[n]),o=new Set(i.map(qt)).size,s=i.reduce((e,t)=>e+t.durationMs,0),c=Pt(i);return i.length===0?(0,W.jsx)(K,{children:`No database calls in this request.`}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`wl-tab-summary`,children:[(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`strong`,{children:i.length}),` queries`]}),(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`strong`,{children:o}),` unique`]}),(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`strong`,{children:q(s)}),` total`]}),s-c>=1&&(0,W.jsxs)(`span`,{title:`Queries that ran at the same time count once`,children:[(0,W.jsx)(`strong`,{children:q(c)}),` wall time`]})]}),(0,W.jsx)(`ol`,{className:`wl-sql-list`,children:i.map((n,i)=>(0,W.jsxs)(`li`,{className:`wl-sql-item ${ax(n,e)}`,onClick:()=>r(n.spanId),children:[(0,W.jsxs)(`div`,{className:`wl-sql-meta`,children:[(0,W.jsxs)(`span`,{className:`wl-muted`,children:[`#`,i+1]}),(0,W.jsx)(ox,{service:n.service,services:t.services}),(0,W.jsx)(`span`,{className:`wl-muted`,children:String(n.attributes[`db.system.name`]??``)}),n.attributes[`wizelens.db.adapter`]!=null&&(0,W.jsxs)(`span`,{className:`wl-muted`,children:[`via `,String(n.attributes[`wizelens.db.adapter`])]}),(0,W.jsx)(ix,{kinds:a.get(n.spanId)}),(0,W.jsx)(`span`,{className:`wl-spacer`}),n.attributes[`db.response.returned_rows`]!=null&&(0,W.jsxs)(`span`,{className:`wl-muted`,children:[String(n.attributes[`db.response.returned_rows`]),` rows`]}),(0,W.jsx)(`strong`,{children:q(n.durationMs)})]}),(0,W.jsx)(`pre`,{className:`wl-code wl-sql`,children:qt(n)}),n.attributes[`wizelens.db.parameters`]!=null&&(0,W.jsxs)(`div`,{className:`wl-sql-params wl-mono wl-small`,children:[`params: `,String(n.attributes[`wizelens.db.parameters`])]})]},n.spanId))})]})}function oC(e,t){if(!t.text&&!t.errors&&!t.critical)return null;let n=t.text.trim().toLowerCase(),r=t.critical?kt(e):null,i=e=>(!n||`${e.name} ${e.service}`.toLowerCase().includes(n))&&(!t.errors||ve(e))&&(!r||r.has(e.spanId)),a=new Map(e.spans.map(e=>[e.spanId,e])),o=new Set;for(let t of e.spans.filter(i))for(let e=t;e&&!o.has(e.spanId);e=e.parentSpanId?a.get(e.parentSpanId):void 0)o.add(e.spanId);return o}function sC(e){let[t,n]=(0,E.useState)({text:``,errors:!1,critical:!1});return{filter:t,setFilter:n,keep:(0,E.useMemo)(()=>oC(e,t),[e,t])}}function cC({filter:e,onFilter:t,shown:n,total:r,onExpand:i}){return(0,W.jsxs)(`div`,{className:`wl-wf-bar-tools`,children:[(0,W.jsx)(qb,{value:e.text,onChange:n=>t({...e,text:n}),placeholder:`Find spans by name or service…`}),(0,W.jsx)(Xx,{label:`Errors only`,checked:e.errors,onChange:n=>t({...e,errors:n.target.checked})}),(0,W.jsx)(Xx,{label:`Critical path`,checked:e.critical,onChange:n=>t({...e,critical:n.target.checked})}),(0,W.jsx)(`span`,{className:`wl-muted wl-small`,children:n===r?`${r} spans`:`${n} of ${r} spans`}),(0,W.jsx)(`button`,{type:`button`,className:`wl-link-btn`,onClick:()=>i(!0),children:`Expand all`}),(0,W.jsx)(`button`,{type:`button`,className:`wl-link-btn`,onClick:()=>i(!1),children:`Collapse all`})]})}var lC={"http.server":`IN`,"http.client":`OUT`,db:`SQL`,messaging:`MSG`,browser:`WEB`,internal:`FN`},uC=[0,.25,.5,.75,1],dC=(e,t)=>e.startMs-t.startMs;function fC(e,t,n){let r=new Set(e.map(e=>e.spanId)),i=new Map,a=[];for(let t of e)t.parentSpanId&&r.has(t.parentSpanId)?i.set(t.parentSpanId,[...i.get(t.parentSpanId)??[],t]):a.push(t);let o=[],s=(e,r)=>{if(n&&!n.has(e.spanId))return;let a=(i.get(e.spanId)??[]).sort(dC);if(o.push({span:e,depth:r,hasChildren:a.length>0}),!t.has(e.spanId))for(let e of a)s(e,r+1)};for(let e of a.sort(dC))s(e,0);return o}function pC({total:e}){return(0,W.jsxs)(`div`,{className:`wl-wf-row wl-wf-axis`,"aria-hidden":`true`,children:[(0,W.jsx)(`div`,{className:`wl-wf-label`}),(0,W.jsx)(`div`,{className:`wl-wf-track`,children:uC.map(t=>(0,W.jsx)(`span`,{className:`wl-wf-tick`,style:{left:`${t*100}%`},children:q(e*t)},t))})]})}function mC({row:{span:e,depth:t,hasChildren:n},trace:r,collapsed:i,onToggle:a}){return(0,W.jsxs)(`div`,{className:`wl-wf-label`,style:{paddingLeft:`${8+t*14}px`},title:e.name,children:[n?(0,W.jsx)(`button`,{type:`button`,className:`wl-wf-caret`,"aria-label":i?`Expand`:`Collapse`,onClick:t=>(t.stopPropagation(),a(e.spanId)),children:i?`▸`:`▾`}):(0,W.jsx)(`span`,{className:`wl-wf-caret-space`}),(0,W.jsx)(`span`,{className:`wl-cat wl-cat-${e.category.replace(`.`,`-`)}`,children:lC[e.category]}),(0,W.jsx)(`span`,{className:`wl-wf-name`,children:e.name}),(0,W.jsx)(`span`,{className:`wl-svc-dot wl-svc-${Pb(e.service,r.services)}`,title:e.service})]})}function hC(e){let{span:t,hasChildren:n}=e.row,r=(t.startMs-e.trace.startMs)/e.total*100,i=Math.max(.4,t.durationMs/e.total*100),a=[`wl-wf-row`,e.selected?`wl-selected`:``,e.highlighted?`wl-highlight`:``,ve(t)?`wl-error`:``].join(` `);return(0,W.jsxs)(`div`,{className:a,role:`treeitem`,"aria-selected":e.selected,"aria-expanded":n?!e.collapsed:void 0,tabIndex:0,onClick:()=>e.onSelect(t.spanId),onKeyDown:n=>{(n.key===`Enter`||n.key===` `)&&(n.preventDefault(),e.onSelect(t.spanId))},children:[(0,W.jsx)(mC,{row:e.row,trace:e.trace,collapsed:e.collapsed,onToggle:e.onToggle}),(0,W.jsxs)(`div`,{className:`wl-wf-track`,children:[uC.slice(1,-1).map(e=>(0,W.jsx)(`span`,{className:`wl-wf-grid`,style:{left:`${e*100}%`}},e)),(0,W.jsx)(`span`,{className:`wl-wf-bar wl-k-${t.category.replace(`.`,`-`)}`,style:{left:`${r}%`,width:`${i}%`}}),(0,W.jsxs)(`span`,{className:`wl-wf-dur`,style:r+i>82?{right:`${100-r+.5}%`}:{left:`calc(${r+i}% + 6px)`},children:[q(t.durationMs),n&&e.selfMs<t.durationMs-.5&&(0,W.jsxs)(`span`,{className:`wl-wf-self`,children:[` · self `,q(e.selfMs)]})]})]})]})}function gC({trace:e,selected:t,highlight:n,onSelect:r}){let[i,a]=(0,E.useState)(new Set),{filter:o,setFilter:s,keep:c}=sC(e),l=(0,E.useMemo)(()=>fC(e.spans,i,c),[e.spans,i,c]),u=(0,E.useMemo)(()=>Ot(e),[e]),d=Math.max(e.durationMs,.001),f=t=>a(t?new Set:new Set(e.spans.filter(t=>e.spans.some(e=>e.parentSpanId===t.spanId)).map(e=>e.spanId))),p=e=>a(t=>{let n=new Set(t);return n.delete(e)||n.add(e),n});return e.spans.length===0?(0,W.jsx)(K,{children:`This trace has no spans.`}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(cC,{filter:o,onFilter:s,shown:c?c.size:e.spans.length,total:e.spans.length,onExpand:f}),(0,W.jsxs)(`div`,{className:`wl-waterfall`,role:`tree`,children:[(0,W.jsx)(pC,{total:d}),l.length===0&&(0,W.jsx)(K,{children:`No span matches.`}),l.map(a=>(0,W.jsx)(hC,{row:a,trace:e,total:d,selfMs:u.get(a.span.spanId)??0,selected:t===a.span.spanId,highlighted:n.has(a.span.spanId),collapsed:i.has(a.span.spanId),onSelect:r,onToggle:p},a.span.spanId))]})]})}function _C(e){return[[`timeline`,`Timeline`,e.spanCount],[`sql`,`SQL`,e.spans.filter(e=>e.category===`db`).length],[`http`,`HTTP`,e.spans.filter(e=>e.category===`http.client`||e.category===`http.server`||e.category===`browser`).length],[`messages`,`Messages`,e.spans.filter(e=>e.category===`messaging`).length],[`logs`,`Logs`,e.logs.length],[`errors`,`Errors`,e.errorCount]]}function vC(e){let t={trace:e.trace,findings:e.findings,selected:e.selected,highlight:e.highlight,onSelect:e.onSelect};return e.tab===`sql`?(0,W.jsx)(aC,{...t}):e.tab===`http`?(0,W.jsx)(mS,{...t}):e.tab===`messages`?(0,W.jsx)(hS,{trace:e.trace,onSelect:e.onSelect}):e.tab===`logs`?(0,W.jsx)(kS,{trace:e.trace,onSelect:e.onSelect}):e.tab===`errors`?(0,W.jsx)(jS,{trace:e.trace,onSelect:e.onSelect}):(0,W.jsx)(gC,{trace:e.trace,selected:e.selected,highlight:e.highlight,onSelect:e.onSelect})}function yC(e){let t=e.trace.spans.find(t=>t.spanId===e.selected)??null;return(0,W.jsxs)(`section`,{className:`wl-panel wl-panel-flush`,children:[(0,W.jsx)(`nav`,{className:`wl-tabs`,role:`tablist`,children:_C(e.trace).map(([t,n,r])=>(0,W.jsxs)(`button`,{type:`button`,role:`tab`,"aria-selected":e.tab===t,className:`wl-tab${e.tab===t?` wl-active`:``}${t===`errors`&&r>0?` wl-tab-error`:``}`,onClick:()=>e.onTab(t),children:[n,(0,W.jsx)(`span`,{className:`wl-tab-count`,children:r})]},t))}),(0,W.jsxs)(`div`,{className:`wl-split${t?` wl-with-panel`:``}`,children:[(0,W.jsx)(`div`,{className:`wl-split-main`,children:(0,W.jsx)(vC,{...e})}),t&&(0,W.jsx)(iC,{span:t,trace:e.trace,onClose:()=>e.onSelect(null)})]})]})}var bC=1500;function xC(e){let t=Se(),[n,r]=(0,E.useState)(null),[i,a]=(0,E.useState)(null),[o,s]=(0,E.useState)(!1),c=(0,E.useCallback)(()=>{s(!0),m.loadTrace(e).then(e=>(r(e),a(null))).catch(e=>a(String(e).includes(`not-found`)?`This trace is no longer stored. It may have been dropped.`:String(e))).finally(()=>s(!1))},[e]);(0,E.useEffect)(()=>{r(null),c();let e=setTimeout(c,bC);return()=>clearTimeout(e)},[c]);let l=t.traces.find(t=>t.traceId===e)??null,u=n&&(!l||n.spanCount>=l.spanCount)?n:l;return{trace:u,error:u?null:i,loading:o,reload:c}}var SC=e=>e.kind===`n+1-http`?`http`:e.kind===`error`?`errors`:e.kind===`n+1-db`||e.kind===`duplicate-query`||e.kind===`slow-query`?`sql`:`timeline`;function CC(e,t,n){let[r,i]=(0,E.useState)(t&&t!==`insights`?t:`timeline`);return(0,E.useEffect)(()=>{t&&t!==`insights`&&i(t)},[t]),[r,t=>{i(t),n&&history.replaceState(null,``,`#/traces/${e}/${t}`)}]}function wC({trace:e,view:t,loading:n=!1,onRefresh:r,shared:i=!1,actions:a}){let[o,s]=CC(e.traceId,t,!i),[c,l]=(0,E.useState)(null),[u,d]=(0,E.useState)(new Set);(0,E.useEffect)(()=>{t===`insights`&&document.getElementById(`wl-insights`)?.scrollIntoView({block:`start`})},[t]);let f=Se().info?.analysis,p=(0,E.useMemo)(()=>bn(e,f??{}),[e,f]),m=(0,E.useMemo)(()=>wn(e),[e]),h=xn({status:e.rootStatusCode,error:e.errorCount>0,totalMs:m.totalMs,insights:Sn(p).length});return(0,W.jsxs)(`div`,{className:`wl-detail`,children:[(0,W.jsx)(ux,{trace:e,timing:m,health:h,loading:n,onRefresh:r,backHref:i?null:S(`traces`,[],{trace:e.traceId}),actions:i?a:(0,W.jsxs)(W.Fragment,{children:[a,(0,W.jsx)(uS,{trace:e})]}),tags:i?null:(0,W.jsx)(lS,{trace:e})}),(0,W.jsx)(`div`,{id:`wl-insights`,children:(0,W.jsx)(Lb,{findings:p,onSelect:e=>{d(new Set(e.spanIds)),l(e.spanIds[0]??null),s(SC(e))}})}),(0,W.jsx)(yC,{trace:e,findings:p,tab:o,selected:c,highlight:u,onTab:s,onSelect:e=>(l(e),d(new Set))})]})}function TC({traceId:e,view:t}){let{trace:n,error:r,loading:i,reload:a}=xC(e),o=H().has(`sharing`);return n?(0,W.jsx)(wC,{trace:n,view:t,loading:i,onRefresh:a,actions:(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(tx,{trace:n}),(0,W.jsx)($b,{trace:n}),o&&(0,W.jsx)(Qb,{traceId:e})]})}):(0,W.jsxs)(G,{children:[(0,W.jsx)(K,{title:`Trace ${e.slice(0,12)}…`,children:r??`Loading trace…`}),r&&(0,W.jsx)(`a`,{href:S(`traces`),children:`Back to traces`})]})}function EC({back:e,icon:t,title:n,mono:r=!1,badge:i,actions:a,stats:o}){return(0,W.jsxs)(`section`,{className:`wl-panel wl-dhead`,children:[(0,W.jsxs)(`a`,{className:`wl-back`,href:e[0],children:[(0,W.jsx)(y_,{size:14,"aria-hidden":`true`}),` `,e[1]]}),(0,W.jsxs)(`h1`,{className:`wl-dhead-title`,children:[(0,W.jsx)(t,{size:22,"aria-hidden":!0}),(0,W.jsx)(`span`,{className:`wl-dhead-name${r?` wl-mono`:``}`,children:n}),i&&(0,W.jsx)(`span`,{className:`wl-dhead-badge`,children:i}),a&&(0,W.jsx)(`span`,{className:`wl-dhead-actions`,children:a})]}),o.length>0&&(0,W.jsx)(`dl`,{className:`wl-stats`,children:o.map(([e,t])=>(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`dt`,{children:e}),(0,W.jsx)(`dd`,{children:t})]},e))})]})}function DC(e,t){let[n,r]=[wn(e),wn(t)];return[{label:`Total`,a:n.totalMs,b:r.totalMs,ms:!0},{label:`Server`,a:n.serverMs??0,b:r.serverMs??0,ms:!0},{label:`Database`,a:n.dbMs,b:r.dbMs,ms:!0},{label:`Render`,a:n.renderMs??0,b:r.renderMs??0,ms:!0},{label:`Spans`,a:e.spanCount,b:t.spanCount,ms:!1},{label:`Queries`,a:e.dbCount,b:t.dbCount,ms:!1},{label:`HTTP calls`,a:e.httpClientCount,b:t.httpClientCount,ms:!1},{label:`Errors`,a:e.errorCount,b:t.errorCount,ms:!1}]}function OC(e,t){let n=e=>{let t=Ot(e),n=new Map;for(let r of e.spans)n.set(r.service,(n.get(r.service)??0)+(t.get(r.spanId)??0));return n},[r,i]=[n(e),n(t)];return[...new Set([...r.keys(),...i.keys()])].map(e=>({label:e,a:r.get(e)??0,b:i.get(e)??0,ms:!0})).sort((e,t)=>Math.abs(t.b-t.a)-Math.abs(e.b-e.a))}var kC=(e,t)=>e.ms?q(t):J(t);function AC({l:e}){let t=e.b-e.a;return Math.abs(t)<(e.ms?.5:1)?(0,W.jsx)(`span`,{className:`wl-muted`,children:`same`}):(0,W.jsxs)(`span`,{className:t>0?`wl-text-error`:`wl-text-ok`,children:[t>0?`+`:`−`,kC(e,Math.abs(t))]})}var jC=(e,t,n)=>[{key:`label`,header:n,cell:e=>e.label},{key:`a`,header:`A · ${Fb(e.traceId)}`,num:!0,cell:e=>kC(e,e.a)},{key:`b`,header:`B · ${Fb(t.traceId)}`,num:!0,cell:e=>kC(e,e.b)},{key:`diff`,header:`B − A`,num:!0,cell:e=>(0,W.jsx)(AC,{l:e})}];function MC({trace:e,label:t}){return(0,W.jsx)(G,{title:`${t}: ${e.rootName}`,action:(0,W.jsx)(pb,{href:y(e.traceId),label:`Open trace`}),children:(0,W.jsx)(gC,{trace:e,selected:null,highlight:new Set,onSelect:()=>{}})})}function NC({a:e,b:t}){let n=xC(e),r=xC(t),i=(0,W.jsx)(EC,{back:[y(e),`Back to trace`],icon:kv,title:`Compare traces`,stats:[[`A`,Fb(e)],[`B`,Fb(t)]]});return!n.trace||!r.trace?(0,W.jsxs)(`div`,{className:`wl-dpage`,children:[i,(0,W.jsx)(G,{children:(0,W.jsx)(K,{children:n.error??r.error??`Loading traces…`})})]}):(0,W.jsxs)(`div`,{className:`wl-dpage`,children:[i,(0,W.jsxs)(`div`,{className:`wl-grid wl-grid-2-even`,children:[(0,W.jsx)(G,{title:`Numbers`,flush:!0,children:(0,W.jsx)(Q,{columns:jC(n.trace,r.trace,``),rows:DC(n.trace,r.trace),rowKey:e=>e.label})}),(0,W.jsx)(G,{title:`Self Time per Service`,flush:!0,children:(0,W.jsx)(Q,{columns:jC(n.trace,r.trace,`Service`),rows:OC(n.trace,r.trace),rowKey:e=>e.label})})]}),(0,W.jsx)(MC,{trace:n.trace,label:`A`}),(0,W.jsx)(MC,{trace:r.trace,label:`B`})]})}var PC=[[`300000`,`5 minutes`],[`900000`,`15 minutes`],[`3600000`,`1 hour`],[`21600000`,`6 hours`],[`86400000`,`24 hours`]],FC=[[`0`,`No reminders`],[`900000`,`Remind every 15 minutes`],[`3600000`,`Remind every hour`],[`14400000`,`Remind every 4 hours`],[`86400000`,`Remind every day`]],IC=e=>PC.find(([t])=>Number(t)===e)?.[1]??`${Math.round(e/6e4)} min`,LC={">":`>`,"<":`<`,">=":`≥`,"<=":`≤`,above_normal:`above normal`},RC={2:`high`,3:`medium`,4:`low`},zC=e=>e.metric===`metric`?``:e.metric===`slo`?`×`:Qd[e.metric].unit,BC=e=>Number.isInteger(e)?String(e):Math.abs(e)<1?e.toPrecision(3):e.toFixed(1),VC=(e,t)=>t===null?`–`:`${BC(t)}${zC(e)===`%`||zC(e)===`×`?zC(e):zC(e)?` ${zC(e)}`:``}`;function HC(e){if(e.metric===`metric`)return`${e.metricName} ${Hf[e.metricStat||`avg`].toLowerCase()}${e.metricService?` (${e.metricService})`:``}`;if(e.metric===`slo`)return`SLO burn rate`;if(e.metric===`log_count`&&$d(e.logSearch??{}))return`Log lines (${$d(e.logSearch??{})})`;let t=e.endpoint?` of ${e.endpoint} (${e.service})`:e.service?` of ${e.service}`:``;return`${Qd[e.metric].label}${t}`}var UC=e=>e.op===`above_normal`?`above normal (${RC[e.threshold]??`${e.threshold} spreads`})`:`${LC[e.op]} ${VC(e,e.threshold)}`,WC=e=>`${HC(e)} ${UC(e)} over ${IC(e.windowMs)}${e.env?` · ${e.env}`:``}`;function GC(){let e=H().has(`accounts`),t=Me(Ce())?.org.role,n=c().project;return{url:(t=``)=>e?`./api/projects/${encodeURIComponent(n)}/alerts${t}`:`./api/alerts${t}?project=${encodeURIComponent(n)}`,ready:!e||!!n,canWrite:!e||t!==void 0&&t!==`viewer`}}var KC=e=>({webhook:`Webhook`,slack:`Slack`,teams:`Teams`,discord:`Discord`,pagerduty:`PagerDuty`,email:`Email`})[e.kind],qC=[[`slack`,`Slack incoming webhook`],[`teams`,`Microsoft Teams webhook`],[`discord`,`Discord webhook`],[`pagerduty`,`PagerDuty (Events API v2)`],[`webhook`,`Webhook (JSON)`]],JC=[...qC,[`email`,`Email to members`]],YC={slack:`https://hooks.slack.com/services/…`,teams:`https://….webhook.office.com/…`,discord:`https://discord.com/api/webhooks/…`,webhook:`https://example.com/wizelens`};function XC({to:e,onChange:t}){let n=Ce(),r=Me(n)?.org,{data:i}=zx(r?`./api/orgs/${r.id}`:null),a=(n,r)=>t(r?[...e,n]:e.filter(e=>e!==n)),o=n?.mail?`Only members with a confirmed email get it.`:`This cloud cannot send email yet: notices go to its log.`;return(0,W.jsxs)(`fieldset`,{className:`wl-check-list`,children:[(0,W.jsx)(`legend`,{children:`Send to these members`}),(i?.members??[]).map(t=>(0,W.jsx)(Xx,{label:`${t.name} (${t.email})`,checked:e.includes(t.email.toLowerCase()),onChange:e=>a(t.email.toLowerCase(),e.target.checked)},t.userId)),(0,W.jsx)(`small`,{className:`wl-muted`,children:o})]})}var ZC=e=>e===`email`?{kind:e,to:[]}:e===`pagerduty`?{kind:e,routingKey:``}:{kind:e,url:``};function QC({channel:e,onChange:t,onRemove:n}){let r=H().has(`accounts`);return(0,W.jsxs)(`div`,{className:`wl-alert-channel`,children:[(0,W.jsxs)(Yx,{children:[(0,W.jsx)(X,{label:`Send to`,value:e.kind,options:r?JC:qC,onChange:n=>t(n===e.kind?e:ZC(n))}),`url`in e&&(0,W.jsx)(Z,{label:`URL`,type:`url`,required:!0,value:e.url,onChange:n=>t({...e,url:n.target.value}),placeholder:YC[e.kind]}),e.kind===`pagerduty`&&(0,W.jsx)(Z,{label:`Routing key`,required:!0,value:e.routingKey,onChange:e=>t({kind:`pagerduty`,routingKey:e.target.value}),placeholder:`The integration key of a PagerDuty service`}),(0,W.jsx)(`button`,{type:`button`,className:`wl-icon-btn wl-alert-channel-remove`,"aria-label":`Remove this channel`,onClick:n,children:(0,W.jsx)(sb,{size:16})})]}),e.kind===`email`&&(0,W.jsx)(XC,{to:e.to,onChange:e=>t({kind:`email`,to:e})})]})}function $C({channels:e,onChange:t}){let n=n=>r=>t(e.map((e,t)=>t===n?r:e));return(0,W.jsxs)(`div`,{className:`wl-alert-channels`,children:[(0,W.jsx)(`div`,{className:`wl-section-title`,children:`Notify`}),e.length===0&&(0,W.jsx)(`p`,{className:`wl-muted wl-small`,children:`No channels: the alert shows on the dashboard and in the bell only.`}),e.map((r,i)=>(0,W.jsx)(QC,{channel:r,onChange:n(i),onRemove:()=>t(e.filter((e,t)=>t!==i))},i)),e.length<5&&(0,W.jsxs)(`button`,{type:`button`,className:`wl-btn`,onClick:()=>t([...e,ZC(`slack`)]),children:[(0,W.jsx)(dy,{"aria-hidden":`true`}),` Add a channel`]})]})}var ew=[[`>`,`is above`],[`>=`,`is at or above`],[`<`,`is below`],[`<=`,`is at or below`],[`above_normal`,`is above normal`]],tw=[[`2`,`High sensitivity`],[`3`,`Medium sensitivity`],[`4`,`Low sensitivity`]];function nw({r:e,set:t}){let n=Pi(e.metric)?ew:ew.filter(([e])=>e!==`above_normal`),r=tw.some(([t])=>Number(t)===e.threshold)?String(e.threshold):`3`;return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(X,{label:`Condition`,value:e.op,options:n,onChange:e=>(t(`op`)(e),e===`above_normal`&&t(`threshold`)(3))}),e.op===`above_normal`?(0,W.jsx)(X,{label:`Sensitivity`,value:r,options:tw,onChange:e=>t(`threshold`)(Number(e))}):(0,W.jsx)(Z,{label:`Threshold`,type:`number`,step:`any`,required:!0,value:e.threshold,onChange:e=>t(`threshold`)(Number(e.target.value))})]})}var rw=()=>(0,W.jsx)(`p`,{className:`wl-muted wl-small`,children:`Fires when any service or endpoint is above its normal: the same window at the same time in earlier weeks (or days, on hosts that keep less). The notice names it and, in the cloud, links to its problem.`}),iw=[[``,`Any level`],[`debug`,`Debug and up`],[`info`,`Info and up`],[`warn`,`Warnings and up`],[`error`,`Errors and up`],[`critical`,`Critical only`]],aw=[[``,`In and outside requests`],[`request`,`In requests`],[`outside`,`Outside requests`]];function ow({search:e,onChange:t}){let n=n=>r=>t(Gf({...e,[n]:r}));return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(Yx,{children:[(0,W.jsx)(X,{label:`Level`,value:e.level??``,options:iw,onChange:n(`level`)}),(0,W.jsx)(Z,{label:`Service (optional)`,value:e.service??``,onChange:e=>n(`service`)(e.target.value),placeholder:`All`}),(0,W.jsx)(Z,{label:`Text (optional)`,value:e.q??``,onChange:e=>n(`q`)(e.target.value),placeholder:`timed out`}),(0,W.jsx)(X,{label:`Written`,value:e.origin??``,options:aw,onChange:n(`origin`)})]}),(0,W.jsxs)(`p`,{className:`wl-muted wl-small`,children:[`Counts the log lines that match `,$d(e)?(0,W.jsx)(`strong`,{children:$d(e)}):`every line`,` over the window.`,(e.category||e.pattern)&&` The category and pattern from the Logs page apply too.`]})]})}var sw=Object.entries(Hf),cw=`wl-alert-metric-names`;function lw({r:e,set:t}){let n=c().project,{data:r}=zx(n?`./api/models/metrics?range=24h&project=${encodeURIComponent(n)}`:null),i=r?.catalog.find(t=>t.name===e.metricName);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(Yx,{children:[(0,W.jsx)(Z,{label:`Metric name`,required:!0,list:cw,value:e.metricName,onChange:e=>t(`metricName`)(e.target.value),placeholder:`process.cpu.utilization`}),(0,W.jsx)(X,{label:`Read`,value:e.metricStat||`avg`,options:sw,onChange:t(`metricStat`)}),(0,W.jsx)(Z,{label:`Service (optional)`,value:e.metricService,onChange:e=>t(`metricService`)(e.target.value),placeholder:`All`})]}),(0,W.jsx)(`datalist`,{id:cw,children:r?.catalog.map(e=>(0,W.jsx)(`option`,{value:e.name,children:e.lastText},e.name))}),(0,W.jsxs)(`p`,{className:`wl-muted wl-small`,children:[`The threshold is in the metric's base unit: seconds, bytes, or 0 to 1 for ratios (0.8 is 80%).`,i&&` ${i.name} is in "${i.unit||`no unit`}" and reads ${i.lastText} now.`]})]})}var uw=3e5,dw={build:``,dismissed:``,subs:new Set};function fw(e){dw.build!==e&&(dw.build=e,dw.subs.forEach(e=>e()))}async function pw(){try{let e=await fetch(`./version.json`,{cache:`no-store`}),t=e.ok?await e.json():null;typeof t?.build==`string`&&t.build!==`mvh13tpb`&&fw(t.build)}catch{}}function mw(){fw(dw.build||`unknown`)}function hw(){dw.dismissed=dw.build,dw.subs.forEach(e=>e())}function gw(){window.addEventListener(`vite:preloadError`,e=>(e.preventDefault(),mw())),document.addEventListener(`visibilitychange`,()=>document.visibilityState===`visible`&&void pw()),setInterval(()=>document.visibilityState===`visible`&&void pw(),uw)}var _w=e=>(dw.subs.add(e),()=>void dw.subs.delete(e));function vw(){return(0,E.useSyncExternalStore)(_w,()=>!!dw.build&&dw.build!==dw.dismissed)}var yw={url:``,stream:null,users:0,tick:0,subs:new Set};function bw(e){yw.url!==e&&(yw.stream?.close(),yw.url=e,yw.stream=new EventSource(e),yw.stream.addEventListener(`data`,()=>(yw.tick+=1,yw.subs.forEach(e=>e()))),yw.stream.addEventListener(`open`,()=>void pw())),yw.users+=1}function xw(){--yw.users,!(yw.users>0)&&(yw.stream?.close(),yw.stream=null,yw.url=``)}var Sw=e=>(yw.subs.add(e),()=>void yw.subs.delete(e));function Cw(){let e=H().has(`changes`)&&typeof EventSource<`u`,t=c().project,n=e?`./api/changes${t?`?project=${encodeURIComponent(t)}`:``}`:null;return(0,E.useEffect)(()=>{if(n)return bw(n),xw},[n]),(0,E.useSyncExternalStore)(Sw,()=>yw.tick)}var ww=new Set,Tw=0,Ew=()=>(0,E.useSyncExternalStore)(e=>(ww.add(e),()=>ww.delete(e)),()=>Tw);function Dw(e,t){return e?`./api/projects/${encodeURIComponent(t)}/issues`:`./api/issues?project=${encodeURIComponent(t)}`}function Ow(){let e=H(),[t]=b(),n=e.has(`accounts`),r=e.has(`issues`)&&(!n||!!t),{data:i}=zx(r&&n?Dw(!0,t):null);return{on:r,members:i?.members??[]}}async function kw(e,t,n,r,i={}){try{await x(`POST`,Dw(e,c().project),{kind:t,key:n,action:r,...i}),Tw++;for(let e of ww)e();return null}catch(e){return e instanceof Error?e.message:String(e)}}var Aw=new Set,jw=[];function Mw(e){if(e&&JSON.stringify(e)!==JSON.stringify(jw)){jw=e;for(let e of Aw)e()}}function Nw(){let e=(0,E.useSyncExternalStore)(e=>(Aw.add(e),()=>Aw.delete(e)),()=>jw),[t]=u();return t?e.filter(e=>e.service===t):e}var Pw=(0,E.createContext)(null);function Fw(e){let t=(0,E.useContext)(Pw);return t&&t.page===e?t:null}var Iw={window:`wizelens.ui.window`,compare:`wizelens.ui.compare`,tz:`wizelens.ui.tz`,clock:`wizelens.ui.clock`},Lw=e=>e===``||/^\d+-\d+$/.test(e),Rw=e=>e===`previous`||e===`week`,zw=e=>e===`local`||e===`utc`,Bw=e=>e===`12`||e===`24`;function Vw(e){let t=e?/^(\d+)-(\d+)$/.exec(e):null,n=t?{from:Number(t[1]),to:Number(t[2])}:null;return n&&n.to>n.from?n:null}var Hw=e=>e?`${Math.floor(e.from)}-${Math.floor(e.to)}`:``,Uw=()=>s(Iw.window,``,Lw),Ww=()=>s(Iw.compare,`previous`,Rw),Gw=()=>s(Iw.tz,`local`,zw),Kw=()=>s(Iw.clock,`12`,Bw);function qw(){let e=Ge(Iw.compare);return{window:Vw(Ge(Iw.window)),compare:e===`week`?`week`:`previous`}}function Jw(e,t){return{...e?{from:String(e.from),to:String(e.to)}:{},...t===`week`?{compare:t}:{}}}var Yw=e=>l(Iw.window,Hw(e)),Xw=e=>l(Iw.compare,e),Zw=100,Qw={},$w=15e3,eT=12e4,tT=new Set([`services`,`service`]);function nT(e,t,n,r=Qw){let i=n&&!tT.has(e)&&!t.service?{service:n}:{};return{...r,...i,...t}}function rT(){let[e]=Uw(),[t]=Ww();return(0,E.useMemo)(()=>Jw(Vw(e),t),[e,t])}function iT(e,t=Qw){let{query:n}=i(),[r]=u(),a=rT(),o=new URLSearchParams({...nT(e,Object.fromEntries(n),r,a),...t}).toString();return(0,E.useMemo)(()=>Object.fromEntries(new URLSearchParams(o)),[o])}var aT=new WeakMap;function oT(e,t){let n=aT.get(e);n||aT.set(e,n=new Map);let r=n.get(t);return r||n.set(t,r=Pp(e,{slowQueryMs:t})),r}var sT=[];function cT(e,t,n,r,i,a,o){let s=oc(n,i,t,{slowQueryMs:a}),c=Eh[e],l=c&&Th(t.q)?{searchIds:Dh(r,c,t.q,s.window,o)}:{};return Xf(e,{...s,...l},oT(r,a))}function lT(e,t,n){let r=Se(),[i]=Zg(),a=r.info?.analysis?.slowQueryMs??Zw,o=xx()?.active??sT;return{model:(0,E.useMemo)(()=>n?cT(e,t,i,r.traces,r.updatedMs,a,o):null,[n,e,r.traces,r.updatedMs,i,a,t,o]),loading:r.loading,error:null}}function uT(e,t,n){let r=c(),i=new URLSearchParams({...t,range:n});return r.project&&i.set(`project`,r.project),r.env&&i.set(`env`,r.env),`./api/models/${e}?${i.toString()}`}function dT(e,t,n){let[r]=Zg(),{updatedMs:i}=Se(),a=`${`${Cw()}.${Ew()}`} ${Math.floor(i/(H().has(`changes`)?eT:$w))}`,o=n?uT(e,t,r):null,[s,c]=(0,E.useState)({url:null,model:null,error:null});return(0,E.useEffect)(()=>{if(!o)return;let e=!0;return ne(o).then(t=>e&&c({url:o,model:t,error:null})).catch(t=>e&&c(e=>({...e,url:o,error:t instanceof Error?t.message:String(t)}))),()=>void(e=!1)},[o,a]),{model:s.model,loading:s.url!==o&&!s.error,error:s.error}}async function fT(e,t,n,r){let{window:i,compare:a}=qw(),o=nT(e,t,c().service,Jw(i,a));if(r)return ne(uT(e,o,n));let s=m.getSnapshot(),l=s.info?.analysis?.slowQueryMs??Zw;return cT(e,o,n,s.traces,s.updatedMs,l,wg(Sx()))}function pT(){let e=H().has(`serverStats`),t=dT(`badges`,Qw,e);return e?t.model?.errors??0:null}function mT(e,t){let[n]=u(),r=new URLSearchParams(nT(e,t,n)).toString(),i=(0,E.useMemo)(()=>Object.fromEntries(new URLSearchParams(r)),[r]),a=H().has(`serverStats`),o=lT(e,i,!a),s=dT(e,i,a);return a?s:o}function hT(e,t,n=!1){let r=iT(e,t),i=H().has(`serverStats`),a=Fw(e),o=lT(e,r,!i&&!a),s=dT(e,r,i&&!a),c=gT(i?s:o,n,JSON.stringify(r)),l=a?{model:a.model,loading:!1,error:null}:c,u=l.model?.meta?.releases;return(0,E.useEffect)(()=>Mw(u),[u]),l}function gT(e,t,n){let r=(0,E.useRef)(null);return t&&r.current?.key===n?r.current.m:(e.model&&(r.current={key:n,m:e}),e)}var _T=`wl-alert-services`,vT=`wl-alert-endpoints`;function yT({service:e}){let{model:t}=hT(`service`,{service:`api:${_r(e)}`});return(0,W.jsx)(`datalist`,{id:vT,children:t?.endpoints.map(e=>(0,W.jsx)(`option`,{value:e.name},e.name))})}function bT({r:e,set:t}){let{model:n}=hT(`services`),r=[...new Set((n?.rows??[]).filter(e=>e.kind===`api`||e.kind===`worker`||e.kind===`web`).map(e=>e.name))],i=e.metric===`slow_queries`;return(0,W.jsxs)(Yx,{children:[(0,W.jsx)(Z,{label:`Service (optional)`,list:_T,value:e.service,onChange:e=>t(`service`)(e.target.value),placeholder:`All services`}),(0,W.jsx)(Z,{label:`Endpoint (optional)`,list:vT,value:e.endpoint,disabled:!e.service||i,onChange:e=>t(`endpoint`)(e.target.value),placeholder:i?`Counted per service`:e.service?`All endpoints`:`Pick a service first`}),(0,W.jsx)(`datalist`,{id:_T,children:r.map(e=>(0,W.jsx)(`option`,{value:e},e))}),e.service&&!i&&(0,W.jsx)(yT,{service:e.service})]})}function xT(){let e=H().has(`accounts`),t=Me(Ce())?.org.role,n=c().project,r=`?project=${encodeURIComponent(n)}`;return{url:(t=``)=>e?`./api/projects/${encodeURIComponent(n)}/slos${t}`:`./api/slos${t}${r}`,apdexUrl:e?`./api/projects/${encodeURIComponent(n)}/apdex`:`./api/apdex${r}`,ready:!e||!!n,canWrite:!e||t!==void 0&&t!==`viewer`}}var ST=(e,t)=>{if(e===null)return`–`;let n=Math.max(1,(String(t).split(`.`)[1]??``).length);return`${e.toFixed(n)}%`},CT=e=>e===null?`–`:`${e.toFixed(1)}×`,wT=e=>e===null?`–`:e>0?`${Math.round(e*100)}%`:`Spent: ${(1-e).toFixed(1)}× the budget`,TT=e=>e===null?`neutral`:e<=0?`danger`:e<.25?`warning`:`success`;function ET(e){let t=e.endpoint?`${e.endpoint} (${e.service})`:e.service,n=e.kind===`success`?`succeed`:`finish in ${e.thresholdMs} ms`;return`${e.target}% of ${t} requests ${n}, over ${e.windowDays} days`}function DT({r:e,set:t}){let n=xT(),{data:r}=zx(n.ready?n.url():null),i=[[``,`Pick an SLO…`],...(r?.slos??[]).map(e=>[e.slo.id,e.slo.name])];return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Yx,{children:(0,W.jsx)(X,{label:`SLO`,value:e.sloId,options:i,onChange:t(`sloId`)})}),(0,W.jsx)(`p`,{className:`wl-muted wl-small`,children:`A burn rate of 1 spends the error budget exactly over the SLO's window. 14.4 over 1 hour spends 2% of a 30-day budget: a page. 6 over 6 hours is a ticket.`})]})}var OT=[...Object.entries(Qd).map(([e,t])=>[e,`${t.label}${t.unit?` (${t.unit})`:``}`]),[`metric`,`A metric (CPU, memory, your own)`],[`slo`,`An SLO's burn rate (×)`]],kT={name:``,metric:`error_rate`,metricName:``,metricStat:``,metricService:``,op:`>`,threshold:5,windowMs:3e5,env:``,service:``,endpoint:``,channels:[],enabled:!0,remindMs:0,sloId:``,logSearch:{}},AT=e=>Object.fromEntries(Object.keys(kT).map(t=>[t,e[t]]));function jT(e){let t={metricName:``,metricStat:``,metricService:``},n=e.metric===`metric`?{metricStat:e.metricStat||`avg`,service:``,endpoint:``,sloId:``}:e.metric===`slo`?{...t,service:``,endpoint:``}:{...t,sloId:``,endpoint:e.service?e.endpoint:``},r=e.channels.filter(e=>e.kind===`email`?e.to.length>0:e.kind===`pagerduty`?e.routingKey.trim()!==``:e.url.trim()!==``),i=e.metric===`log_count`?{service:``,endpoint:``,logSearch:e.logSearch??{}}:{logSearch:{}};return{...AT(e),...n,...i,channels:r}}function MT({initial:e,title:t,onSave:n,onCancel:r}){let[i,a]=(0,E.useState)(e),[o,s]=(0,E.useState)(null),c=e=>t=>a(n=>({...n,[e]:t}));return(0,W.jsx)(G,{title:t,children:(0,W.jsxs)(`form`,{className:`wl-form`,onSubmit:e=>{e.preventDefault(),n(jT(i)).then(s)},children:[(0,W.jsxs)(Yx,{children:[(0,W.jsx)(Z,{label:`Name`,required:!0,value:i.name,onChange:e=>c(`name`)(e.target.value),placeholder:`Checkout errors`}),(0,W.jsx)(Z,{label:`Environment (optional)`,value:i.env,onChange:e=>c(`env`)(e.target.value),placeholder:`All`})]}),(0,W.jsxs)(Yx,{children:[(0,W.jsx)(X,{label:`Metric`,value:i.metric,options:OT,onChange:e=>(c(`metric`)(e),!Pi(e)&&i.op===`above_normal`&&c(`op`)(`>`))}),(0,W.jsx)(nw,{r:i,set:c}),(0,W.jsx)(X,{label:`Over the last`,value:String(i.windowMs),options:PC,onChange:e=>c(`windowMs`)(Number(e))})]}),i.op===`above_normal`&&(0,W.jsx)(rw,{}),i.metric===`metric`?(0,W.jsx)(lw,{r:i,set:c}):i.metric===`slo`?(0,W.jsx)(DT,{r:i,set:c}):i.metric===`log_count`?(0,W.jsx)(ow,{search:i.logSearch??{},onChange:c(`logSearch`)}):(0,W.jsx)(bT,{r:i,set:c}),(0,W.jsxs)(Yx,{children:[(0,W.jsx)(X,{label:`Remind while firing`,value:String(i.remindMs),options:FC,onChange:e=>c(`remindMs`)(Number(e))}),(0,W.jsx)(Xx,{label:`On`,checked:i.enabled,onChange:e=>c(`enabled`)(e.target.checked)})]}),(0,W.jsx)($C,{channels:i.channels,onChange:c(`channels`)}),o&&(0,W.jsx)(`div`,{className:`wl-banner wl-banner-error`,children:o}),(0,W.jsxs)(Yx,{children:[(0,W.jsx)(`button`,{type:`submit`,className:`wl-btn wl-btn-primary`,children:`Save alert`}),(0,W.jsx)(`button`,{type:`button`,className:`wl-btn`,onClick:r,children:`Cancel`})]})]})})}function NT(e){if(!(e>0))return 1;let t=10**Math.floor(Math.log10(e));for(let n of[1,1.5,2,2.5,3,4,5,6,8,10])if(n*t>=e)return n*t;return 10*t}var PT=(e,t=4)=>Array.from({length:t+1},(n,r)=>e/t*r);function FT(e,t,n){let r=``,i=!1;return e.forEach((e,a)=>{e===null?i=!1:(r+=`${i?`L`:`M`}${t(a).toFixed(1)},${n(e).toFixed(1)}`,i=!0)}),r}function IT(e,t,n,r){if(e.length===0)return``;let i=e.map((e,r)=>`${t(r).toFixed(1)},${n(e??0).toFixed(1)}`);return`M${t(0).toFixed(1)},${r}L${i.join(`L`)}L${t(e.length-1).toFixed(1)},${r}Z`}var LT=e=>Math.max(0,...e.flatMap(e=>e.map(e=>e??0))),RT=6;function zT(e,t){if(e.length<2)return null;let n=e[1]-e[0],r=(t-e[0])/n;return r>=0&&r<e.length?r:null}function BT(e,t){let n=e.flatMap(e=>{let n=zT(t,e.firstMs);return n===null?[]:[{i:n,r:e}]}),r=[];for(let{i:e,r:t}of n.sort((e,t)=>e.i-t.i)){let n=r[r.length-1];n&&e-n.last<1?(n.list.push(t),n.last=e):r.push({index:e,last:e,list:[t]})}return r}var VT=e=>e.length===1?e[0].version:`${e.length} releases`;function HT({releases:e,starts:t,at:n,top:r,base:i}){let a=BT(e,t),o=a.length<=RT;return(0,W.jsx)(`g`,{className:`wl-release-marks`,children:a.map(({index:e,list:t})=>{let a=n(e);return(0,W.jsxs)(`g`,{children:[(0,W.jsx)(`title`,{children:t.map(e=>`${e.service} ${e.version}, first seen ${Ob(e.firstMs)}`).join(`
20
20
  `)}),(0,W.jsx)(`line`,{x1:a,x2:a,y1:r,y2:i,className:`wl-release-line`}),o&&(0,W.jsx)(`text`,{x:a+4,y:r+9,className:`wl-release-label`,children:VT(t)})]},e)})})}var UT=e=>e.length>1?e[e.length-1]-e[0]:0,WT={left:44,right:8,top:10,bottom:26};function GT(){let e=(0,E.useRef)(null),[t,n]=(0,E.useState)(600);return(0,E.useEffect)(()=>{let t=e.current;if(!t)return;let r=new ResizeObserver(([e])=>e&&n(Math.max(200,e.contentRect.width)));return r.observe(t),()=>r.disconnect()},[]),[e,t]}function KT(e,t,n){let r=Math.max(1,e.starts.length),i=(t-WT.left-WT.right)/r,a=NT(LT((e.lines??[]).map(e=>e.values))),o=NT(LT(e.stackBars?[JT(e)]:(e.bars??[]).map(e=>e.values))),s=e.separateBarScale||!e.lines?.length?e.lines?.length?a:o:Math.max(a,o),c=n-WT.bottom,l=c-WT.top,u=e.separateBarScale?o:s;return{x:e=>WT.left+i*(e+.5),y:e=>c-e/s*l,yBar:t=>c-t/u*l*(e.separateBarScale?.85:1),max:s,slot:i,base:c}}function qT({p:e,f:t,width:n}){let r=e.format??(e=>String(Math.round(e))),i=Math.max(1,Math.ceil(e.starts.length/6));return(0,W.jsxs)(`g`,{children:[PT(t.max,t.max<=4&&Number.isInteger(t.max)?t.max:4).map(e=>(0,W.jsxs)(`g`,{children:[(0,W.jsx)(`line`,{className:`wl-chart-grid`,x1:WT.left,x2:n-WT.right,y1:t.y(e),y2:t.y(e)}),(0,W.jsx)(`text`,{className:`wl-chart-axis`,x:WT.left-8,y:t.y(e)+4,textAnchor:`end`,children:r(e)})]},e)),e.starts.map((n,r)=>r%i===0&&(0,W.jsx)(`text`,{className:`wl-chart-axis`,x:t.x(r),y:t.base+18,textAnchor:`middle`,children:Ab(n,UT(e.starts))},n))]})}var JT=e=>e.starts.map((t,n)=>(e.bars??[]).reduce((e,t)=>e+(t.values[n]??0),0));function YT({p:e,f:t}){let n=Math.max(1,t.slot*.62),r=Array(e.starts.length).fill(0);return(0,W.jsx)(`g`,{children:(e.bars??[]).map((e,i)=>e.values.map((a,o)=>{if(!a)return null;let s=r[o];return r[o]=s+a,(0,W.jsx)(`rect`,{x:t.x(o)-n/2,y:t.yBar(s+a),width:n-.5,height:t.yBar(s)-t.yBar(s+a),fill:e.color},`${i}-${o}`)}))})}function XT({p:e,f:t}){let n=e.bars??[],r=Math.max(1,t.slot*.62/Math.max(1,n.length));return(0,W.jsx)(`g`,{children:n.map((e,i)=>e.values.map((a,o)=>a?(0,W.jsx)(`rect`,{x:t.x(o)-r*n.length/2+i*r,y:t.yBar(a),width:r-.5,height:t.base-t.yBar(a),rx:`1.5`,fill:e.color},`${i}-${o}`):null))})}function ZT({p:e,f:t}){return(0,W.jsxs)(`g`,{children:[e.stackBars?(0,W.jsx)(YT,{p:e,f:t}):(0,W.jsx)(XT,{p:e,f:t}),(e.lines??[]).map((n,r)=>(0,W.jsxs)(`g`,{children:[(r===0||e.areas)&&!n.dashed&&(0,W.jsx)(`path`,{d:IT(n.values,t.x,t.y,t.base),fill:n.color,opacity:e.areas?.18:.08}),(0,W.jsx)(`path`,{d:FT(n.values,t.x,t.y),fill:`none`,stroke:n.color,strokeWidth:n.dashed?1.5:2,strokeLinejoin:`round`,strokeDasharray:n.dashed?`4 4`:void 0,opacity:n.dashed?.7:1})]},n.label))]})}function QT({p:e,i:t,left:n,releases:r}){let i=e.format??(e=>String(Math.round(e))),a=[...e.lines??[],...e.bars??[]],o=r.filter(n=>Math.floor(zT(e.starts,n.firstMs)??-1)===t);return(0,W.jsxs)(`div`,{className:`wl-chart-tip`,style:{left:n,top:0},children:[(0,W.jsx)(`strong`,{children:jb(e.starts[t],UT(e.starts))}),a.map(e=>(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`span`,{children:e.label}),(0,W.jsx)(`b`,{children:e.values[t]==null?`–`:i(e.values[t])})]},e.label)),o.map(e=>(0,W.jsxs)(`div`,{className:`wl-chart-tip-release`,children:[(0,W.jsx)(`span`,{children:e.service}),(0,W.jsxs)(`b`,{children:[e.version,` released`]})]},`${e.service}|${e.version}`))]})}function $T(e,t){let[n,r]=(0,E.useState)(null),i=(0,E.useRef)(null),a=e=>r(i.current=e);return{on:e.zoom!==!1&&e.starts.length>1,latest:i,setDrag:a,finish:()=>{let t=i.current;if(t&&t.a!==t.b){let n=e.starts[1]-e.starts[0];Yw({from:e.starts[Math.min(t.a,t.b)],to:e.starts[Math.max(t.a,t.b)]+n})}a(null)},band:n&&n.a!==n.b?{x:t.x(Math.min(n.a,n.b))-t.slot/2,w:(Math.abs(n.a-n.b)+1)*t.slot}:null}}function eE(e){let[t,n]=GT(),[r,i]=(0,E.useState)(null),a=e.height??200,o=KT(e,n,a),s=$T(e,o),c=Nw(),l=e.releases===!1?[]:c,u=e=>Math.floor((e.clientX-e.currentTarget.getBoundingClientRect().left-WT.left)/o.slot),d=t=>{let n=u(t),r=n>=0&&n<e.starts.length;i(r?n:null),r&&s.latest.current&&s.setDrag({...s.latest.current,b:n})},f=t=>{let n=u(t);s.on&&n>=0&&n<e.starts.length&&s.setDrag({a:n,b:n})},p=[...e.lines??[],...e.bars??[]];return(0,W.jsxs)(`div`,{className:`wl-chart`,ref:t,children:[(0,W.jsxs)(`svg`,{width:n,height:a,className:s.on?`wl-chart-zoom`:void 0,onMouseMove:d,onMouseDown:f,onMouseUp:s.finish,onMouseLeave:()=>(i(null),s.setDrag(null)),role:`img`,"aria-label":p.map(e=>e.label).join(`, `),children:[(0,W.jsx)(qT,{p:e,f:o,width:n}),(0,W.jsx)(ZT,{p:e,f:o}),(0,W.jsx)(HT,{releases:l,starts:e.starts,at:e=>WT.left+o.slot*e,top:WT.top,base:o.base}),s.band&&(0,W.jsx)(`rect`,{className:`wl-chart-band`,x:s.band.x,y:WT.top,width:s.band.w,height:o.base-WT.top}),r!==null&&(0,W.jsx)(`line`,{x1:o.x(r),x2:o.x(r),y1:WT.top,y2:o.base,stroke:`var(--wl-line-strong)`})]}),r!==null&&(0,W.jsx)(QT,{p:e,i:r,left:Math.min(o.x(r)+12,n-160),releases:l}),(0,W.jsx)(`div`,{className:`wl-chart-legend`,children:p.map(e=>(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`i`,{className:e.dashed?`wl-legend-dashed`:void 0,style:{background:e.dashed?void 0:e.color,borderColor:e.color}}),e.label]},e.label))})]})}var tE=36e5,nE=[[``,`Mute…`],[String(tE),`For 1 hour`],[String(4*tE),`For 4 hours`],[String(24*tE),`For 1 day`],[`-1`,`Until I unmute`]];function rE({rule:e}){let t=Date.now();if(!e.enabled)return(0,W.jsx)(Y,{tone:`neutral`,children:`Off`});let n=ef(e,t)&&(0,W.jsx)(Y,{tone:`neutral`,children:e.mutedUntilMs===864e13?`Muted`:`Muted until ${Ob(e.mutedUntilMs)}`}),r=(0,W.jsx)(Hb,{tone:e.state===`firing`?`danger`:`success`,colorText:e.state===`firing`,children:e.state===`firing`?`Firing`:`OK`});return(0,W.jsxs)(`span`,{className:`wl-alert-state`,children:[r,e.state===`firing`&&e.ackMs!==null&&(0,W.jsx)(Y,{tone:`info`,children:`Acknowledged`}),n]})}function iE({rule:e,url:t,onDone:n,onEdit:r,onDelete:i}){let[a,o]=(0,E.useState)(!1),s=(e,r,i,a)=>{o(!0),x(e,t(r),i).then(e=>(o(!1),n(a?.(e))),e=>(o(!1),n(e instanceof Error?e.message:String(e))))},c=`/${encodeURIComponent(e.id)}`,l=ef(e,Date.now());return(0,W.jsxs)(`span`,{className:`wl-row-actions wl-alert-actions`,onClick:e=>e.stopPropagation(),children:[e.state===`firing`&&e.ackMs===null&&(0,W.jsx)(`button`,{type:`button`,className:`wl-link-btn`,disabled:a,onClick:()=>s(`POST`,`${c}/ack`),children:`Acknowledge`}),l?(0,W.jsx)(`button`,{type:`button`,className:`wl-link-btn`,disabled:a,onClick:()=>s(`POST`,`${c}/mute`,{untilMs:null}),children:`Unmute`}):(0,W.jsx)(X,{small:!0,label:`Mute`,value:``,options:nE,onChange:e=>e&&s(`POST`,`${c}/mute`,{untilMs:e===`-1`?-1:Date.now()+Number(e)})}),(0,W.jsx)(`button`,{type:`button`,className:`wl-link-btn`,disabled:a,onClick:()=>s(`PATCH`,c,{enabled:!e.enabled}),children:e.enabled?`Turn off`:`Turn on`}),(0,W.jsx)(`button`,{type:`button`,className:`wl-link-btn`,disabled:a,onClick:()=>s(`POST`,`${c}/test`,void 0,e=>`Test sent: ${e.delivery}`),children:`Test`}),r&&(0,W.jsx)(`button`,{type:`button`,className:`wl-link-btn`,onClick:r,children:`Edit`}),i&&(0,W.jsx)(`button`,{type:`button`,className:`wl-link-btn wl-text-error`,onClick:i,children:`Delete`})]})}var aE=60;function oE(e,t,n){let r=(n-t)/aE,i=Array.from({length:aE},(e,n)=>t+n*r),a=Array(aE).fill(null);for(let n of e){let e=Math.floor((n.timeMs-t)/r);e>=0&&e<aE&&n.value!==null&&(a[e]=n.value)}return{starts:i,values:a}}function sE(e,t,n){if(e.metric===`metric`)return null;if(e.metric===`slo`)return S(`slos`,[encodeURIComponent(e.sloId)]);let r={...e.service?{service:e.service}:{},...e.endpoint?{endpoint:e.endpoint}:{},from:String(t),to:String(n)};return e.metric===`new_errors`?S(`errors`,[],{...r,new:`1`}):e.metric===`slow_queries`?S(`database`,[],{...r,sort:`total`}):e.metric===`error_rate`?S(`requests`,[],{...r,status:`failed`}):S(`requests`,[],{...r,sort:`duration`})}function cE(){let[e]=Zg(),[t]=Uw();return(0,E.useMemo)(()=>{let n=Vw(t),r=n?.to??Date.now();return{from:n?.from??r-fe[e].ms,to:r}},[e,t])}function lE({d:e,api:t,reload:n}){let[r,i]=(0,E.useState)(null),a=cE(),o=e.rule,s=oE(e.values,a.from,a.to),c=o.metric===`metric`?void 0:o.metric===`slo`?`×`:Qd[o.metric].unit,l=e=>VC(o,e),u=sE(o,a.from,a.to),d=[[`Rule`,WC(o)],[`Last value`,VC(o,o.lastValue)],[`Checked`,o.lastEvalMs?Ob(o.lastEvalMs):`Not yet`],[`Sends to`,o.channels.map(KC).join(`, `)||`Dashboard only`]],f=t.canWrite?(0,W.jsx)(iE,{rule:o,url:t.url,onDone:e=>(i(e??null),n())}):void 0;return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(EC,{back:[`#/alerts`,`All alerts`],icon:k_,title:o.name,badge:(0,W.jsx)(rE,{rule:o}),actions:f,stats:d}),r&&(0,W.jsx)(`div`,{className:`wl-banner wl-banner-info`,children:r}),(0,W.jsx)(G,{title:`Value Against the Line (every check, ${IC(o.windowMs)} windows)`,action:u&&(0,W.jsx)(pb,{href:u,label:`View the traces`}),children:(0,W.jsx)(eE,{starts:s.starts,format:c===void 0?void 0:l,lines:[{label:`Value`,values:s.values,color:`var(--wl-blue)`},{label:`Threshold`,values:s.values.map(()=>o.threshold),color:`var(--wl-red)`,dashed:!0}]})}),(0,W.jsx)(G,{title:`Notices and Changes`,flush:!0,children:(0,W.jsx)(Q,{columns:mE(!1),rows:e.events,rowKey:e=>e.id,empty:(0,W.jsx)(K,{children:`Nothing happened to this alert yet.`})})})]})}function uE({id:e}){let t=GC(),n=cE(),r=t.url(`/${encodeURIComponent(e)}`),{data:i,error:a,reload:o}=zx(t.ready?`${r}${r.includes(`?`)?`&`:`?`}from=${n.from}&to=${n.to+1}`:null);return a?(0,W.jsx)(G,{children:(0,W.jsxs)(K,{title:`This alert was not found`,children:[a,` Go back to `,(0,W.jsx)(`a`,{href:`#/alerts`,children:`all alerts`}),`.`]})}):(0,W.jsx)(`div`,{className:`wl-dpage`,children:i?(0,W.jsx)(lE,{d:i,api:t,reload:o}):(0,W.jsx)(G,{children:(0,W.jsx)(K,{children:`Loading…`})})})}function dE(e,t,n,r,i){return[{key:`name`,header:`Alert`,cell:e=>(0,W.jsx)(`strong`,{children:e.name})},{key:`rule`,header:`Rule`,className:`wl-wrap`,cell:e=>WC(e)},{key:`state`,header:`State`,cell:e=>(0,W.jsx)(rE,{rule:e})},{key:`value`,header:`Last value`,num:!0,cell:e=>VC(e,e.lastValue)},{key:`to`,header:`Sends to`,cell:e=>e.channels.map(KC).join(`, `)||`Dashboard only`},...e?[{key:`actions`,header:``,cell:e=>(0,W.jsx)(iE,{rule:e,url:t,onDone:n,onEdit:()=>r(e),onDelete:()=>i(e)})}]:[]]}var fE={fired:`danger`,resolved:`success`,remind:`warning`,test:`info`,ack:`info`,mute:`neutral`,unmute:`neutral`},pE={fired:`Fired`,resolved:`Resolved`,remind:`Reminder`,test:`Test`,ack:`Acknowledged`,mute:`Muted`,unmute:`Unmuted`},mE=e=>[{key:`time`,header:`When`,cell:e=>Nb(e.timeMs),className:`wl-nowrap`},{key:`kind`,header:``,cell:e=>(0,W.jsx)(Y,{tone:fE[e.kind],children:pE[e.kind]})},...e?[{key:`rule`,header:`Alert`,cell:e=>e.ruleName}]:[],{key:`message`,header:`Message`,cell:e=>(0,W.jsxs)(W.Fragment,{children:[e.message,e.problem&&(0,W.jsxs)(`a`,{className:`wl-alert-problem`,href:e.problem.url.slice(e.problem.url.indexOf(`#`)),onClick:e=>e.stopPropagation(),children:[`Problem: `,e.problem.title]})]}),className:`wl-wrap`},{key:`delivery`,header:`Delivery`,cell:e=>(0,W.jsx)(`span`,{className:`wl-muted wl-small`,children:e.delivery}),className:`wl-wrap`}],hE=[`name`,`metric`,`service`,`endpoint`,`metricName`,`metricStat`,`metricService`,`sloId`,`op`],gE=[`threshold`,`windowMs`],_E=[...hE,...gE];function vE(e){let t={};try{t=Gf(JSON.parse(e))}catch{}return{...kT,name:$d(t).slice(0,100)||`Log lines`,metric:`log_count`,threshold:10,logSearch:t}}function yE(e){let t=e.get(`log`);if(t)return vE(t);let n=Object.fromEntries(hE.filter(t=>e.get(t)).map(t=>[t,e.get(t)])),r=Object.fromEntries(gE.filter(t=>Number.isFinite(Number(e.get(t)))&&e.get(t)).map(t=>[t,Number(e.get(t))]));return{...kT,...n,...r}}function bE(){let[e]=i().params;return H().has(`alerts`)?e?(0,W.jsx)(uE,{id:C(e)},e):(0,W.jsx)(xE,{}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(fb,{title:`Alerts`,subtitle:`Get told when error rates, latency, traffic, or any metric cross a line.`}),(0,W.jsx)(G,{children:(0,W.jsx)(K,{title:`This host does not run alerts`,children:`Alerts run on the hub and on WizeLens Cloud. Send your data there to use them.`})})]})}function xE(){let e=GC(),t=i().query,{data:r,error:a,reload:o}=zx(e.ready?e.url():null),[s,c]=(0,E.useState)(null),[l,u]=(0,E.useState)(null),d=t.get(`new`)===`1`,f=()=>(c(null),d&&n({new:null,log:null,...Object.fromEntries(_E.map(e=>[e,null]))})),p=async t=>{let n=await Bx(()=>s?x(`PATCH`,e.url(`/${encodeURIComponent(s.id)}`),t):x(`POST`,e.url(),t),o);return n||f(),n},m=e=>(u(e??null),o()),h=t=>void Bx(()=>x(`DELETE`,e.url(`/${encodeURIComponent(t.id)}`)),o),g=e.canWrite&&!s&&!d&&(0,W.jsxs)(`a`,{className:`wl-btn wl-btn-primary`,href:`#/alerts?new=1`,children:[(0,W.jsx)(dy,{"aria-hidden":`true`}),` New alert`]}),_=s?(0,W.jsx)(MT,{title:`Edit "${s.name}"`,initial:AT(s),onSave:p,onCancel:f},s.id):d&&e.canWrite?(0,W.jsx)(MT,{title:`New alert`,initial:yE(t),onSave:p,onCancel:f}):null;return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(fb,{title:`Alerts`,subtitle:`Get told when error rates, latency, traffic, or any metric cross a line. Checked every minute.`,children:g}),a&&(0,W.jsx)(`div`,{className:`wl-banner wl-banner-error`,children:a}),l&&(0,W.jsx)(`div`,{className:`wl-banner wl-banner-info`,children:l}),_,(0,W.jsx)(G,{title:`Rules`,flush:!0,children:(0,W.jsx)(Q,{columns:dE(e.canWrite,e.url,m,c,h),rows:r?.rules??[],rowKey:e=>e.id,onRowClick:e=>T(pe(e.id)),empty:(0,W.jsxs)(K,{title:`No alerts yet`,children:[(0,W.jsx)(k_,{"aria-hidden":`true`}),` Add one to hear about problems before your users do.`]})})}),(0,W.jsx)(G,{title:`Recent notices`,flush:!0,children:(0,W.jsx)(Q,{columns:mE(!0),rows:r?.events??[],rowKey:e=>e.id,onRowClick:e=>T(pe(e.ruleId)),empty:(0,W.jsx)(K,{children:`Nothing fired yet.`})})})]})}function SE({targets:e,url:t,canWrite:n,onSaved:r}){let{model:i}=hT(`services`),a=[...new Set((i?.rows??[]).filter(e=>e.kind===`api`||e.kind===`worker`).map(e=>e.name))].sort(),[o,s]=(0,E.useState)({}),[c,l]=(0,E.useState)(null);return(0,E.useEffect)(()=>s(Object.fromEntries(Object.entries(e).map(([e,t])=>[e,String(t)]))),[e]),(0,W.jsxs)(G,{title:`Apdex Targets`,action:n&&(0,W.jsx)(`button`,{type:`button`,className:`wl-btn wl-btn-sm`,onClick:()=>{let e=Object.fromEntries(Object.entries(o).filter(([,e])=>e.trim()!==``).map(([e,t])=>[e,Number(t)]));x(`PUT`,t,{apdex:e}).then(()=>(l(`Saved.`),r()),e=>l(e instanceof Error?e.message:String(e)))},children:`Save targets`}),children:[(0,W.jsxs)(`p`,{className:`wl-muted wl-small`,children:[`Requests at or under the target are satisfied, under four times it tolerable, and slower or failed ones frustrated. Empty uses `,500,` ms.`]}),(0,W.jsx)(`div`,{className:`wl-apdex-targets`,children:a.map(e=>(0,W.jsx)(Z,{label:`${e} (ms)`,type:`number`,min:1,max:6e4,disabled:!n,value:o[e]??``,placeholder:`500`,onChange:t=>s(n=>({...n,[e]:t.target.value}))},e))}),a.length===0&&(0,W.jsx)(`p`,{className:`wl-muted`,children:`No services yet.`}),c&&(0,W.jsx)(`p`,{className:`wl-small`,children:c})]})}var CE={name:``,service:``,endpoint:``,kind:`success`,target:99.9,thresholdMs:500,windowDays:30},wE=[[`success`,`Requests succeed`],[`latency`,`Requests are fast enough`]],TE=[[`30`,`Over 30 days`],[`7`,`Over 7 days`]];function EE(){let{model:e}=hT(`services`);return[...new Set((e?.rows??[]).filter(e=>e.kind===`api`||e.kind===`worker`||e.kind===`web`).map(e=>e.name))]}function DE({initial:e,title:t,onSave:n,onCancel:r}){let[i,a]=(0,E.useState)(e),[o,s]=(0,E.useState)(null),c=EE(),l=e=>t=>a(n=>({...n,[e]:t}));return(0,W.jsx)(G,{title:t,children:(0,W.jsxs)(`form`,{className:`wl-form`,onSubmit:e=>{e.preventDefault(),n(i).then(s)},children:[(0,W.jsxs)(Yx,{children:[(0,W.jsx)(Z,{label:`Name (optional)`,value:i.name,onChange:e=>l(`name`)(e.target.value),placeholder:`Checkout availability`}),(0,W.jsx)(Z,{label:`Service`,required:!0,list:`wl-slo-services`,value:i.service,onChange:e=>l(`service`)(e.target.value),placeholder:`orders`}),(0,W.jsx)(Z,{label:`Endpoint (optional)`,value:i.endpoint,onChange:e=>l(`endpoint`)(e.target.value),placeholder:`All endpoints, or GET /api/orders/{id}`}),(0,W.jsx)(`datalist`,{id:`wl-slo-services`,children:c.map(e=>(0,W.jsx)(`option`,{value:e},e))})]}),(0,W.jsxs)(Yx,{children:[(0,W.jsx)(X,{label:`Good means`,value:i.kind,options:wE,onChange:l(`kind`)}),i.kind===`latency`&&(0,W.jsx)(Z,{label:`Within (ms)`,type:`number`,min:1,required:!0,value:i.thresholdMs,onChange:e=>l(`thresholdMs`)(Number(e.target.value))}),(0,W.jsx)(Z,{label:`Target (%)`,type:`number`,step:`any`,min:0,max:99.999,required:!0,value:i.target,onChange:e=>l(`target`)(Number(e.target.value))}),(0,W.jsx)(X,{label:`Window`,value:String(i.windowDays),options:TE,onChange:e=>l(`windowDays`)(Number(e))})]}),o&&(0,W.jsx)(`div`,{className:`wl-banner wl-banner-error`,children:o}),(0,W.jsxs)(Yx,{children:[(0,W.jsx)(`button`,{type:`submit`,className:`wl-btn wl-btn-primary`,children:`Save SLO`}),(0,W.jsx)(`button`,{type:`button`,className:`wl-btn`,onClick:r,children:`Cancel`})]})]})})}var OE=`14.4`;function kE({r:e}){let t=e.status;return(0,W.jsxs)(`div`,{className:`wl-grid wl-grid-2-even`,children:[(0,W.jsx)(G,{title:`Error Budget Left (0% once spent)`,children:(0,W.jsx)(eE,{starts:t.starts,format:e=>`${Math.round(e)}%`,zoom:!1,releases:!1,lines:[{label:`Budget left`,values:t.budgetSeries.map(e=>e===null?null:Math.max(0,e*100)),color:`var(--wl-blue)`},{label:`Spent`,values:t.starts.map(()=>0),color:`var(--wl-red)`,dashed:!0}]})}),(0,W.jsx)(G,{title:`Good Requests`,children:(0,W.jsx)(eE,{starts:t.starts,format:t=>ST(t,e.slo.target),zoom:!1,lines:[{label:`Good`,values:t.sliSeries,color:`var(--wl-green)`},{label:`Target`,values:t.starts.map(()=>e.slo.target),color:`var(--wl-red)`,dashed:!0}]})})]})}function AE({r:e,url:t,canWrite:n,reload:r}){let[i,a]=(0,E.useState)(!1),o=H().has(`alerts`),s=e.status,c=[[`Goal`,ET(e.slo)],[`Now`,ST(s.sli,e.slo.target)],[`Requests`,J(s.total)],[`Burn now`,`${CT(e.burn1h)} (1 h), ${CT(e.burn6h)} (6 h)`]],l=async e=>{let n=await Bx(()=>x(`PATCH`,t,e),r);return n||a(!1),n},u=()=>void Bx(()=>x(`DELETE`,t),()=>T(`#/slos`)),d=Ue({metric:`slo`,sloId:e.slo.id,op:`>`,threshold:OE,windowMs:`3600000`,name:`${e.slo.name} burns fast`}),f=(0,W.jsxs)(W.Fragment,{children:[o&&(0,W.jsxs)(`a`,{className:`wl-btn wl-btn-sm`,href:d,children:[(0,W.jsx)(T_,{"aria-hidden":`true`}),` Alert on burn rate`]}),n&&(0,W.jsx)(`button`,{type:`button`,className:`wl-btn wl-btn-sm`,onClick:()=>a(!0),children:`Edit`}),n&&(0,W.jsx)(`button`,{type:`button`,className:`wl-link-btn wl-text-error`,onClick:u,children:`Delete`})]}),p=e.slo.endpoint?_e(`api:${e.slo.service}`,e.slo.endpoint):`#/services/api%3A${encodeURIComponent(e.slo.service)}`;return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(EC,{back:[`#/slos`,`All SLOs`],icon:Gy,title:e.slo.name,badge:(0,W.jsx)(Y,{tone:TT(s.budgetLeft),children:s.budgetLeft!==null&&s.budgetLeft>0?`${wT(s.budgetLeft)} of budget left`:wT(s.budgetLeft)}),actions:f,stats:[...c,[`Covers`,(0,W.jsx)(`a`,{href:p,children:e.slo.endpoint||e.slo.service},`s`)]]}),i&&(0,W.jsx)(DE,{title:`Edit "${e.slo.name}"`,initial:e.slo,onSave:l,onCancel:()=>a(!1)}),(0,W.jsx)(kE,{r:e})]})}function jE({id:e}){let t=xT(),n=t.url(`/${encodeURIComponent(e)}`),{data:r,error:i,reload:a}=zx(t.ready?n:null);return i?(0,W.jsx)(G,{children:(0,W.jsxs)(K,{title:`This SLO was not found`,children:[i,` Go back to `,(0,W.jsx)(`a`,{href:`#/slos`,children:`all SLOs`}),`.`]})}):(0,W.jsx)(`div`,{className:`wl-dpage`,children:r?(0,W.jsx)(AE,{r,url:n,canWrite:t.canWrite,reload:a}):(0,W.jsx)(G,{children:(0,W.jsx)(K,{children:`Loading…`})})})}var ME=[{key:`name`,header:`SLO`,cell:e=>(0,W.jsx)(`strong`,{children:e.slo.name})},{key:`goal`,header:`Goal`,className:`wl-wrap`,cell:e=>ET(e.slo)},{key:`sli`,header:`Now`,num:!0,cell:e=>(0,W.jsx)(`span`,{className:e.status.sli!==null&&e.status.sli<e.slo.target?`wl-text-error`:void 0,children:ST(e.status.sli,e.slo.target)})},{key:`budget`,header:`Budget Left`,num:!0,cell:e=>(0,W.jsx)(Y,{tone:TT(e.status.budgetLeft),children:wT(e.status.budgetLeft)})},{key:`burn`,header:`Burn (1 h / 6 h)`,num:!0,className:`wl-nowrap`,cell:e=>`${CT(e.burn1h)} / ${CT(e.burn6h)}`},{key:`total`,header:`Requests`,num:!0,cell:e=>e.status.total.toLocaleString()}];function NE(){let[e]=i().params;return H().has(`slos`)?e?(0,W.jsx)(jE,{id:C(e)},e):(0,W.jsx)(PE,{}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(fb,{title:`SLOs`,subtitle:`Service level objectives and error budgets.`}),(0,W.jsx)(G,{children:(0,W.jsx)(K,{title:`This host keeps no SLOs`,children:`SLOs run on the hub and on WizeLens Cloud.`})})]})}function PE(){let e=xT(),{data:t,error:n,reload:r}=zx(e.ready?e.url():null),[i,a]=(0,E.useState)(!1),o=async t=>{let n=await Bx(()=>x(`POST`,e.url(),t),r);return n||a(!1),n},s=e.canWrite&&!i&&(0,W.jsxs)(`button`,{type:`button`,className:`wl-btn wl-btn-primary`,onClick:()=>a(!0),children:[(0,W.jsx)(dy,{"aria-hidden":`true`}),` New SLO`]});return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(fb,{title:`SLOs`,subtitle:`How much of your traffic must succeed, or be fast enough, and how much error budget is left.`,children:s}),n&&(0,W.jsx)(`div`,{className:`wl-banner wl-banner-error`,children:n}),i&&(0,W.jsx)(DE,{title:`New SLO`,initial:CE,onSave:o,onCancel:()=>a(!1)}),(0,W.jsx)(G,{title:`Objectives`,flush:!0,children:(0,W.jsx)(Q,{columns:ME,rows:t?.slos??[],rowKey:e=>e.slo.id,onRowClick:e=>T(Ve(e.slo.id)),empty:(0,W.jsxs)(K,{title:`No SLOs yet`,children:[(0,W.jsx)(Gy,{"aria-hidden":`true`}),` Add one to track an error budget for a service or an endpoint.`]})})}),t&&(0,W.jsx)(SE,{targets:t.apdex,url:e.apdexUrl,canWrite:e.canWrite,onSaved:r})]})}var FE=new Set,IE=0,LE=()=>(IE++,FE.forEach(e=>e())),RE=()=>(0,E.useSyncExternalStore)(e=>(FE.add(e),()=>FE.delete(e)),()=>IE);function zE(){let e=H(),t=e.has(`accounts`),n=Me(Ce())?.org.role,r=c().project;return{url:(e=``)=>t?`./api/projects/${encodeURIComponent(r)}/saved${e}`:`./api/saved${e}?project=${encodeURIComponent(r)}`,on:e.has(`saved`),ready:!t||!!r,canWrite:!t||n!==void 0&&n!==`viewer`,cloud:t}}function BE(e){let t=zE(),n=RE(),r=t.url(),{data:i,error:a}=zx(t.on&&t.ready?`${r}${r.includes(`?`)?`&`:`?`}t=${n}`:null);return{items:(i?.items??[]).filter(t=>!e||t.kind===e),error:a}}async function VE(e,t,n){let r=await x(t,e,n);return LE(),`id`in r?r:null}var HE=3e4,UE=`1h`;function WE(){let[e,t]=(0,E.useState)(0);return(0,E.useEffect)(()=>{let e=setInterval(()=>t(e=>e+1),HE);return()=>clearInterval(e)},[]),e}function GE(e,t,n){let r=rT(),[i]=u(),a=JSON.stringify([e,t,n,r,i]),o=e=>({...r,...i?{service:i}:{},metric:e.name,...e.stat?{stat:e.stat}:{},...t?{where:t}:{},...n?{group:n}:{}});return(0,E.useMemo)(()=>e.map(o),[a])}function KE(e,t){let n=c();return`./api/models/metrics?${new URLSearchParams({...e,range:t,...n.project?{project:n.project}:{},...n.env?{env:n.env}:{}}).toString()}`}function qE(e,t,n){let r=H(),[i]=Zg(),a=GE(e,t,n),o=WE(),s=r.has(`serverMetrics`),c=s?i:fe[i].ms>fe[UE].ms?UE:i,[l,u]=(0,E.useState)({details:[],loading:!0,error:null});return(0,E.useEffect)(()=>{let e=!0;return(s?Promise.all(a.map(e=>ne(KE(e,c)).then(e=>e.selected))):ne(`./api/metrics/points?since=${Math.floor(Date.now()-fe[c].ms)}`).then(e=>a.map(t=>gp({points:e.points,range:c,now:Date.now(),params:t}).selected))).then(t=>e&&u({details:t,loading:!1,error:null}),t=>e&&u(e=>({...e,loading:!1,error:t instanceof Error?t.message:String(t)}))),()=>void(e=!1)},[a,c,s,o]),l}var JE=1e4,YE=`1h`;function XE(e){let{query:t}=i(),[n]=u(),r=rT(),a=Object.fromEntries(t),o=new URLSearchParams({...r,...n&&!a.service?{service:n}:{},...a,...e}).toString();return(0,E.useMemo)(()=>Object.fromEntries(new URLSearchParams(o)),[o])}function ZE(e){let[t,n]=(0,E.useState)(0);return(0,E.useEffect)(()=>{let t=setInterval(()=>n(e=>e+1),e);return()=>clearInterval(t)},[e]),t}function QE(e,t){let[n,r]=(0,E.useState)({data:null,url:null,error:null});return(0,E.useEffect)(()=>{if(!e)return;let t=!0;return ne(e).then(n=>t&&r({data:n,url:e,error:null})).catch(n=>t&&r(t=>({...t,url:e,error:n instanceof Error?n.message:String(n)}))),()=>void(t=!1)},[e,t]),n}function $E(e,t){let n=c(),r=new URLSearchParams({...e,range:t});return n.project&&r.set(`project`,n.project),n.env&&r.set(`env`,n.env),`./api/models/metrics?${r.toString()}`}function eD(e){let t=H(),[n]=Zg(),r=XE(e),i=ZE(JE),a=t.has(`serverMetrics`)?`server`:t.has(`metrics`)?`points`:`none`,o=a===`points`&&fe[n].ms>fe[YE].ms,s=o?YE:n,c=QE(a===`server`?$E(r,s):null,i),l=(0,E.useMemo)(()=>Date.now()-fe[s].ms,[s,i]),u=QE(a===`points`?`./api/metrics/points?since=${Math.floor(l)}`:null,i),d=(0,E.useMemo)(()=>u.data?gp({points:u.data.points,range:s,now:l+fe[s].ms,params:r}):null,[u.data,s,l,r]);return a===`server`?{model:c.data,loading:!c.data&&!c.error,error:c.error,source:a,clipped:o}:a===`points`?{model:d,loading:!u.data&&!u.error,error:u.error,source:a,clipped:o}:{model:null,loading:!1,error:null,source:a,clipped:o}}var tD=[[`line`,`Lines`],[`area`,`Areas`],[`bar`,`Stacked bars`],[`number`,`Numbers`],[`table`,`Table`]],nD=[[``,`Default`],[`p50`,`p50`],[`p95`,`p95`],[`p99`,`p99`],[`avg`,`Average`]],rD=[[`1`,`Half width`],[`2`,`Full width`]],iD=`wl-dash-metric-names`,aD={id:``,title:``,type:`line`,metrics:[{name:``,stat:``}],where:``,group:``,width:1};function oD({p:e,set:t}){let{details:n}=qE(e.metrics.filter(e=>e.name).slice(0,1),``,``),r=n[0],i=r?Object.keys(r.values):[],[a,o]=(0,E.useState)(``),s=n=>t({where:[...e.where.split(`,`).filter(Boolean),`${a}=${n}`].join(`,`)});return(0,W.jsxs)(Yx,{children:[(0,W.jsx)(X,{label:`Split lines by`,value:e.group,options:[[``,`Nothing (one line per series)`],...(r?.groupKeys??[]).map(e=>[e,`By ${e}`])],onChange:e=>t({group:e})}),(0,W.jsx)(X,{label:`Filter key`,value:a,options:[[``,`Filter by…`],...i.map(e=>[e,e])],onChange:o}),a&&(0,W.jsx)(X,{label:`Filter value`,value:``,options:[[``,`Pick a value…`],...(r?.values[a]??[]).map(e=>[e,e])],onChange:e=>e&&(s(e),o(``))}),(0,W.jsx)(Z,{label:`Only (key=value, comma-separated)`,value:e.where,onChange:e=>t({where:e.target.value}),placeholder:`All series`})]})}function sD({initial:e,onSave:t,onCancel:n}){let[r,i]=(0,E.useState)(e),{model:a}=eD({metric:``}),o=e=>i(t=>({...t,...e})),s=(e,t)=>o({metrics:r.metrics.map((n,r)=>r===e?{...n,...t}:n)});return(0,W.jsx)(G,{title:e.id?`Edit chart`:`New chart`,className:`wl-dash-wide`,children:(0,W.jsxs)(`form`,{className:`wl-form`,onSubmit:e=>{e.preventDefault(),t({...r,metrics:r.metrics.filter(e=>e.name.trim())})},children:[(0,W.jsxs)(Yx,{children:[(0,W.jsx)(Z,{label:`Title (optional)`,value:r.title,onChange:e=>o({title:e.target.value}),placeholder:`CPU by service`}),(0,W.jsx)(X,{label:`Draw as`,value:r.type,options:tD,onChange:e=>o({type:e})}),(0,W.jsx)(X,{label:`Width`,value:String(r.width),options:rD,onChange:e=>o({width:e===`2`?2:1})})]}),r.metrics.map((e,t)=>(0,W.jsxs)(Yx,{children:[(0,W.jsx)(Z,{label:`Metric ${t+1}`,required:!0,list:iD,value:e.name,onChange:e=>s(t,{name:e.target.value}),placeholder:`process.cpu.utilization`}),(0,W.jsx)(X,{label:`Statistic`,value:e.stat,options:nD,onChange:e=>s(t,{stat:e})}),r.metrics.length>1&&(0,W.jsx)(`button`,{type:`button`,className:`wl-icon-btn`,"aria-label":`Remove this metric`,onClick:()=>o({metrics:r.metrics.filter((e,n)=>n!==t)}),children:(0,W.jsx)(sb,{size:16})})]},t)),r.metrics.length<6&&(0,W.jsxs)(`button`,{type:`button`,className:`wl-btn wl-btn-sm`,onClick:()=>o({metrics:[...r.metrics,{name:``,stat:``}]}),children:[(0,W.jsx)(dy,{"aria-hidden":`true`}),` Add a metric`]}),(0,W.jsx)(`datalist`,{id:iD,children:a?.catalog.map(e=>(0,W.jsx)(`option`,{value:e.name,children:e.lastText},e.name))}),(0,W.jsx)(oD,{p:r,set:o}),(0,W.jsxs)(Yx,{children:[(0,W.jsx)(`button`,{type:`submit`,className:`wl-btn wl-btn-primary`,children:`Save chart`}),(0,W.jsx)(`button`,{type:`button`,className:`wl-btn`,onClick:n,children:`Cancel`})]})]})})}function cD({values:e,width:t=86,height:n=30,color:r=`var(--wl-blue)`,stretch:i=!1}){let a=(0,E.useId)();if(e.length<2||e.every(e=>e===null||e===0))return(0,W.jsx)(`svg`,{className:`wl-spark`,width:t,height:n,"aria-hidden":`true`});let o=LT([e])||1,s=n=>n/(e.length-1)*t,c=e=>n-2-e/o*(n-4);return(0,W.jsxs)(`svg`,{className:`wl-spark`,width:t,height:n,viewBox:`0 0 ${t} ${n}`,preserveAspectRatio:i?`none`:void 0,"aria-hidden":`true`,children:[(0,W.jsx)(`defs`,{children:(0,W.jsxs)(`linearGradient`,{id:a,x1:`0`,y1:`0`,x2:`0`,y2:`1`,children:[(0,W.jsx)(`stop`,{offset:`0`,stopColor:r,stopOpacity:`0.22`}),(0,W.jsx)(`stop`,{offset:`1`,stopColor:r,stopOpacity:`0`})]})}),(0,W.jsx)(`path`,{d:IT(e,s,c,n),fill:`url(#${a})`}),(0,W.jsx)(`path`,{d:FT(e,s,c),fill:`none`,stroke:r,strokeWidth:`1.6`,strokeLinejoin:`round`,strokeLinecap:`round`,vectorEffect:`non-scaling-stroke`})]})}function lD(e=[]){let{registry:t,traces:n}=Se(),r=e.join(`
21
21
  `);return(0,E.useMemo)(()=>{let e=[...(t?.services??[]).map(e=>e.service),...n.flatMap(e=>e.services)];return[...new Set([...e.map(gr),...r?r.split(`
22
22
  `):[]])].sort()},[t,n,r])}function uD(){let[,e]=u();return t=>{e(t),se(window.location.hash).page!==`services`&&n({page:null})}}function dD({value:e,services:t=[]}){let n=lD(e?[...t,e]:t),r=uD();return(0,W.jsx)(X,{label:`Service`,value:e,onChange:r,options:[[``,`All Services`],...n.map(e=>[e,e])]})}function fD(){let[e]=u(),t=uD();return e?(0,W.jsxs)(`button`,{type:`button`,className:`wl-scope-chip`,onClick:()=>t(``),title:`Show all services`,children:[(0,W.jsx)(`span`,{className:`wl-truncate`,children:e}),(0,W.jsx)(sb,{size:14,"aria-hidden":`true`})]}):null}var pD=[`var(--wl-blue)`,`var(--wl-green)`,`var(--wl-orange)`,`var(--wl-red)`,`var(--wl-k-db)`,`var(--wl-k-messaging)`,`var(--wl-k-render)`,`var(--wl-amber)`,`var(--wl-k-browser)`,`var(--wl-slate)`],mD={runtime:`Runtime`,http:`HTTP`,database:`Database`,messaging:`Messaging`,rpc:`RPC`,custom:`Your metrics`};function hD({model:e,selected:t}){return e.runtime.length===0?null:(0,W.jsx)(`div`,{className:`wl-metric-runtime`,children:e.runtime.map(({service:e,stats:r})=>(0,W.jsxs)(`section`,{className:`wl-panel wl-metric-service`,children:[(0,W.jsx)(`h2`,{children:e}),(0,W.jsx)(`div`,{className:`wl-metric-tiles`,children:r.map(r=>(0,W.jsxs)(`button`,{type:`button`,className:`wl-metric-tile${t===r.metric?` wl-active`:``}`,onClick:()=>n({metric:r.metric,service:e,group:null}),title:r.metric,children:[(0,W.jsx)(`span`,{children:r.label}),(0,W.jsx)(`strong`,{children:r.lastText}),(0,W.jsx)(cD,{values:r.spark,width:96,height:24})]},r.key))})]},e))})}function gD({name:e}){let t=e.split(`.`);return(0,W.jsx)(W.Fragment,{children:t.map((e,n)=>(0,W.jsxs)(`span`,{children:[e,n<t.length-1&&(0,W.jsxs)(W.Fragment,{children:[`.`,(0,W.jsx)(`wbr`,{})]})]},n))})}function _D({m:e,active:t}){return(0,W.jsx)(`li`,{children:(0,W.jsxs)(`button`,{type:`button`,className:t?`wl-active`:void 0,onClick:()=>n({metric:e.name,group:null,stat:null}),title:e.description||e.name,children:[(0,W.jsxs)(`span`,{className:`wl-metric-name`,children:[(0,W.jsx)(`strong`,{children:(0,W.jsx)(gD,{name:e.name})}),(0,W.jsxs)(`em`,{children:[e.services.join(`, `),` · `,e.series,` series`]})]}),(0,W.jsx)(`span`,{className:`wl-metric-last`,children:e.lastText}),(0,W.jsx)(cD,{values:e.spark,width:72,height:22})]})})}function vD({model:e,params:t}){let r=[...new Set(e.catalog.map(e=>e.area))],i=[[``,`All services`],...e.services.map(e=>[e,e])],[a]=u(),o=uD();return(0,W.jsxs)(G,{title:`Metrics (${e.catalog.length})`,className:`wl-metric-list`,children:[(0,W.jsxs)(`div`,{className:`wl-metric-filters`,children:[(0,W.jsx)(qb,{value:t.q??``,onChange:e=>n({q:e||null}),placeholder:`Find a metric`}),(e.services.length>1||a)&&(0,W.jsx)(X,{value:t.service??a,options:i,onChange:o,label:`Service`,small:!0})]}),e.catalog.length===0&&(0,W.jsx)(K,{title:`No metrics in this range`,children:`Pick a wider range, or check that your services send metrics.`}),r.map(n=>(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`h3`,{className:`wl-metric-area`,children:mD[n]}),(0,W.jsx)(`ul`,{children:e.catalog.filter(e=>e.area===n).map(e=>(0,W.jsx)(_D,{m:e,active:t.metric===e.name},e.name))})]},n))]})}var yD=e=>t=>sf(t,e);function bD(e,t){return e.flatMap((e,n)=>e?e.lines.map(n=>({label:t.length>1?`${e.name}${e.lines.length>1?` · ${n.label}`:``}`:n.label||e.name,values:n.values,unit:e.displayUnit})):[])}var xD=e=>[...e].reverse().find(e=>e!=null)??null;function SD({lines:e}){let t=(e,t)=>{let n=e.values.filter(e=>e!=null);return n.length?sf(t(n),e.unit):`–`};return(0,W.jsx)(Q,{columns:[{key:`label`,header:`Series`,className:`wl-wrap`,cell:e=>e.label},{key:`last`,header:`Now`,num:!0,cell:e=>sf(xD(e.values),e.unit)},{key:`min`,header:`Lowest`,num:!0,cell:e=>t(e,e=>Math.min(...e))},{key:`max`,header:`Highest`,num:!0,cell:e=>t(e,e=>Math.max(...e))},{key:`avg`,header:`Average`,num:!0,cell:e=>t(e,e=>e.reduce((e,t)=>e+t,0)/e.length)}],rows:e,rowKey:e=>e.label})}function CD({lines:e}){return(0,W.jsx)(`div`,{className:`wl-dash-numbers`,children:e.slice(0,4).map((e,t)=>(0,W.jsxs)(`div`,{className:`wl-dash-number`,children:[(0,W.jsx)(`span`,{className:`wl-muted wl-small wl-truncate`,children:e.label}),(0,W.jsx)(`strong`,{children:sf(xD(e.values),e.unit)}),(0,W.jsx)(cD,{values:e.values,width:240,height:28,stretch:!0,color:pD[t%pD.length]})]},e.label))})}function wD(e,t,n){if(n.length===0)return(0,W.jsx)(K,{children:`No data for these metrics in this time range.`});if(e.type===`table`)return(0,W.jsx)(SD,{lines:n});if(e.type===`number`)return(0,W.jsx)(CD,{lines:n});let r=n.slice(0,10).map((e,t)=>({label:e.label,values:e.values,color:pD[t%pD.length]})),i=yD(n[0].unit);return e.type===`bar`?(0,W.jsx)(eE,{starts:t,bars:r,stackBars:!0,format:i,height:220}):(0,W.jsx)(eE,{starts:t,lines:r,areas:e.type===`area`,format:i,height:220})}function TD({panel:e,actions:t}){let{details:n,loading:r,error:i}=qE(e.metrics,e.where,e.group),a=e.metrics.map(e=>e.name),o=e.title||a.join(`, `),s=n.find(e=>e)?.buckets??[];return(0,W.jsxs)(G,{title:o,action:t,className:`wl-dash-panel${e.width===2?` wl-dash-wide`:``}`,children:[e.where&&(0,W.jsxs)(`p`,{className:`wl-muted wl-small`,children:[`Only `,e.where.replace(/,/g,`, `)]}),i?(0,W.jsx)(K,{title:`This chart could not load`,children:i}):r&&n.length===0?(0,W.jsx)(K,{children:`Loading…`}):wD(e,s,bD(n,a))]})}function ED({i:e,count:t,onMove:n,onEdit:r,onRemove:i}){return(0,W.jsxs)(`span`,{className:`wl-row-actions`,children:[(0,W.jsx)(`button`,{type:`button`,className:`wl-icon-btn`,"aria-label":`Move up`,disabled:e===0,onClick:()=>n(e-1),children:(0,W.jsx)(C_,{size:14})}),(0,W.jsx)(`button`,{type:`button`,className:`wl-icon-btn`,"aria-label":`Move down`,disabled:e===t-1,onClick:()=>n(e+1),children:(0,W.jsx)(__,{size:14})}),(0,W.jsx)(`button`,{type:`button`,className:`wl-link-btn`,onClick:r,children:`Edit`}),(0,W.jsx)(`button`,{type:`button`,className:`wl-link-btn wl-text-error`,onClick:i,children:`Remove`})]})}function DD({d:e,url:t,editable:n,reload:r}){let[i,a]=(0,E.useState)(null),[o,s]=(0,E.useState)(null),c=e=>void VE(t,`PATCH`,{panels:e}).then(()=>(a(null),r()),e=>s(String(e))),l=(t,n)=>{let r=[...e.panels];r.splice(n,0,r.splice(t,1)[0]),c(r)},u=t=>c(i===`new`?[...e.panels,{...t,id:`p${Date.now()}`}]:e.panels.map((e,n)=>n===i?t:e)),d=n&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`button`,{type:`button`,className:`wl-btn wl-btn-sm`,onClick:()=>a(`new`),children:[(0,W.jsx)(dy,{"aria-hidden":`true`}),` Add a chart`]}),(0,W.jsx)(`button`,{type:`button`,className:`wl-btn wl-btn-sm`,onClick:()=>void VE(t,`PATCH`,{shared:!e.shared}).then(r),children:e.shared?`Stop sharing`:`Share with the team`}),(0,W.jsx)(`button`,{type:`button`,className:`wl-link-btn wl-text-error`,onClick:()=>void VE(t,`DELETE`).then(()=>T(`#/dashboards`)),children:`Delete`})]});return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(EC,{back:[`#/dashboards`,`All dashboards`],icon:Uv,title:e.name,badge:e.shared?(0,W.jsx)(Y,{tone:`info`,children:`Shared`}):void 0,actions:d,stats:[[`Charts`,String(e.panels.length)],...e.ownerName?[[`Made by`,e.ownerName]]:[]]}),o&&(0,W.jsx)(`div`,{className:`wl-banner wl-banner-error`,children:o}),i!==null&&(0,W.jsx)(sD,{initial:i===`new`?aD:e.panels[i],onSave:u,onCancel:()=>a(null)}),e.panels.length===0&&i===null&&(0,W.jsx)(G,{children:(0,W.jsx)(K,{title:`No charts yet`,children:`Add a chart: one or more metrics, drawn as lines, areas, bars, numbers, or a table.`})}),(0,W.jsx)(`div`,{className:`wl-dash-grid`,children:e.panels.map((t,r)=>(0,W.jsx)(TD,{panel:t,actions:n&&(0,W.jsx)(ED,{i:r,count:e.panels.length,onMove:e=>l(r,e),onEdit:()=>a(r),onRemove:()=>c(e.panels.filter((e,t)=>t!==r))})},t.id))})]})}function OD({id:e}){let t=zE(),n=Ce()?.user?.id??``,r=t.url(`/${encodeURIComponent(e)}`),{data:i,error:a,reload:o}=zx(t.ready?r:null);if(a)return(0,W.jsx)(G,{children:(0,W.jsxs)(K,{title:`This dashboard was not found`,children:[a,` Go back to `,(0,W.jsx)(`a`,{href:`#/dashboards`,children:`all dashboards`}),`.`]})});if(!i)return(0,W.jsx)(G,{children:(0,W.jsx)(K,{children:`Loading…`})});let s=t.canWrite&&(!t.cloud||i.owner===n);return(0,W.jsx)(`div`,{className:`wl-dpage`,children:(0,W.jsx)(DD,{d:i,url:r,editable:s,reload:o})})}var kD=[{key:`name`,header:`Dashboard`,cell:e=>(0,W.jsx)(`strong`,{children:e.name})},{key:`charts`,header:`Charts`,num:!0,cell:e=>e.panels.length},{key:`shared`,header:``,cell:e=>e.shared?(0,W.jsx)(Y,{tone:`info`,children:`Shared`}):(0,W.jsx)(Y,{tone:`neutral`,children:`Only you`})},{key:`by`,header:`Made by`,cell:e=>e.ownerName||`–`},{key:`updated`,header:`Changed`,className:`wl-nowrap`,cell:e=>Nb(e.updatedMs)}];function AD({onDone:e}){let t=zE(),[n,r]=(0,E.useState)(``),[i,a]=(0,E.useState)(!1),[o,s]=(0,E.useState)(null);return(0,W.jsx)(G,{title:`New dashboard`,children:(0,W.jsxs)(`form`,{className:`wl-form`,onSubmit:r=>{r.preventDefault(),VE(t.url(),`POST`,{kind:`dashboard`,name:n,panels:[],shared:!t.cloud||i}).then(t=>(e(),t&&T(ke(t.id))),e=>s(e instanceof Error?e.message:String(e)))},children:[(0,W.jsxs)(Yx,{children:[(0,W.jsx)(Z,{label:`Name`,required:!0,autoFocus:!0,value:n,onChange:e=>r(e.target.value),placeholder:`Runtime health`}),t.cloud&&(0,W.jsx)(Xx,{label:`Share with the team`,checked:i,onChange:e=>a(e.target.checked)})]}),o&&(0,W.jsx)(`div`,{className:`wl-banner wl-banner-error`,children:o}),(0,W.jsxs)(Yx,{children:[(0,W.jsx)(`button`,{type:`submit`,className:`wl-btn wl-btn-primary`,children:`Make it`}),(0,W.jsx)(`button`,{type:`button`,className:`wl-btn`,onClick:e,children:`Cancel`})]})]})})}function jD(){let e=zE(),{items:t,error:n}=BE(`dashboard`),[r,i]=(0,E.useState)(!1),a=e.canWrite&&!r&&(0,W.jsxs)(`button`,{type:`button`,className:`wl-btn wl-btn-primary`,onClick:()=>i(!0),children:[(0,W.jsx)(dy,{"aria-hidden":`true`}),` New dashboard`]});return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(fb,{title:`Dashboards`,subtitle:`Your own pages of metric charts: several metrics per chart, filtered and split by any attribute.`,children:a}),n&&(0,W.jsx)(`div`,{className:`wl-banner wl-banner-error`,children:n}),r&&(0,W.jsx)(AD,{onDone:()=>i(!1)}),(0,W.jsx)(G,{title:`Dashboards`,flush:!0,children:(0,W.jsx)(Q,{columns:kD,rows:t,rowKey:e=>e.id,onRowClick:e=>T(ke(e.id)),empty:(0,W.jsxs)(K,{title:`No dashboards yet`,children:[(0,W.jsx)(Uv,{"aria-hidden":`true`}),` Make one to put the metrics you watch on one page.`]})})})]})}function MD(){let[e]=i().params;return H().has(`saved`)?e?(0,W.jsx)(OD,{id:C(e)},e):(0,W.jsx)(jD,{}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(fb,{title:`Dashboards`,subtitle:`Pages of metric charts.`}),(0,W.jsx)(G,{children:(0,W.jsx)(K,{title:`This host keeps no dashboards`,children:`Dashboards run on the hub and on WizeLens Cloud.`})})]})}var ND=250;function PD(e,t={page:null}){let[r,i]=(0,E.useState)(e),a=JSON.stringify(t);return(0,E.useEffect)(()=>i(e),[e]),(0,E.useEffect)(()=>{if(r===e)return;let t=setTimeout(()=>n({q:r,...JSON.parse(a)}),ND);return()=>clearTimeout(t)},[r,e,a]),[r,i]}function FD({value:e}){let[t,n]=PD(e,{page:null});return(0,W.jsx)(qb,{value:t,onChange:n,placeholder:`Find a user by id…`})}function ID({model:e,loading:t,error:n,what:r}){let i=e?.meta.sampled,a=e?.meta.settling??0;return(0,W.jsxs)(W.Fragment,{children:[t&&!e&&(0,W.jsxs)(`div`,{className:`wl-banner wl-banner-info`,children:[`Loading `,r,`…`]}),n&&(0,W.jsxs)(`div`,{className:`wl-banner wl-banner-error`,children:[`Could not load this page: `,n]}),i&&(0,W.jsxs)(`div`,{className:`wl-banner wl-banner-info`,children:[`Based on the newest `,J(i.used),` of `,J(i.total),` traces in this range. Pick a shorter range for exact numbers.`]}),a>0&&(0,W.jsxs)(`div`,{className:`wl-banner wl-banner-info`,children:[`Stats are catching up: `,J(a),` `,a===1?`trace`:`traces`,` left. Numbers may be low for a few minutes.`]})]})}function LD({kind:e,itemOf:t,tagged:n,...r}){let i=jx(e,r.rows,t);return(0,W.jsx)(Q,{...r,columns:Lx(r.columns,n,i)})}function RD({group:e,docOf:t,tagged:n,...r}){let i=Mx();return(0,W.jsx)(Q,{...r,columns:Lx(r.columns,n,n=>i(e,t(n)))})}function zD({change:e,upIsGood:t,compareLabel:n}){if(e===null)return(0,W.jsxs)(`div`,{className:`wl-delta`,children:[(0,W.jsx)(`b`,{className:`wl-flat`,children:`No data`}),(0,W.jsx)(`span`,{children:n.replace(/^vs\. /,`for `)})]});let r=Math.abs(e)<.5;return(0,W.jsxs)(`div`,{className:`wl-delta`,children:[(0,W.jsxs)(`b`,{className:r?`wl-flat`:e>0===t?`wl-good`:`wl-bad`,children:[!r&&(0,W.jsx)(e>=0?C_:__,{"aria-hidden":`true`}),yb(Math.abs(e))]}),(0,W.jsx)(`span`,{children:n})]})}function $({icon:e,label:t,value:n,change:r,upIsGood:i,compareLabel:a,series:o,danger:s=!1,href:c,note:l}){return(0,W.jsxs)(c?`a`:`section`,{className:`wl-panel wl-stat${c?` wl-stat-link`:``}`,...c?{href:c,title:`See the ${t.toLowerCase()}`}:{},children:[(0,W.jsx)(e,{className:`wl-stat-icon${s?` wl-danger`:``}`,"aria-hidden":!0}),(0,W.jsx)(`div`,{className:`wl-stat-label`,children:t}),(0,W.jsx)(`div`,{}),(0,W.jsx)(`div`,{className:`wl-stat-value`,children:n}),(0,W.jsx)(`div`,{className:`wl-stat-foot`,children:l?(0,W.jsx)(`div`,{className:`wl-delta`,children:(0,W.jsx)(`span`,{children:l})}):(0,W.jsx)(zD,{change:r,upIsGood:i,compareLabel:a})}),o&&(0,W.jsx)(`div`,{className:`wl-stat-spark`,children:(0,W.jsx)(cD,{values:o,width:240,height:28,stretch:!0,color:s?`var(--wl-red)`:`var(--wl-blue)`})})]})}var BD=[{key:`time`,header:`Time`,className:`wl-nowrap`,cell:e=>Eb(e.startMs)},{key:`path`,header:`Request`,className:`wl-cell-wide`,cell:e=>(0,W.jsxs)(`span`,{className:`wl-truncate`,title:e.path,children:[e.method,` `,e.path]})},{key:`status`,header:`Status`,cell:e=>(0,W.jsx)(Hb,{tone:Bb(e.status),children:e.status??`–`})},{key:`duration`,header:`Duration`,num:!0,cell:e=>q(e.durationMs)}];function VD({m:e}){let t=e.totals,n={change:null,upIsGood:!1,compareLabel:e.meta.compareLabel,note:`In this range`};return(0,W.jsxs)(`div`,{className:`wl-grid wl-grid-stats`,children:[(0,W.jsx)($,{icon:Tv,label:`Requests`,value:J(t.requests),series:e.chart.requests,...n,upIsGood:!0}),(0,W.jsx)($,{icon:Zy,label:`Error Rate`,value:t.errorRate===null?`–`:yb(t.errorRate),series:e.chart.errors,danger:!0,...n}),(0,W.jsx)($,{icon:tv,label:`Average`,value:q(t.avgMs),series:e.chart.avgMs,...n}),(0,W.jsx)($,{icon:qy,label:`p95`,value:q(t.p95Ms),...n})]})}function HD({m:e}){let t={user:e.user},n=Mx()(`users`,Mg(e.user)),r=[[`Requests`,J(e.totals.requests)],[`Failed`,J(e.totals.errors)],[`Error groups`,J(e.errors.length)]],i=(0,W.jsxs)(`span`,{className:`wl-row-actions`,children:[(0,W.jsx)(pb,{href:S(`requests`,[],t),label:`Requests`}),(0,W.jsx)(pb,{href:S(`errors`,[],{...t,status:`all`}),label:`Errors`}),(0,W.jsx)(pb,{href:S(`logs`,[],t),label:`Logs`}),(0,W.jsx)(sS,{scopes:[Vg(e.user)]})]});return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(EC,{back:[`#/users`,`All users`],icon:tb,title:e.user,mono:!0,badge:(0,W.jsx)(Ix,{tags:n}),actions:i,stats:r}),(0,W.jsx)(VD,{m:e}),(0,W.jsx)(G,{title:`Requests Over Time`,children:(0,W.jsx)(eE,{starts:e.starts,lines:[{label:`Requests`,values:e.chart.requests,color:`var(--wl-blue)`}],bars:[{label:`Failed`,values:e.chart.errors,color:`var(--wl-red)`}],separateBarScale:!0,height:200})}),(0,W.jsxs)(`div`,{className:`wl-grid wl-grid-2-even`,children:[(0,W.jsx)(G,{title:`Errors They Hit`,flush:!0,children:(0,W.jsx)(RD,{group:`errors`,docOf:e=>Pg(e.group),tagged:`e`,columns:[{key:`e`,header:`Error`,className:`wl-cell-wide`,cell:e=>(0,W.jsxs)(`span`,{className:`wl-truncate`,children:[e.group.type,`: `,e.group.message]})},{key:`n`,header:`Times`,num:!0,cell:e=>J(e.count)}],rows:e.errors,rowKey:e=>e.group.key,onRowClick:e=>T(he(e.group.key)),empty:(0,W.jsx)(K,{children:`No errors in this range.`})})}),(0,W.jsx)(G,{title:`Slowest Requests`,flush:!0,children:(0,W.jsx)(LD,{kind:`requests`,itemOf:Nx,tagged:`path`,columns:BD,rows:e.slowest,rowKey:e=>e.traceId,onRowClick:e=>T(y(e.traceId)),empty:(0,W.jsx)(K,{children:`No requests.`})})})]}),(0,W.jsx)(G,{title:`Newest Requests`,flush:!0,children:(0,W.jsx)(LD,{kind:`requests`,itemOf:Nx,tagged:`path`,columns:BD,rows:e.recent,rowKey:e=>e.traceId,onRowClick:e=>T(S(`requests`,[],{trace:e.traceId})),empty:(0,W.jsx)(K,{children:`No requests.`})})})]})}function UD({user:e}){let{model:t,loading:n,error:r}=hT(`user`,{user:e});return(0,W.jsxs)(`div`,{className:`wl-dpage`,children:[(0,W.jsx)(ID,{model:t,loading:n,error:r,what:`this user`}),t&&(t.totals?(0,W.jsx)(HD,{m:t}):(0,W.jsx)(G,{children:(0,W.jsxs)(K,{title:`This user did nothing in this time range`,children:[`Pick a longer time range at the top, or go back to `,(0,W.jsx)(`a`,{href:`#/users`,children:`all users`}),`.`]})}))]})}var WD=[{key:`user`,header:`User`,cell:e=>(0,W.jsxs)(`span`,{className:`wl-cell-icon`,children:[(0,W.jsx)(tb,{"aria-hidden":`true`}),e.user]})},{key:`requests`,header:`Requests`,num:!0,cell:e=>J(e.requests)},{key:`errors`,header:`Failed`,num:!0,cell:e=>e.errors?(0,W.jsx)(`span`,{className:`wl-text-error`,children:J(e.errors)}):`0`},{key:`rate`,header:`Error Rate`,num:!0,cell:e=>e.errorRate===null?`–`:yb(e.errorRate)},{key:`avg`,header:`Average`,num:!0,cell:e=>q(e.avgMs)},{key:`p95`,header:`p95`,num:!0,cell:e=>q(e.p95Ms)},{key:`last`,header:`Last seen`,className:`wl-nowrap`,cell:e=>Nb(e.lastSeenMs)}];function GD(){let{model:e,loading:t,error:a}=hT(`users`),o=i().query.get(`q`)??``;return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(fb,{title:`Users`,subtitle:`Signed-in users (enduser.id): who uses the app most, and who runs into failures and slow requests.`}),(0,W.jsx)(`section`,{className:`wl-panel wl-filters`,children:(0,W.jsx)(FD,{value:o})}),(0,W.jsx)(ID,{model:e,loading:t,error:a,what:`users`}),e&&(0,W.jsxs)(G,{title:`Users (${J(e.total)})`,flush:!0,children:[(0,W.jsx)(RD,{group:`users`,docOf:e=>Mg(e.user),tagged:`user`,columns:WD,rows:e.users,rowKey:e=>e.user,onRowClick:e=>T(r(e.user)),empty:(0,W.jsxs)(K,{title:o?`No user matches`:`No signed-in users in this range`,children:[`Send the user's id as `,(0,W.jsx)(`code`,{children:`enduser.id`}),` (the add-ons do it from the signed-in user) to see them here.`]})}),e.total>0&&(0,W.jsx)(Yb,{page:e.page,pageSize:e.size,total:e.total,noun:`users`,onPage:e=>n({page:e}),onPageSize:e=>n({size:e,page:null})})]})]})}function KD(){let[e]=i().params;return e?(0,W.jsx)(UD,{user:C(e)},e):(0,W.jsx)(GD,{})}var qD=`wl-oauth-query`,JD=new Set([`sig`,`exp`,`ba_iat`,`ba_pl`,`ba_param`]);function YD(e){let t=new URLSearchParams(e),n=t.get(`redirect_uri`)??``;return{clientId:t.get(`client_id`)??``,returnHost:URL.canParse(n)?new URL(n).host:n}}var XD=e=>Number(new URLSearchParams(e).get(`exp`)??0)*1e3<Date.now(),ZD={get:()=>{try{let e=sessionStorage.getItem(qD);return e&&!XD(e)?e:null}catch{return null}},set:e=>{try{e?sessionStorage.setItem(qD,e):sessionStorage.removeItem(qD)}catch{}}};function QD(e){let t=new URLSearchParams([...new URLSearchParams(e)].filter(([e])=>!JD.has(e)));window.location.assign(`api/auth/oauth2/authorize?${t.toString()}`)}var $D=e=>Te(t=>t.$fetch(`/oauth2/public-client`,{method:`GET`,query:{client_id:e}}));async function eO(e,t){await Te(n=>n.$fetch(`/wizelens/oauth-grant`,{method:`POST`,body:{...t,oauth_query:e}})),await tO(e,!0)}async function tO(e,t){let n=await Te(n=>n.$fetch(`/oauth2/consent`,{method:`POST`,body:{accept:t,oauth_query:e}}));ZD.set(null);let r=n.url??n.redirect_uri;r&&window.location.assign(r)}var nO=`M39.36 23.5L90.02 23.5A48 48 0 0 0 51.76 2.03ZM67.63 27.54L92.96 71.41A48 48 0 0 0 92.42 27.54ZM78.27 54.03L52.93 97.91A48 48 0 0 0 90.66 75.5ZM60.64 76.5L9.98 76.5A48 48 0 0 0 48.24 97.97ZM32.37 72.46L7.04 28.59A48 48 0 0 0 7.58 72.46ZM21.73 45.97L47.07 2.09A48 48 0 0 0 9.34 24.5Z`;function rO({dot:e=`var(--wl-blue)`}){return(0,W.jsxs)(`svg`,{viewBox:`0 0 100 100`,"aria-hidden":`true`,children:[(0,W.jsx)(`path`,{className:`wl-brand-blades`,d:nO}),(0,W.jsx)(`circle`,{cx:`50`,cy:`50`,r:`16.8`,fill:e})]})}function iO({dot:e}){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(rO,{dot:e}),(0,W.jsxs)(`span`,{children:[`Wize`,(0,W.jsx)(`span`,{className:`wl-brand-lens`,children:`Lens`})]})]})}function aO({items:e,max:t,compact:n=!1}){let r=t??Math.max(0,...e.map(e=>e.value));return(0,W.jsx)(`div`,{className:`wl-bars`,children:e.map((e,t)=>{let i=r>0?Math.max(1.5,e.value/r*100):0;return(0,W.jsxs)(`div`,{className:`wl-bar-row${n?` wl-compact`:``}${e.onClick?` wl-clickable`:``}`,...e.onClick?{role:`button`,tabIndex:0,onClick:e.onClick,onKeyDown:t=>t.key===`Enter`&&e.onClick?.()}:{},children:[(0,W.jsx)(`span`,{className:`wl-truncate`,children:e.label}),n&&(0,W.jsx)(`span`,{className:`wl-num wl-muted`,children:e.share}),(0,W.jsx)(`div`,{className:`wl-bar-track`,children:(0,W.jsx)(`i`,{style:{width:`${i}%`,background:e.color}})}),!n&&(0,W.jsx)(`span`,{className:`wl-value`,children:e.display})]},e.key??t)})})}function oO({stats:e}){let[t,n]=(0,E.useState)(`slow`),{chart:r,starts:i,slowMs:a}=e,o=r.total,s=t===`slow`?{label:`Slow queries (≥ ${q(a)})`,values:r.slow}:{label:`Avg query duration`,values:r.avg};return(0,W.jsx)(G,{title:t===`slow`?`Slow Queries Over Time`:`Query Duration Over Time`,action:(0,W.jsx)(X,{small:!0,label:`Chart metric`,value:t,onChange:n,options:[[`slow`,`Slow queries`],[`avg`,`Avg duration`]]}),children:e.summary.queries===0?(0,W.jsx)(K,{title:`No queries in this time range`,children:`Database calls show up here once your services run queries.`}):(0,W.jsx)(eE,{starts:i,lines:[{...s,color:`var(--wl-blue)`}],bars:[{label:`Total queries`,values:o,color:`var(--wl-chart-bar)`}],format:t===`avg`?e=>q(e):void 0,separateBarScale:!0})})}var sO={avg:e=>q(e),total:e=>q(e),count:e=>e.toLocaleString(`en-US`)};function cO({stats:e}){let[t,r]=(0,E.useState)(`avg`),i=e.operations.map(r=>{let i=t===`avg`?r.avgMs??0:t===`total`?r.totalMs:r.count;return{key:r.operation,label:r.operation,value:i,display:r.count===0?`–`:sO[t](i),onClick:()=>n({operation:r.operation===e.filter.operation?null:r.operation,page:null})}}),a=Math.max(0,...i.map(e=>e.value));for(let e of i)Object.assign(e,{color:e.value===a?`var(--wl-blue)`:`color-mix(in srgb, var(--wl-blue) 55%, transparent)`});return(0,W.jsx)(G,{title:`Query Duration Breakdown`,action:(0,W.jsx)(X,{small:!0,label:`Breakdown metric`,value:t,onChange:r,options:[[`avg`,`Avg duration`],[`total`,`Total time`],[`count`,`Count`]]}),children:(0,W.jsx)(aO,{items:i})})}var lO=[[`avg`,`Slowest`],[`count`,`Most frequent`],[`total`,`Most total time`]],uO=(e,t)=>t&&!e.includes(t)?[t,...e]:e,dO=e=>e.map(e=>[e,e]);function fO({stats:e}){let t=e.filter,[r,i]=PD(t.q),a=e=>t=>n({[e]:t||null,page:null}),o=uO(e.tables.map(e=>e.table),t.table),s=()=>n({q:null,table:null,operation:null,database:null,sort:null,page:null});return(0,W.jsxs)(`section`,{className:`wl-panel wl-filters`,children:[(0,W.jsx)(dD,{value:t.service}),(0,W.jsx)(X,{label:`Database`,value:t.database,onChange:a(`database`),options:[[``,`All Databases`],...dO(uO(e.databases,t.database))]}),(0,W.jsx)(X,{label:`Operation`,value:t.operation,onChange:a(`operation`),options:[[``,`All Operations`],...dO([...cr])]}),(0,W.jsx)(X,{label:`Table`,value:t.table,onChange:a(`table`),options:[[``,`All Tables`],...dO(o)]}),(0,W.jsx)(X,{label:`Order`,value:t.sort,onChange:a(`sort`),options:lO}),(0,W.jsx)(qb,{value:r,onChange:i,placeholder:`Search queries…`}),(0,W.jsxs)(`button`,{type:`button`,className:`wl-btn`,onClick:s,children:[(0,W.jsx)(yy,{"aria-hidden":`true`}),` Reset`]})]})}var pO=e=>[{key:`name`,header:e?`Endpoint`:`Service`,className:`wl-cell-wide`,cell:t=>(0,W.jsx)(`span`,{className:`wl-truncate`,children:e?`${t.endpoint} · ${t.service}`:t.service})},{key:`count`,header:`Count`,num:!0,sort:e=>e.count,cell:e=>J(e.count)},{key:`avg`,header:`Avg`,num:!0,sort:e=>e.avgMs??0,cell:e=>q(e.avgMs)}],mO=[{key:`time`,header:`Time`,className:`wl-nowrap`,cell:e=>Eb(e.startMs)},{key:`path`,header:`Trace`,className:`wl-cell-wide`,cell:e=>(0,W.jsx)(`span`,{className:`wl-truncate`,title:e.path,children:e.path})},{key:`status`,header:`Status`,cell:e=>(0,W.jsx)(Hb,{tone:e.status===`error`?`danger`:`success`,children:e.status===`error`?`Failed`:`OK`})},{key:`duration`,header:`Duration`,num:!0,cell:e=>q(e.durationMs)}];function hO({m:e}){let t=e.totals,n=(t,n)=>e.meta.hasPrev?le(t,n??0):null,r={compareLabel:e.meta.compareLabel,upIsGood:!1};return(0,W.jsxs)(`div`,{className:`wl-grid wl-grid-stats`,children:[(0,W.jsx)($,{icon:Tv,label:`Runs`,value:J(t.count),change:n(t.count,e.prev?.count),series:e.chart.count,...r}),(0,W.jsx)($,{icon:tv,label:`Avg Duration`,value:q(t.avgMs),change:n(t.avgMs,e.prev?.avgMs),series:e.chart.avgMs,...r}),(0,W.jsx)($,{icon:Zy,label:`Slow (≥ ${q(e.slowMs)})`,value:J(t.slow),change:n(t.slow,e.prev?.slow),series:e.chart.slow,danger:!0,...r}),(0,W.jsx)($,{icon:tv,label:`Total Time`,value:q(t.totalMs),change:n(t.totalMs,e.prev?.totalMs),...r})]})}function gO({m:e}){let t={label:_b(e.meta.compare),values:e.chart.prevCount,color:`var(--wl-slate)`,dashed:!0},n=e.slowest?(0,W.jsx)(pb,{href:y(e.slowest.traceId,`sql`),label:`Slowest run: ${q(e.slowest.durationMs)}`}):null;return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(hO,{m:e}),(0,W.jsxs)(`div`,{className:`wl-grid wl-grid-2-even`,children:[(0,W.jsx)(G,{title:`Runs Over Time`,children:(0,W.jsx)(eE,{starts:e.starts,lines:[{label:`Runs`,values:e.chart.count,color:`var(--wl-blue)`},t],height:220,format:J})}),(0,W.jsx)(G,{title:`Duration Over Time`,action:n,children:(0,W.jsx)(eE,{starts:e.starts,lines:[{label:`Avg duration`,values:e.chart.avgMs,color:`var(--wl-blue)`}],bars:[{label:`Slow runs`,values:e.chart.slow,color:`color-mix(in srgb, var(--wl-red) 45%, transparent)`}],height:220,separateBarScale:!0,format:e=>q(e)})})]}),(0,W.jsxs)(`div`,{className:`wl-grid wl-grid-2-even`,children:[(0,W.jsx)(G,{title:`Services`,flush:!0,children:(0,W.jsx)(RD,{group:`services`,docOf:e=>Ng(e.service),tagged:`name`,columns:pO(!1),rows:e.services,rowKey:e=>e.service,onRowClick:e=>T(RS(e.service)),empty:(0,W.jsx)(K,{children:`No service ran it.`})})}),(0,W.jsx)(G,{title:`Endpoints`,flush:!0,children:(0,W.jsx)(RD,{group:`endpoints`,docOf:e=>jg(e.service,e.endpoint),tagged:`name`,columns:pO(!0),rows:e.endpoints,rowKey:e=>`${e.service} ${e.endpoint}`,onRowClick:e=>T(_e(e.service,e.endpoint)),empty:(0,W.jsx)(K,{children:`It ran outside requests (jobs, workers).`})})})]}),(0,W.jsx)(G,{title:`Newest Traces (${J(e.traces.length)})`,flush:!0,children:(0,W.jsx)(LD,{kind:`traces`,itemOf:Nx,tagged:`path`,columns:mO,rows:e.traces,rowKey:e=>e.traceId,onRowClick:e=>T(y(e.traceId,`sql`)),empty:(0,W.jsx)(K,{children:`No trace in this range.`})})})]})}function _O({query:e}){let{model:t,loading:n,error:r}=hT(`query`,{q:e}),i=t?.totals?[[`Runs`,J(t.totals.count)],[`Average`,q(t.totals.avgMs)],[`Errors`,J(t.totals.errors)],[`System`,t.slowest?.system??`–`]]:[];return(0,W.jsxs)(`div`,{className:`wl-dpage wl-db-page`,children:[(0,W.jsx)(ID,{model:t,loading:n,error:r,what:`this query`}),(0,W.jsx)(EC,{back:[S(`database`),`All queries`],icon:lv,title:e,mono:!0,actions:(0,W.jsx)(Kb,{text:e,label:`Copy query`}),stats:i}),t&&!t.totals&&(0,W.jsx)(G,{children:(0,W.jsx)(K,{title:`This query did not run in this time range`,children:`Pick a longer time range at the top.`})}),t?.totals&&(0,W.jsx)(gO,{m:t})]})}function vO(e){if(e==null)return``;let t=String(e);return/[",\r\n]/.test(t)?`"${t.replace(/"/g,`""`)}"`:t}function yO(e,t){return[e.map(([e])=>e).join(`,`),...t.map(t=>e.map(([,e])=>vO(e(t))).join(`,`))].join(`\r
@@ -55,4 +55,4 @@ initWizeLens({ endpoint: "/_wizelens" });`,note:`Then load a few pages. Every fe
55
55
  `)||void 0,children:(0,W.jsx)(Hb,{tone:_j[e.issue].tone,colorText:e.issue===`high`,children:_j[e.issue].label})}),sort:e=>e.issues.length},{key:`count`,header:(0,W.jsx)(`span`,{className:`wl-sr-only`,children:`Issue count`}),num:!0,cell:e=>(0,W.jsx)(Gb,{n:e.issues.length})}],xj=[{key:`name`,header:`Component`,cell:e=>(0,W.jsx)(`span`,{className:`wl-mono`,children:e.name}),sort:e=>e.name},{key:`renders`,header:`Render Count`,num:!0,cell:e=>J(e.renders),sort:e=>e.renders},{key:`avg`,header:`Avg. Render Time`,num:!0,cell:e=>q(e.avgMs),sort:e=>e.avgMs},{key:`self`,header:`Self Time`,num:!0,cell:e=>q(e.selfMs),sort:e=>e.selfMs},{key:`total`,header:`Total Time`,num:!0,cell:e=>q(e.totalMs),sort:e=>e.totalMs},{key:`impact`,header:`Impact`,cell:e=>(0,W.jsx)(Wb,{impact:e.impact}),sort:e=>({high:3,medium:2,low:1})[e.impact]},{key:`issues`,header:`Issues`,cell:e=>(0,W.jsx)(`span`,{title:e.issues.join(`
56
56
  `)||void 0,children:e.issues[0]??`–`}),sort:e=>e.issues.length},{key:`count`,header:(0,W.jsx)(`span`,{className:`wl-sr-only`,children:`Issue count`}),num:!0,cell:e=>(0,W.jsx)(Gb,{n:e.issues.length})}];function Sj(e,t,n,r){return n<=gj?null:e?(0,W.jsx)(pb,{href:S(`rendering`),label:`Show fewer`}):(0,W.jsx)(pb,{href:S(`rendering`,[],{all:t}),label:r})}function Cj({routes:e,total:t,all:n}){return(0,W.jsx)(G,{flush:!0,title:`Pages & Routes (${vb(e.length,t)})`,action:Sj(n,`routes`,e.length,`View all pages`),children:(0,W.jsx)(Q,{columns:bj,rows:n?e:e.slice(0,gj),rowKey:e=>e.route,onRowClick:e=>T(v(e.route)),empty:(0,W.jsx)(K,{title:`No page views in this range`})})})}function wj({components:e,total:t,hasReact:n,all:r}){let i=n?(0,W.jsx)(K,{title:`No component renders in this range`}):(0,W.jsxs)(K,{title:`No React render data`,children:[`Add `,(0,W.jsx)(`code`,{className:`wl-mono`,children:`import "@wizeworks/lens-react/install";`}),` as the first line of main.tsx. Component timings work in React development builds.`]});return(0,W.jsx)(G,{flush:!0,title:`Component Hotspots (${vb(e.length,t)})`,action:Sj(r,`components`,e.length,`View all components`),children:(0,W.jsx)(Q,{columns:xj,rows:r?e:e.slice(0,gj),rowKey:e=>e.name,onRowClick:e=>T(y(e.exampleTraceId)),empty:i})})}function Tj({data:e}){let{cards:t}=e,{compareLabel:n}=e.meta;return(0,W.jsxs)(`div`,{className:`wl-grid wl-grid-stats`,children:[(0,W.jsx)($,{icon:Tv,label:`Avg. Render Time`,value:q(t.render.value),change:t.render.change,upIsGood:!1,compareLabel:n,series:t.render.series}),(0,W.jsx)($,{icon:Ty,label:`SSR Time`,value:q(t.ssr.value),change:t.ssr.change,upIsGood:!1,compareLabel:n,series:t.ssr.series}),(0,W.jsx)($,{icon:lb,label:`Hydration Time`,value:q(t.hydration.value),change:t.hydration.change,upIsGood:!1,compareLabel:n,series:t.hydration.series}),(0,W.jsx)($,{icon:Zy,danger:!0,label:`Component Issues`,value:J(t.issues.value),change:t.issues.change,upIsGood:!1,compareLabel:n,series:t.issues.series})]})}function Ej(){let[e,t]=PD(i().query.get(`q`)??``,{});return(0,W.jsx)(`section`,{className:`wl-panel wl-filters`,children:(0,W.jsx)(qb,{value:e,onChange:t,placeholder:`Search routes and components…`})})}function Dj(){let[e,t]=i().params;return e===`routes`&&t?(0,W.jsx)(cj,{route:C(t)},t):(0,W.jsx)(Oj,{})}function Oj(){let{model:e,loading:t,error:n}=hT(`rendering`),r=i().query.get(`all`),a=!e||e.views===0&&!e.hasReact;return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(fb,{title:`Rendering`,subtitle:`Frontend rendering diagnostics across server-side rendering, hydration, and component cost.`}),(0,W.jsx)(ID,{model:e,loading:!1,error:n,what:`page views`}),a?(0,W.jsx)(dj,{loading:t}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Tj,{data:e}),(0,W.jsxs)(`div`,{className:`wl-grid wl-grid-2`,children:[(0,W.jsx)(mj,{m:e}),(0,W.jsx)(hj,{m:e})]}),(0,W.jsx)(Ej,{}),(0,W.jsxs)(`div`,{className:`wl-grid`,children:[(0,W.jsx)(Cj,{routes:e.routes,total:e.routeCount,all:r===`routes`}),(0,W.jsx)(wj,{components:e.components,total:e.componentCount,hasReact:e.hasReact,all:r===`components`})]})]})]})}function kj({filter:e,methods:t,services:r}){let i=e=>t=>n({[e]:t,page:null}),a=()=>n({...Object.fromEntries(uo.map(e=>[e,null])),page:null});return(0,W.jsxs)(`section`,{className:`wl-panel wl-filters`,children:[(0,W.jsx)(X,{label:`Method`,value:e.method,onChange:i(`method`),options:[[``,`All Methods`],...((e,t)=>t&&!e.includes(t)?[...e,t]:e)(t,e.method).map(e=>[e,e])]}),(0,W.jsx)(X,{label:`Status`,value:e.status,onChange:i(`status`),options:fo}),(0,W.jsx)(X,{label:`Duration`,value:e.duration,onChange:i(`duration`),options:mo}),(0,W.jsx)(dD,{value:e.service,services:r}),(0,W.jsx)(sA,{value:e.q,reset:{trace:null},placeholder:`Path, user, or trace ID; or status:5xx duration:>1s @user.id:42`}),(0,W.jsx)(Xx,{label:`With insights`,checked:e.insights===`1`,onChange:e=>n({insights:e.target.checked?`1`:null,page:null})}),(0,W.jsx)(`button`,{type:`button`,className:`wl-btn`,onClick:a,children:`Reset`}),(0,W.jsx)(xk,{chips:[[`Endpoint`,`endpoint`,e.endpoint],[`User`,`user`,e.user]]})]})}function Aj(e){return e?Ae(e.spans):void 0}function jj(e,t){return e?Object.entries(e.attributes).filter(([e])=>e.startsWith(t)).map(([e,n])=>[e.slice(t.length),n===null?``:String(n)]).sort(([e],[t])=>e.localeCompare(t)):[]}var Mj=e=>jj(e,vt),Nj=e=>jj(e,yt);function Pj(e,t){let n=e?.attributes[t],r=typeof n==`number`?n:typeof n==`string`&&n!==``?Number(n):NaN;return Number.isFinite(r)?r:null}var Fj={request:[ht,gt],response:[pt,mt]};function Ij(e,t=`response`){let[n,r]=Fj[t],i=e?.attributes[n];if(typeof i!=`string`)return null;let a=e?.attributes[r]===!0;if(a)return{text:i,truncated:a};try{return{text:JSON.stringify(JSON.parse(i),null,2),truncated:a}}catch{return{text:i,truncated:a}}}var Lj={200:`OK`,201:`Created`,202:`Accepted`,204:`No Content`,301:`Moved Permanently`,302:`Found`,304:`Not Modified`,400:`Bad Request`,401:`Unauthorized`,403:`Forbidden`,404:`Not Found`,409:`Conflict`,422:`Unprocessable Content`,429:`Too Many Requests`,500:`Internal Server Error`,502:`Bad Gateway`,503:`Service Unavailable`,504:`Gateway Timeout`},Rj=(e,t=!1)=>t?`Aborted by the client`:e===null?`No status`:Lj[e]?`${e} ${Lj[e]}`:String(e);function zj({headers:e}){return(0,W.jsx)(`dl`,{className:`wl-kv wl-rq-headers`,children:e.map(([e,t])=>(0,W.jsxs)(`div`,{style:{display:`contents`},children:[(0,W.jsx)(`dt`,{className:`wl-mono`,children:e}),(0,W.jsx)(`dd`,{className:`wl-mono${t===`[redacted]`?` wl-text-warn`:``}`,children:t})]},e))})}var Bj=`This service did not capture headers. Update its WizeLens add-on to v0.3 or later, or turn on header capture in its OpenTelemetry agent.`;function Vj({r:e,server:t}){if(!t)return(0,W.jsx)(K,{title:`No server span`,children:`This request has no server data, so there are no headers to show.`});let n=t.attributes[`url.query`],r=Mj(t);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`h3`,{className:`wl-section-title`,children:`Request`}),(0,W.jsx)(mb,{rows:[[`Method`,e.method],[`Path`,(0,W.jsx)(`span`,{className:`wl-mono`,children:String(t.attributes[`url.path`]??e.path)})],[`Query`,n?(0,W.jsx)(`span`,{className:`wl-mono`,children:String(n)}):(0,W.jsx)(`span`,{className:`wl-muted`,children:`None`})],[`Route`,String(t.attributes[`http.route`]??`–`)],[`Body size`,bb(Pj(t,`http.request.body.size`))],[`Client`,e.clientAddress??`–`]]}),(0,W.jsxs)(`h3`,{className:`wl-section-title`,children:[`Headers (`,r.length,`)`]}),r.length?(0,W.jsx)(zj,{headers:r}):(0,W.jsx)(`p`,{className:`wl-muted wl-small`,children:Bj}),Ij(t,`request`)&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`h3`,{className:`wl-section-title`,children:`Body`}),(0,W.jsx)(Hj,{server:t,which:`request`})]})]})}function Hj({server:e,which:t}){let n=Ij(e,t);return n?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`pre`,{className:`wl-code wl-rq-body`,children:n.text}),n.truncated&&(0,W.jsx)(`p`,{className:`wl-muted wl-small`,children:`Only the first 16 KB were captured.`})]}):(0,W.jsxs)(`p`,{className:`wl-muted wl-small`,children:[`Response body capture is off. Turn it on with `,(0,W.jsx)(`code`,{className:`wl-mono`,children:`CaptureResponseBody = true`}),` (.NET),`,` `,(0,W.jsx)(`code`,{className:`wl-mono`,children:`captureResponseBody: true`}),` (Node), or `,(0,W.jsx)(`code`,{className:`wl-mono`,children:`WIZELENS_CAPTURE_BODY=true`}),` (Java, Python, Go). Only text and JSON bodies are kept, up to 16 KB.`]})}function Uj({r:e,server:t}){if(!t)return(0,W.jsx)(K,{title:`No server span`,children:`This request has no server data, so there is no response to show.`});let n=Nj(t),r=t.attributes[`http.response.header.content-type`];return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`h3`,{className:`wl-section-title`,children:`Response`}),(0,W.jsx)(mb,{rows:[[`Status`,(0,W.jsx)(Hb,{tone:Bb(e.status),children:Rj(e.status,e.aborted)})],[`Content type`,r?String(r):`–`],[`Body size`,bb(Pj(t,`http.response.body.size`))]]}),(0,W.jsxs)(`h3`,{className:`wl-section-title`,children:[`Headers (`,n.length,`)`]}),n.length?(0,W.jsx)(zj,{headers:n}):(0,W.jsx)(`p`,{className:`wl-muted wl-small`,children:Bj}),(0,W.jsx)(`h3`,{className:`wl-section-title`,children:`Body`}),(0,W.jsx)(Hj,{server:t,which:`response`})]})}var Wj=(e,t)=>e===0?`0`:`${e} (${q(t)})`;function Gj({text:e}){return e?(0,W.jsxs)(`span`,{className:`wl-rq-copy`,children:[(0,W.jsx)(Kb,{text:e}),(0,W.jsx)(`span`,{className:`wl-mono wl-truncate`,title:e,children:e})]}):(0,W.jsx)(`span`,{className:`wl-muted`,children:`–`})}function Kj({r:e}){return(0,W.jsx)(mb,{rows:[[`Service`,e.service],[`Method`,e.method],[`Path`,(0,W.jsx)(`span`,{className:`wl-mono`,children:e.path})],[`Status`,(0,W.jsx)(Hb,{tone:Bb(e.status),children:Rj(e.status,e.aborted)})],[`Duration`,q(e.durationMs)],[`SQL Queries`,Wj(e.dbCount,e.dbMs)],[`Fetch Calls`,Wj(e.fetchCount,e.fetchMs)],[`User Agent`,e.userAgent??(0,W.jsx)(`span`,{className:`wl-muted`,children:`Not captured`})],[`IP Address`,e.clientAddress??(0,W.jsx)(`span`,{className:`wl-muted`,children:`Not captured`})],[`User`,e.user?(0,W.jsx)(`a`,{href:r(e.user),children:e.user}):(0,W.jsx)(`span`,{className:`wl-muted`,children:`Anonymous`})],[`Trace ID`,(0,W.jsx)(Gj,{text:e.traceId})],[`Request ID`,(0,W.jsx)(Gj,{text:e.requestId})]]})}var qj=e=>/:(hit|ok|success|true)$/i.test(e)?`wl-chip wl-chip-green`:e.startsWith(`user:`)?`wl-chip`:`wl-chip wl-chip-blue`,Jj=e=>[zg(e.service,e.endpoint),Bg(e.service),...e.user?[Vg(e.user)]:[]];function Yj({r:e}){let t=jx(`requests`,(0,E.useMemo)(()=>[e],[e]),Nx)(e),n=t.length===0&&e.tags.length===0;return(0,W.jsxs)(`div`,{className:`wl-chips wl-rq-tags`,children:[(0,W.jsx)(Ix,{tags:t}),e.tags.map(e=>(0,W.jsx)(`span`,{className:qj(e),children:e},e)),n&&(0,W.jsx)(`span`,{className:`wl-muted wl-small`,children:`No tags. Tag this request's endpoint, service, or user, or set tags in code with WizeLensRequest.Tag(…) or wizelens.tag(…).`}),(0,W.jsx)(sS,{scopes:Jj(e)})]})}function Xj(e){let t=(e,t,n,r)=>({key:e,label:t,value:n??0,display:q(n),color:r});return[t(`total`,`Total`,e.durationMs,`var(--wl-blue)`),t(`server`,`App (server)`,e.serverMs,`color-mix(in srgb, var(--wl-blue) 55%, transparent)`),t(`db`,`Database (SQL)`,e.serverMs===null&&e.dbCount===0?null:e.dbMs,`color-mix(in srgb, var(--wl-blue) 55%, transparent)`),t(`fetch`,`External Fetch`,e.fetchCount?e.fetchMs:null,`color-mix(in srgb, var(--wl-blue) 55%, transparent)`),t(`render`,`Rendering`,e.renderMs,`color-mix(in srgb, var(--wl-blue) 40%, transparent)`),t(`network`,`Network`,e.networkMs,`color-mix(in srgb, var(--wl-blue) 30%, transparent)`)]}function Zj({r:e}){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`h3`,{className:`wl-section-title`,children:`Summary`}),(0,W.jsx)(Kj,{r:e}),(0,W.jsx)(`h3`,{className:`wl-section-title`,children:`Tags`}),(0,W.jsx)(Yj,{r:e}),(0,W.jsxs)(`div`,{className:`wl-rq-timing-head`,children:[(0,W.jsx)(`h3`,{className:`wl-section-title`,children:`Timing Breakdown`}),(0,W.jsx)(`strong`,{children:q(e.durationMs)})]}),(0,W.jsx)(aO,{items:Xj(e),max:e.durationMs}),(0,W.jsxs)(`a`,{className:`wl-btn wl-btn-primary-outline wl-rq-full`,href:y(e.traceId),children:[(0,W.jsx)(pv,{"aria-hidden":`true`}),` View full trace`]})]})}var Qj=40;function $j(e,t){let n=0,r=e.parentSpanId?t.get(e.parentSpanId):void 0;for(;r&&n<8;)n++,r=r.parentSpanId?t.get(r.parentSpanId):void 0;return n}function eM(e){return ve(e)?`error`:e.category===`browser`?ct(e)===`fetch`?`browser`:`render`:e.category.replace(`.`,`-`)}function tM({s:e,depth:t,start:n,total:r}){let i=(e.startMs-n)/r*100,a=Math.max(.6,e.durationMs/r*100);return(0,W.jsxs)(`div`,{className:`wl-rq-span`,title:`${e.service} · ${e.name} · ${q(e.durationMs)}`,children:[(0,W.jsx)(`span`,{className:`wl-rq-span-name wl-truncate`,style:{paddingLeft:t*10},children:e.name}),(0,W.jsx)(`span`,{className:`wl-rq-span-track`,children:(0,W.jsx)(`i`,{className:`wl-rq-k-${eM(e)}`,style:{left:`${i}%`,width:`${Math.min(a,100-i)}%`}})}),(0,W.jsx)(`span`,{className:`wl-rq-span-ms`,children:q(e.durationMs)})]})}function nM({trace:e}){if(!e)return(0,W.jsx)(K,{title:`Trace not loaded`,children:`The trace is not in memory. It may have been dropped.`});let t=new Map(e.spans.map(e=>[e.spanId,e])),n=Math.max(e.durationMs,.001),r=e.spans.slice(0,Qj);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`wl-rq-trace-meta wl-muted wl-small`,children:[e.spanCount,` spans · `,e.services.join(`, `),` · `,q(e.durationMs)]}),(0,W.jsx)(`div`,{className:`wl-rq-spans`,children:r.map(r=>(0,W.jsx)(tM,{s:r,depth:$j(r,t),start:e.startMs,total:n},r.spanId))}),e.spans.length>Qj&&(0,W.jsxs)(`p`,{className:`wl-muted wl-small`,children:[`Showing `,Qj,` of `,e.spans.length,` spans.`]}),(0,W.jsxs)(`a`,{className:`wl-btn wl-btn-primary-outline wl-rq-full`,href:y(e.traceId),children:[(0,W.jsx)(pv,{"aria-hidden":`true`}),` View full trace`]})]})}var rM=[[`overview`,`Overview`],[`headers`,`Headers`],[`response`,`Response`],[`trace`,`Trace`]];function iM({r:e}){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`wl-side-head`,children:[(0,W.jsxs)(`h2`,{className:`wl-truncate`,title:`${e.method} ${e.path}`,children:[e.method,` `,e.path]}),(0,W.jsx)(`button`,{type:`button`,className:`wl-icon-btn wl-rq-close`,onClick:()=>n({trace:null}),"aria-label":`Close request details`,children:(0,W.jsx)(sb,{size:18})})]}),(0,W.jsxs)(`div`,{className:`wl-side-meta`,children:[(0,W.jsxs)(`span`,{children:[Eb(e.startMs),` • `,Db(e.startMs)]}),(0,W.jsx)(Y,{tone:Bb(e.status),children:Rj(e.status,e.aborted)}),(0,W.jsx)(`strong`,{className:`wl-rq-duration`,children:q(e.durationMs)})]})]})}function aM({r:e,trace:t}){let[n,r]=(0,E.useState)(`overview`),i=Aj(t);return(0,W.jsxs)(G,{className:`wl-rq-side`,children:[(0,W.jsx)(iM,{r:e}),(0,W.jsx)(hb,{tabs:rM,value:n,onChange:r}),n===`overview`&&(0,W.jsx)(Zj,{r:e}),n===`headers`&&(0,W.jsx)(Vj,{r:e,server:i}),n===`response`&&(0,W.jsx)(Uj,{r:e,server:i}),n===`trace`&&(0,W.jsx)(nM,{trace:t})]})}function oM({headlines:e,compareLabel:t,empty:n}){return(0,W.jsxs)(`div`,{className:`wl-grid wl-rq-cards`,children:[(0,W.jsx)($,{icon:Vv,label:`Total Requests`,value:J(e.total.value),change:e.total.change,upIsGood:!0,compareLabel:t,series:e.total.series}),(0,W.jsx)($,{icon:tv,label:`Avg Duration`,value:q(e.avgDuration.value),change:e.avgDuration.change,upIsGood:!1,compareLabel:t,series:e.avgDuration.series}),(0,W.jsx)($,{icon:Zy,label:`Error Rate`,value:n?`–`:yb(e.errorRate.value),change:e.errorRate.change,upIsGood:!1,compareLabel:t,series:e.errorRate.series,danger:!0}),(0,W.jsx)($,{icon:Gv,label:`Requests With Insights`,value:J(e.withInsights.value),change:e.withInsights.change,upIsGood:!1,compareLabel:t,series:e.withInsights.series})]})}function sM({label:e,k:t,sort:n,onSort:r}){let i=n.key===t,a=n.desc?__:C_;return(0,W.jsxs)(`button`,{type:`button`,onClick:()=>r(t),"aria-label":`Sort by ${e}`,children:[e,i&&(0,W.jsx)(a,{"aria-hidden":`true`})]})}var cM=e=>(0,W.jsx)(`span`,{className:Ln(e)?`wl-text-error`:void 0,children:q(e.durationMs)});function lM(e,t){let n=(n,r)=>(0,W.jsx)(sM,{label:n,k:r,sort:e,onSort:t});return[{key:`time`,header:n(`Time`,`time`),cell:e=>Eb(e.startMs),className:`wl-nowrap`},{key:`path`,header:n(`Path`,`path`),cell:e=>(0,W.jsx)(`span`,{className:`wl-rq-path wl-truncate`,title:e.path,children:e.path})},{key:`method`,header:n(`Method`,`method`),cell:e=>e.method},{key:`status`,header:n(`Status`,`status`),cell:e=>(0,W.jsx)(Hb,{tone:Bb(e.status),colorText:(e.status??0)>=500,children:e.aborted?`Aborted`:e.status??`…`})},{key:`duration`,header:n(`Duration`,`duration`),cell:cM,className:`wl-nowrap`},{key:`sql`,header:n(`SQL`,`sql`),cell:e=>e.dbCount},{key:`db`,header:n(`DB Time`,`db`),cell:e=>e.dbCount?q(e.dbMs):`–`,className:`wl-nowrap`},{key:`errors`,header:n(`Errors`,`errors`),cell:e=>(0,W.jsx)(Gb,{n:e.errors})},{key:`fetch`,header:n(`Fetch`,`fetch`),cell:e=>e.fetchCount?q(e.fetchMs):`–`,className:`wl-nowrap`},{key:`service`,header:n(`Service`,`service`),cell:e=>e.service,className:`wl-nowrap`},{key:`insights`,header:n(`Insights`,`insights`),cell:e=>(0,W.jsx)(Gb,{n:e.insights})}]}var uM=[[`time`,e=>bO(e.startMs)],[`method`,e=>e.method],[`path`,e=>e.path],[`endpoint`,e=>e.endpoint],[`status`,e=>e.status],[`duration_ms`,e=>xO(e.durationMs)],[`server_ms`,e=>xO(e.serverMs)],[`db_ms`,e=>xO(e.dbMs)],[`sql_queries`,e=>e.dbCount],[`fetch_calls`,e=>e.fetchCount],[`fetch_ms`,e=>xO(e.fetchMs)],[`render_ms`,e=>xO(e.renderMs)],[`network_ms`,e=>xO(e.networkMs)],[`service`,e=>e.service],[`errors`,e=>e.errors],[`insights`,e=>e.insights],[`user`,e=>e.user],[`client_address`,e=>e.clientAddress],[`request_id`,e=>e.requestId],[`trace_id`,e=>e.traceId],[`tags`,e=>e.tags.join(` `)]],dM=e=>yO(uM,e),fM=e=>SO(`requests`,dM(e)),pM=5e3;function mM(){let e=i().query,t=e.get(`sort`)??void 0,r={key:wo(t)?t:`time`,desc:e.get(`desc`)!==`0`};return[r,e=>n({sort:e,desc:r.key===e&&r.desc?`0`:null,page:null})]}function hM(){let[e]=Zg(),t=H().has(`serverStats`),n=i().query,[r,a]=(0,E.useState)(!1);return[r,()=>{a(!0),fT(`requests`,{...Object.fromEntries(n),page:`1`,size:String(pM)},e,t).then(e=>fM(e.rows)).finally(()=>a(!1))}]}function gM({model:e,selectedId:t}){let[r,i]=mM(),[a,o]=hM(),s=jx(`requests`,e.rows,Nx),c=(0,W.jsxs)(`h2`,{children:[`Requests (`,J(e.total),`)`,!t&&e.total>0&&(0,W.jsx)(`span`,{className:`wl-muted wl-small wl-rq-pick`,children:` · pick one to see its details`})]}),l=Lx(lM(r,i).filter(e=>!t||e.key!==`fetch`&&e.key!==`insights`),`path`,s),u=(0,W.jsxs)(`button`,{type:`button`,className:`wl-btn`,onClick:o,disabled:e.total===0||a,title:`Download the filtered requests as CSV (up to ${J(pM)})`,children:[(0,W.jsx)($y,{"aria-hidden":`true`}),` Export`]}),d=(0,W.jsx)(K,{title:e.filtered?`No requests match these filters`:`No requests in this range`,children:e.filtered?`Change or reset the filters.`:`Use your app and requests show up here.`});return(0,W.jsxs)(G,{flush:!0,title:c,action:u,children:[(0,W.jsx)(Q,{columns:l,rows:e.rows,rowKey:e=>e.traceId,selectedKey:t,onRowClick:e=>n({trace:e.traceId}),empty:d}),e.total>0&&(0,W.jsx)(Yb,{page:e.page,pageSize:e.pageSize,total:e.total,noun:`requests`,onPage:e=>n({page:e}),onPageSize:e=>n({size:e,page:null})})]})}function _M(){return(0,W.jsx)(G,{className:`wl-rq-side wl-rq-hint`,children:(0,W.jsx)(`p`,{className:`wl-muted`,children:`This request is no longer stored.`})})}function vM({id:e,row:t}){let{trace:n}=xC(e),r=t??(n?Nn(n):null);return r?(0,W.jsx)(aM,{r,trace:n??void 0},r.traceId):(0,W.jsx)(_M,{})}function yM(){let e=i(),[t,n]=(0,E.useState)(!1),{model:r,loading:a,error:o}=hT(`requests`,void 0,t),[s]=u(),c=go(e.query),l={...c,service:c.service||s},d=e.query.get(`trace`);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(fb,{title:`Requests`,subtitle:`Inspect and analyze recent request activity across your stack.`,children:(0,W.jsx)(Qk,{paused:t,onChange:n})}),(0,W.jsx)(ID,{model:r,loading:a,error:o,what:`requests`}),(0,W.jsx)(kj,{filter:l,methods:r?.options.methods??[],services:r?.options.services??[]}),r&&(0,W.jsx)(oM,{headlines:r.headlines,compareLabel:r.meta.compareLabel,empty:r.total===0}),(0,W.jsxs)(`div`,{className:d?`wl-grid wl-grid-side`:`wl-grid`,children:[r&&(0,W.jsx)(gM,{model:r,selectedId:d}),d&&(0,W.jsx)(vM,{id:d,row:r?.selected??null})]})]})}var bM=`color-mix(in srgb, var(--wl-red) 45%, transparent)`,xM=e=>[{key:`name`,header:e,className:`wl-cell-wide`,cell:e=>(0,W.jsx)(`span`,{className:`wl-truncate wl-mono`,title:e.name,children:e.name})},{key:`count`,header:`Count`,num:!0,sort:e=>e.count,cell:e=>J(e.count)},{key:`avg`,header:`Avg`,num:!0,sort:e=>e.avgMs??0,cell:e=>q(e.avgMs)},{key:`errors`,header:`Errors`,num:!0,sort:e=>e.errors,cell:e=>(0,W.jsx)(`span`,{className:e.errors?`wl-text-error`:void 0,children:J(e.errors)})}],SM=[{key:`path`,header:`Request`,className:`wl-cell-wide`,cell:e=>(0,W.jsxs)(`span`,{className:`wl-truncate`,title:e.path,children:[e.method,` `,e.path]})},{key:`status`,header:`Status`,cell:e=>(0,W.jsx)(Hb,{tone:Bb(e.status),children:e.status??`–`})},{key:`duration`,header:`Duration`,num:!0,cell:e=>(0,W.jsx)(`span`,{className:Ln(e)?`wl-text-error`:void 0,children:q(e.durationMs)})}],CM=e=>[{key:`error`,header:`Error`,className:`wl-cell-wide`,cell:e=>(0,W.jsxs)(`span`,{className:`wl-truncate`,title:e.message,children:[e.type,`: `,e.message]})},{key:`seen`,header:`Last Seen`,className:`wl-nowrap`,cell:t=>Nb(t.lastSeenMs,e)},{key:`count`,header:`Count`,num:!0,cell:e=>J(e.count)}];function wM({m:e}){let t=e.totals,n=(t,n)=>e.meta.hasPrev?le(t,n??0):null,r=e.chart.count.map((t,n)=>t?(e.chart.errors[n]??0)/t*100:null),i={compareLabel:e.meta.compareLabel};return(0,W.jsxs)(`div`,{className:`wl-grid wl-grid-stats`,children:[(0,W.jsx)($,{icon:Tv,label:`Requests`,value:J(t.count),change:n(t.count,e.prev?.count),upIsGood:!0,series:e.chart.count,...i}),(0,W.jsx)($,{icon:Zy,label:`Error Rate`,value:yb(t.errorRate),change:n(t.errorRate,e.prev?.errorRate),upIsGood:!1,series:r,danger:!0,...i}),(0,W.jsx)($,{icon:qy,label:`p95 Latency`,value:q(t.p95Ms),change:n(t.p95Ms,e.prev?.p95Ms),upIsGood:!1,series:e.chart.p95,...i}),(0,W.jsx)($,{icon:qy,label:`p99 Latency`,value:q(t.p99Ms),change:n(t.p99Ms,e.prev?.p99Ms),upIsGood:!1,series:e.chart.p99,...i})]})}function TM({m:e}){let t={label:_b(e.meta.compare),values:e.chart.prevCount,color:`var(--wl-slate)`,dashed:!0},n=[{label:`p99`,values:e.chart.p99,color:`var(--wl-red)`},{label:`p95`,values:e.chart.p95,color:`var(--wl-orange)`},{label:`p50`,values:e.chart.p50,color:`var(--wl-blue)`}];return(0,W.jsxs)(`div`,{className:`wl-grid wl-grid-2-even`,children:[(0,W.jsx)(G,{title:`Requests Over Time`,children:(0,W.jsx)(eE,{starts:e.starts,lines:[{label:`Requests`,values:e.chart.count,color:`var(--wl-blue)`},t],bars:[{label:`Errors`,values:e.chart.errors,color:bM}],height:220,separateBarScale:!0,format:J})}),(0,W.jsx)(G,{title:`Latency Over Time`,children:(0,W.jsx)(eE,{starts:e.starts,lines:n,height:220,format:e=>q(e)})})]})}function EM({m:e}){let t=e.slowest.length?e.slowest:e.recent,n=(0,W.jsx)(pb,{href:S(`requests`,[],{endpoint:e.endpoint,service:e.service,sort:`duration`}),label:`View requests`});return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`wl-grid wl-grid-2-even`,children:[(0,W.jsx)(G,{title:`Queries (${J(e.queries.length)})`,flush:!0,children:(0,W.jsx)(Q,{columns:xM(`Query`),rows:e.queries,rowKey:e=>e.name,onRowClick:e=>T(He(e.name)),empty:(0,W.jsx)(K,{children:`This endpoint ran no queries in this range.`})})}),(0,W.jsx)(G,{title:`Calls (${J(e.calls.length)})`,flush:!0,children:(0,W.jsx)(Q,{columns:xM(`Service or host`),rows:e.calls,rowKey:e=>e.name,onRowClick:e=>T(RS(e.name)),empty:(0,W.jsx)(K,{children:`This endpoint called nothing in this range.`})})})]}),(0,W.jsxs)(`div`,{className:`wl-grid wl-grid-2-even`,children:[(0,W.jsx)(G,{title:`Errors (${J(e.errors.length)})`,flush:!0,children:(0,W.jsx)(RD,{group:`errors`,docOf:Pg,tagged:`error`,columns:CM(e.meta.window.to),rows:e.errors,rowKey:e=>e.key,onRowClick:e=>T(he(e.key)),empty:(0,W.jsx)(K,{title:`No exceptions`,children:`Nothing failed here in this range.`})})}),(0,W.jsx)(G,{title:e.slowest.length?`Slowest Requests`:`Newest Requests`,flush:!0,action:n,children:(0,W.jsx)(LD,{kind:`requests`,itemOf:Nx,tagged:`path`,columns:SM,rows:t,rowKey:e=>e.traceId,onRowClick:e=>T(y(e.traceId)),empty:(0,W.jsx)(K,{children:`No request in this range.`})})})]})]})}function DM({service:e,endpoint:t}){let{model:n,loading:r,error:i}=hT(`endpoint`,{service:e,endpoint:t}),a=e.includes(`:`)?e.slice(e.indexOf(`:`)+1):e,o=Mx()(`endpoints`,jg(a,t)),s=n?.totals?[[`Service`,a],[`Requests`,J(n.totals.count)],[`Users`,J(n.users.count)],[`Average`,q(n.totals.avgMs)],[`p50`,q(n.totals.p50Ms)],[`p95`,q(n.totals.p95Ms)],[`p99`,q(n.totals.p99Ms)]]:[[`Service`,a]];return(0,W.jsxs)(`div`,{className:`wl-dpage`,children:[(0,W.jsx)(ID,{model:n,loading:r,error:i,what:`this endpoint`}),(0,W.jsx)(EC,{back:[RS(e),a],icon:ab,title:t,mono:!0,badge:(0,W.jsx)(Ix,{tags:o}),stats:s,actions:(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(rk,{fields:{metric:`p95_ms`,service:a,endpoint:t,name:`${t} is slow`}}),(0,W.jsx)(sS,{scopes:[zg(a,t),Bg(a)]})]})}),n&&!n.totals&&(0,W.jsx)(G,{children:(0,W.jsx)(K,{title:`This endpoint served nothing in this time range`,children:`Pick a longer time range at the top.`})}),n?.totals&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(wM,{m:n}),(0,W.jsx)(TM,{m:n}),(0,W.jsx)(EM,{m:n})]})]})}function OM(e){return[{key:`host`,header:`Host`,cell:e=>(0,W.jsx)(`strong`,{children:e.host||`–`}),sort:e=>e.host??``},{key:`status`,header:`Status`,cell:e=>(0,W.jsx)(Hb,{tone:e.online?`success`:`neutral`,children:f(e)}),sort:e=>+!e.online},{key:`version`,header:`Version`,cell:e=>e.version??`–`,className:`wl-hide-sm`},{key:`runtime`,header:`Runtime`,cell:e=>(0,W.jsx)(`span`,{className:`wl-muted wl-small`,children:e.runtime??`–`}),className:`wl-hide-sm`},{key:`first`,header:`First seen`,cell:t=>Nb(t.firstSeenMs,e),sort:e=>-e.firstSeenMs,className:`wl-hide-sm`},{key:`seen`,header:`Last seen`,cell:t=>Nb(t.lastSeenMs,e),sort:e=>-e.lastSeenMs}]}function kM({group:e,now:t,onClose:n}){let[r,i]=(0,E.useState)(!1),a=e.instances.filter(e=>tt(e,t)).length,o=r?e.instances:e.instances.filter(e=>!tt(e,t)),s=`Hosts of ${e.service}${e.environment?` · ${e.environment}`:``} (${e.online} of ${e.instances.length} online)`,c=(0,W.jsxs)(`span`,{className:`wl-row-actions`,children:[a>0&&(0,W.jsx)(Xx,{label:`Show old hosts (${J(a)})`,checked:r,onChange:e=>i(e.target.checked)}),n&&(0,W.jsx)(`button`,{type:`button`,className:`wl-link-btn`,onClick:n,children:`Close`})]});return(0,W.jsx)(G,{title:s,flush:!0,action:c,children:(0,W.jsx)(Q,{columns:OM(t),rows:o,rowKey:e=>e.host??``,defaultSort:{key:`seen`,desc:!1},empty:(0,W.jsx)(K,{title:`Only old hosts`,children:`Every host of this service has been offline for more than a day.`})})})}var AM=3e4;function jM(e,t,n){let r=c(),i=new URLSearchParams({...t,range:n});return r.project&&i.set(`project`,r.project),r.env&&i.set(`env`,r.env),`./api/models/${e}?${i.toString()}`}function MM(e,t,n=!0){let r=H().has(`infra`),[i]=Zg(),a=Object.fromEntries(Object.entries(t).filter(e=>!!e[1])),o=new URLSearchParams(a).toString(),s=(0,E.useMemo)(()=>r&&n?jM(e,Object.fromEntries(new URLSearchParams(o)),i):null,[r,n,e,o,i]),[c,l]=(0,E.useState)(0),[u,d]=(0,E.useState)({model:null,url:null,error:null});(0,E.useEffect)(()=>{let e=setInterval(()=>l(e=>e+1),AM);return()=>clearInterval(e)},[]),(0,E.useEffect)(()=>{if(!s)return;let e=!0;return ne(s).then(t=>e&&d({model:t,url:s,error:null})).catch(t=>e&&d(e=>({...e,url:s,error:t instanceof Error?t.message:String(t)}))),()=>void(e=!1)},[s,c]);let f=u.url===s;return{model:u.model,loading:!!s&&!f&&!u.error,error:u.error,supported:r}}var NM=e=>sf(e,`1`),PM=e=>sf(e,`By`),FM=e=>sf(e,`By/s`);function IM(e){return e==null?`–`:e<.995?`${Math.round(e*1e3)} millicores`:`${e>=10?e.toFixed(0):e.toFixed(2)} cores`}function LM(e,t){return e===null?`–`:t?`${PM(e)} of ${PM(t)}`:PM(e)}function RM({share:e}){return e===null?(0,W.jsx)(`span`,{className:`wl-muted`,children:`–`}):(0,W.jsxs)(`span`,{className:`wl-usage ${e>=.9?`wl-bad`:e>=.75?`wl-warn`:``}`,title:NM(e),children:[(0,W.jsx)(`span`,{className:`wl-usage-track`,"aria-hidden":`true`,children:(0,W.jsx)(`span`,{style:{width:`${Math.min(100,Math.max(0,e*100))}%`}})}),(0,W.jsx)(`span`,{className:`wl-usage-num`,children:NM(e)})]})}function zM({icon:e,label:t,value:n,note:r,danger:i=!1}){return(0,W.jsxs)(`section`,{className:`wl-panel wl-stat`,children:[(0,W.jsx)(e,{className:`wl-stat-icon${i?` wl-danger`:``}`,"aria-hidden":!0}),(0,W.jsx)(`div`,{className:`wl-stat-label`,children:t}),(0,W.jsx)(`div`,{}),(0,W.jsx)(`div`,{className:`wl-stat-value`,children:n}),(0,W.jsx)(`div`,{className:`wl-stat-foot`,children:(0,W.jsx)(`div`,{className:`wl-delta`,children:(0,W.jsx)(`span`,{children:r})})})]})}function BM({back:e,backLabel:t,icon:n,title:r,status:i,facts:a}){return(0,W.jsxs)(`section`,{className:`wl-panel wl-svc-head`,children:[(0,W.jsxs)(`a`,{className:`wl-back`,href:e,children:[(0,W.jsx)(y_,{size:14,"aria-hidden":`true`}),` `,t]}),(0,W.jsxs)(`h1`,{className:`wl-svc-title`,children:[(0,W.jsx)(n,{size:22,"aria-hidden":!0}),(0,W.jsx)(`span`,{className:`wl-svc-name`,children:r}),i&&(0,W.jsx)(`span`,{className:`wl-svc-status`,children:i})]}),(0,W.jsx)(`dl`,{className:`wl-stats`,children:a.map(([e,t])=>(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`dt`,{children:e}),(0,W.jsx)(`dd`,{children:t})]},e))})]})}function VM({title:e,starts:t,lines:n,format:r}){let i=n.every(e=>e.values.every(e=>e===null));return(0,W.jsx)(G,{title:e,children:i?(0,W.jsx)(K,{title:`No data in this range`}):(0,W.jsx)(eE,{starts:t,lines:n,height:200,format:r})})}function HM(e){return[{key:`service`,header:`Service`,cell:e=>(0,W.jsx)(`a`,{href:RS(e.service),children:(0,W.jsx)(`strong`,{children:e.service})}),sort:e=>e.service},{key:`host`,header:`Host or Pod`,cell:e=>e.host||e.pod||`–`,className:`wl-hide-sm`},{key:`env`,header:`Environment`,cell:e=>e.environment||`–`,className:`wl-hide-sm`},{key:`version`,header:`Version`,cell:e=>e.version||`–`,className:`wl-hide-sm`},{key:`status`,header:`Status`,cell:e=>(0,W.jsx)(Hb,{tone:e.online?`success`:`neutral`,children:e.online?`Online`:`Offline`}),sort:e=>+!e.online},{key:`seen`,header:`Last seen`,cell:t=>Nb(t.lastSeenMs,e),sort:e=>-e.lastSeenMs}]}function UM({services:e,now:t,empty:n}){return(0,W.jsx)(G,{title:`Services`,flush:!0,children:(0,W.jsx)(Q,{columns:HM(t),rows:e,rowKey:e=>`${e.service}|${e.host}|${e.environment}`,defaultSort:{key:`service`,desc:!1},empty:(0,W.jsx)(K,{title:`No services`,children:n})})})}function WM({supported:e,what:t}){return(0,W.jsx)(G,{children:(0,W.jsxs)(K,{title:e?`No ${t} metrics yet`:`This dashboard does not keep ${t} metrics`,children:[e?`Run the OpenTelemetry Collector with the WizeLens recipe (deploy/helm/wizelens-collector or deploy/collector/host.yaml) and point it at this hub or the cloud.`:`Send host and Kubernetes metrics to a WizeLens hub or the cloud with the OpenTelemetry Collector.`,` `,(0,W.jsx)(`a`,{href:`https://wizelens.com/docs/kubernetes`,target:`_blank`,rel:`noreferrer`,children:`How to set it up`})]})})}var GM={Running:`success`,Pending:`warning`,Failed:`danger`,Succeeded:`neutral`,Unknown:`neutral`},KM=(e,t)=>e!==null&&t?e/t:null,qM=(e,t=!1)=>e>0?(0,W.jsx)(`strong`,{className:t?`wl-text-error`:void 0,children:J(e)}):(0,W.jsx)(`span`,{className:`wl-muted`,children:`0`});function JM({phase:e}){return e?(0,W.jsx)(Hb,{tone:GM[e]??`neutral`,children:e}):(0,W.jsx)(`span`,{className:`wl-muted`,children:`Unknown`})}var YM=e=>[{key:`name`,header:`Node`,cell:e=>(0,W.jsx)(`a`,{href:GS(e.name),children:(0,W.jsx)(`strong`,{children:e.name})}),sort:e=>e.name},{key:`ready`,header:`Status`,cell:e=>e.ready===null?(0,W.jsx)(`span`,{className:`wl-muted`,children:`–`}):(0,W.jsx)(Hb,{tone:e.ready?`success`:`danger`,children:e.ready?`Ready`:`Not ready`}),sort:e=>+!e.ready},{key:`cpu`,header:`CPU`,cell:e=>e.cpuAlloc?(0,W.jsx)(RM,{share:KM(e.cpu,e.cpuAlloc)}):IM(e.cpu),sort:e=>e.cpu??-1},{key:`mem`,header:`Memory`,cell:e=>e.memAlloc?(0,W.jsx)(RM,{share:KM(e.memory,e.memAlloc)}):PM(e.memory),sort:e=>e.memory??-1},{key:`pods`,header:`Pods`,cell:e=>J(e.pods),num:!0,sort:e=>e.pods},{key:`pending`,header:`Pending`,cell:e=>qM(e.pending,!0),num:!0,sort:e=>e.pending,className:`wl-hide-sm`},{key:`restarts`,header:`Restarts`,cell:e=>qM(e.restartsNew,!0),num:!0,sort:e=>e.restartsNew,className:`wl-hide-sm`},{key:`host`,header:`Host`,cell:e=>e.host?(0,W.jsx)(`a`,{href:WS(e.name),children:`Host page`}):(0,W.jsx)(`span`,{className:`wl-muted`,children:`–`}),className:`wl-hide-sm`},{key:`seen`,header:`Last seen`,cell:t=>Nb(t.lastSeenMs,e),sort:e=>-e.lastSeenMs,className:`wl-hide-sm`}];function XM({rows:e,now:t}){return(0,W.jsx)(Q,{columns:YM(t),rows:e,rowKey:e=>e.name,defaultSort:{key:`name`,desc:!1},empty:(0,W.jsx)(K,{title:`No nodes`,children:`kubeletstats sends nothing yet.`})})}var ZM=[{key:`name`,header:`Workload`,cell:e=>(0,W.jsx)(`a`,{href:qS(e.key),children:(0,W.jsx)(`strong`,{children:e.name})}),sort:e=>e.name},{key:`kind`,header:`Kind`,cell:e=>(0,W.jsx)(Y,{tone:`neutral`,children:e.kind}),sort:e=>e.kind},{key:`ns`,header:`Namespace`,cell:e=>e.namespace||`–`,sort:e=>e.namespace,className:`wl-hide-sm`},{key:`ready`,header:`Ready`,cell:e=>e.desired===null?(0,W.jsx)(`span`,{className:`wl-muted`,children:`–`}):(0,W.jsx)(`span`,{className:(e.ready??0)<e.desired?`wl-text-error`:void 0,children:`${J(e.ready)} of ${J(e.desired)}`}),sort:e=>e.desired?(e.ready??0)/e.desired:1},{key:`pods`,header:`Pods`,cell:e=>J(e.pods),num:!0,sort:e=>e.pods},{key:`pending`,header:`Pending`,cell:e=>qM(e.pending,!0),num:!0,sort:e=>e.pending},{key:`restarts`,header:`Restarts`,cell:e=>qM(e.restartsNew,!0),num:!0,sort:e=>e.restartsNew},{key:`oom`,header:`OOM Killed`,cell:e=>qM(e.oomKills,!0),num:!0,sort:e=>e.oomKills}];function QM({rows:e}){return(0,W.jsx)(Q,{columns:ZM,rows:e,rowKey:e=>e.key,defaultSort:{key:`name`,desc:!1},empty:(0,W.jsx)(K,{title:`No workloads`,children:`k8s_cluster sends nothing yet, or no pod names its workload.`})})}var $M=[{key:`name`,header:`Pod`,cell:e=>(0,W.jsx)(`a`,{href:KS(e.namespace,e.name),children:(0,W.jsx)(`strong`,{children:e.name})}),sort:e=>e.name},{key:`ns`,header:`Namespace`,cell:e=>e.namespace||`–`,sort:e=>e.namespace,className:`wl-hide-sm`},{key:`phase`,header:`Phase`,cell:e=>(0,W.jsx)(JM,{phase:e.phase}),sort:e=>e.phase},{key:`node`,header:`Node`,cell:e=>e.node?(0,W.jsx)(`a`,{href:GS(e.node),children:e.node}):(0,W.jsx)(`span`,{className:`wl-muted`,children:`–`}),sort:e=>e.node,className:`wl-hide-sm`},{key:`cpu`,header:`CPU`,cell:e=>IM(e.cpu),num:!0,sort:e=>e.cpu??-1},{key:`mem`,header:`Memory`,cell:e=>e.memLimit?(0,W.jsx)(RM,{share:KM(e.memory,e.memLimit)}):PM(e.memory),sort:e=>e.memory??-1},{key:`restarts`,header:`Restarts`,cell:e=>e.restartsNew>0?(0,W.jsx)(`strong`,{className:`wl-text-error`,children:`${J(e.restarts)} (+${J(e.restartsNew)})`}):J(e.restarts),num:!0,sort:e=>e.restartsNew*1e6+e.restarts},{key:`oom`,header:`OOM Killed`,cell:e=>qM(e.oomKills,!0),num:!0,sort:e=>e.oomKills,className:`wl-hide-sm`},{key:`services`,header:`Services`,cell:e=>e.services.length?(0,W.jsx)(`span`,{className:`wl-infra-chips`,children:e.services.map(e=>(0,W.jsx)(`a`,{className:`wl-infra-chip`,href:RS(e),children:e},e))}):(0,W.jsx)(`span`,{className:`wl-muted`,children:`–`}),sort:e=>e.services.length,className:`wl-hide-sm`}];function eN({rows:e,empty:t=`No pods match these filters.`}){return(0,W.jsx)(Q,{columns:$M,rows:e,rowKey:e=>e.key,defaultSort:{key:`name`,desc:!1},empty:(0,W.jsx)(K,{title:`No pods`,children:t})})}function tN({name:e}){let t=H().has(`infra`),n=MM(`kubernetes`,{service:e},t),r=MM(`hosts`,{q:e},t),i=n.model?.pods??[],a=(r.model?.hosts??[]).filter(t=>t.services.includes(e));return(0,W.jsxs)(W.Fragment,{children:[i.length>0&&(0,W.jsx)(G,{title:`Pods (${i.length})`,flush:!0,children:(0,W.jsx)(eN,{rows:i})}),a.length>0&&(0,W.jsx)(G,{title:`Runs On`,children:(0,W.jsx)(`ul`,{className:`wl-svc-edges`,children:a.map(e=>(0,W.jsxs)(`li`,{children:[(0,W.jsx)(`a`,{href:WS(e.name),children:e.name}),(0,W.jsxs)(`span`,{className:`wl-row-actions`,children:[`CPU `,(0,W.jsx)(RM,{share:e.cpu}),` Memory `,(0,W.jsx)(RM,{share:e.mem})]})]},e.name))})})]})}var nN={api:`Requests`,web:`Requests`,worker:`Messages Handled`,queue:`Messages Sent`,database:`Queries`,external:`Calls`},rN=`color-mix(in srgb, var(--wl-red) 45%, transparent)`;function iN({m:e,row:t}){let n=e.prevRow,r=e.meta.compareLabel,i=(t,n)=>e.meta.hasPrev?le(t,n??0):null,a=e.chart.requests.map((t,n)=>t?(e.chart.errors[n]??0)/t*100:null);return(0,W.jsxs)(`div`,{className:`wl-grid wl-grid-stats`,children:[(0,W.jsx)($,{icon:Tv,label:nN[t.kind],value:J(t.requests),change:i(t.requests,n?.requests),upIsGood:!0,compareLabel:r,series:e.chart.requests}),(0,W.jsx)($,{icon:Zy,label:`Error Rate`,value:yb(t.errorRate),change:i(t.errorRate,n?.errorRate),upIsGood:!1,compareLabel:r,series:a,danger:!0}),(0,W.jsx)($,{icon:tv,label:`Avg Latency`,value:q(t.avgMs),change:i(t.avgMs,n?.avgMs),upIsGood:!1,compareLabel:r,series:e.chart.avgMs}),(0,W.jsx)($,{icon:qy,label:`p95 Latency`,value:q(t.p95Ms),change:i(t.p95Ms,n?.p95Ms),upIsGood:!1,compareLabel:r,series:e.chart.p95Ms}),e.owned&&(0,W.jsx)(GA,{apdex:e.apdex,compareLabel:r})]})}function aN({m:e,row:t}){let n=nN[t.kind];return(0,W.jsx)(G,{title:`${n} Over Time`,children:(0,W.jsx)(eE,{starts:e.starts,lines:[{label:n,values:e.chart.requests,color:`var(--wl-blue)`},{label:_b(e.meta.compare),values:e.chart.prevRequests,color:`var(--wl-slate)`,dashed:!0}],bars:[{label:`Errors`,values:e.chart.errors,color:rN}],height:220,separateBarScale:!0,format:J})})}function oN({m:e}){let t=[{label:`p95`,values:e.chart.p95Ms,color:`var(--wl-orange)`},{label:`Average`,values:e.chart.avgMs,color:`var(--wl-blue)`}];return(0,W.jsx)(G,{title:`Latency Over Time`,children:(0,W.jsx)(eE,{starts:e.starts,lines:t,height:220,format:e=>q(e)})})}var sN={database:`System`,external:`Host`,queue:`Queue`,web:`Source`};function cN(e,t){let{registry:n}=Se(),[r]=ee(),[i]=b(),a=H().has(`accounts`);return!t||!n?[]:nt(n.services.filter(t=>t.service===e&&xe(t,{env:r,project:i},!a)))}function lN(e,n,r){let i=[[`Kind`,FS[e.kind]]];e.detail&&sN[e.kind]&&i.push([sN[e.kind],e.detail]);let a=n[0]?.newest;if(!a)return i;let o=n.reduce((e,t)=>e+t.instances.length,0),s=n.reduce((e,t)=>e+t.online,0),c=[...new Set(n.map(e=>e.environment).filter(Boolean))];return i.push([`Hosts`,`${J(s)} of ${J(o)} online`]),c.length&&i.push([c.length===1?`Environment`:`Environments`,c.join(`, `)]),a.version&&i.push([`Version`,a.version]),a.runtime&&i.push([`Runtime`,a.runtime]),i.push([`Sends with`,t[a.via]],[`Last seen`,Nb(a.lastSeenMs,r)]),i}function uN({row:e,groups:t}){let{updatedMs:n}=Se(),r=PS[e.kind],i=Mx()(`services`,Ng(e.name)),a=e.kind===`api`||e.kind===`worker`||e.kind===`web`;return(0,W.jsxs)(`section`,{className:`wl-panel wl-svc-head`,children:[(0,W.jsxs)(`a`,{className:`wl-back`,href:S(`services`),children:[(0,W.jsx)(y_,{size:14,"aria-hidden":`true`}),` All services`]}),(0,W.jsxs)(`h1`,{className:`wl-svc-title`,children:[(0,W.jsx)(r,{size:22,"aria-hidden":!0}),(0,W.jsx)(`span`,{className:`wl-svc-name`,children:e.name}),(0,W.jsx)(`span`,{className:`wl-svc-status`,children:(0,W.jsx)(BS,{status:e.status})}),(0,W.jsx)(Ix,{tags:i}),a&&(0,W.jsxs)(`span`,{className:`wl-dhead-actions`,children:[e.kind!==`web`&&(0,W.jsx)(rk,{fields:{metric:`error_rate`,service:e.name,name:`${e.name} errors`}}),(0,W.jsx)(sS,{scopes:[Bg(e.name)]})]})]}),(0,W.jsx)(`dl`,{className:`wl-stats`,children:lN(e,t,n).map(([e,t])=>(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`dt`,{children:e}),(0,W.jsx)(`dd`,{children:t})]},e))})]})}var dN=(e,t)=>t?e/t*100:0,fN={api:`Endpoint`,web:`Call`,worker:`Operation`,queue:`Operation`,database:`Query`,external:`Call`};function pN(e){return[{key:`name`,header:fN[e],className:`wl-svc-ep-name`,cell:e=>(0,W.jsx)(`span`,{className:`wl-truncate wl-mono`,title:e.name,children:e.name}),sort:e=>e.name},{key:`count`,header:`Count`,num:!0,cell:e=>J(e.count),sort:e=>e.count},{key:`errors`,header:`Errors`,num:!0,cell:e=>(0,W.jsx)(`span`,{className:e.errors?`wl-text-error`:void 0,children:J(e.errors)}),sort:e=>e.errors},{key:`rate`,header:`Error Rate`,num:!0,cell:e=>yb(dN(e.errors,e.count)),sort:e=>dN(e.errors,e.count)},{key:`avg`,header:`Avg Latency`,num:!0,cell:e=>q(e.avgMs),sort:e=>e.avgMs??0}]}function mN({open:e,total:t,onToggle:n}){return t<=10?null:(0,W.jsx)(`button`,{type:`button`,className:`wl-view-all wl-link-btn`,onClick:n,children:e?`Show top 10`:`View all ${J(t)}`})}function hN(e){return e.kind===`api`||e.kind===`worker`?[S(`requests`,[],{service:e.name}),`View requests`]:e.kind===`database`?[S(`database`,[],{database:e.name}),`View queries`]:null}function gN(e){if(e.kind===`api`)return t=>T(_e(e.key,t.name));if(e.kind===`database`)return e=>T(He(e.name))}function _N({m:e,row:t}){let[n,r]=(0,E.useState)(!1),i=n?e.endpoints:e.endpoints.slice(0,10),a=hN(t),o=t.kind===`database`?`Queries`:t.kind===`api`?`Endpoints`:`Operations`,s=Mx(),c=t.kind===`api`||t.kind===`worker`?Lx(pN(t.kind),`name`,e=>s(`endpoints`,jg(t.name,e.name))):pN(t.kind),l=(0,W.jsxs)(`span`,{className:`wl-row-actions`,children:[(0,W.jsx)(mN,{open:n,total:e.endpoints.length,onToggle:()=>r(!n)}),a&&(0,W.jsx)(pb,{href:a[0],label:a[1]})]});return(0,W.jsx)(G,{title:`${o} (${J(e.endpointCount)})`,action:l,flush:!0,children:(0,W.jsx)(Q,{columns:c,rows:i,rowKey:e=>e.name,onRowClick:gN(t),defaultSort:{key:`count`,desc:!0},empty:(0,W.jsx)(K,{children:`Nothing recorded in this range.`})})})}var vN=e=>[{key:`name`,header:`Service`,cell:t=>(0,W.jsx)(`a`,{href:RS(t[e]),onClick:e=>e.stopPropagation(),children:t[e]}),sort:t=>t[e]},{key:`calls`,header:`Calls`,num:!0,cell:e=>J(e.calls),sort:e=>e.calls},{key:`errors`,header:`Errors`,num:!0,cell:e=>(0,W.jsx)(`span`,{className:e.errors?`wl-text-error`:void 0,children:J(e.errors)}),sort:e=>e.errors},{key:`avg`,header:`Avg Latency`,num:!0,cell:e=>q(e.avgMs),sort:e=>e.avgMs??0}];function yN({title:e,edges:t,side:n,empty:r}){return(0,W.jsx)(G,{title:e,flush:!0,children:(0,W.jsx)(Q,{columns:vN(n),rows:t,rowKey:e=>`${e.from}→${e.to}`,onRowClick:e=>T(RS(e[n])),defaultSort:{key:`calls`,desc:!0},empty:(0,W.jsx)(K,{children:r})})})}var bN=e=>e.replace(/^[A-Z]+ /,``);function xN(e){return[{key:`error`,header:`Error`,className:`wl-svc-wide`,cell:e=>(0,W.jsxs)(`span`,{className:`wl-truncate`,title:`${e.type}: ${e.message}`,children:[e.type,`: `,e.message]})},{key:`endpoint`,header:`Endpoint`,className:`wl-svc-mid`,cell:e=>(0,W.jsx)(`span`,{className:`wl-truncate`,title:e.endpoint,children:bN(e.endpoint)})},{key:`seen`,header:`Last Seen`,className:`wl-nowrap`,sort:e=>e.lastSeenMs,cell:t=>Nb(t.lastSeenMs,e)},{key:`count`,header:`Count`,num:!0,sort:e=>e.count,cell:e=>J(e.count)}]}function SN({m:e,name:t}){let{updatedMs:n}=Se(),[r,i]=(0,E.useState)(!1),{groups:a,total:o}=e.errors,s=Mx(),c=(0,W.jsxs)(`span`,{className:`wl-row-actions`,children:[(0,W.jsx)(mN,{open:r,total:a.length,onToggle:()=>i(!r)}),(0,W.jsx)(pb,{href:S(`errors`,[],{service:t}),label:`View errors`})]});return(0,W.jsx)(G,{title:`Top Errors (${J(o)})`,action:c,flush:!0,children:(0,W.jsx)(Q,{columns:Lx(xN(n),`error`,e=>s(`errors`,Pg(e))),rows:r?a:a.slice(0,10),rowKey:e=>e.key,onRowClick:e=>T(he(e.key)),empty:(0,W.jsx)(K,{title:`No exceptions`,children:`Nothing failed in this time range.`})})})}var CN=[{key:`path`,header:`Request`,className:`wl-svc-wide`,cell:e=>(0,W.jsxs)(`span`,{className:`wl-truncate`,title:`${e.method} ${e.path}`,children:[e.method,` `,e.path]})},{key:`status`,header:`Status`,cell:e=>(0,W.jsx)(Hb,{tone:Bb(e.status),colorText:(e.status??0)>=500,children:e.aborted?`Aborted`:e.status??`…`})},{key:`duration`,header:`Duration`,num:!0,sort:e=>e.durationMs,cell:e=>(0,W.jsx)(`span`,{className:Ln(e)?`wl-text-error`:void 0,children:q(e.durationMs)})}];function wN({m:e,name:t}){let n=jx(`requests`,e.slowest,Nx),r=e.requestCount>0&&(0,W.jsx)(pb,{href:S(`requests`,[],{service:t,sort:`duration`}),label:`View all ${J(e.requestCount)}`});return(0,W.jsx)(G,{title:`Slowest Requests`,action:r,flush:!0,children:(0,W.jsx)(Q,{columns:Lx(CN,`path`,n),rows:e.slowest,rowKey:e=>e.traceId,onRowClick:e=>T(y(e.traceId)),empty:(0,W.jsx)(K,{title:`No requests`,children:`No request went through this service in this range.`})})})}var TN=gA.filter(e=>e.key!==`service`).map(e=>e.key===`category`?{...e,cell:e=>(0,W.jsx)(`span`,{className:`wl-truncate`,title:e.category,children:e.category})}:e);function EN({m:e,name:t}){let{total:n,warnings:r,errors:i,rows:a}=e.logs,o=jx(`logs`,a,Px),s=(0,W.jsxs)(`span`,{className:`wl-row-actions`,children:[n>0&&(0,W.jsxs)(`span`,{className:`wl-muted wl-small`,children:[J(r),` warnings · `,J(i),` errors`]}),(0,W.jsx)(pb,{href:S(`logs`,[],{service:t}),label:n>0?`View all ${J(n)}`:`View logs`})]});return(0,W.jsx)(G,{title:`Recent Logs`,action:s,flush:!0,className:`wl-svc-logs`,children:(0,W.jsx)(Q,{columns:Lx(TN,`message`,o),rows:a,rowKey:e=>e.key,empty:(0,W.jsx)(K,{title:`No log lines`,children:`Lines this service writes through WizeLens loggers show up here.`})})})}function DN({name:e}){let{model:t}=eD({service:e}),n=t?.runtime.find(t=>t.service===e)?.stats??[];return n.length===0?null:(0,W.jsx)(G,{title:`Runtime`,action:(0,W.jsx)(pb,{href:S(`metrics`,[],{service:e}),label:`View metrics`}),className:`wl-svc-runtime`,children:(0,W.jsx)(`div`,{className:`wl-metric-tiles`,children:n.map(t=>(0,W.jsxs)(`a`,{className:`wl-metric-tile`,href:S(`metrics`,[],{metric:t.metric,service:e}),title:t.metric,children:[(0,W.jsx)(`span`,{children:t.label}),(0,W.jsx)(`strong`,{children:t.lastText}),(0,W.jsx)(cD,{values:t.spark,width:240,height:28,stretch:!0})]},t.key))})})}var ON=(e,t)=>{let n=e[e.indexOf(t)+1];return!!n&&t.requests>0&&n.requests>0&&t.errorRate>n.errorRate};function kN(e){return[{key:`version`,header:`Version`,cell:t=>(0,W.jsxs)(`span`,{className:`wl-cell-icon`,children:[(0,W.jsx)(`span`,{className:`wl-mono`,children:t.version}),t===e[0]&&(0,W.jsx)(Y,{tone:`info`,children:`Latest`})]})},{key:`first`,header:`Released`,className:`wl-nowrap`,cell:e=>Ob(e.firstMs)},{key:`requests`,header:`Requests`,num:!0,cell:e=>J(e.requests)},{key:`rate`,header:`Error Rate`,num:!0,cell:t=>t.requests?(0,W.jsx)(`span`,{className:ON(e,t)?`wl-text-error`:void 0,children:yb(t.errorRate*100)}):`–`},{key:`p95`,header:`p95`,num:!0,cell:e=>e.p95Ms===null?`–`:q(e.p95Ms)},{key:`new`,header:`New Errors`,num:!0,cell:e=>e.newErrors?(0,W.jsx)(`span`,{className:`wl-text-error`,children:J(e.newErrors)}):`0`}]}function AN({m:e,name:t}){return(0,W.jsx)(G,{title:`Versions (${J(e.versions.length)})`,flush:!0,children:(0,W.jsx)(Q,{columns:kN(e.versions),rows:e.versions,rowKey:e=>e.version,onRowClick:e=>T(S(`errors`,[],{service:t,release:e.version,status:`all`})),empty:(0,W.jsxs)(K,{title:`No versions seen`,children:[`Set the app's version on the add-on (the `,(0,W.jsx)(`code`,{children:`release`}),` option or `,(0,W.jsx)(`code`,{children:`WIZELENS_RELEASE`}),`) to compare releases here.`]})})})}var jN=new Set([`api`,`web`,`database`,`external`]);function MN({id:e}){return(0,W.jsxs)(G,{children:[(0,W.jsxs)(`a`,{className:`wl-back`,href:S(`services`),children:[(0,W.jsx)(y_,{size:14,"aria-hidden":`true`}),` All services`]}),(0,W.jsx)(K,{title:`${e} did nothing in this time range`,children:`Pick a longer time range at the top, or open another service.`})]})}function NN({m:e,row:t}){let{updatedMs:n}=Se(),r=cN(t.name,e.owned);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(uN,{row:t,groups:r}),(0,W.jsx)(iN,{m:e,row:t}),(0,W.jsxs)(`div`,{className:`wl-grid wl-grid-2-even`,children:[(0,W.jsx)(aN,{m:e,row:t}),(0,W.jsx)(oN,{m:e})]}),jN.has(t.kind)&&(0,W.jsx)(_N,{m:e,row:t}),e.owned&&(0,W.jsxs)(`div`,{className:`wl-grid wl-grid-2-even`,children:[(0,W.jsx)(SN,{m:e,name:t.name}),(0,W.jsx)(wN,{m:e,name:t.name})]}),(0,W.jsxs)(`div`,{className:`wl-grid wl-grid-2-even`,children:[(0,W.jsx)(yN,{title:`Called By`,edges:e.incoming,side:`from`,empty:`Nothing called this service in this range.`}),(0,W.jsx)(yN,{title:`Calls`,edges:e.outgoing,side:`to`,empty:`This service called nothing in this range.`})]}),e.owned&&(0,W.jsx)(AN,{m:e,name:t.name}),e.owned&&(0,W.jsx)(EN,{m:e,name:t.name}),e.owned&&(0,W.jsx)(DN,{name:t.name}),e.owned&&(0,W.jsx)(tN,{name:t.name}),r.map(e=>(0,W.jsx)(kM,{group:e,now:n},e.key))]})}function PN({id:e}){let{model:t,loading:n,error:r}=hT(`service`,{service:e});return(0,W.jsxs)(`div`,{className:`wl-svc-page`,children:[(0,W.jsx)(ID,{model:t,loading:n,error:r,what:`this service`}),t&&(t.row?(0,W.jsx)(NN,{m:t,row:t.row}):(0,W.jsx)(MN,{id:e}))]})}var FN=190,IN=46,LN=110,RN=22;function zN(e,t){let n=new Map(e.map(e=>[e.name,0]));for(let r=0;r<e.length;r++){let r=!1;for(let i of t){let t=(n.get(i.from)??0)+1;i.from!==i.to&&n.has(i.to)&&t>n.get(i.to)&&t<e.length&&(n.set(i.to,t),r=!0)}if(!r)break}return n}function BN(e,t){let n=zN(e,t),r=new Map;for(let t of e)r.set(n.get(t.name),[...r.get(n.get(t.name))??[],t]);let i=new Map,a=0;for(let[e,t]of r)a=Math.max(a,t.length),t.forEach((t,n)=>i.set(t.name,{row:t,x:e*300,y:n*68}));let o=Math.max(1,...[...r.keys()].map(e=>e+1));return{nodes:i,width:o*FN+(o-1)*LN,height:a*68-RN}}function VN({edge:e,a:t,b:n}){let r=t.x+FN,i=t.y+IN/2,a=n.x,o=n.y+IN/2,s=(r+a)/2,c=e.calls?e.errors/e.calls*100:0,l=[J(e.calls),e.p95Ms==null?q(e.avgMs):`p95 ${q(e.p95Ms)}`,...e.errors?[`${yb(c)} failed`]:[]].join(` · `);return(0,W.jsxs)(`g`,{className:e.errors?`wl-dep-edge wl-failing`:`wl-dep-edge`,onClick:()=>T(RS(e.to)),role:`link`,"aria-label":`Open ${e.to}`,children:[(0,W.jsx)(`title`,{children:`${e.from} → ${e.to}: ${l}`}),(0,W.jsx)(`path`,{d:`M${r},${i} C${s},${i} ${s},${o} ${a},${o}`,fill:`none`}),(0,W.jsx)(`path`,{className:`wl-dep-hit`,d:`M${r},${i} C${s},${i} ${s},${o} ${a},${o}`,fill:`none`}),(0,W.jsx)(`text`,{x:s,y:(i+o)/2-6,textAnchor:`middle`,children:l})]})}function HN({p:e,selected:t}){let r=PS[e.row.kind];return(0,W.jsxs)(`g`,{className:`wl-dep-node${t?` wl-selected`:``}`,transform:`translate(${e.x},${e.y})`,onClick:()=>n({service:e.row.key}),role:`button`,"aria-label":`Show ${e.row.name}`,children:[(0,W.jsx)(`rect`,{width:FN,height:IN,rx:`10`}),(0,W.jsx)(`foreignObject`,{x:`10`,y:`0`,width:170,height:IN,children:(0,W.jsxs)(`div`,{className:`wl-dep-label`,children:[(0,W.jsx)(r,{size:16,"aria-hidden":!0}),(0,W.jsx)(`span`,{className:`wl-truncate`,children:e.row.name}),(0,W.jsx)(`i`,{className:`wl-dot wl-tone-${LS(e.row.status)}`})]})})]})}function UN({rows:e,edges:t,selectedKey:n}){if(e.length===0)return(0,W.jsx)(K,{children:`No calls recorded in this range.`});let{nodes:r,width:i,height:a}=BN(e,t);return(0,W.jsx)(`div`,{className:`wl-dep-map`,children:(0,W.jsxs)(`svg`,{width:i,height:a+8,viewBox:`0 -4 ${i} ${a+8}`,role:`img`,"aria-label":`Service dependency map`,children:[t.map(e=>{let t=r.get(e.from),n=r.get(e.to);return t&&n&&t!==n?(0,W.jsx)(VN,{edge:e,a:t,b:n},`${e.from}→${e.to}`):null}),[...r.values()].map(e=>(0,W.jsx)(HN,{p:e,selected:e.row.key===n},e.row.key))]})})}function WN({ask:e,onClose:t}){let n=(0,E.useRef)(null),[r,i]=(0,E.useState)(e.input?.initial??``),a=(0,E.useRef)(t);a.current=t,(0,E.useEffect)(()=>{let e=n.current;e?.showModal();let t=e=>(e.preventDefault(),a.current(null));return e?.addEventListener(`cancel`,t),()=>e?.removeEventListener(`cancel`,t)},[]);let o=e.typeToConfirm?r===e.typeToConfirm:!e.input||r.trim()!==``,s=n=>{n.preventDefault(),o&&t(e.input?e.input.password?r:r.trim():`yes`)},c=e.typeToConfirm!==void 0||e.input!==void 0;return(0,W.jsx)(`dialog`,{ref:n,className:`wl-dialog`,"aria-labelledby":`wl-dialog-${e.id}`,onClick:e=>e.target===n.current&&t(null),onKeyDown:e=>e.key===`Escape`&&(e.preventDefault(),t(null)),children:(0,W.jsxs)(`form`,{onSubmit:s,children:[(0,W.jsx)(`h2`,{id:`wl-dialog-${e.id}`,children:e.title}),e.body&&(0,W.jsx)(`div`,{className:`wl-dialog-body`,children:e.body}),c&&(0,W.jsx)(Z,{label:e.input?.label??`Type ${e.typeToConfirm} to confirm`,value:r,onChange:e=>i(e.target.value),autoFocus:!0,type:e.input?.password?`password`:`text`,autoComplete:e.input?.password?`current-password`:`off`}),(0,W.jsxs)(`div`,{className:`wl-dialog-actions`,children:[(0,W.jsx)(`button`,{type:`button`,className:`wl-btn`,onClick:()=>t(null),children:`Cancel`}),(0,W.jsx)(`button`,{type:`submit`,className:`wl-btn ${e.danger?`wl-btn-danger`:`wl-btn-primary`}`,disabled:!o,autoFocus:!c,children:e.confirmLabel})]})]})})}var GN=1;function KN(){let[e,t]=(0,E.useState)(null),n=e=>new Promise(n=>t({...e,id:GN++,resolve:n}));return{dialog:e&&(0,W.jsx)(WN,{ask:e,onClose:n=>{e?.resolve(n),t(null)}},e.id),confirm:async e=>await n(e)!==null,prompt:e=>n(e)}}var qN={viewer:`Viewer`,member:`Member`,admin:`Admin`,owner:`Owner`},JN={viewer:`Reads all data.`,member:`Reads data, and makes alerts and share links.`,admin:`Also manages projects, keys, members, and single sign-on.`,owner:`Everything, including other owners and deleting the organization.`},YN=[`viewer`,`member`,`admin`,`owner`].map(e=>[e,qN[e]]),XN=e=>e===`owner`||e===`admin`,ZN=e=>e.online>0?`Online`:f(e.newest),QN=e=>e.instances.length===1?`1`:`${J(e.online)} of ${J(e.instances.length)} online`;function $N(e){return[{key:`service`,header:`Service`,cell:e=>(0,W.jsx)(`strong`,{children:e.service}),sort:e=>e.service},{key:`status`,header:`Status`,cell:e=>(0,W.jsx)(Hb,{tone:e.online>0?`success`:`neutral`,children:ZN(e)}),sort:e=>e.online>0?0:1},{key:`project`,header:`Project`,cell:e=>e.project??`–`,sort:e=>e.project??``},{key:`env`,header:`Environment`,cell:e=>e.environment??`–`,sort:e=>e.environment??``},{key:`hosts`,header:`Hosts`,cell:QN,sort:e=>-e.instances.length},{key:`via`,header:`Sends with`,cell:e=>(0,W.jsx)(Y,{tone:e.newest.via===`addon`?`info`:`neutral`,children:t[e.newest.via]})},{key:`runtime`,header:`Runtime`,cell:e=>(0,W.jsx)(`span`,{className:`wl-muted wl-small`,children:e.newest.runtime??`–`}),className:`wl-hide-sm`},{key:`seen`,header:`Last seen`,cell:t=>Nb(t.newest.lastSeenMs,e),sort:e=>-e.newest.lastSeenMs}]}function eP(e){let[t]=b(),n=Me(Ce())?.org.role,r=H().has(`accounts`),{dialog:i,confirm:a}=KN(),[o,s]=(0,E.useState)(null),c=async()=>{if(!await a({title:`Forget offline hosts?`,body:`Hosts that are offline leave this list. Each service keeps its newest host. Traces stay, and a host that sends again comes back.`,confirmLabel:`Forget hosts`}))return;let e=0,n=await Bx(async()=>e=(await x(`POST`,`./api/projects/${t}/services/forget`)).removed,()=>m.refresh());s(n??`Forgot ${J(e)} offline ${e===1?`host`:`hosts`}.`)};return{button:r&&t&&XN(n)&&e>0?(0,W.jsx)(`button`,{type:`button`,className:`wl-link-btn`,onClick:()=>void c(),children:`Forget offline hosts`}):null,dialog:i,note:o}}function tP(){let{registry:e,updatedMs:t}=Se(),[n]=ee(),[r]=b(),i=H().has(`accounts`),[a,o]=(0,E.useState)(null),s=nt((e?.services??[]).filter(e=>xe(e,{env:n,project:r},!i))),c=eP(s.reduce((e,t)=>e+t.instances.slice(1).filter(e=>!e.online).length,0));if(!e)return null;let l=s.find(e=>e.key===a),u=s.filter(e=>e.online>0).length,d=`Sending to this ${i?`project`:`hub`} (${u} of ${s.length} online)`,f=(0,W.jsxs)(`span`,{className:`wl-row-actions`,children:[c.button,(0,W.jsxs)(`span`,{className:`wl-muted wl-small`,children:[J(e.traces),` traces kept`]})]});return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(G,{title:d,flush:!0,action:f,children:[c.note&&(0,W.jsx)(`div`,{className:`wl-banner wl-banner-info wl-panel-banner`,children:c.note}),(0,W.jsx)(Q,{columns:$N(t),rows:s,rowKey:e=>e.key,onRowClick:e=>o(e.key===a?null:e.key),selectedKey:a,defaultSort:{key:`status`,desc:!1},empty:(0,W.jsxs)(K,{title:`No service has sent data yet`,children:[(0,W.jsx)(`a`,{href:`#/settings/connect`,children:`Connect one`}),` in Settings.`]})}),c.dialog]}),l&&(0,W.jsx)(kM,{group:l,now:t,onClose:()=>o(null)},l.key)]})}function nP({items:e,row:t}){let n=t.kind,r=Mx(),i=e=>n===`api`||n===`worker`?r(`endpoints`,jg(t.name,e.name)):[];return e.length===0?(0,W.jsx)(K,{children:`Nothing recorded in this range.`}):(0,W.jsxs)(`table`,{className:`wl-table wl-svc-endpoints`,children:[(0,W.jsx)(`thead`,{children:(0,W.jsxs)(`tr`,{children:[(0,W.jsx)(`th`,{children:n===`database`?`Query`:n===`external`?`Call`:`Endpoint`}),(0,W.jsx)(`th`,{className:`wl-num`,children:`Count`}),(0,W.jsx)(`th`,{className:`wl-num`,children:`Avg`})]})}),(0,W.jsx)(`tbody`,{children:e.map(e=>(0,W.jsxs)(`tr`,{children:[(0,W.jsxs)(`td`,{className:`wl-mono wl-small wl-wrap`,children:[e.name,e.errors>0&&(0,W.jsxs)(`span`,{className:`wl-text-error`,children:[` · `,e.errors,` failed`]}),(0,W.jsx)(Ix,{tags:i(e)})]}),(0,W.jsx)(`td`,{className:`wl-num`,children:J(e.count)}),(0,W.jsx)(`td`,{className:`wl-num`,children:q(e.avgMs)})]},e.name))})]})}function rP({title:e,edges:t,side:r}){return t.length===0?null:(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{className:`wl-section-title`,children:e}),(0,W.jsx)(`ul`,{className:`wl-svc-edges`,children:t.map(e=>(0,W.jsxs)(`li`,{children:[(0,W.jsx)(`button`,{type:`button`,className:`wl-link-btn`,onClick:()=>n({service:e[r]}),children:e[r]}),(0,W.jsxs)(`span`,{className:`wl-muted`,children:[J(e.calls),` calls · `,q(e.avgMs),e.errors?` · ${e.errors} failed`:``]})]},`${e.from}→${e.to}`))})]})}function iP({detail:e}){let{row:t,endpoints:r,incoming:i,outgoing:a}=e;return(0,W.jsxs)(G,{title:(0,W.jsxs)(`div`,{className:`wl-side-head`,children:[(0,W.jsx)(`h2`,{children:(0,W.jsx)(VS,{row:t})}),(0,W.jsx)(`button`,{type:`button`,className:`wl-icon-btn`,onClick:()=>n({service:null}),"aria-label":`Close details`,children:(0,W.jsx)(sb,{size:18})})]}),className:`wl-svc-detail`,children:[(0,W.jsx)(mb,{rows:[[`Kind`,FS[t.kind]],[`Status`,(0,W.jsx)(BS,{status:t.status})],[`Requests`,J(t.requests)],[`Errors`,`${J(t.errors)} (${yb(t.errorRate)})`],[`Avg latency`,q(t.avgMs)],[`p95 latency`,q(t.p95Ms)],...t.detail?[[`Detail`,t.detail]]:[]]}),(0,W.jsxs)(`a`,{className:`wl-btn wl-btn-primary-outline wl-svc-full`,href:RS(t.key),children:[(0,W.jsx)(pv,{"aria-hidden":`true`}),` View full service`]}),(0,W.jsx)(`div`,{className:`wl-section-title`,children:`Traffic`}),(0,W.jsx)(eE,{starts:e.starts,bars:[{label:`Requests`,values:e.traffic,color:`var(--wl-blue)`}],height:140}),(0,W.jsx)(`div`,{className:`wl-section-title`,children:t.kind===`database`?`Busiest queries`:`Busiest endpoints`}),(0,W.jsx)(nP,{items:r,row:t}),(0,W.jsx)(rP,{title:`Called by`,edges:i,side:`from`}),(0,W.jsx)(rP,{title:`Calls`,edges:a,side:`to`})]})}function aP({m:e}){let{summary:t,prevSummary:n}=e,r=e.meta.compareLabel,i=(t,n)=>e.meta.hasPrev?le(t,n):null;return(0,W.jsxs)(`div`,{className:`wl-grid wl-grid-stats`,children:[(0,W.jsx)($,{icon:F_,label:`Services`,value:J(t.apis),change:i(t.apis,n.apis),upIsGood:!0,compareLabel:r}),(0,W.jsx)($,{icon:lv,label:`Databases`,value:J(t.databases),change:i(t.databases,n.databases),upIsGood:!0,compareLabel:r}),(0,W.jsx)($,{icon:Tv,label:`Requests Served`,value:J(t.served),change:i(t.served,n.served),upIsGood:!0,compareLabel:r,series:e.served}),(0,W.jsx)($,{icon:Zy,label:`Error Rate`,value:yb(t.errorRate),change:i(t.errorRate,n.errorRate),upIsGood:!1,compareLabel:r,series:e.failed,danger:!0})]})}function oP({m:e}){let t=e.selected;return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(aP,{m:e}),(0,W.jsxs)(`div`,{className:`wl-grid${t?` wl-grid-side`:``}`,children:[(0,W.jsx)(G,{title:`Services (${e.rows.length})`,flush:!0,children:(0,W.jsx)(US,{rows:e.rows,selectedKey:t?.row.key??null})}),t&&(0,W.jsx)(iP,{detail:t})]}),(0,W.jsx)(tP,{}),(0,W.jsx)(G,{title:`Dependencies`,children:(0,W.jsx)(UN,{rows:e.rows,edges:e.edges,selectedKey:t?.row.key??null})})]})}function sP(){let{model:e,loading:t,error:n}=hT(`services`);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(fb,{title:`Services`,subtitle:`Every service and database in your stack, how healthy it is, and what it talks to.`}),(0,W.jsx)(ID,{model:e,loading:t,error:n,what:`services`}),e&&(0,W.jsx)(oP,{m:e})]})}function cP(){let[e,t,n]=i().params;return e&&t===`endpoints`&&n?(0,W.jsx)(DM,{service:zS(e),endpoint:zS(n)},`${e}/${n}`):e?(0,W.jsx)(PN,{id:zS(e)},e):(0,W.jsx)(sP,{})}function lP(e){let t=Nn(e);return t?zb(t.health):e.status===`error`?`danger`:`success`}function uP({item:e,selected:t,tags:r}){return(0,W.jsxs)(`tr`,{className:`wl-clickable${t?` wl-selected`:``}`,onClick:()=>n({trace:e.traceId}),children:[(0,W.jsx)(`td`,{children:(0,W.jsx)(`a`,{href:S(`traces`,[],{trace:e.traceId}),className:`wl-mono`,onClick:e=>e.stopPropagation(),children:Fb(e.traceId)})}),(0,W.jsx)(`td`,{className:`wl-wrap`,children:(0,W.jsxs)(`span`,{className:`wl-tagged`,children:[(0,W.jsx)(`span`,{children:e.path}),(0,W.jsx)(Ix,{tags:r})]})}),(0,W.jsx)(`td`,{className:`wl-num`,children:q(e.durationMs)}),(0,W.jsx)(`td`,{className:`wl-num`,children:(0,W.jsx)(Vb,{tone:e.health?zb(e.health):e.status===`error`?`danger`:`success`,title:e.status})})]})}function dP({items:e,total:t,page:r,size:a,selectedId:o}){let s=i().query.get(`q`)??``,c=jx(`traces`,e,Nx);return(0,W.jsxs)(G,{title:`Traces (${J(t)})`,action:(0,W.jsxs)(`span`,{className:`wl-row-actions`,children:[(0,W.jsx)(jO,{page:`traces`,disabled:t===0}),(0,W.jsx)(pb,{href:S(`requests`,[],{q:s}),label:`View requests`})]}),children:[(0,W.jsx)(sA,{value:s,reset:{trace:null},placeholder:`ID, path, or service; or service:api duration:>2s`}),e.length===0?(0,W.jsx)(K,{children:s&&t===0?`No traces match.`:`No traces in this time range yet.`}):(0,W.jsx)(`div`,{className:`wl-table-wrap wl-recent-traces`,children:(0,W.jsxs)(`table`,{className:`wl-table`,children:[(0,W.jsx)(`thead`,{children:(0,W.jsxs)(`tr`,{children:[(0,W.jsx)(`th`,{children:`Trace ID`}),(0,W.jsx)(`th`,{children:`Path`}),(0,W.jsx)(`th`,{className:`wl-num`,children:`Duration`}),(0,W.jsx)(`th`,{className:`wl-num`,children:`Status`})]})}),(0,W.jsx)(`tbody`,{children:e.map(e=>(0,W.jsx)(uP,{item:e,selected:e.traceId===o,tags:c(e)},e.traceId))})]})}),t>a&&(0,W.jsx)(Yb,{page:r,pageSize:a,total:t,noun:`traces`,onPage:e=>n({page:e}),onPageSize:e=>n({size:e,page:null})})]})}var fP={browser:ty,network:jv,routing:jy,handler:rv,service:F_,queue:zv,database:lv,external:pv,render:ly},pP=e=>Array.from({length:7},(t,n)=>e/6*n);function mP({layer:e,max:t}){let n=fP[e.kind],r=e.segments[e.segments.length-1],i=r?(r.startMs+r.durationMs)/t*100:0;return(0,W.jsxs)(`div`,{className:`wl-layer-row`,children:[(0,W.jsxs)(`div`,{className:`wl-layer-name`,title:e.label,children:[(0,W.jsx)(n,{size:17,"aria-hidden":!0}),(0,W.jsx)(`span`,{className:`wl-truncate`,children:e.label})]}),(0,W.jsxs)(`div`,{className:`wl-layer-track`,children:[e.segments.map((n,r)=>(0,W.jsx)(`i`,{className:`wl-layer-bar wl-layer-${e.kind}`,style:{left:`${n.startMs/t*100}%`,width:`max(3px, ${n.durationMs/t*100}%)`}},r)),(0,W.jsx)(`span`,{className:`wl-layer-ms`,style:i>82?{right:`${100-i+1}%`}:{left:`calc(${i}% + 8px)`},children:q(e.totalMs)})]})]})}function hP({trace:e}){let t=e.rootStatusCode;return(0,W.jsxs)(`div`,{className:`wl-timeline-meta`,children:[(0,W.jsx)(`span`,{className:`wl-mono`,children:`${e.rootMethod??``} ${qo(e)}`.trim()}),t!=null&&(0,W.jsx)(Y,{tone:Bb(t),children:t}),(0,W.jsx)(`span`,{className:`wl-chip`,children:q(ti(e))}),(0,W.jsxs)(`span`,{className:`wl-chip`,children:[e.spanCount,` spans`]}),(0,W.jsx)(`span`,{className:`wl-muted`,children:Ob(e.startMs)}),(0,W.jsxs)(`a`,{className:`wl-view-all`,href:y(e.traceId),children:[`Open trace `,(0,W.jsx)(pv,{size:14,"aria-hidden":`true`})]})]})}function gP({trace:e}){if(!e)return(0,W.jsx)(G,{title:`Trace Timeline`,children:(0,W.jsx)(K,{children:`Select a trace to see where its time went.`})});let t=Qr(e),n=NT(Math.max(1,...t.flatMap(e=>e.segments.map(e=>e.startMs+e.durationMs)))),r=(0,W.jsxs)(`h2`,{className:`wl-timeline-title`,children:[`Trace Timeline `,(0,W.jsx)(Vb,{tone:lP(e)}),(0,W.jsx)(`span`,{className:`wl-mono wl-muted wl-small`,children:e.traceId}),(0,W.jsx)(Kb,{text:e.traceId,label:`Copy trace id`})]});return(0,W.jsxs)(G,{title:r,children:[(0,W.jsx)(hP,{trace:e}),(0,W.jsxs)(`div`,{className:`wl-layers`,children:[(0,W.jsxs)(`div`,{className:`wl-layer-row wl-layer-axis`,"aria-hidden":`true`,children:[(0,W.jsx)(`div`,{}),(0,W.jsx)(`div`,{className:`wl-layer-track`,children:pP(n).map(e=>(0,W.jsx)(`span`,{style:{left:`${e/n*100}%`},children:q(e)},e))})]}),t.length===0?(0,W.jsx)(K,{children:`This trace has no spans.`}):t.map(e=>(0,W.jsx)(mP,{layer:e,max:n},e.key))]})]})}var _P=[[``,`All Statuses`],[`error`,`Failed`],[`ok`,`Succeeded`]],vP=[[`time`,`Newest first`],[`duration`,`Slowest first`]];function yP({filter:e}){let t=e=>t=>n({[e]:t||null,page:null});return(0,W.jsxs)(`section`,{className:`wl-panel wl-filters`,children:[(0,W.jsx)(dD,{value:e.service}),(0,W.jsx)(X,{label:`Status`,value:e.status,onChange:t(`status`),options:_P}),(0,W.jsx)(X,{label:`Duration`,value:e.duration,onChange:t(`duration`),options:mo}),(0,W.jsx)(X,{label:`Order`,value:e.sort,onChange:t(`sort`),options:vP}),(0,W.jsxs)(`button`,{type:`button`,className:`wl-btn`,onClick:()=>n({status:null,duration:null,sort:null,q:null,page:null}),children:[(0,W.jsx)(yy,{"aria-hidden":`true`}),` Reset`]})]})}function bP(e,t){return(t.find(t=>t.info?.service===e.service)??t.find(e=>e.self))?.info??null}function xP(e){let t=e.rootStatusCode;return t==null?e.status===`error`?`Error`:`OK`:t>=400?`${t} Error`:`${t} OK`}function SP({trace:e,sources:t}){if(!e)return(0,W.jsx)(G,{title:`Trace Attributes`,children:(0,W.jsx)(K,{children:`No trace selected.`})});let n=w(e.spans),r=Ae(e.spans),i=bP(e,t),a=r?.attributes[`user_agent.original`],o=[[`Trace ID`,(0,W.jsx)(`span`,{className:`wl-mono wl-small`,children:e.traceId})],[`Parent ID`,n?.parentSpanId??`—`],[`Span Count`,e.spanCount],[`Start Time`,`${Db(e.startMs)} ${Eb(e.startMs)}`],[`Duration`,q(ti(e))],[`Status`,(0,W.jsx)(Hb,{tone:lP(e),children:xP(e)})],[`Method`,e.rootMethod??`—`],[`Path`,qo(e)],[`User Agent`,a==null?`—`:String(a)],[`Environment`,i?.environment??`—`],[`Host`,i?.host??`—`]];return(0,W.jsx)(G,{title:`Trace Attributes`,action:(0,W.jsx)(Kb,{text:JSON.stringify({traceId:e.traceId,rootName:e.rootName,services:e.services},null,2),label:`Copy attributes`}),children:(0,W.jsx)(mb,{rows:o})})}var CP={browser:`var(--wl-blue)`,network:`#93c5fd`,routing:`var(--wl-violet)`,handler:`var(--wl-green)`,service:`var(--wl-blue)`,queue:`var(--wl-violet)`,database:`var(--wl-red)`,external:`var(--wl-orange)`,render:`#38bdf8`,owner:`var(--wl-blue)`},wP=100;function TP({data:e}){let[t,n]=(0,E.useState)(`layer`),r=e[t],i=r.map(e=>e.key),a=r.map(e=>({key:e.key,label:(0,W.jsxs)(`span`,{className:`wl-dot-text`,children:[(0,W.jsx)(`i`,{className:`wl-dot`,style:{background:EP(e.kind,e.key,i)}}),e.label]}),value:e.totalMs,share:yb(e.share),display:q(e.totalMs),color:EP(e.kind,e.key,i)}));return(0,W.jsx)(G,{title:`Bottleneck Distribution`,action:(0,W.jsx)(X,{small:!0,label:`Group by`,value:t,options:[[`layer`,`By layer`],[`service`,`By service`]],onChange:n}),children:a.length===0?(0,W.jsx)(K,{children:`No timed spans in this range.`}):(0,W.jsx)(aO,{compact:!0,items:a})})}function EP(e,t,n){return e===`owner`?`var(--wl-s${Pb(t,n)})`:CP[e]}function DP({critical:e}){let[t,n]=(0,E.useState)(!1),r=e.slice(0,t?25:6),i=[...new Set(r.map(e=>e.service))],a=e.length>6&&(0,W.jsx)(`button`,{type:`button`,className:`wl-view-all wl-link-btn`,onClick:()=>n(!t),children:t?`Show fewer`:`View all ${e.length}`});return(0,W.jsx)(G,{title:`Critical Spans`,action:a,children:(0,W.jsx)(Q,{rows:r,rowKey:e=>`${e.traceId}:${e.spanId}`,onRowClick:e=>T(y(e.traceId)),empty:(0,W.jsx)(K,{children:`No spans below the request roots yet.`}),columns:[{key:`span`,header:`Span`,cell:e=>(0,W.jsx)(`span`,{className:`wl-mono wl-small`,children:e.name}),className:`wl-wrap`},{key:`service`,header:`Service`,cell:e=>(0,W.jsxs)(`span`,{className:`wl-dot-text`,children:[(0,W.jsx)(`i`,{className:`wl-dot`,style:{background:`var(--wl-s${Pb(e.service,i)})`}}),e.layer===e.service?e.service:`${e.service} · ${e.layer}`]})},{key:`ms`,header:`Duration`,num:!0,cell:e=>(0,W.jsx)(`span`,{className:e.durationMs>=wP?`wl-text-tone-danger`:`wl-text-tone-warning`,children:q(e.durationMs)})}]})})}function OP({m:e}){let{cur:t,prev:n,insights:r,prevInsights:i,insightSeries:a}=e.cards,o=e.meta.compareLabel,s=(t,n)=>e.meta.hasPrev?le(t,n):null;return(0,W.jsxs)(`div`,{className:`wl-grid wl-grid-stats`,children:[(0,W.jsx)($,{icon:Vv,label:`Selected Traces`,value:J(t.count),change:s(t.count,n.count),upIsGood:!0,compareLabel:o,series:t.series.count}),(0,W.jsx)($,{icon:tv,label:`Avg Span Count`,value:t.avgSpans===null?`–`:t.avgSpans.toFixed(0),change:s(t.avgSpans,n.avgSpans),upIsGood:!0,compareLabel:o,series:t.series.avgSpans}),(0,W.jsx)($,{icon:Zy,label:`Slow Traces`,href:S(`traces`,[],{duration:`slowest`,sort:`duration`}),value:J(t.slow),change:s(t.slow,n.slow),upIsGood:!1,compareLabel:o,series:t.series.slow,danger:!0}),(0,W.jsx)($,{icon:Gv,label:`Bottleneck Insights`,href:S(`insights`),value:J(r),change:s(r,i),upIsGood:!1,compareLabel:o,series:a})]})}function kP({m:e}){let t=Se();return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(yP,{filter:e.filter}),(0,W.jsx)(OP,{m:e}),(0,W.jsxs)(`div`,{className:`wl-grid wl-traces-top`,children:[(0,W.jsx)(dP,{items:e.recent,total:e.matching,page:e.page,size:e.size,selectedId:e.selected?.traceId??null}),(0,W.jsx)(gP,{trace:e.selected})]}),(0,W.jsxs)(`div`,{className:`wl-grid wl-grid-3`,children:[(0,W.jsx)(TP,{data:e.bottlenecks}),(0,W.jsx)(DP,{critical:e.critical}),(0,W.jsx)(SP,{trace:e.selected,sources:t.sources})]})]})}function AP(){let{model:e,loading:t,error:n}=hT(`traces`);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(fb,{title:`Traces`,subtitle:`Follow requests across browser, API, database, and rendering to understand performance end-to-end.`}),(0,W.jsx)(ID,{model:e,loading:t,error:n,what:`traces`}),e&&(0,W.jsx)(kP,{m:e})]})}var jP={overview:()=>(0,W.jsx)(rj,{}),requests:()=>(0,W.jsx)(yM,{}),errors:()=>(0,W.jsx)(Fk,{}),error:e=>(0,W.jsx)(_k,{group:e.group??``}),database:()=>(0,W.jsx)(qO,{}),query:e=>(0,W.jsx)(_O,{query:e.q??``}),logs:()=>(0,W.jsx)(FA,{}),insights:()=>(0,W.jsx)(Zk,{}),rendering:()=>(0,W.jsx)(Oj,{}),route:e=>(0,W.jsx)(cj,{route:e.route??``}),services:()=>(0,W.jsx)(sP,{}),service:e=>(0,W.jsx)(PN,{id:e.service??``}),endpoint:e=>(0,W.jsx)(DM,{service:e.service??``,endpoint:e.endpoint??``}),traces:()=>(0,W.jsx)(AP,{})};function MP({page:e,params:t,model:n}){let r=jP[e];return(0,W.jsx)(Pw.Provider,{value:{page:e,model:n},children:r?r(t):null})}function NP({token:e}){let[t,n]=(0,E.useState)(null),[r,i]=(0,E.useState)(null);(0,E.useEffect)(()=>{ne(`./api/shared/${e}`).then(e=>n(`trace`in e?{trace:ie(e.trace.traceId,[e.trace]),expiresMs:e.expiresMs}:e),e=>i(e instanceof Error?e.message:String(e)))},[e]);let a=t?`trace`in t?`Shared trace`:`${t.title} · as of ${Ob(t.createdMs)}`:`Shared link`;return(0,W.jsxs)(`div`,{className:`wl-shared`,children:[(0,W.jsxs)(`header`,{className:`wl-shared-head`,children:[(0,W.jsx)(`span`,{className:`wl-brand-row`,children:(0,W.jsx)(iO,{})}),(0,W.jsx)(`span`,{className:`wl-muted wl-small`,children:t?`${a} · link works until ${Db(t.expiresMs)}`:a})]}),(0,W.jsx)(`main`,{className:`wl-page`,children:t?`trace`in t?(0,W.jsx)(wC,{trace:t.trace,shared:!0}):(0,W.jsx)(MP,{page:t.page,params:t.params,model:t.model}):(0,W.jsx)(G,{children:(0,W.jsx)(K,{title:r?`This link does not work`:`Loading…`,children:r})})})]})}function PP(e){return e==null||!Number.isFinite(e)?`–`:e>=100?`100%`:`${(Math.floor(e*100)/100).toFixed(2)}%`}function FP(e){return e.enabled?e.state===`down`?{label:`Down`,tone:`danger`,rank:0}:e.state===`pending`?{label:`Pending`,tone:`info`,rank:1}:{label:`Up`,tone:`success`,rank:2}:{label:`Off`,tone:`neutral`,rank:3}}var IP=(e,t)=>e?.checks.find(e=>e.checkId===t);function LP(e){let t=Math.floor(e/6e4);if(t<1)return`${Math.max(1,Math.round(e/1e3))} s`;if(t<60)return`${t} min`;let n=Math.floor(t/60);return n<48?`${n} h${t%60?` ${t%60} min`:``}`:`${Math.floor(n/24)} days`}var RP=e=>e===null?`neutral`:e>=99.9?`success`:e>=99?`warning`:`danger`,zP=6e4,BP=864e5;function VP({days:e,nowMs:t}){let n=Math.floor(t/BP)*BP-29*BP;return(0,W.jsx)(`div`,{className:`wl-status-bars`,role:`img`,"aria-label":`Uptime per day for the last 30 days`,children:e.map((e,t)=>(0,W.jsx)(`span`,{className:`wl-status-bar wl-tone-${RP(e)}`,title:`${Db(n+t*BP)}: ${e===null?`no data`:PP(e)}`},t))})}function HP({c:e,nowMs:t}){let n=FP({enabled:!0,state:e.state});return(0,W.jsxs)(`li`,{className:`wl-status-check`,children:[(0,W.jsxs)(`div`,{className:`wl-status-check-head`,children:[(0,W.jsx)(`strong`,{children:e.name}),(0,W.jsx)(Hb,{tone:n.tone,colorText:!0,children:n.label===`Up`?`Operational`:n.label===`Down`?`Down`:`Checking`})]}),(0,W.jsx)(VP,{days:e.days,nowMs:t}),(0,W.jsxs)(`div`,{className:`wl-status-check-foot wl-muted wl-small`,children:[(0,W.jsxs)(`span`,{children:[30,` days ago`]}),(0,W.jsxs)(`span`,{children:[`24 h `,PP(e.uptime[`24h`]),` · 7 days `,PP(e.uptime[`7d`]),` · 30 days `,PP(e.uptime[`30d`])]}),(0,W.jsx)(`span`,{children:`Today`})]})]})}function UP({view:e}){let t=e.checks.filter(e=>e.state===`down`),n=t.length?`wl-status-summary wl-status-down`:`wl-status-summary`;return(0,W.jsx)(`div`,{className:n,children:t.length===0?`All systems operational`:`${t.length} of ${e.checks.length} ${e.checks.length===1?`system is`:`systems are`} down`})}function WP({view:e}){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(UP,{view:e}),(0,W.jsx)(G,{children:e.checks.length===0?(0,W.jsx)(K,{children:`Nothing is checked yet.`}):(0,W.jsx)(`ul`,{className:`wl-status-checks`,children:e.checks.map(t=>(0,W.jsx)(HP,{c:t,nowMs:e.nowMs},t.name))})}),(0,W.jsx)(G,{title:`Past Incidents`,children:e.incidents.length===0?(0,W.jsxs)(K,{children:[`No incidents in the last `,30,` days.`]}):(0,W.jsx)(`ul`,{className:`wl-status-incidents`,children:e.incidents.map(e=>(0,W.jsxs)(`li`,{children:[(0,W.jsx)(`strong`,{children:e.checkName}),` `,e.endMs===null?`is down`:`was down`,` `,(0,W.jsxs)(`span`,{className:`wl-muted`,children:[`since `,Ob(e.startMs),e.endMs===null?``:`, for ${LP(e.endMs-e.startMs)}`]})]},`${e.checkName}-${e.startMs}`))})})]})}function GP({token:e}){let[t,n]=(0,E.useState)(null),[r,i]=(0,E.useState)(null);return(0,E.useEffect)(()=>{let t=()=>ne(`./api/status/${encodeURIComponent(e)}`).then(e=>(n(e),i(null)),e=>i(e instanceof Error?e.message:String(e)));t();let r=setInterval(()=>void t(),zP);return()=>clearInterval(r)},[e]),(0,E.useEffect)(()=>void(document.title=t?t.title:`Status`),[t]),(0,W.jsxs)(`div`,{className:`wl-shared wl-status`,children:[(0,W.jsxs)(`header`,{className:`wl-shared-head`,children:[(0,W.jsx)(`h1`,{className:`wl-status-title`,children:t?.title??`Status`}),(0,W.jsxs)(`span`,{className:`wl-status-by`,children:[(0,W.jsx)(`span`,{className:`wl-muted wl-small`,children:`Uptime by`}),(0,W.jsx)(`span`,{className:`wl-brand-row`,children:(0,W.jsx)(iO,{})})]})]}),(0,W.jsx)(`main`,{className:`wl-page wl-status-main`,children:t?(0,W.jsx)(WP,{view:t}):(0,W.jsx)(G,{children:(0,W.jsx)(K,{title:r?`This status page does not exist`:`Loading…`,children:r})})})]})}var KP={name:`email`,label:`Email`,type:`email`,autoComplete:`email`},qP={name:`password`,label:`Password`,type:`password`,autoComplete:`current-password`},JP={name:`password`,label:`Password (12 characters or more)`,type:`password`,autoComplete:`new-password`},YP={name:`name`,label:`Your name`,autoComplete:`name`};function XP({title:e,intro:t}){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{className:`wl-brand-row`,children:(0,W.jsx)(iO,{})}),(0,W.jsx)(`h1`,{children:e}),t&&(0,W.jsx)(`p`,{className:`wl-muted`,children:t})]})}function ZP({title:e,intro:t,children:n}){return(0,W.jsx)(`div`,{className:`wl-auth`,children:(0,W.jsxs)(`div`,{className:`wl-auth-card`,children:[(0,W.jsx)(XP,{title:e,intro:t}),n]})})}function QP({f:e}){return e.type===`checkbox`?(0,W.jsxs)(`label`,{className:`wl-auth-check`,children:[(0,W.jsx)(`input`,{name:e.name,type:`checkbox`,defaultChecked:e.checked}),(0,W.jsx)(`span`,{children:e.label})]}):(0,W.jsxs)(`label`,{className:`wl-auth-field`,children:[(0,W.jsx)(`span`,{children:e.label}),(0,W.jsx)(`input`,{name:e.name,type:e.type??`text`,autoComplete:e.autoComplete,inputMode:e.inputMode,defaultValue:e.value,readOnly:e.readOnly,required:e.required??!0})]})}function $P({title:e,intro:t,fields:n,submit:r,onSubmit:i,secondary:a,footer:o}){let[s,c]=(0,E.useState)(!1),[l,u]=(0,E.useState)(null);return(0,W.jsx)(`div`,{className:`wl-auth`,children:(0,W.jsxs)(`form`,{className:`wl-auth-card`,onSubmit:e=>{e.preventDefault();let t=Object.fromEntries([...new FormData(e.currentTarget)].map(([e,t])=>[e,String(t)]));c(!0),u(null),i(t).catch(e=>u(ye(e))).finally(()=>c(!1))},children:[(0,W.jsx)(XP,{title:e,intro:t}),n.map(e=>(0,W.jsx)(QP,{f:e},e.name)),l&&(0,W.jsx)(`div`,{className:`wl-banner wl-banner-error`,role:`alert`,children:l}),(0,W.jsx)(`button`,{type:`submit`,className:`wl-btn wl-btn-primary`,disabled:s,children:s?`One moment…`:r}),a,o&&(0,W.jsx)(`div`,{className:`wl-auth-foot`,children:o})]})})}var eF=({onClick:e,children:t})=>(0,W.jsx)(`button`,{type:`button`,className:`wl-link-btn`,onClick:e,children:t}),tF=()=>`${window.location.origin}${window.location.pathname}${window.location.hash.startsWith(`#/oauth`)?window.location.hash:`#/`}`,nF={sso_domain:`Single sign-on works only for emails at your company's verified domain.`,"account not linked":`An account with this email already exists. Sign in with your password, or ask an admin to confirm your email.`,account_not_linked:`An account with this email already exists. Sign in with your password, or ask an admin to confirm your email.`,signup_disabled:`Your company's sign-in worked, but this cloud does not take new accounts that way.`};function rF(){let e=new URLSearchParams(window.location.search),t=e.get(`error`);return t?(window.history.replaceState(null,``,window.location.pathname+window.location.hash),nF[t]??`Single sign-on failed: ${(e.get(`error_description`)??t).replace(/_/g,` `)}.`):null}function iF({footer:e}){let t=async e=>{let t=await Te(t=>t.signIn.sso({email:e.email,callbackURL:tF(),errorCallbackURL:tF()}));window.location.assign(t.url)};return(0,W.jsx)($P,{title:`Sign in with SSO`,intro:`Use your work email. Your company's sign-in page opens next.`,fields:[{...KP,label:`Work email`}],submit:`Continue`,onSubmit:t,footer:e})}var aF=`x-wizelens-setup-token`;function oF({text:e}){return(0,W.jsx)(ZP,{title:`Check your email`,intro:e,children:(0,W.jsx)(`a`,{className:`wl-btn`,href:S(`overview`),children:`Go to sign in`})})}function sF({token:e,state:t}){let[n,r]=(0,E.useState)(!1);return e?n?(0,W.jsx)(oF,{text:`Check your email to confirm it, then sign in.`}):(0,W.jsx)($P,{title:`Set up WizeLens Cloud`,intro:`Create the first account. You become the owner of the first organization.`,fields:[YP,KP,JP],submit:`Create account`,onSubmit:async n=>{if(await Te(t=>t.signUp.email({name:n.name,email:n.email,password:n.password},{headers:{[aF]:e}})),t.mail)return r(!0);await De(),T(S(`overview`))}}):(0,W.jsx)(ZP,{title:`Set up WizeLens Cloud`,intro:`This cloud has no account yet. Open the setup link printed in the cloud's log.`})}function cF({state:e,title:t=`Sign in to WizeLens`,intro:n,email:r,onSignedIn:i=async()=>void await De(),footer:a,onSso:o}){let[s,c]=(0,E.useState)(null),[l,u]=(0,E.useState)(null),d=async t=>{c(null);try{let e=await Te(e=>e.signIn.email({email:t.email,password:t.password}));if(`twoFactorRedirect`in e&&e.twoFactorRedirect)return T(S(`two-factor`));await i()}catch(n){throw e.mail&&n instanceof Ie&&n.code===`EMAIL_NOT_VERIFIED`&&c(t.email),n}},f=()=>void Te(e=>e.signIn.passkey()).then(i,e=>u(ye(e))),p=e=>void Te(t=>t.sendVerificationEmail({email:e})).then(()=>u(`We sent a new link.`),e=>u(ye(e))),m=(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`button`,{type:`button`,className:`wl-btn`,onClick:f,children:`Sign in with a passkey`}),e.sso&&o&&(0,W.jsx)(`button`,{type:`button`,className:`wl-btn`,onClick:o,children:`Sign in with SSO`}),s&&(0,W.jsx)(eF,{onClick:()=>p(s),children:`Send the link again`}),l&&(0,W.jsx)(`p`,{className:`wl-muted wl-small`,role:`status`,children:l})]}),h=[{...KP,value:r},qP],g=(0,W.jsxs)(`span`,{className:`wl-auth-links`,children:[(0,W.jsx)(`a`,{href:S(`forgot-password`),children:`Forgot password?`}),a]});return(0,W.jsx)($P,{title:t,intro:n,fields:h,submit:`Sign in`,onSubmit:d,secondary:m,footer:g})}function lF({state:e,back:t}){let[n,r]=(0,E.useState)(!1);return n?(0,W.jsx)(oF,{text:`Check your email. The link in it confirms your account.`}):(0,W.jsx)($P,{title:`Create your account`,fields:[YP,KP,JP],submit:`Create account`,onSubmit:async t=>{if(await Te(e=>e.signUp.email({name:t.name,email:t.email,password:t.password})),e.mail)return r(!0);await De()},footer:t})}function uF({state:e,intro:t}){let[n,r]=(0,E.useState)(`login`),[i]=(0,E.useState)(rF);if(e.needsSetup)return(0,W.jsx)(sF,{token:``,state:e});let a=(0,W.jsx)(eF,{onClick:()=>r(`login`),children:`I have an account`});if(n===`signup`)return(0,W.jsx)(lF,{state:e,back:a});if(n===`sso`)return(0,W.jsx)(iF,{footer:(0,W.jsx)(eF,{onClick:()=>r(`login`),children:`Sign in another way`})});let o=e.signup===`open`?(0,W.jsx)(eF,{onClick:()=>r(`signup`),children:`Create an account`}):(0,W.jsx)(`span`,{children:`Need access? Ask your team for an invite link.`});return(0,W.jsx)(cF,{state:e,intro:i?(0,W.jsx)(`span`,{className:`wl-text-error`,role:`alert`,children:i}):t,footer:o,onSso:()=>r(`sso`)})}var dF=`x-wizelens-invite`;async function fF(e){await Te(t=>t.organization.acceptInvitation({invitationId:e})),Pe.set(null),await De(),T(S(`overview`))}function pF({id:e,invite:t,state:n}){let r=`Join ${t.orgName} as ${t.role}. ${t.inviter} invited ${t.email}.`,i=n.user?.email??``;return i.toLowerCase()===t.email.toLowerCase()?(0,W.jsx)($P,{title:`Join ${t.orgName}`,intro:r,fields:[],submit:`Join`,onSubmit:()=>fF(e)}):(0,W.jsx)(ZP,{title:`This invite is for another email`,intro:`You are signed in as ${i}. The invite is for ${t.email}. Sign out, then sign in or sign up with that email.`,children:(0,W.jsx)(`button`,{type:`button`,className:`wl-btn wl-btn-primary`,onClick:()=>void ce(),children:`Sign out`})})}function mF({id:e,invite:t,state:n}){let[r,i]=(0,E.useState)(!1),[a,o]=(0,E.useState)(!1),s=`Join ${t.orgName} as ${t.role}. ${t.inviter} invited ${t.email}.`,c=(0,W.jsx)(eF,{onClick:()=>i(!r),children:r?`I need a new account`:`I already have an account`});if(a)return(0,W.jsx)(ZP,{title:`Check your email`,intro:`Check your email to confirm it. The link brings you back here.`});if(r)return(0,W.jsx)(cF,{state:n,title:`Sign in to accept`,intro:s,email:t.email,onSignedIn:()=>fF(e),footer:c});let l=[YP,{name:`email`,label:`Email`,type:`email`,value:t.email,readOnly:!0},JP];return(0,W.jsx)($P,{title:`Join ${t.orgName}`,intro:s,fields:l,submit:`Create account and join`,onSubmit:async r=>{if(Pe.set(e),await Te(n=>n.signUp.email({name:r.name,email:t.email,password:r.password},{headers:{[dF]:e}})),n.mail)return o(!0);await fF(e)},footer:c})}function hF({id:e,state:t}){let[n,r]=(0,E.useState)(null),[i,a]=(0,E.useState)(null);return(0,E.useEffect)(()=>{if(!e)return a(`This invite link is not complete.`);Pe.set(e),ne(`./api/invites/${encodeURIComponent(e)}`).then(r,e=>a(ye(e)))},[e]),i?(0,W.jsx)(ZP,{title:`This invite link does not work`,intro:`${i} Ask your team for a new one.`,children:(0,W.jsx)(`a`,{className:`wl-btn`,href:S(`overview`),onClick:()=>Pe.set(null),children:`Go to WizeLens`})}):n?t.signedIn?(0,W.jsx)(pF,{id:e,invite:n,state:t}):(0,W.jsx)(mF,{id:e,invite:n,state:t}):(0,W.jsx)(ZP,{title:`Opening the invite…`})}function gF({state:e}){let t=async e=>{await x(`POST`,`./api/orgs`,{name:e.name}),await De()},n=(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`a`,{className:`wl-link-btn`,href:S(`account`),children:`Account`}),` ·`,` `,(0,W.jsx)(`button`,{type:`button`,className:`wl-link-btn`,onClick:()=>void ce(),children:`Sign out`})]});return(0,W.jsx)($P,{title:`You are not in an organization`,intro:`Signed in as ${e.user?.email??``}. Make an organization, or open an invite link from your team.`,fields:[{name:`name`,label:`Organization name`,value:`${e.user?.name??`My`}'s team`}],submit:`Make an organization`,onSubmit:t,footer:n})}function _F({projects:e,picked:t,toggle:n}){return(0,W.jsx)(`div`,{className:`wl-consent-projects`,children:e.map(e=>(0,W.jsxs)(`label`,{className:`wl-auth-check`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:t.has(e.id),onChange:()=>n(e.id)}),(0,W.jsx)(`span`,{children:e.name})]},e.id))})}var vF=({name:e,returnHost:t})=>(0,W.jsxs)(`ul`,{className:`wl-consent-list`,children:[(0,W.jsxs)(`li`,{children:[e,` can read traces, logs, errors, metrics, and reports. It cannot change anything.`]}),(0,W.jsx)(`li`,{children:`It keeps access until you remove it under Account, Connected apps. Every call goes to the audit log.`}),(0,W.jsxs)(`li`,{children:[`After you allow, you go back to `,(0,W.jsx)(`b`,{children:t}),`.`]})]});function yF({query:e,state:t}){let{clientId:n,returnHost:r}=YD(e),i=t.orgs??[],[a,o]=(0,E.useState)(null),[s,c]=(0,E.useState)(Me(t)?.org.id??i[0]?.id??``),[l,u]=(0,E.useState)(`some`),d=i.find(e=>e.id===s),[f,p]=(0,E.useState)(()=>new Set(d?.projects.map(e=>e.id))),[m,h]=(0,E.useState)(!1),[g,_]=(0,E.useState)(null),[v,y]=(0,E.useState)(!1);(0,E.useEffect)(()=>void $D(n).then(o,()=>o({})),[n]);let b=a?.client_name||`This app`;if(!d)return(0,W.jsx)(ZP,{title:`You are not in an organization`,intro:`Join or make an organization first, then connect the app again.`});let ee=e=>(c(e),p(new Set(i.find(t=>t.id===e)?.projects.map(e=>e.id)))),te=e=>p(t=>t.has(e)?(t.delete(e),new Set(t)):new Set(t.add(e))),ne=e=>{h(!0),_(null),e().catch(e=>ae(e)?y(!0):_(ye(e))).finally(()=>h(!1))},re=()=>ne(()=>eO(e,{organizationId:d.id,allProjects:l===`all`,projectIds:l===`all`?[]:[...f]})),x=l===`some`&&f.size===0;return(0,W.jsxs)(ZP,{title:`Connect ${b}`,intro:`${b} wants to read your WizeLens data. Choose what it may see.`,children:[(0,W.jsx)(vF,{name:b,returnHost:r}),i.length>1&&(0,W.jsxs)(`label`,{className:`wl-auth-field`,children:[(0,W.jsx)(`span`,{children:`Organization`}),(0,W.jsx)(`select`,{className:`wl-select`,value:d.id,onChange:e=>ee(e.target.value),children:i.map(e=>(0,W.jsx)(`option`,{value:e.id,children:e.name},e.id))})]}),(0,W.jsxs)(`fieldset`,{className:`wl-consent-scope`,children:[(0,W.jsxs)(`legend`,{children:[`Projects in `,d.name]}),(0,W.jsxs)(`label`,{className:`wl-auth-check`,children:[(0,W.jsx)(`input`,{type:`radio`,name:`scope`,checked:l===`all`,onChange:()=>u(`all`)}),(0,W.jsx)(`span`,{children:`All projects, also ones made later`})]}),(0,W.jsxs)(`label`,{className:`wl-auth-check`,children:[(0,W.jsx)(`input`,{type:`radio`,name:`scope`,checked:l===`some`,onChange:()=>u(`some`)}),(0,W.jsx)(`span`,{children:`Only these projects`})]}),l===`some`&&(0,W.jsx)(_F,{projects:d.projects,picked:f,toggle:te})]}),v&&(0,W.jsxs)(`div`,{className:`wl-banner wl-banner-info`,role:`status`,children:[`For safety, sign in again first. `,(0,W.jsx)(`button`,{type:`button`,className:`wl-link-btn`,onClick:()=>void ce(),children:`Sign in again`})]}),g&&(0,W.jsx)(`div`,{className:`wl-banner wl-banner-error`,role:`alert`,children:g}),(0,W.jsx)(`button`,{type:`button`,className:`wl-btn wl-btn-primary`,disabled:m||x,onClick:re,children:m?`One moment…`:`Allow ${b}`}),(0,W.jsx)(`button`,{type:`button`,className:`wl-link-btn`,disabled:m,onClick:()=>ne(()=>tO(e,!1)),children:`Deny`})]})}var bF=e=>e===`oauth`||e===`oauth-consent`;function xF(e){let t=e.query.has(`sig`)?e.query.toString():ZD.get()??``;return(0,E.useEffect)(()=>{e.query.has(`sig`)&&ZD.set(e.query.toString())},[e.query]),t}function SF({query:e}){return(0,E.useEffect)(()=>QD(e),[e]),(0,W.jsx)(ZP,{title:`One moment…`,intro:`Taking you to the next step.`})}var CF=()=>(0,W.jsx)(ZP,{title:`This link has expired`,intro:`Go back to the app you were connecting, and connect it again.`});function wF({route:e,state:t}){let n=xF(e);return n?t.signedIn?e.page===`oauth`?(0,W.jsx)(SF,{query:n}):(0,W.jsx)(yF,{query:n,state:t}):(0,W.jsx)(uF,{state:t,intro:`Sign in to connect an app to WizeLens. Next you choose what it may read.`}):(0,W.jsx)(CF,{})}var TF=e=>S(`invite`,[],{token:e}),EF=e=>`${window.location.origin}${window.location.pathname}${TF(e)}`;async function DF(){let e=ZD.get();if(e)return QD(e);await De();let t=Pe.get();T(t?TF(t):S(`overview`))}var OF=(0,W.jsx)(`a`,{className:`wl-btn`,href:S(`overview`),children:`Go to WizeLens`});function kF({error:e}){let[t,n]=(0,E.useState)(!1);return t?(0,W.jsx)(ZP,{title:`Check your email`,intro:`If the email has an account that is not confirmed, a new link is on its way.`,children:OF}):(0,W.jsx)($P,{title:`This link does not work`,intro:`${e.replace(/\.?$/,`.`)} Send a new link.`,fields:[KP],submit:`Send a new link`,onSubmit:async e=>{await Te(t=>t.sendVerificationEmail({email:e.email})),n(!0)},footer:(0,W.jsx)(`a`,{href:S(`overview`),children:`Back to sign in`})})}function AF({token:e}){let[t,n]=(0,E.useState)(null),[r,i]=(0,E.useState)(null),a=(0,E.useRef)(!1);return(0,E.useEffect)(()=>{!a.current&&e&&(a.current=!0,Te(t=>t.verifyEmail({query:{token:e}})).then(async e=>{if(!(`user`in e))return n(`changing`);n(`done`),await DF()},e=>i({text:ye(e),expired:e instanceof Ie&&/TOKEN/.test(e.code)})))},[e]),e?r?.expired?(0,W.jsx)(kF,{error:r.text}):r?(0,W.jsx)(ZP,{title:`This link did not work`,intro:r.text,children:OF}):t===`changing`?(0,W.jsx)(ZP,{title:`One more step`,intro:`Now open the link we sent to your new email. It finishes the change.`,children:OF}):(0,W.jsx)(ZP,{title:t===`done`?`Email confirmed`:`Confirming your email…`}):(0,W.jsx)(kF,{error:`This link is not complete.`})}function jF({token:e,state:t,deleted:n=!1}){let[r,i]=(0,E.useState)(n);return r?(0,W.jsx)(ZP,{title:`Account deleted`,intro:`Your account is deleted. Thank you for using WizeLens.`,children:OF}):t.signedIn?e?(0,W.jsx)($P,{title:`Delete your account for good?`,intro:`This cannot be undone. Organizations where you are the only member go with it, with all their data.`,fields:[],submit:`Delete my account`,onSubmit:async()=>{await Te(t=>t.deleteUser({token:e})),await De(),i(!0)},footer:(0,W.jsx)(`a`,{href:S(`account`),children:`Keep my account`})}):(0,W.jsx)(ZP,{title:`This link is not complete`,intro:`Delete your account from the Account page.`,children:OF}):(0,W.jsx)(uF,{state:t,intro:`Sign in to delete your account.`})}var MF=(0,W.jsx)(`a`,{href:S(`overview`),children:`Back to sign in`}),NF={name:`password`,label:`New password (12 characters or more)`,type:`password`,autoComplete:`new-password`},PF={name:`again`,label:`New password again`,type:`password`,autoComplete:`new-password`};function FF({state:e}){let[t,n]=(0,E.useState)(!1);return t&&!e.mail?(0,W.jsx)(ZP,{title:`Ask for the link`,intro:`This cloud cannot send email. Ask the person who runs it: the link is in the cloud's log.`,children:MF}):t?(0,W.jsx)(ZP,{title:`Check your email`,intro:`If the email has an account, a link is on its way.`,children:MF}):(0,W.jsx)($P,{title:`Forgot your password?`,intro:`Enter your email. We send a link to choose a new password.`,fields:[KP],submit:`Send the link`,onSubmit:async e=>{await Te(t=>t.requestPasswordReset({email:e.email})),n(!0)},footer:MF})}function IF({token:e}){let[t,n]=(0,E.useState)(!1);if(!e)return(0,W.jsx)(ZP,{title:`This link is not complete`,intro:`Ask for a new link.`,children:(0,W.jsx)(`a`,{className:`wl-btn`,href:S(`forgot-password`),children:`Send a new link`})});if(t)return(0,W.jsx)(ZP,{title:`Password changed`,intro:`Password changed. Sign in.`,children:MF});let r=async t=>{if(t.password!==t.again)throw Error(`The two passwords are not the same.`);await Te(n=>n.resetPassword({newPassword:t.password,token:e})),await De(),n(!0)},i=(0,W.jsxs)(`span`,{className:`wl-auth-links`,children:[(0,W.jsx)(`a`,{href:S(`forgot-password`),children:`Send a new link`}),MF]});return(0,W.jsx)($P,{title:`Choose a new password`,fields:[NF,PF],submit:`Change password`,onSubmit:r,footer:i})}var LF={name:`trust`,label:`Trust this device for 14 days`,type:`checkbox`};function RF(){let[e,t]=(0,E.useState)(!1),n=async t=>{let n=t.code.replace(/\s+/g,``),r=t.trust===`on`;e?await Te(e=>e.twoFactor.verifyBackupCode({code:n,trustDevice:r})):await Te(e=>e.twoFactor.verifyTotp({code:n,trustDevice:r})),await DF()},r=e?{name:`code`,label:`Backup code`,autoComplete:`off`}:{name:`code`,label:`Code`,autoComplete:`one-time-code`,inputMode:`numeric`},i=(0,W.jsxs)(`span`,{className:`wl-auth-links`,children:[(0,W.jsx)(eF,{onClick:()=>t(!e),children:e?`Use a code from your app`:`Use a backup code instead`}),(0,W.jsx)(`a`,{href:S(`overview`),children:`Back to sign in`})]});return(0,W.jsx)($P,{title:`Two-step sign-in`,intro:e?`Enter one of your backup codes. Each code works once.`:`Enter the 6-digit code from your app.`,fields:[r,LF],submit:`Continue`,onSubmit:n,footer:i},String(e))}var zF=()=>(0,W.jsx)(`div`,{className:`wl-auth`,children:(0,W.jsx)(`p`,{className:`wl-muted`,children:`Loading WizeLens…`})});function BF(e,t){let n=e.query.get(`token`)??``;switch(e.page){case`setup`:return t.needsSetup?(0,W.jsx)(sF,{token:n,state:t}):null;case`two-factor`:return t.signedIn?null:(0,W.jsx)(RF,{});case`forgot-password`:return(0,W.jsx)(FF,{state:t});case`reset-password`:return(0,W.jsx)(IF,{token:n});case`verify-email`:return(0,W.jsx)(AF,{token:n});case`invite`:return(0,W.jsx)(hF,{id:n,state:t});case`delete-account`:return(0,W.jsx)(jF,{token:n,state:t,deleted:e.query.has(`done`)});case`oauth`:case`oauth-consent`:return(0,W.jsx)(wF,{route:e,state:t});default:return null}}function VF({children:e}){let t=i(),n=Se(),r=H(),a=Ce(),o=r.has(`accounts`);(0,E.useEffect)(()=>{o&&De().catch(()=>void 0)},[o]);let s=!!a?.signedIn;if((0,E.useEffect)(()=>{s&&!bF(t.page)&&t.page!==`two-factor`&&ZD.set(null)},[s,t.page]),t.page===`shared`)return(0,W.jsx)(NP,{token:t.params[0]??``});if(t.page===`status`)return(0,W.jsx)(GP,{token:t.params[0]??``});if(!n.info&&n.loading)return(0,W.jsx)(zF,{});if(!o)return(0,W.jsx)(W.Fragment,{children:e});if(!a)return(0,W.jsx)(zF,{});let c=BF(t,a);return c?(0,W.jsx)(W.Fragment,{children:c}):a.signedIn?!a.orgs?.length&&t.page!==`account`?(0,W.jsx)(gF,{state:a}):(0,W.jsx)(W.Fragment,{children:e}):(0,W.jsx)(uF,{state:a})}var HF=new Set([`overview`,`problems`,`search`,`requests`,`traces`,`database`,`rendering`,`errors`,`logs`,`metrics`,`services`,`insights`]);function UF(e,t,n){if(t===Iw.window){let e=Vw(n);return{from:e?String(e.from):null,to:e?String(e.to):null}}return t===Iw.compare?{compare:n===`week`?n:null}:t===p.range?{range:n||null}:t===h.env?{env:n||null}:t===h.project?{project:n||null}:t===h.service&&e!==`services`?{service:n||null}:{}}var WF=[p.range,Iw.window,Iw.compare,h.env,h.project,h.service];function GF(e,t){let r=se(window.location.hash);if(!HF.has(r.page))return;let i=UF(r.page,e,t);Object.entries(i).some(([e,t])=>(r.query.get(e)??null)!==t)&&n(i)}function KF(e,t,n){if(t===Iw.window)return n.has(`from`)&&n.has(`to`)?Hw(Vw(`${n.get(`from`)}-${n.get(`to`)}`)):n.has(`range`)?``:void 0;if(t===Iw.compare)return n.has(`compare`)?n.get(`compare`)===`week`?`week`:`previous`:void 0;if(t===p.range)return oe(n.get(`range`)??``)?n.get(`range`):void 0;let r=t===h.env?`env`:t===h.project?`project`:e===`services`?null:`service`;return r&&n.has(r)?n.get(r):void 0}function qF(){let e=i(),t=`${e.page}?${e.query.toString()}`;(0,E.useEffect)(()=>_(GF),[]),(0,E.useEffect)(()=>{if(HF.has(e.page))for(let t of WF){let n=KF(e.page,t,e.query);n!==void 0&&n!==(Ge(t)??``)?l(t,n):n===void 0&&Ge(t)&&GF(t,Ge(t))}},[t])}var JF=[[`p50`,`p50`],[`p95`,`p95`],[`p99`,`p99`],[`avg`,`Average`]],YF={value:`Value`,rate:`Per second`,percentiles:`Distribution`},XF={value:`avg`,rate:`rate`,percentiles:`p95`};function ZF(e){return e.percentiles&&!e.groupBy?[`p50`,`p95`,`p99`].map((t,n)=>({label:t,values:e.percentiles[t],color:pD[n]})):e.lines.map((e,t)=>({label:e.label,values:e.values,color:pD[t%pD.length]}))}function QF({d:e}){let t=[[``,`Each series`],...e.groupKeys.map(e=>[e,`By ${e}`])];return(0,W.jsxs)(`div`,{className:`wl-metric-controls`,children:[e.groupKeys.length>0&&(0,W.jsx)(X,{value:e.groupBy,options:t,onChange:e=>n({group:e||null}),label:`Split lines`,small:!0}),e.percentiles&&e.groupBy&&(0,W.jsx)(X,{value:e.stat,options:JF,onChange:e=>n({stat:e}),label:`Statistic`,small:!0}),(0,W.jsx)(rk,{fields:{metric:`metric`,metricName:e.name,metricStat:XF[e.display],metricService:e.services.length===1?e.services[0]:``,name:`${e.name} is high`}})]})}function $F({d:e}){let t=t=>sf(t,e.displayUnit),n=e.percentiles?` (${e.stat})`:``;return(0,W.jsx)(mb,{rows:[[`Now${n}`,t(e.summary.last)],[`Lowest${n}`,t(e.summary.min)],[`Highest${n}`,t(e.summary.max)],[`Average${n}`,t(e.summary.avg)],[`Shown as`,YF[e.display]],[`Unit`,e.unit||`none`],[`Services`,e.services.join(`, `)]]})}function eI({detail:e}){if(!e)return(0,W.jsx)(G,{className:`wl-metric-chart`,children:(0,W.jsx)(K,{title:`Pick a metric`,children:`Choose a metric from the list, or a tile above, to see it over time.`})});let t=e,n=t.countRate?[{label:`Values per second`,values:t.countRate,color:`var(--wl-chart-bar)`}]:void 0;return(0,W.jsxs)(G,{title:(0,W.jsx)(`h2`,{className:`wl-metric-title`,children:t.name}),action:(0,W.jsx)(QF,{d:t}),className:`wl-metric-chart`,children:[t.description&&(0,W.jsx)(`p`,{className:`wl-metric-desc`,children:t.description}),(0,W.jsx)(eE,{starts:t.buckets,lines:ZF(t),bars:n,separateBarScale:!0,format:yD(t.displayUnit),height:260}),t.hidden>0&&(0,W.jsxs)(`p`,{className:`wl-metric-desc`,children:[t.hidden,` more lines are not shown. Split by another key to see them.`]}),(0,W.jsx)($F,{d:t})]})}function tI({state:e}){let t=e.model?.meta.sampled;return(0,W.jsxs)(W.Fragment,{children:[e.loading&&(0,W.jsx)(`div`,{className:`wl-banner wl-banner-info`,children:`Loading metrics…`}),e.error&&(0,W.jsxs)(`div`,{className:`wl-banner wl-banner-error`,children:[`Could not load metrics: `,e.error]}),t&&(0,W.jsxs)(`div`,{className:`wl-banner wl-banner-info`,children:[`Based on the newest `,J(t.used),` of `,J(t.total),` points in this range. Pick a shorter range for exact numbers.`]}),e.clipped&&(0,W.jsx)(`div`,{className:`wl-banner wl-banner-info`,children:`This app keeps metrics for one hour, so this page shows the last hour. Send them to a hub or the cloud for longer history.`})]})}function nI(){return(0,W.jsx)(G,{children:(0,W.jsxs)(K,{title:`This host does not keep metrics`,children:[`Update the WizeLens add-on, or send OpenTelemetry metrics to a WizeLens hub or the cloud at `,(0,W.jsx)(`code`,{children:`/v1/metrics`}),`.`]})})}function rI(){let e=eD(),{query:t}=i(),n=t.toString(),r=(0,E.useMemo)(()=>Object.fromEntries(new URLSearchParams(n)),[n]),a=e.model;return(0,W.jsxs)(`div`,{className:`wl-metrics-page`,children:[(0,W.jsx)(fb,{title:`Metrics`,subtitle:`CPU, memory, garbage collection, request times, and your own counters, per service.`}),(0,W.jsx)(tI,{state:e}),e.source===`none`&&(0,W.jsx)(nI,{}),a&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(hD,{model:a,selected:r.metric??``}),(0,W.jsxs)(`div`,{className:`wl-metric-body`,children:[(0,W.jsx)(vD,{model:a,params:r}),(0,W.jsx)(eI,{detail:a.selected})]})]})]})}var iI=[{key:`mount`,header:`Mount`,cell:e=>(0,W.jsx)(`strong`,{children:e.mount}),sort:e=>e.mount},{key:`device`,header:`Device`,cell:e=>e.device||`–`,className:`wl-hide-sm`},{key:`type`,header:`Type`,cell:e=>e.type||`–`,className:`wl-hide-sm`},{key:`used`,header:`Used`,cell:e=>LM(e.used,e.total),sort:e=>e.used??0},{key:`share`,header:`Full`,cell:e=>(0,W.jsx)(RM,{share:e.share}),sort:e=>e.share??-1}];function aI({d:e}){let t=e.buckets;return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`wl-grid wl-grid-2-even`,children:[(0,W.jsx)(VM,{title:`CPU Over Time`,starts:t,lines:[{label:`Busy`,values:e.cpu,color:`var(--wl-blue)`}],format:NM}),(0,W.jsx)(VM,{title:`Memory Over Time`,starts:t,lines:[{label:`Used`,values:e.memory,color:`var(--wl-green)`}],format:PM})]}),(0,W.jsxs)(`div`,{className:`wl-grid wl-grid-2-even`,children:[(0,W.jsx)(VM,{title:`Disk Over Time`,starts:t,lines:[{label:`Read`,values:e.diskRead,color:`var(--wl-blue)`},{label:`Write`,values:e.diskWrite,color:`var(--wl-orange)`}],format:FM}),(0,W.jsx)(VM,{title:`Network Over Time`,starts:t,lines:[{label:`In`,values:e.netIn,color:`var(--wl-blue)`},{label:`Out`,values:e.netOut,color:`var(--wl-orange)`}],format:FM})]})]})}function oI({d:e}){return(0,W.jsx)(G,{title:`Pods on This Node (${e.pods.length})`,children:(0,W.jsx)(`span`,{className:`wl-infra-chips`,children:e.pods.map(e=>{let[t,n]=e.includes(`/`)?[e.slice(0,e.indexOf(`/`)),e.slice(e.indexOf(`/`)+1)]:[``,e];return(0,W.jsx)(`a`,{className:`wl-infra-chip`,href:KS(t,n),children:e},e)})})})}function sI({d:e,now:t}){let n=e.row,r=[[`OS`,n.os||`–`],[`CPUs`,n.cores?IM(n.cores):`–`],[`Load (1 min)`,n.load1?.toFixed(2)??`–`],[`Last seen`,Nb(n.lastSeenMs,t)]];return n.cluster&&r.push([`Cluster`,n.cluster]),n.node&&r.push([`Kubernetes`,(0,W.jsx)(`a`,{href:GS(n.name),children:`Node page`},`n`)]),(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(BM,{back:S(`hosts`),backLabel:`All hosts`,icon:Ty,title:n.name,facts:r}),(0,W.jsxs)(`div`,{className:`wl-grid wl-grid-stats`,children:[(0,W.jsx)(zM,{icon:sv,label:`CPU`,value:NM(n.cpu),note:n.cores?`of ${IM(n.cores)}`:`busy`,danger:(n.cpu??0)>=.9}),(0,W.jsx)(zM,{icon:$v,label:`Memory`,value:NM(n.mem),note:LM(n.memUsed,n.memTotal),danger:(n.mem??0)>=.9}),(0,W.jsx)(zM,{icon:Nv,label:`Fullest Disk`,value:NM(n.disk),note:LM(n.diskUsed,n.diskTotal),danger:(n.disk??0)>=.9}),(0,W.jsx)(zM,{icon:ay,label:`Network`,value:FM((n.netIn??0)+(n.netOut??0)),note:`${FM(n.netIn)} in, ${FM(n.netOut)} out`})]}),(0,W.jsx)(aI,{d:e}),(0,W.jsx)(UM,{services:e.services,now:t,empty:`No WizeLens or OpenTelemetry service reports this host (or a pod on it) as where it runs.`}),e.pods.length>0&&(0,W.jsx)(oI,{d:e}),(0,W.jsx)(G,{title:`File Systems`,flush:!0,children:(0,W.jsx)(Q,{columns:iI,rows:e.fileSystems,rowKey:e=>e.mount,defaultSort:{key:`share`,desc:!0},empty:(0,W.jsx)(K,{title:`No file systems`,children:`The collector's filesystem scraper sends none for this host.`})})})]})}function cI({name:e}){let t=MM(`hosts`,{host:e}),{updatedMs:n}=Se(),r=t.model?.selected?.row.name===e?t.model.selected:null;return(0,W.jsxs)(`div`,{className:`wl-infra-page wl-svc-page`,children:[t.error&&(0,W.jsxs)(`div`,{className:`wl-banner wl-banner-error`,children:[`Could not load this host: `,t.error]}),t.loading&&!r&&(0,W.jsxs)(`div`,{className:`wl-banner wl-banner-info`,children:[`Loading `,e,`…`]}),!t.supported&&(0,W.jsx)(WM,{supported:!1,what:`host`}),r&&(0,W.jsx)(sI,{d:r,now:n}),t.model&&!t.loading&&!r&&(0,W.jsx)(BM,{back:S(`hosts`),backLabel:`All hosts`,icon:Ty,title:e,facts:[[`Status`,`Sent no host metrics in this time range`]]})]})}function lI(e){return[{key:`name`,header:`Host`,cell:e=>(0,W.jsx)(`a`,{href:WS(e.name),children:(0,W.jsx)(`strong`,{children:e.name})}),sort:e=>e.name},{key:`cpu`,header:`CPU`,cell:e=>(0,W.jsx)(RM,{share:e.cpu}),sort:e=>e.cpu??-1},{key:`mem`,header:`Memory`,cell:e=>(0,W.jsx)(RM,{share:e.mem}),sort:e=>e.mem??-1},{key:`disk`,header:`Disk`,cell:e=>(0,W.jsx)(RM,{share:e.disk}),sort:e=>e.disk??-1,className:`wl-hide-sm`},{key:`net`,header:`Network In / Out`,cell:e=>`${FM(e.netIn)} / ${FM(e.netOut)}`,sort:e=>(e.netIn??0)+(e.netOut??0),className:`wl-hide-sm`},{key:`services`,header:`Services`,cell:e=>e.services.length?(0,W.jsx)(`span`,{className:`wl-infra-chips`,children:e.services.map(e=>(0,W.jsx)(`a`,{className:`wl-infra-chip`,href:RS(e),children:e},e))}):(0,W.jsx)(`span`,{className:`wl-muted`,children:`–`}),sort:e=>e.services.length},{key:`node`,header:`Kubernetes`,cell:e=>e.node?(0,W.jsx)(`a`,{href:GS(e.name),children:`Node`}):(0,W.jsx)(`span`,{className:`wl-muted`,children:`–`}),className:`wl-hide-sm`},{key:`seen`,header:`Last seen`,cell:t=>Nb(t.lastSeenMs,e),sort:e=>-e.lastSeenMs,className:`wl-hide-sm`}]}function uI({m:e}){return(0,W.jsxs)(`div`,{className:`wl-grid wl-grid-stats`,children:[(0,W.jsx)(zM,{icon:Ty,label:`Hosts`,value:J(e.summary.hosts),note:`sending host metrics`}),(0,W.jsx)(zM,{icon:sv,label:`Avg CPU`,value:NM(e.summary.cpu),note:`busy, across hosts`}),(0,W.jsx)(zM,{icon:$v,label:`Avg Memory`,value:NM(e.summary.mem),note:`used, across hosts`}),(0,W.jsx)(zM,{icon:F_,label:`Services`,value:J(e.summary.services),note:`running on these hosts`})]})}function dI(){let e=i().query.get(`q`)??``,t=MM(`hosts`,{q:e}),{updatedMs:r}=Se(),a=t.model,o=t.supported&&a&&a.hosts.length===0&&!e;return(0,W.jsxs)(`div`,{className:`wl-infra-page`,children:[(0,W.jsx)(fb,{title:`Hosts`,subtitle:`CPU, memory, disks, and network of every host, and the services that run on it.`,children:t.supported&&(0,W.jsx)(qb,{value:e,onChange:e=>n({q:e||null}),placeholder:`Find a host or service`})}),t.error&&(0,W.jsxs)(`div`,{className:`wl-banner wl-banner-error`,children:[`Could not load hosts: `,t.error]}),t.loading&&!a&&(0,W.jsx)(`div`,{className:`wl-banner wl-banner-info`,children:`Loading hosts…`}),(!t.supported||o)&&(0,W.jsx)(WM,{supported:t.supported,what:`host`}),a&&!o&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(uI,{m:a}),(0,W.jsx)(G,{title:`All Hosts`,flush:!0,children:(0,W.jsx)(Q,{columns:lI(r),rows:a.hosts,rowKey:e=>e.name,defaultSort:{key:`name`,desc:!1},empty:(0,W.jsx)(K,{title:`No hosts match`,children:`Clear the search to see every host.`})})})]})]})}function fI(){let[e]=i().params;return e?(0,W.jsx)(cI,{name:JS(e)},e):(0,W.jsx)(dI,{})}var pI=S(`kubernetes`);function mI({d:e}){return(0,W.jsxs)(`div`,{className:`wl-grid wl-grid-3`,children:[(0,W.jsx)(VM,{title:`CPU Over Time`,starts:e.buckets,lines:[{label:`CPU`,values:e.cpu,color:`var(--wl-blue)`}],format:e=>IM(e)}),(0,W.jsx)(VM,{title:`Memory Over Time`,starts:e.buckets,lines:[{label:`Working set`,values:e.memory,color:`var(--wl-green)`}],format:PM}),(0,W.jsx)(VM,{title:`Network Over Time`,starts:e.buckets,lines:[{label:`In`,values:e.netIn,color:`var(--wl-blue)`},{label:`Out`,values:e.netOut,color:`var(--wl-orange)`}],format:FM})]})}function hI({state:e,what:t,found:n,children:r}){return(0,W.jsxs)(`div`,{className:`wl-infra-page wl-svc-page`,children:[e.error&&(0,W.jsxs)(`div`,{className:`wl-banner wl-banner-error`,children:[`Could not load `,t,`: `,e.error]}),e.loading&&!n&&(0,W.jsxs)(`div`,{className:`wl-banner wl-banner-info`,children:[`Loading `,t,`…`]}),!e.supported&&(0,W.jsx)(WM,{supported:!1,what:`Kubernetes`}),n?r:!!e.model&&!e.loading&&(0,W.jsx)(BM,{back:pI,backLabel:`Kubernetes`,icon:F_,title:t,facts:[[`Status`,`Sent no metrics in this time range`]]})]})}function gI({d:e,now:t}){let n=e.row,r=[[`Cluster`,n.cluster||`–`],[`Pods`,J(n.pods)],[`Last seen`,Nb(n.lastSeenMs,t)]];n.host&&r.push([`Host`,(0,W.jsx)(`a`,{href:WS(n.name),children:`Disks and network`},`h`)]);let i=n.ready===null?void 0:(0,W.jsx)(Hb,{tone:n.ready?`success`:`danger`,children:n.ready?`Ready`:`Not ready`});return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(BM,{back:pI,backLabel:`Kubernetes`,icon:Ty,title:n.name,status:i,facts:r}),(0,W.jsxs)(`div`,{className:`wl-grid wl-grid-stats`,children:[(0,W.jsx)(zM,{icon:sv,label:`CPU`,value:IM(n.cpu),note:n.cpuAlloc?`of ${IM(n.cpuAlloc)} allocatable`:`in use`}),(0,W.jsx)(zM,{icon:$v,label:`Memory`,value:PM(n.memory),note:n.memAlloc?`of ${PM(n.memAlloc)} allocatable`:`working set`}),(0,W.jsx)(zM,{icon:F_,label:`Pods`,value:J(n.pods),note:`${J(n.pending)} pending`,danger:n.pending>0}),(0,W.jsx)(zM,{icon:yy,label:`Restarts`,value:J(n.restartsNew),note:`in this range`,danger:n.restartsNew>0})]}),(0,W.jsx)(mI,{d:e}),(0,W.jsx)(G,{title:`Pods`,flush:!0,children:(0,W.jsx)(eN,{rows:e.pods,empty:`No pods on this node in this range.`})}),(0,W.jsx)(UM,{services:e.services,now:t,empty:`No service reports a pod on this node as where it runs.`})]})}function _I({name:e}){let t=MM(`kubernetes`,{node:e}),{updatedMs:n}=Se(),r=t.model?.node?.row.name===e?t.model.node:null;return(0,W.jsx)(hI,{state:t,what:e,found:!!r,children:r&&(0,W.jsx)(gI,{d:r,now:n})})}var vI=[{key:`name`,header:`Container`,cell:e=>(0,W.jsx)(`strong`,{children:e.name}),sort:e=>e.name},{key:`ready`,header:`Ready`,cell:e=>e.ready===null?`–`:(0,W.jsx)(Hb,{tone:e.ready?`success`:`danger`,children:e.ready?`Ready`:`Not ready`})},{key:`restarts`,header:`Restarts`,cell:e=>`${J(e.restarts)}${e.restartsNew?` (+${J(e.restartsNew)} in range)`:``}`,num:!0,sort:e=>e.restarts},{key:`exit`,header:`Last Exit`,cell:e=>e.lastExit?(0,W.jsx)(`span`,{className:e.lastExit===`OOMKilled`?`wl-text-error`:void 0,children:e.lastExit===`OOMKilled`?`Out of memory (OOMKilled)`:e.lastExit}):`–`},{key:`mem`,header:`Memory Limit`,cell:e=>PM(e.memLimit),num:!0,className:`wl-hide-sm`},{key:`cpu`,header:`CPU Limit`,cell:e=>IM(e.cpuLimit),num:!0,className:`wl-hide-sm`}];function yI({d:e,now:t}){let n=e.row,r=[[`Namespace`,n.namespace||`–`],[`Node`,n.node?(0,W.jsx)(`a`,{href:GS(n.node),children:n.node},`n`):`–`],[`Workload`,n.workload?(0,W.jsx)(`a`,{href:qS(`${n.namespace}/${n.workload}`),children:n.workload},`w`):`–`],[`Last seen`,Nb(n.lastSeenMs,t)]];return n.cluster&&r.unshift([`Cluster`,n.cluster]),(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(BM,{back:pI,backLabel:`Kubernetes`,icon:F_,title:n.name,status:(0,W.jsx)(JM,{phase:n.phase}),facts:r}),(0,W.jsxs)(`div`,{className:`wl-grid wl-grid-stats`,children:[(0,W.jsx)(zM,{icon:sv,label:`CPU`,value:IM(n.cpu),note:`in use now`}),(0,W.jsx)(zM,{icon:$v,label:`Memory`,value:PM(n.memory),note:n.memLimit?`limit ${PM(n.memLimit)}`:`working set`}),(0,W.jsx)(zM,{icon:yy,label:`Restarts`,value:J(n.restarts),note:`${J(n.restartsNew)} in this range`,danger:n.restartsNew>0}),(0,W.jsx)(zM,{icon:Vv,label:`Containers`,value:`${J(n.ready)} of ${J(n.containers)}`,note:n.oomKills?`${J(n.oomKills)} last stopped out of memory`:`ready`,danger:n.oomKills>0})]}),(0,W.jsx)(mI,{d:e}),(0,W.jsx)(G,{title:`Containers`,flush:!0,children:(0,W.jsx)(Q,{columns:vI,rows:e.containers,rowKey:e=>e.name,empty:(0,W.jsx)(K,{title:`No containers`,children:`k8s_cluster sends no container state for this pod.`})})}),(0,W.jsx)(UM,{services:e.services,now:t,empty:`No service reports this pod as where it runs.`})]})}function bI({ns:e,name:t}){let n=MM(`kubernetes`,{pod:e?`${e}/${t}`:t}),{updatedMs:r}=Se(),i=n.model?.pod?.row.name===t?n.model.pod:null;return(0,W.jsx)(hI,{state:n,what:t,found:!!i,children:i&&(0,W.jsx)(yI,{d:i,now:r})})}var xI=[[`pods`,`Pods`],[`workloads`,`Workloads`],[`nodes`,`Nodes`]];function SI({m:e}){let t=e.summary;return(0,W.jsxs)(`div`,{className:`wl-grid wl-grid-stats`,children:[(0,W.jsx)(zM,{icon:Ty,label:`Nodes`,value:`${J(t.readyNodes)} of ${J(t.nodes)}`,note:`ready`,danger:t.readyNodes<t.nodes}),(0,W.jsx)(zM,{icon:L_,label:`Pods`,value:J(t.pods),note:`${J(t.running)} running, ${J(t.failed)} failed`}),(0,W.jsx)(zM,{icon:tv,label:`Pending Pods`,value:J(t.pending),note:`waiting to be scheduled or started`,danger:t.pending>0}),(0,W.jsx)(zM,{icon:yy,label:`Restarts`,value:J(t.restartsNew),note:(0,W.jsxs)(W.Fragment,{children:[`container restarts in this range · `,(0,W.jsx)(Fy,{size:12,"aria-hidden":!0}),` `,J(t.oomKills),` out of memory`]}),danger:t.restartsNew>0||t.oomKills>0})]})}function CI({m:e,q:t}){return(0,W.jsxs)(W.Fragment,{children:[e.clusters.length>1&&(0,W.jsx)(X,{value:t.cluster??``,options:[[``,`All clusters`],...e.clusters.map(e=>[e,e])],onChange:e=>n({cluster:e||null}),label:`Cluster`}),(0,W.jsx)(X,{value:t.ns??``,options:[[``,`All namespaces`],...e.namespaces.map(e=>[e,e])],onChange:e=>n({ns:e||null}),label:`Namespace`}),(0,W.jsx)(qb,{value:t.q??``,onChange:e=>n({q:e||null}),placeholder:`Find a pod, workload, or node`})]})}function wI(){let e=Object.fromEntries(i().query),t=xI.some(([t])=>t===e.view)?e.view:`pods`,r=MM(`kubernetes`,{cluster:e.cluster,ns:e.ns,workload:e.workload,q:e.q}),{updatedMs:a}=Se(),o=r.model,s=r.supported&&o&&o.summary.nodes===0&&o.summary.pods===0&&!e.q&&!e.ns&&!e.workload;return(0,W.jsxs)(`div`,{className:`wl-infra-page`,children:[(0,W.jsx)(fb,{title:`Kubernetes`,subtitle:`Clusters, nodes, workloads, and pods: what runs where, what restarts, and what waits.`,children:o&&!s&&(0,W.jsx)(CI,{m:o,q:e})}),r.error&&(0,W.jsxs)(`div`,{className:`wl-banner wl-banner-error`,children:[`Could not load Kubernetes: `,r.error]}),r.loading&&!o&&(0,W.jsx)(`div`,{className:`wl-banner wl-banner-info`,children:`Loading Kubernetes…`}),(!r.supported||s)&&(0,W.jsx)(WM,{supported:r.supported,what:`Kubernetes`}),o&&!s&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(SI,{m:o}),e.workload&&(0,W.jsxs)(`div`,{className:`wl-banner wl-banner-info`,children:[`Showing the pods of `,e.workload.split(`/`).slice(1).join(` `),`. `,(0,W.jsx)(`a`,{href:S(`kubernetes`,[],{view:`pods`}),children:`Show all pods`})]}),(0,W.jsxs)(G,{flush:!0,title:(0,W.jsx)(hb,{tabs:xI,value:t,onChange:e=>n({view:e===`pods`?null:e})}),children:[t===`pods`&&(0,W.jsx)(eN,{rows:o.pods}),t===`workloads`&&(0,W.jsx)(QM,{rows:o.workloads}),t===`nodes`&&(0,W.jsx)(XM,{rows:o.nodes,now:a})]})]})]})}function TI(){let[e,t,n]=i().params;return e===`node`&&t?(0,W.jsx)(_I,{name:JS(t)},t):e===`pod`&&t&&n?(0,W.jsx)(bI,{ns:JS(t)===`-`?``:JS(t),name:JS(n)},`${t}/${n}`):(0,W.jsx)(wI,{})}var EI={release:`New release`,error:`New error`,query:`Query`,downstream:`Downstream service`},DI={release:_y,error:z_,query:lv,downstream:Dv};function OI(e){return e.kind===`error`?S(`errors`,[],{group:e.key}):e.kind===`release`?S(`services`,[e.service]):S(`services`,[e.row])}function kI({cause:e}){let t=DI[e.kind];return(0,W.jsxs)(`a`,{className:`wl-pb-cause`,href:OI(e),children:[(0,W.jsx)(t,{size:15,"aria-hidden":!0}),(0,W.jsx)(`strong`,{children:EI[e.kind]}),(0,W.jsx)(`span`,{children:Na(e)})]})}function AI(e,t,n){return t===null?`–`:e===`error_rate`?yb(t):e===`p95_ms`?q(t):`${J(t/Math.max(n/6e4,1e-9))}/min`}var jI=(e,t,n)=>e===`requests`?t.map(e=>e===null?null:e/Math.max(n/6e4,1e-9)):[...t],MI=e=>Ia[e];function NI(e,t){let n=Math.max(1,Math.round((Math.min(e.endMs,t)-e.startMs)/6e4)),r=n>=120?`${Math.round(n/60)} h`:`${n} min`;return`Started ${Nb(e.startMs,t)} · ${r}${e.ongoing?` · ongoing`:` · ended ${Nb(e.endMs,t)}`}`}var PI=e=>S(`problems`,[e.id]);function FI(){return(0,W.jsxs)(`a`,{className:`wl-back`,href:S(`problems`),children:[(0,W.jsx)(y_,{size:14,"aria-hidden":`true`}),` All problems`]})}function II({p:e,now:t}){let n=[[`Started`,Ob(e.startMs)],[e.ongoing?`Status`:`Ended`,e.ongoing?`Ongoing`:Ob(e.endMs)],[`Services`,J(e.services.length)],[`Anomalies`,J(e.anomalyCount)]];return(0,W.jsxs)(`section`,{className:`wl-panel wl-pb-head`,children:[(0,W.jsx)(FI,{}),(0,W.jsxs)(`h1`,{className:`wl-pb-head-title`,children:[(0,W.jsx)(Vb,{tone:e.ongoing?`danger`:`neutral`}),(0,W.jsx)(`span`,{children:e.title})]}),(0,W.jsx)(`p`,{className:`wl-pb-when`,children:NI(e,t)}),(0,W.jsx)(`dl`,{className:`wl-stats`,children:n.map(([e,t])=>(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`dt`,{children:e}),(0,W.jsx)(`dd`,{children:t})]},e))})]})}function LI({p:e}){return(0,W.jsxs)(G,{title:`Suspected Cause`,children:[e.cause?(0,W.jsx)(kI,{cause:e.cause}):(0,W.jsx)(K,{title:`No cause stands out`,children:`No new release, new error group, slower query, or service further down the calls started with it.`}),e.causes.length>1&&(0,W.jsxs)(`div`,{className:`wl-pb-also`,children:[(0,W.jsx)(`h3`,{children:`Also Seen`}),e.causes.slice(1).map(e=>(0,W.jsx)(kI,{cause:e},e.kind))]})]})}var RI=e=>e.endpoint?`${e.name} · ${e.endpoint}`:e.name;function zI({a:e,m:t}){let n=n=>jI(e.metric,n,t.bucketMs),r=[{label:MI(e.metric),values:n(e.series.values),color:`var(--wl-red)`},{label:`Alerts above`,values:n(e.series.uppers),color:`var(--wl-orange)`},{label:`Normal`,values:n(e.series.normals),color:`var(--wl-blue)`}];return(0,W.jsx)(G,{title:`${MI(e.metric)}: ${RI(e)}`,children:(0,W.jsx)(eE,{starts:t.starts,lines:r,height:240,format:n=>AI(e.metric,e.metric===`requests`?n*(t.bucketMs/6e4):n,t.bucketMs)})})}function BI(e){let t=(t,n)=>AI(t.metric,n,e.bucketMs);return[{key:`where`,header:`Service / Endpoint`,className:`wl-pb-where`,cell:e=>(0,W.jsx)(`a`,{href:S(`services`,[e.row]),onClick:e=>e.stopPropagation(),children:RI(e)})},{key:`metric`,header:`Metric`,cell:e=>MI(e.metric)},{key:`peak`,header:`Peak`,num:!0,cell:e=>t(e,e.peak.value),sort:e=>e.peak.value/Math.max(e.peak.upper,1e-9)},{key:`normal`,header:`Normal`,num:!0,cell:e=>t(e,e.peak.normal)},{key:`upper`,header:`Alerts Above`,num:!0,cell:e=>t(e,e.peak.upper)},{key:`start`,header:`Started`,num:!0,cell:e=>Ob(e.startMs),sort:e=>e.startMs}]}function VI({p:e,m:t}){let[n,r]=(0,E.useState)(e.anomalies[0]?.id??``),i=e.anomalies.find(e=>e.id===n)??e.anomalies[0],a=e.anomalyCount-e.anomalies.length;return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(II,{p:e,now:t.meta.window.to}),(0,W.jsx)(LI,{p:e}),i&&(0,W.jsx)(zI,{a:i,m:t}),(0,W.jsx)(G,{flush:!0,title:a>0?`Anomalies (${J(e.anomalies.length)} of ${J(e.anomalyCount)})`:`Anomalies (${J(e.anomalyCount)})`,children:(0,W.jsx)(Q,{columns:BI(t),rows:e.anomalies,rowKey:e=>e.id,onRowClick:e=>r(e.id),selectedKey:i?.id??null})})]})}function HI(){return(0,W.jsxs)(G,{children:[(0,W.jsx)(FI,{}),(0,W.jsx)(K,{title:`This problem is not in the selected time range`,children:`Pick a longer time range at the top, or open another problem.`})]})}function UI({p:e,now:t}){return(0,W.jsxs)(`li`,{className:`wl-pb-card${e.ongoing?` wl-pb-ongoing`:``}`,children:[(0,W.jsxs)(`a`,{className:`wl-pb-card-head`,href:PI(e),children:[(0,W.jsx)(Vb,{tone:e.ongoing?`danger`:`neutral`,title:e.ongoing?`Ongoing`:`Over`}),(0,W.jsx)(`strong`,{className:`wl-pb-title`,children:e.title}),(0,W.jsx)(`span`,{className:`wl-pb-when`,children:NI(e,t)}),(0,W.jsx)(Z_,{size:16,"aria-hidden":`true`})]}),(0,W.jsxs)(`div`,{className:`wl-chips`,children:[e.services.slice(0,6).map(e=>(0,W.jsx)(`span`,{className:`wl-chip`,children:e.name},e.row)),e.services.length>6&&(0,W.jsxs)(`span`,{className:`wl-chip`,children:[`+`,e.services.length-6,` more`]}),(0,W.jsxs)(`span`,{className:`wl-chip wl-chip-red`,children:[J(e.anomalyCount),` `,e.anomalyCount===1?`anomaly`:`anomalies`]})]}),e.cause?(0,W.jsx)(kI,{cause:e.cause}):(0,W.jsx)(`p`,{className:`wl-pb-nocause`,children:`No cause stands out: no new release, new error, slower query, or service further down the calls.`})]})}function WI({m:e}){return e.baseline.learning?(0,W.jsx)(K,{title:`No problems yet`,children:`Problems show up once WizeLens knows what normal looks like here.`}):(0,W.jsx)(K,{title:`No problems in this range`,children:`Every service and endpoint stayed within its normal error rate, p95, and traffic.`})}function GI({m:e}){let t=e.meta.window.to,n=e.total>e.problems.length?`Problems (${J(e.problems.length)} of ${J(e.total)})`:`Problems (${J(e.total)})`;return(0,W.jsx)(G,{title:n,children:e.problems.length?(0,W.jsx)(`ul`,{className:`wl-pb-list`,children:e.problems.map(e=>(0,W.jsx)(UI,{p:e,now:t},e.id))}):(0,W.jsx)(WI,{m:e})})}var KI=[[`high`,`High sensitivity`],[`medium`,`Medium sensitivity`],[`low`,`Low sensitivity`]];function qI({icon:e,label:t,value:n,foot:r,danger:i=!1}){return(0,W.jsxs)(`section`,{className:`wl-panel wl-stat`,children:[(0,W.jsx)(e,{className:`wl-stat-icon${i&&n>0?` wl-danger`:``}`,"aria-hidden":!0}),(0,W.jsx)(`div`,{className:`wl-stat-label`,children:t}),(0,W.jsx)(`div`,{}),(0,W.jsx)(`div`,{className:`wl-stat-value`,children:J(n)}),(0,W.jsx)(`div`,{className:`wl-stat-foot wl-pb-foot`,children:r})]})}function JI({m:e}){let t=e.baseline.mode===`week`?`same hour, earlier weeks`:`same hour, earlier days`;return(0,W.jsxs)(`div`,{className:`wl-grid wl-grid-stats`,children:[(0,W.jsx)(qI,{icon:Ny,label:`Ongoing`,value:e.ongoing,foot:`still above normal now`,danger:!0}),(0,W.jsx)(qI,{icon:Zy,label:`Problems`,value:e.total,foot:`in this range`}),(0,W.jsx)(qI,{icon:h_,label:`Anomalies`,value:e.anomalies,foot:`against the ${t}`}),(0,W.jsx)(qI,{icon:F_,label:`Services Affected`,value:e.services,foot:`in any problem`})]})}function YI({m:e}){if(!e.baseline.learning)return null;let t=e.baseline.mode===`week`?`the same hour in earlier weeks`:`the same hour on earlier days`;return(0,W.jsxs)(`div`,{className:`wl-banner wl-banner-info`,children:[`WizeLens is learning what normal looks like. It compares each part of the range with `,t,`, and needs two of them with data (it has `,e.baseline.samples,`). Hosts that keep less than two weeks compare with earlier days.`]})}function XI({m:e}){let t=i().query.get(`sensitivity`)??e?.sensitivity??`medium`;return(0,W.jsx)(fb,{title:`Problems`,subtitle:`Services and endpoints above their normal error rate, p95, or traffic, grouped by the calls between them, with a suspected cause.`,children:(0,W.jsx)(X,{label:`Sensitivity`,value:t,options:KI,onChange:e=>n({sensitivity:e===`medium`?null:e})})})}function ZI(){let e=i(),t=e.params[0]??null,n=t!==null||e.query.has(`problem`)||e.query.has(`at`),{model:r,loading:a,error:o}=hT(`problems`,t?{problem:t}:void 0);return(0,W.jsxs)(`div`,{className:`wl-pb-page`,children:[!n&&(0,W.jsx)(XI,{m:r}),(0,W.jsx)(ID,{model:r,loading:a,error:o,what:`problems`}),r&&(0,W.jsx)(YI,{m:r}),r&&n&&(r.selected?(0,W.jsx)(VI,{p:r.selected,m:r},r.selected.id):(0,W.jsx)(HI,{})),r&&!n&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(JI,{m:r}),(0,W.jsx)(GI,{m:r})]})]})}function QI(e,t,n,r){let[i,a]=(0,E.useState)(null);return(0,E.useEffect)(()=>{if(a(null),!e.trim()||!gh(e).ok)return;let i=!0,o=Date.now();return Mh(t=>Ux({q:e,kind:t.kind,range:n,limit:200},t.cursor?mm(t.cursor):null,r),t,null,{from:o-fe[n].ms,to:o}).then(e=>i&&a(e),()=>void 0),()=>void(i=!1)},[e,t,n,r]),i}function $I(e){return{key:`time`,header:`Time`,className:`wl-nowrap`,cell:t=>Ob(e(t))}}var eL=e=>e===null?`–`:(0,W.jsx)(Y,{tone:Bb(e),children:e}),tL=(e,t)=>(0,W.jsx)(`a`,{href:e,title:t,className:`wl-truncate`,children:t}),nL={requests:[$I(e=>e.startMs),{key:`req`,header:`Request`,className:`wl-search-main`,cell:e=>tL(S(`requests`,[],{trace:e.traceId}),`${e.method} ${e.path}`)},{key:`status`,header:`Status`,cell:e=>eL(e.status)},{key:`dur`,header:`Duration`,num:!0,cell:e=>q(e.durationMs)},{key:`service`,header:`Service`,className:`wl-nowrap`,cell:e=>e.service}],traces:[$I(e=>e.startMs),{key:`trace`,header:`Trace`,className:`wl-search-main`,cell:e=>tL(y(e.traceId),e.path)},{key:`health`,header:`Health`,cell:e=>e.health?(0,W.jsx)(Y,{tone:zb(e.health),children:e.health}):`–`},{key:`dur`,header:`Duration`,num:!0,cell:e=>q(e.durationMs)},{key:`spans`,header:`Spans`,num:!0,cell:e=>e.spanCount},{key:`services`,header:`Services`,className:`wl-search-wrap`,cell:e=>e.services.join(`, `)}],spans:[$I(e=>e.startMs),{key:`span`,header:`Span`,className:`wl-search-main`,cell:e=>tL(y(e.traceId),e.name)},{key:`cat`,header:`Kind`,className:`wl-nowrap`,cell:e=>`${e.category} · ${e.kind}`},{key:`status`,header:`Status`,cell:e=>e.httpStatus===null?e.status===`error`?(0,W.jsx)(Y,{tone:`danger`,children:`error`}):`–`:eL(e.httpStatus)},{key:`dur`,header:`Duration`,num:!0,cell:e=>q(e.durationMs)},{key:`service`,header:`Service`,className:`wl-nowrap`,cell:e=>e.service}],logs:[$I(e=>e.timeMs),{key:`level`,header:`Level`,cell:e=>(0,W.jsx)(lA,{level:e.level})},{key:`msg`,header:`Message`,className:`wl-search-main wl-search-wrap`,cell:e=>e.message},{key:`service`,header:`Service`,className:`wl-nowrap`,cell:e=>e.service},{key:`trace`,header:`Request`,className:`wl-search-trace`,cell:e=>tL(y(e.traceId,`logs`),e.traceName)}]},rL={requests:`req`,traces:`trace`,spans:`span`,logs:`msg`};function iL(e,t){let n=t;return{traceId:n.traceId,owner:Dg(e,t),timeMs:n.startMs??n.timeMs??0}}function aL(e,t){return e===`logs`?t.key:e===`spans`?`${t.traceId}:${t.spanId}`:t.traceId}var oL=50,sL=[[`requests`,`Requests`],[`traces`,`Traces`],[`spans`,`Spans`],[`logs`,`Logs`]],cL=e=>e?`${e.n.toLocaleString()}${e.more?`+`:``}`:``,lL=e=>Fp.includes(e??``);function uL({failure:e}){return e.type===`invalid`?(0,W.jsx)(K,{title:`Fix the search above to see results`}):(0,W.jsxs)(K,{title:`Search is not answering`,children:[e.message,`. Your search is fine. Try again in a moment.`]})}function dL({kind:e,rows:t}){return(0,W.jsxs)(`button`,{type:`button`,className:`wl-btn wl-btn-sm`,title:`Download the results shown as CSV`,onClick:()=>SO(`search-${e}`,CO(t)),children:[(0,W.jsx)($y,{"aria-hidden":`true`}),` Export`]})}function fL({kind:e,s:t}){let n=t.pages.flatMap(e=>e.items),r=t.pages[0]?.settling,i=t.pages[0]?.unknownTags??[],a=jx(e,n,t=>iL(e,t)),o=Lx(nL[e],rL[e],a),s=t.loading?(0,W.jsx)(K,{title:`Searching…`}):(0,W.jsx)(K,{title:`Nothing matches`,children:`Try fewer terms, another kind, or a wider time range.`});return(0,W.jsxs)(G,{title:`${sL.find(([t])=>t===e)[1]} (${n.length}${t.more?`+`:``})`,flush:!0,action:n.length>0&&(0,W.jsx)(dL,{kind:e,rows:n}),children:[r?(0,W.jsxs)(`p`,{className:`wl-search-note wl-muted wl-small`,children:[`Search is catching up: `,r,` `,r===1?`trace is`:`traces are`,` not in the results yet.`]}):null,i.length>0&&(0,W.jsxs)(`p`,{className:`wl-search-note wl-muted wl-small`,children:[`No tag named `,i.join(`, `),`. It finds only tags your app sets with that name.`]}),t.failure?(0,W.jsx)(uL,{failure:t.failure}):(0,W.jsx)(Q,{columns:o,rows:n,rowKey:t=>aL(e,t),empty:s}),t.more&&(0,W.jsx)(`div`,{className:`wl-search-more`,children:(0,W.jsx)(`button`,{type:`button`,className:`wl-btn`,onClick:t.more,children:`Show more`})})]})}function pL({summary:e,kind:t}){let n=sL.find(([e])=>e===t)[1];return(0,W.jsx)(G,{title:`${n} Over Time`,children:(0,W.jsx)(eE,{starts:e.starts,bars:[{label:n,values:e.histogram,color:`var(--wl-blue)`}],height:140})})}function mL(){let{items:e}=BE(`search`);return e.length===0?null:(0,W.jsxs)(`div`,{className:`wl-saved-searches`,children:[(0,W.jsx)(`span`,{className:`wl-muted wl-small`,children:`Saved:`}),e.map(e=>(0,W.jsx)(`a`,{className:`wl-filter-chip`,href:e.href,title:e.ownerName?`Saved by ${e.ownerName}`:void 0,children:e.name},e.id))]})}function hL(){let{query:e}=i(),t=e.get(`q`)??``,r=lL(e.get(`kind`))?e.get(`kind`):`requests`,[a]=Zg(),o=H().has(`search`),s=Kx({q:t,kind:r,range:a,limit:oL},o),c=s.failure?.type===`invalid`?s.failure:null,l=QI(t,r,a,o),u=sL.map(([e,t])=>[e,l?`${t} (${cL(l.counts[e])})`:t]),d=gh(t),f=t.trim()&&d.ok&&d.node&&!Tg(d.node)?[Wg(t.trim())]:[];return(0,W.jsxs)(`div`,{className:`wl-search-page`,children:[(0,W.jsx)(fb,{title:`Search`,subtitle:`Find any request, trace, span, or log line. Type a field such as service: or @ for an attribute.`,children:(0,W.jsx)(sS,{scopes:f})}),(0,W.jsxs)(`section`,{className:`wl-panel wl-search-bar`,children:[(0,W.jsx)(oA,{value:t,onSubmit:e=>n({q:e||null}),range:a,server:o,serverError:c}),(0,W.jsx)(hb,{tabs:u,value:r,onChange:e=>n({kind:e===`requests`?null:e})}),(0,W.jsx)(mL,{})]}),l&&(0,W.jsx)(pL,{summary:l,kind:r}),(0,W.jsx)(fL,{kind:r,s})]})}function gL({page:e,sections:t,active:n}){let r=t.find(e=>e.id===n)??t[0];return r?(0,W.jsxs)(`div`,{className:`wl-sections`,children:[(0,W.jsx)(`nav`,{className:`wl-sections-nav`,"aria-label":`Sections`,children:t.map(t=>(0,W.jsxs)(`a`,{href:S(e,[t.id]),className:t===r?`wl-active`:``,"aria-current":t===r?`page`:void 0,children:[(0,W.jsx)(t.icon,{"aria-hidden":!0}),(0,W.jsx)(`span`,{children:t.label}),t.count!==void 0&&(0,W.jsx)(`span`,{className:`wl-chip-count`,children:t.count})]},t.id))}),(0,W.jsx)(`div`,{className:`wl-sections-body`,children:r.render()})]}):null}function _L({title:e,description:t,action:n}){return(0,W.jsxs)(`header`,{className:`wl-section-head`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`h2`,{children:e}),t&&(0,W.jsx)(`p`,{children:t})]}),n&&(0,W.jsx)(`div`,{className:`wl-section-actions`,children:n})]})}function vL({label:e,text:t}){return(0,W.jsxs)(`div`,{className:`wl-snippet`,children:[(0,W.jsx)(`span`,{className:`wl-muted wl-small`,children:e}),(0,W.jsx)(`code`,{className:`wl-mono wl-small`,children:t}),(0,W.jsx)(Kb,{text:t,label:`Copy: ${e}`})]})}function yL({hubUrl:e}){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(_L,{title:`Connect a service`,description:`Set these on the service, then restart it. It keeps its own dashboard too.`}),(0,W.jsxs)(G,{children:[(0,W.jsx)(vL,{label:`WizeLens add-on (.NET or Node)`,text:`WIZELENS_HUB=${e}`}),(0,W.jsx)(vL,{label:`Group it in a project (optional)`,text:`WIZELENS_PROJECT=my-project`}),(0,W.jsx)(vL,{label:`Any OpenTelemetry app (OTLP/HTTP)`,text:`OTEL_EXPORTER_OTLP_ENDPOINT=${e}`}),(0,W.jsx)(vL,{label:`OTLP project (optional)`,text:`OTEL_RESOURCE_ATTRIBUTES=service.namespace=my-project`})]})]})}function bL({url:e}){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(_L,{title:`Connect a service`,description:(0,W.jsxs)(W.Fragment,{children:[`Make an ingest key in `,(0,W.jsx)(`a`,{href:`#/team/keys`,children:`Team, API keys`}),`, then set these on the service and restart it. In production, also set WIZELENS_ENABLED=true: the service then sends only and serves nothing.`]})}),(0,W.jsxs)(G,{children:[(0,W.jsx)(vL,{label:`WizeLens add-on (.NET or Node)`,text:`WIZELENS_HUB=${e}`}),(0,W.jsx)(vL,{label:`Its ingest key`,text:`WIZELENS_HUB_TOKEN=wl_ik_...`}),(0,W.jsx)(vL,{label:`Any OpenTelemetry app (OTLP/HTTP)`,text:`OTEL_EXPORTER_OTLP_ENDPOINT=${e}`}),(0,W.jsx)(vL,{label:`OTLP key`,text:`OTEL_EXPORTER_OTLP_HEADERS=Authorization=Bearer wl_ik_...`}),(0,W.jsx)(vL,{label:`AI agents (MCP), with a read key`,text:`${e}/_wizelens/mcp`})]})]})}function xL({hub:e}){return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(_L,{title:`Sends to`}),(0,W.jsx)(G,{children:(0,W.jsxs)(`p`,{className:`wl-settings-note`,children:[`This service also sends its data to the hub or cloud at `,(0,W.jsx)(`code`,{className:`wl-mono`,children:e}),`.`,` `,(0,W.jsx)(`a`,{href:`${e}/_wizelens/`,target:`_blank`,rel:`noreferrer`,children:`Open that dashboard`}),` `,`to see every service in one place.`]})})]})}function SL({info:e}){let t=new URL(`../`,window.location.href).href.replace(/\/$/,``);return e?.mode===`hub`?(0,W.jsx)(yL,{hubUrl:t}):e?.mode===`cloud`?(0,W.jsx)(bL,{url:t}):e?.hub?(0,W.jsx)(xL,{hub:e.hub}):null}var CL=[{setting:`On or off`,dotnet:`Enabled`,node:`enabled`,env:`WIZELENS_ENABLED`},{setting:`Dashboard (off: send-only)`,dotnet:`Dashboard`,node:`dashboard`,env:`WIZELENS_DASHBOARD`},{setting:`Send to a hub or the cloud`,dotnet:`HubUrl`,node:`hub`,env:`WIZELENS_HUB`},{setting:`Hub token or ingest key`,dotnet:`HubToken`,node:`hubToken`,env:`WIZELENS_HUB_TOKEN`},{setting:`Project on a shared hub`,dotnet:`Project`,node:`project`,env:`WIZELENS_PROJECT`},{setting:`Share of traces kept`,dotnet:`Sampling.Rate`,node:`sampling.rate`,env:`WIZELENS_SAMPLE_RATE`},{setting:`Logs outside a request`,dotnet:`Logs.Outside`,node:`logs.outside`,env:`WIZELENS_LOGS_OUTSIDE`},{setting:`Lowest level kept outside a request`,dotnet:`Logs.MinLevel`,node:`logs.minLevel`,env:`WIZELENS_LOGS_MIN_LEVEL`},{setting:`Share of those lines kept (below warn)`,dotnet:`Logs.SampleRate`,node:`logs.sampleRate`,env:`WIZELENS_LOGS_SAMPLE_RATE`},{setting:`Storage`,dotnet:`Storage`,node:`storage`,env:`–`},{setting:`Storage file`,dotnet:`StoragePath`,node:`storagePath`,env:`–`},{setting:`Traces kept`,dotnet:`MaxTraces, MaxAge`,node:`maxTraces, maxAgeMs`,env:`–`},{setting:`Slow query`,dotnet:`SlowQueryMs`,node:`slowQueryMs`,env:`–`},{setting:`N+1 threshold`,dotnet:`NPlusOneThreshold`,node:`nPlusOneThreshold`,env:`–`},{setting:`AI access (MCP)`,dotnet:`EnableMcp`,node:`enableMcp`,env:`–`},{setting:`Outgoing HTTP calls (fetch, node:http)`,dotnet:`–`,node:`instrumentFetch, instrumentHttp`,env:`–`},{setting:`Response bodies`,dotnet:`CaptureResponseBody`,node:`captureResponseBody`,env:`–`},{setting:`Metrics`,dotnet:`CaptureMetrics`,node:`captureMetrics`,env:`–`},{setting:`Redacted keys`,dotnet:`RedactKeys`,node:`redactKeys`,env:`–`},{setting:`Tags`,dotnet:`Tags.Rules, Tags.DisableBuiltIns`,node:`tags.rules, tags.disableBuiltIns`,env:`–`}],wL=e=>e===`–`?(0,W.jsx)(`span`,{className:`wl-muted`,children:`–`}):(0,W.jsx)(`code`,{className:`wl-mono wl-small`,children:e}),TL=[{key:`setting`,header:`Setting`,cell:e=>e.setting},{key:`dotnet`,header:`.NET: AddWizeLens(o => …)`,cell:e=>wL(e.dotnet)},{key:`node`,header:`Node: createWizeLens({ … })`,cell:e=>wL(e.node)},{key:`env`,header:`Environment variable`,cell:e=>wL(e.env)}];function EL(){return(0,W.jsx)(G,{flush:!0,children:(0,W.jsx)(Q,{columns:TL,rows:CL,rowKey:e=>e.setting})})}function DL(){let e=H(),t=e.has(`accounts`),n=Me(Ce()),r=c().project,i=n?.project.role??n?.org.role;return e.has(`settings`)?t?{url:r?`./api/projects/${encodeURIComponent(r)}/settings`:null,canEdit:i===`owner`||i===`admin`,label:n?.project.name??``}:{url:`./api/settings?project=${encodeURIComponent(r)}`,canEdit:!0,label:r||`the default project`}:{url:null,canEdit:!1,label:``}}var OL=e=>({slowQueryMs:e.slowQueryMs?.toString()??``,nPlusOneThreshold:e.nPlusOneThreshold?.toString()??``,retentionDays:e.retentionDays?.toString()??``,redactKeys:(e.redactKeys??[]).join(`, `)}),kL=e=>({slowQueryMs:e.slowQueryMs||null,nPlusOneThreshold:e.nPlusOneThreshold||null,retentionDays:e.retentionDays||null,redactKeys:e.redactKeys.split(`,`).map(e=>e.trim()).filter(Boolean)});function AL({reply:e}){let t=new Set(e.settings.redactKeys??[]);return(0,W.jsx)(`div`,{className:`wl-chips`,children:e.effective.redactKeys.map(e=>(0,W.jsx)(`span`,{className:`wl-chip wl-mono${t.has(e)?` wl-chip-own`:``}`,children:e},e))})}function jL({url:e,reply:t,canEdit:n,onSaved:r}){let[i,a]=(0,E.useState)(()=>OL(t.settings)),[o,s]=(0,E.useState)(null);(0,E.useEffect)(()=>a(OL(t.settings)),[t]);let c=e=>t=>a(n=>({...n,[e]:t.target.value})),l=t.defaults,u=t=>{t.preventDefault(),x(`PUT`,e,kL(i)).then(e=>(r(e),s({ok:!0,text:`Saved. New data uses these settings.`})),e=>s({ok:!1,text:e instanceof Error?e.message:String(e)}))},d=!n;return(0,W.jsxs)(`form`,{className:`wl-form`,onSubmit:u,children:[(0,W.jsxs)(Yx,{children:[(0,W.jsx)(Z,{label:`Slow query (ms)`,narrow:!0,type:`number`,min:1,max:6e4,disabled:d,value:i.slowQueryMs,onChange:c(`slowQueryMs`),placeholder:String(l.slowQueryMs),hint:`A database call this slow or slower counts as slow. Empty: ${l.slowQueryMs}.`}),(0,W.jsx)(Z,{label:`N+1 threshold`,narrow:!0,type:`number`,min:2,max:1e3,disabled:d,value:i.nPlusOneThreshold,onChange:c(`nPlusOneThreshold`),placeholder:String(l.nPlusOneThreshold),hint:`This many similar calls in one request is an N+1. Empty: ${l.nPlusOneThreshold}.`}),(0,W.jsx)(Z,{label:`Keep data for (days)`,narrow:!0,type:`number`,min:1,max:l.retentionDays,disabled:d,value:i.retentionDays,onChange:c(`retentionDays`),placeholder:String(l.retentionDays),hint:`At most ${l.retentionDays}. Older data is deleted within minutes.`})]}),(0,W.jsx)(Z,{label:`More redacted keys`,disabled:d,value:i.redactKeys,onChange:c(`redactKeys`),placeholder:`ssn, iban, dob`,hint:`Comma list. A value whose key contains one of these is stored as [redacted], on top of the keys in effect below.`}),o&&!o.ok&&(0,W.jsx)(`div`,{className:`wl-banner wl-banner-error`,children:o.text}),n&&(0,W.jsxs)(`div`,{className:`wl-form-actions wl-form-actions-split`,children:[(0,W.jsx)(`span`,{className:`wl-muted wl-small`,role:`status`,children:o?.ok?o.text:``}),(0,W.jsxs)(`span`,{className:`wl-row-actions`,children:[(0,W.jsx)(`button`,{type:`button`,className:`wl-btn`,onClick:()=>a(OL({})),children:`Use the defaults`}),(0,W.jsx)(`button`,{type:`submit`,className:`wl-btn wl-btn-primary`,children:`Save settings`})]})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`div`,{className:`wl-section-title`,children:`Redacted keys in effect`}),(0,W.jsx)(AL,{reply:t})]})]})}function ML(){let e=DL(),{data:t,error:n,reload:r}=zx(e.url),[i,a]=(0,E.useState)(null),o=i??t,s=e.canEdit?``:` Only owners and admins can change them.`;return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(_L,{title:`This project`,description:`Settings for ${e.label||`this project`}. Thresholds and redacted keys apply to data that arrives after you save.${s}`}),(0,W.jsxs)(G,{children:[!e.url&&(0,W.jsx)(K,{title:`Pick a project first`,children:`Choose a project at the top of the page.`}),n&&(0,W.jsx)(`div`,{className:`wl-banner wl-banner-error`,children:n}),e.url&&o&&(0,W.jsx)(jL,{url:e.url,reply:o,canEdit:e.canEdit,onSaved:e=>(a(e),r())})]})]})}var NL=36e5;function PL(e){return e%(24*NL)==0?`${e/(24*NL)} day${e===24*NL?``:`s`}`:e>=NL?`${+(e/NL).toFixed(1)} hours`:`${Math.round(e/6e4)} minutes`}var FL=e=>e===void 0?`–`:(0,W.jsx)(Y,{tone:e?`success`:`neutral`,children:e?`On`:`Off`});function IL(e){return e.status===`ok`?(0,W.jsx)(Hb,{tone:`success`,children:`Connected`}):e.status===`pending`?(0,W.jsx)(Hb,{tone:`neutral`,children:`Connecting…`}):(0,W.jsxs)(Hb,{tone:`danger`,colorText:!0,children:[`Unreachable`,e.error?` (${e.error})`:``]})}function LL(e,t){if(!t.mcp)return FL(!1);let n=`${e.endpoint}/mcp`;return(0,W.jsxs)(`span`,{children:[FL(!0),` `,(0,W.jsx)(`code`,{className:`wl-mono wl-small`,children:n}),` `,(0,W.jsx)(Kb,{text:n,label:`Copy MCP URL`})]})}function RL(e){let t=e.sampling;if(!t)return`Every trace`;let n=[t.keepErrors?`every trace with an error`:null,t.keepSlowMs===null?null:`every trace with a span of ${q(t.keepSlowMs)} or more`].filter(Boolean),r=`${Number((t.rate*100).toFixed(2))}% of traces`;return n.length?`${r}, plus ${n.join(` and `)}`:r}function zL(e,t){let n=t.storage,r=n?.kind===`postgres`?`Postgres (kept across restarts)`:n?.kind===`sqlite`?`SQLite file (kept across restarts)`:n?`Memory only`:null;return[[`Status`,IL(e)],[`Version`,t.version],[`Runtime`,t.runtime],[`Environment`,t.environment??null],[`Host`,t.host??null],[`Started`,t.startedMs?Ob(t.startedMs):null],[`Storage`,r],[`Max traces`,n?.maxTraces===void 0?null:J(n.maxTraces)],[`Keeps data for`,n?PL(n.maxAgeMs):null],[`Sampling`,t.mode===`in-app`?RL(t):null],[`Slow query`,t.analysis?`${q(t.analysis.slowQueryMs)} or more`:null],[`N+1 threshold`,t.analysis?`${t.analysis.nPlusOneThreshold} repeats`:null],[`AI access (MCP)`,LL(e,t)],[`Response bodies`,t.captureResponseBody===void 0?null:FL(t.captureResponseBody)]].filter(e=>e[1]!==null)}function BL({source:e}){let t=e.info,n=(0,W.jsxs)(`h2`,{children:[t?.service??e.endpoint,e.self&&(0,W.jsx)(`span`,{className:`wl-muted wl-small`,children:` · this dashboard`})]});return(0,W.jsxs)(G,{title:n,action:(0,W.jsx)(`a`,{className:`wl-view-all wl-small wl-mono`,href:`${e.endpoint}/`,children:e.endpoint}),children:[t?(0,W.jsx)(mb,{rows:zL(e,t)}):(0,W.jsx)(mb,{rows:[[`Status`,IL(e)]]}),t?.redactKeys&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{className:`wl-section-title`,children:`Redacted keys`}),(0,W.jsx)(`p`,{className:`wl-muted wl-small wl-settings-note`,children:`Values whose key contains one of these words are stored as [redacted].`}),(0,W.jsx)(`div`,{className:`wl-chips`,children:t.redactKeys.map(e=>(0,W.jsx)(`span`,{className:`wl-chip wl-mono`,children:e},e))})]})]})}var VL={name:``,color:`blue`,query:``},HL={stream:`Responses sent as a stream of events (server-sent events), such as MCP and live updates. They stay open on purpose, so they look slow.`,probe:`Health checks from Kubernetes, Google Cloud, and AWS load balancers.`,bot:`Crawlers and bots, by their user agent.`};function UL(e,t){return[{key:`tag`,header:`Tag`,cell:e=>(0,W.jsx)(Fx,{tag:e})},{key:`what`,header:`Shows on`,className:`wl-wrap`,cell:e=>HL[e.name]??(0,W.jsx)(`span`,{className:`wl-tag-query`,children:e.query})},{key:`on`,header:`On`,cell:n=>(0,W.jsx)(Xx,{label:n.enabled?`On`:`Off`,checked:n.enabled,disabled:!e,onChange:()=>t(n)})}]}function WL(e,t,n){return[{key:`tag`,header:`Tag`,cell:e=>(0,W.jsx)(Fx,{tag:e})},{key:`query`,header:`Search`,className:`wl-wrap`,cell:e=>(0,W.jsx)(`span`,{className:`wl-tag-query`,children:e.query})},...e?[{key:`actions`,header:``,cell:e=>(0,W.jsxs)(`span`,{className:`wl-row-actions`,children:[(0,W.jsx)(`button`,{type:`button`,className:`wl-link-btn`,onClick:()=>t(e),children:`Edit`}),(0,W.jsx)(`button`,{type:`button`,className:`wl-link-btn wl-text-error`,onClick:()=>n(e),children:`Delete`})]})}]:[]]}function GL(){let e=iS({name:`checkout`,query:`route:/checkout*`,color:`green`});return(0,W.jsxs)(G,{title:`Add a tag`,children:[(0,W.jsxs)(`p`,{children:[`This service keeps its tags in code. Add a rule to the `,(0,W.jsx)(`code`,{children:`tags`}),` option, then restart the service.`]}),(0,W.jsx)(`pre`,{className:`wl-tag-code`,children:`// Node\n${e.node}\n\n// .NET\n${e.dotnet}`})]})}function KL(){let e=H(),t=xx(),{confirm:n,dialog:r}=KN(),[i,a]=(0,E.useState)(null),[o,s]=(0,E.useState)(null),c=t?.list,l=!!c?.editable,u=c?.tags.filter(e=>!e.builtIn)??[],d=e=>void Bx(e,()=>void 0).then(s),f=e=>d(()=>Ex(e.id,!e.enabled)),p=async e=>{await n({title:`Delete the tag "${e.name}"?`,body:`It comes off every request, trace, and log line it marks. Your data stays as it is.`,confirmLabel:`Delete tag`,danger:!0})&&d(()=>Dx(e.id))},m=e=>Bx(()=>i===`new`?wx(e):Tx(i.id,e),()=>a(null)),h=u.length>=(c?.max??50),g=l&&!i&&(0,W.jsxs)(`button`,{type:`button`,className:`wl-btn wl-btn-primary`,onClick:()=>a(`new`),disabled:h,title:h?`Up to ${c?.max} tags`:void 0,children:[(0,W.jsx)(dy,{"aria-hidden":`true`}),` New tag`]}),_=e.mode===`in-app`?`Set in this service's code.`:l?`Anything that matches a tag's search shows the tag, on old and new data alike.`:`Your role can see tags but not change them.`;return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(_L,{title:`Tags`,description:`Name a search, and everything it finds wears that name in every list. Search for it with tag:name. ${_}`,action:g}),r,o&&(0,W.jsx)(`div`,{className:`wl-banner wl-banner-error`,role:`alert`,children:o}),i&&(0,W.jsx)(G,{title:i===`new`?`New tag`:`Edit "${i.name}"`,children:(0,W.jsx)(rS,{initial:i===`new`?VL:{name:i.name,color:i.color,query:i.query},saveLabel:`Save tag`,onSave:m,onCancel:()=>a(null)})}),(0,W.jsx)(G,{title:`Your tags`,flush:!0,children:(0,W.jsx)(Q,{columns:WL(l,a,e=>void p(e)),rows:u,rowKey:e=>e.id,empty:(0,W.jsx)(K,{title:t?`No tags yet`:`Loading…`,children:t&&`Add one here, or use Tag this on a request, an error, or a service.`})})}),e.mode===`in-app`&&(0,W.jsx)(GL,{}),(0,W.jsx)(G,{title:`Built-in tags`,flush:!0,children:(0,W.jsx)(Q,{columns:UL(l,f),rows:c?.tags.filter(e=>e.builtIn)??[],rowKey:e=>e.id})})]})}var qL=[[`light`,`Light`],[`dark`,`Dark`],[`system`,`Same as my system`]],JL=[[`local`,`My computer's time zone`],[`utc`,`UTC`]],YL=[[`12`,`12-hour (2:05 PM)`],[`24`,`24-hour (14:05)`]];function XL(){let[e,t]=je(),[n,r]=Zg(),[i,a]=Gw(),[o,s]=Kw(),c=H().ranges.map(e=>[e,fe[e].label]);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(_L,{title:`Dashboard`,description:`How this dashboard looks and opens for you. Saved in this browser only.`}),(0,W.jsxs)(G,{children:[(0,W.jsxs)(Yx,{children:[(0,W.jsx)(Jx,{label:`Theme`,value:e,options:qL,onChange:t}),(0,W.jsx)(Jx,{label:`Default time range`,value:n,options:c,onChange:r,hint:`Pages open with this range.`})]}),(0,W.jsxs)(Yx,{children:[(0,W.jsx)(Jx,{label:`Time zone`,value:i,options:JL,onChange:a,hint:`Times and charts show in this zone.`}),(0,W.jsx)(Jx,{label:`Clock`,value:o,options:YL,onChange:s})]})]})]})}function ZL(e){return e===`cloud`?{label:`This cloud`,description:`How this WizeLens Cloud is set up. Start options change it: run wizelens-cloud --help. Projects change their own under This project.`}:e===`hub`?{label:`This hub`,description:`How this hub is set up. Start options change it: run wizelens-hub --help. Projects change their own under This project.`}:{label:`Services`,description:`How WizeLens is set up in each service this dashboard reads. Settings live in each app's code: change one, then restart the service.`}}function QL(){let e=Se(),t=H(),{params:n}=i(),r=e.info?.mode,a=ZL(r),o=H().has(`tags`),s=[{id:`dashboard`,label:`Dashboard`,icon:Ly,render:()=>(0,W.jsx)(XL,{})},...t.has(`settings`)?[{id:`project`,label:`This project`,icon:Cv,render:()=>(0,W.jsx)(ML,{})}]:[],...r===`hub`||r===`cloud`||e.info?.hub?[{id:`connect`,label:r===`in-app`?`Sends to`:`Connect a service`,icon:py,render:()=>(0,W.jsx)(SL,{info:e.info})}]:[],{id:`services`,label:a.label,icon:Ty,render:()=>(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(_L,{title:a.label,description:a.description}),e.sources.length===0?(0,W.jsx)(G,{children:(0,W.jsx)(K,{title:`No services connected yet`})}):(0,W.jsx)(`div`,{className:`wl-settings-sources`,children:e.sources.map(e=>(0,W.jsx)(BL,{source:e},e.endpoint))})]})},...o?[{id:`tags`,label:`Tags`,icon:Uy,render:()=>(0,W.jsx)(KL,{})}]:[],{id:`options`,label:`Add-on options`,icon:j_,render:()=>(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(_L,{title:`Add-on options`,description:`Every option of the .NET and Node add-ons, and the environment variable that sets it without a code change.`}),(0,W.jsx)(EL,{})]})}];return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(fb,{title:`Settings`,subtitle:`Your dashboard preferences, and how WizeLens is set up.`}),(0,W.jsx)(gL,{page:`settings`,sections:s,active:n[0]})]})}function $L(e){let t=c().project;return e?{list:t?`./api/projects/${t}/uptime`:null,item:`./api/projects/${t}/uptime`}:{list:`./api/uptime${t?`?project=${encodeURIComponent(t)}`:``}`,item:`./api/uptime`}}function eR(){let e=H().has(`accounts`),t=Me(Ce())?.org.role,{list:n,item:r}=$L(e),{data:i,error:a,reload:o}=zx(n),s=c().project;return{data:i,error:a,reload:o,canWrite:!e||t!==void 0&&t!==`viewer`,save:(t,n)=>Bx(()=>n?x(`PATCH`,`${r}/${n}`,t):x(`POST`,r,e?t:{...t,project:s}),o),remove:e=>Bx(()=>x(`DELETE`,`${r}/${e}`),o),runNow:e=>Bx(()=>x(`POST`,`${r}/${e}/run`),o)}}var tR=[1,2,5,10,15,30,60].map(e=>[String(e),e===1?`Every minute`:e===60?`Every hour`:`Every ${e} minutes`]),nR=Id.map(e=>[e,e]),rR={name:``,url:`https://`,method:`GET`,headers:{},expectStatus:Ld,expectBody:``,intervalMin:5,timeoutMs:1e4,env:``,enabled:!0},iR=e=>Object.entries(e).map(([e,t])=>`${e}: ${t}`).join(`
57
57
  `);function aR(e){let t={};for(let n of e.split(`
58
- `)){let e=n.indexOf(`:`);e>0&&(t[n.slice(0,e).trim()]=n.slice(e+1).trim())}return t}var oR=e=>{if(!e)return rR;let{name:t,url:n,method:r,headers:i,expectStatus:a,expectBody:o,intervalMin:s,timeoutMs:c,env:l,enabled:u}=e;return{name:t,url:n,method:r,headers:i,expectStatus:a,expectBody:o,intervalMin:s,timeoutMs:c,env:l,enabled:u}};function sR({initial:e,onSave:t,onCancel:n}){let[r,i]=(0,E.useState)(()=>oR(e)),[a,o]=(0,E.useState)(()=>iR(r.headers)),[s,c]=(0,E.useState)(null),l=e=>t=>i(n=>({...n,[e]:t}));return(0,W.jsx)(G,{title:e?`Edit "${e.name}"`:`New check`,className:`wl-panel-form`,children:(0,W.jsxs)(`form`,{className:`wl-form`,onSubmit:e=>{e.preventDefault(),t({...r,headers:aR(a)}).then(c)},children:[(0,W.jsxs)(Yx,{children:[(0,W.jsx)(Z,{label:`Name`,value:r.name,onChange:e=>l(`name`)(e.target.value),placeholder:`Website`}),(0,W.jsx)(Z,{label:`URL`,required:!0,type:`url`,value:r.url,onChange:e=>l(`url`)(e.target.value),placeholder:`https://example.com/health`}),(0,W.jsx)(Jx,{label:`Method`,value:r.method,options:nR,onChange:l(`method`)})]}),(0,W.jsxs)(Yx,{children:[(0,W.jsx)(Jx,{label:`Runs`,value:String(r.intervalMin),options:tR,onChange:e=>l(`intervalMin`)(Number(e))}),(0,W.jsx)(Z,{label:`Timeout (seconds)`,type:`number`,min:1,max:60,required:!0,value:r.timeoutMs/1e3,onChange:e=>l(`timeoutMs`)(Math.round(Number(e.target.value)*1e3))}),(0,W.jsx)(Z,{label:`Expected status`,value:r.expectStatus,onChange:e=>l(`expectStatus`)(e.target.value),hint:`"200", "200-299", or "200,301-302". A 3xx here stops redirects being followed.`}),(0,W.jsx)(Z,{label:`Environment (optional)`,value:r.env,onChange:e=>l(`env`)(e.target.value),placeholder:`None`})]}),(0,W.jsx)(Z,{label:`Response must contain (optional)`,value:r.expectBody,onChange:e=>l(`expectBody`)(e.target.value),placeholder:`"status":"ok"`}),(0,W.jsx)(qx,{label:`Headers (optional)`,value:a,onChange:e=>o(e.target.value),placeholder:`Authorization: Bearer ...`,hint:`One "Name: value" per line. Secret values show as [redacted]; leave them as they are to keep them.`}),(0,W.jsx)(Xx,{label:`On`,checked:r.enabled,onChange:e=>l(`enabled`)(e.target.checked)}),s&&(0,W.jsx)(`div`,{className:`wl-banner wl-banner-error`,children:s}),(0,W.jsxs)(`div`,{className:`wl-form-actions wl-form-actions-start`,children:[(0,W.jsx)(`button`,{type:`submit`,className:`wl-btn wl-btn-primary`,children:`Save check`}),(0,W.jsx)(`button`,{type:`button`,className:`wl-btn`,onClick:n,children:`Cancel`})]})]})})}function cR(e,t){return[{key:`state`,header:``,cell:e=>e.endMs===null?(0,W.jsx)(Y,{tone:`danger`,children:`Ongoing`}):(0,W.jsx)(Y,{tone:`success`,children:`Resolved`})},...t?[{key:`check`,header:`Check`,cell:e=>(0,W.jsx)(`a`,{href:S(`uptime`,[e.checkId]),children:e.checkName})}]:[],{key:`start`,header:`Started`,className:`wl-nowrap`,sort:e=>e.startMs,cell:e=>Ob(e.startMs)},{key:`length`,header:`Down For`,num:!0,sort:t=>Nh(t,e),cell:t=>LP(Nh(t,e))},{key:`reason`,header:`Reason`,className:`wl-wrap`,cell:e=>e.reason}]}function lR({incidents:e,nowMs:t,withCheck:n=!0}){return(0,W.jsx)(G,{title:`Incidents`,flush:!0,children:(0,W.jsx)(Q,{columns:cR(t,n),rows:e,rowKey:e=>e.id,empty:(0,W.jsx)(K,{children:`No incidents in the last 90 days.`}),defaultSort:{key:`start`,desc:!0}})})}function uR({c:e,nowMs:t}){let n=Rd(e.tlsExpiresMs,t);return n===null?(0,W.jsx)(`span`,{className:`wl-muted`,children:e.url.startsWith(`https:`)?`–`:`No TLS`}):(0,W.jsx)(Y,{tone:n<0?`danger`:n<14?`warning`:`neutral`,children:n<0?`Expired`:`${n} days`})}function dR({c:e}){let t=FP(e);return(0,W.jsx)(Hb,{tone:t.tone,colorText:t.tone===`danger`,children:t.label})}function fR(e){return e.canWrite?[{key:`actions`,header:``,cell:t=>(0,W.jsxs)(`span`,{className:`wl-row-actions`,children:[(0,W.jsx)(`button`,{type:`button`,className:`wl-link-btn`,onClick:()=>e.onRun(t),children:`Run now`}),(0,W.jsx)(`button`,{type:`button`,className:`wl-link-btn`,onClick:()=>e.onEdit(t),children:`Edit`}),(0,W.jsx)(`button`,{type:`button`,className:`wl-link-btn wl-text-error`,onClick:()=>e.onDelete(t),children:`Delete`})]})}]:[]}function pR(e){let t=e=>({key:e,header:e,num:!0,sort:t=>t.uptime[e]??-1,cell:t=>PP(t.uptime[e])});return[{key:`state`,header:`Status`,sort:e=>FP(e).rank,cell:e=>(0,W.jsx)(dR,{c:e})},{key:`name`,header:`Check`,sort:e=>e.name.toLowerCase(),className:`wl-uptime-name`,cell:e=>(0,W.jsxs)(`a`,{href:S(`uptime`,[e.id]),children:[(0,W.jsx)(`strong`,{children:e.name}),(0,W.jsxs)(`span`,{className:`wl-muted wl-small`,children:[e.method,` `,e.url]})]})},t(`24h`),t(`7d`),t(`30d`),{key:`avg`,header:`Response`,num:!0,sort:e=>e.lastDurationMs??-1,cell:t=>(0,W.jsx)(mR,{c:t,model:e.model})},{key:`last`,header:`Last Check`,className:`wl-nowrap`,sort:e=>e.lastRunMs??0,cell:t=>t.lastRunMs?Nb(t.lastRunMs,e.nowMs):`Not yet`},{key:`tls`,header:`Certificate`,sort:e=>e.tlsExpiresMs??1/0,cell:t=>(0,W.jsx)(uR,{c:t,nowMs:e.nowMs})},...fR(e)]}function mR({c:e,model:t}){let n=IP(t,e.id);return(0,W.jsxs)(`span`,{className:`wl-uptime-response`,children:[n&&(0,W.jsx)(cD,{values:n.avgMsSeries,width:80,height:20,color:`var(--wl-blue)`}),q(e.lastDurationMs)]})}function hR(e){return(0,W.jsx)(Q,{columns:pR(e),rows:e.checks,rowKey:e=>e.id,empty:e.empty,defaultSort:{key:`state`,desc:!1}})}var gR=`color-mix(in srgb, var(--wl-red) 45%, transparent)`;function _R(e,t){return[[`URL`,(0,W.jsxs)(`code`,{children:[e.method,` `,e.url]},`u`)],[`Runs`,e.intervalMin===1?`Every minute`:`Every ${e.intervalMin} minutes`],[`Expects`,`${e.expectStatus}${e.expectBody?` and "${e.expectBody}"`:``}`],[`Last check`,e.lastRunMs?`${Nb(e.lastRunMs,t)} · ${e.lastStatus??`no answer`} · ${q(e.lastDurationMs)}`:`Not yet`],[`Certificate`,e.tlsExpiresMs?(0,W.jsxs)(`span`,{children:[(0,W.jsx)(uR,{c:e,nowMs:t}),` ends `,Db(e.tlsExpiresMs)]},`t`):(0,W.jsx)(uR,{c:e,nowMs:t},`t`)],...e.env?[[`Environment`,e.env]]:[]]}function vR({c:e,nowMs:t,actions:n}){return(0,W.jsxs)(`section`,{className:`wl-panel wl-svc-head`,children:[(0,W.jsxs)(`a`,{className:`wl-back`,href:S(`uptime`),children:[(0,W.jsx)(y_,{size:14,"aria-hidden":`true`}),` All checks`]}),(0,W.jsxs)(`h1`,{className:`wl-svc-title`,children:[(0,W.jsx)(Fv,{size:22,"aria-hidden":!0}),(0,W.jsx)(`span`,{className:`wl-svc-name`,children:e.name}),(0,W.jsx)(`span`,{className:`wl-svc-status`,children:(0,W.jsx)(dR,{c:e})}),n]}),e.state===`down`&&e.lastError&&(0,W.jsx)(`div`,{className:`wl-banner wl-banner-error wl-uptime-error`,children:e.lastError}),(0,W.jsx)(`dl`,{className:`wl-stats`,children:_R(e,t).map(([e,t])=>(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`dt`,{children:e}),(0,W.jsx)(`dd`,{children:t})]},e))})]})}function yR({c:e,model:t}){let n=IP(t,e.id),r=(t,n)=>(0,W.jsx)($,{icon:Fv,label:n,value:PP(e.uptime[t]),change:null,upIsGood:!0,compareLabel:``,note:e.uptime[t]===null?`No runs yet`:RP(e.uptime[t])===`success`?`On target`:`Below 99.9%`,danger:RP(e.uptime[t])===`danger`});return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`wl-grid wl-grid-stats`,children:[r(`24h`,`Uptime (24 h)`),r(`7d`,`Uptime (7 days)`),r(`30d`,`Uptime (30 days)`),(0,W.jsx)($,{icon:tv,label:`Avg Response`,value:q(n?.avgMs),change:null,upIsGood:!1,compareLabel:``,note:`${J(n?.runs??0)} runs, ${J(n?.failures??0)} failed`,series:n?.avgMsSeries})]}),(0,W.jsx)(G,{title:`Response Time`,children:t&&n?(0,W.jsx)(eE,{starts:t.starts,lines:[{label:`Average`,values:n.avgMsSeries,color:`var(--wl-blue)`}],bars:[{label:`Failed`,values:n.failSeries,color:gR}],separateBarScale:!0,height:240,format:e=>q(e)}):(0,W.jsx)(K,{title:`No runs in this time range`,children:`Pick a longer range at the top, or run the check now.`})})]})}function bR({id:e}){let t=eR(),{model:n}=hT(`uptime`,{check:e}),[r,i]=(0,E.useState)(!1),[a,o]=(0,E.useState)(null),s=t.data?.checks.find(t=>t.id===e);if(!t.data)return(0,W.jsx)(G,{children:(0,W.jsx)(K,{title:t.error?`Could not load the check`:`Loading…`,children:t.error})});if(!s)return(0,W.jsxs)(G,{children:[(0,W.jsxs)(`a`,{className:`wl-back`,href:S(`uptime`),children:[(0,W.jsx)(y_,{size:14,"aria-hidden":`true`}),` All checks`]}),(0,W.jsx)(K,{title:`This check does not exist`,children:`It may have been deleted.`})]});let c=async e=>{let n=await t.save(e,s.id);return n||i(!1),n},l=t.canWrite&&(0,W.jsxs)(`span`,{className:`wl-uptime-actions`,children:[(0,W.jsx)(`button`,{type:`button`,className:`wl-btn`,onClick:()=>void t.runNow(s.id).then(e=>o(e??`Ran the check.`)),children:`Run now`}),(0,W.jsx)(`button`,{type:`button`,className:`wl-btn`,onClick:()=>i(!0),children:`Edit`}),(0,W.jsx)(`button`,{type:`button`,className:`wl-btn wl-text-error`,onClick:()=>void t.remove(s.id).then(e=>e?o(e):T(S(`uptime`))),children:`Delete`})]});return(0,W.jsxs)(`div`,{className:`wl-svc-page`,children:[(0,W.jsx)(vR,{c:s,nowMs:t.data.nowMs,actions:l}),a&&(0,W.jsx)(`div`,{className:`wl-banner wl-banner-info`,children:a}),r&&(0,W.jsx)(sR,{initial:s,onSave:c,onCancel:()=>i(!1)}),(0,W.jsx)(yR,{c:s,model:n}),(0,W.jsx)(lR,{incidents:t.data.incidents.filter(t=>t.checkId===e),nowMs:t.data.nowMs,withCheck:!1})]})}function xR(){let e=H(),t=c().project,n=Me(Ce())?.org.role,r=`./api/projects/${t}/status-page`,{data:i,error:a,reload:o}=zx(e.has(`statusPages`)&&t?r:null),[s,l]=(0,E.useState)(``),[u,d]=(0,E.useState)(null),[f,p]=(0,E.useState)(null);if(!e.has(`statusPages`)||!i)return null;let m=n!==void 0&&n!==`viewer`;return(0,W.jsxs)(G,{title:`Public Status Page`,children:[(0,W.jsx)(`p`,{className:`wl-muted wl-uptime-status-note`,children:i.enabled?`On since ${Db(i.createdMs)} as "${i.title}", opened ${J(i.views??0)} times. It shows check names, whether they are up, uptime, and when incidents happened; never URLs or errors.`:`Off. Turn it on to share an unguessable, read-only link with your users: check names, whether they are up, uptime, and when incidents happened. Never URLs or errors.`}),u&&(0,W.jsxs)(`div`,{className:`wl-share-link`,children:[(0,W.jsx)(`code`,{children:u}),(0,W.jsx)(Kb,{text:u}),(0,W.jsx)(`span`,{className:`wl-muted wl-small`,children:`Copy it now: the link is shown only once. A new link stops the old one.`})]}),(a||f)&&(0,W.jsx)(`div`,{className:`wl-banner wl-banner-error`,children:a??f}),m&&(0,W.jsxs)(Yx,{children:[(0,W.jsx)(Z,{label:`Title`,value:s,onChange:e=>l(e.target.value),placeholder:i.title??`Project name`}),(0,W.jsx)(`button`,{type:`button`,className:`wl-btn wl-btn-primary`,onClick:()=>void Bx(()=>x(`POST`,r,{title:s||i.title}).then(e=>d(e.url)),o).then(p),children:i.enabled?`New link`:`Turn on`}),i.enabled&&(0,W.jsx)(`button`,{type:`button`,className:`wl-btn`,onClick:()=>void Bx(()=>x(`DELETE`,r),o).then(e=>(p(e),d(null))),children:`Turn off`})]})]})}var SR=e=>{let t=e.filter(e=>e!==null);return t.length?t.reduce((e,t)=>e+t,0)/t.length:null};function CR({checks:e,model:t}){let n=e.filter(e=>e.enabled),r=n.filter(e=>e.state===`up`).length,i=t?.totals,a=!!t?.meta.hasPrev,o=(e,t)=>a&&e!=null?le(e,t??0):null,s=t?.meta.compareLabel??``,c=(t?.checks??[]).length?t.starts.map((e,n)=>t.checks.reduce((e,t)=>e+(t.failSeries[n]??0),0)):void 0;return(0,W.jsxs)(`div`,{className:`wl-grid wl-grid-stats`,children:[(0,W.jsx)($,{icon:$_,label:`Checks Up`,value:n.length?`${r} of ${n.length}`:`–`,change:null,upIsGood:!0,compareLabel:``,note:n.length-r>0?`${n.length-r} not up`:`All up`}),(0,W.jsx)($,{icon:Fv,label:`Uptime (24 h)`,value:PP(SR(n.map(e=>e.uptime[`24h`]))),change:null,upIsGood:!0,compareLabel:``,note:`Average of the checks that are on`}),(0,W.jsx)($,{icon:tv,label:`Avg Response`,value:q(i?.avgMs),change:o(i?.avgMs,i?.prevAvgMs),upIsGood:!1,compareLabel:s}),(0,W.jsx)($,{icon:Zy,label:`Failed Runs`,value:J(i?.failures??0),change:o(i?.failures,i?.prevFailures),upIsGood:!1,compareLabel:s,series:c,danger:!0})]})}function wR({checks:e,nowMs:t}){let n=e.filter(e=>e.enabled&&zd(e.tlsExpiresMs,t));return n.length===0?null:(0,W.jsx)(`div`,{className:`wl-banner wl-banner-warning wl-uptime-certs`,role:`status`,children:n.map(e=>{let n=Rd(e.tlsExpiresMs,t);return(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`strong`,{children:[e.name,`:`]}),` `,n<0?`the TLS certificate has expired.`:`the TLS certificate expires in ${n} ${n===1?`day`:`days`}.`,` Renew it before visitors see a warning.`]},e.id)})})}var TR=`Checks that call your sites and APIs on a schedule, from this host. Results are requests of the wizelens-uptime service.`;function ER(){let e=i().params[0];return H().has(`uptime`)?e?(0,W.jsx)(bR,{id:e}):(0,W.jsx)(kR,{}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(fb,{title:`Uptime`,subtitle:TR}),(0,W.jsx)(G,{children:(0,W.jsx)(K,{title:`This host does not run uptime checks`,children:`Uptime checks run on the local hub and on WizeLens Cloud.`})})]})}function DR(){let[e,t]=(0,E.useState)(null);return[e,(e,n)=>t(e??n??null)]}function OR(e,t,n){return{onRun:t=>void e.runNow(t.id).then(e=>n(e,`Ran ${t.name}.`)),onEdit:t,onDelete:t=>void e.remove(t.id).then(e=>n(e,`Deleted ${t.name}.`))}}function kR(){let e=eR(),{model:t}=hT(`uptime`),[n,r]=(0,E.useState)(null),[i,a]=DR(),o=e.data?.checks??[],s=OR(e,r,a),c=async t=>{let i=await e.save(t,n===`new`||!n?void 0:n.id);return i||r(null),i},l=e.canWrite&&!n&&(0,W.jsxs)(`button`,{type:`button`,className:`wl-btn wl-btn-primary`,onClick:()=>r(`new`),children:[(0,W.jsx)(dy,{"aria-hidden":`true`}),` New check`]});return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(fb,{title:`Uptime`,subtitle:TR,children:l}),e.error&&(0,W.jsx)(`div`,{className:`wl-banner wl-banner-error`,children:e.error}),i&&(0,W.jsx)(`div`,{className:`wl-banner wl-banner-info`,children:i}),(0,W.jsx)(wR,{checks:o,nowMs:e.data?.nowMs??Date.now()}),n&&(0,W.jsx)(sR,{initial:n===`new`?null:n,onSave:c,onCancel:()=>r(null)}),(0,W.jsx)(CR,{checks:o,model:t}),(0,W.jsx)(G,{title:`Checks`,flush:!0,children:(0,W.jsx)(hR,{checks:o,model:t,nowMs:e.data?.nowMs??Date.now(),canWrite:e.canWrite,...s,empty:(0,W.jsxs)(K,{title:`No checks yet`,children:[(0,W.jsx)(Fv,{"aria-hidden":`true`}),` Add one to hear when a site or API stops answering.`]})})}),(0,W.jsx)(lR,{incidents:e.data?.incidents??[],nowMs:e.data?.nowMs??Date.now()}),(0,W.jsx)(xR,{})]})}function AR({thin:e=!0}){let t=Ce(),[n,r]=(0,E.useState)(null),i=t?.user;return!t?.mail||!i||i.emailVerified?null:(0,W.jsxs)(`div`,{className:`wl-banner wl-banner-info${e?` wl-banner-thin`:``}`,role:`status`,children:[`Confirm your email: we sent a link to `,i.email,`.`,` `,n?(0,W.jsx)(`span`,{children:n}):(0,W.jsx)(`button`,{type:`button`,className:`wl-link-btn`,onClick:()=>void Te(e=>e.sendVerificationEmail({email:i.email})).then(()=>r(`We sent a new link.`),e=>r(ye(e))),children:`Send again`})]})}var jR=e=>zx(e?`./api/orgs/${e}/usage`:null),MR=()=>`${window.location.pathname}#/team/billing`,NR=e=>({customerType:`organization`,referenceId:e});async function PR(e,t,n){let r=await x(`POST`,`./api/auth/subscription/upgrade`,{...NR(e),plan:t,annual:n,successUrl:MR(),cancelUrl:MR(),returnUrl:MR(),disableRedirect:!0});window.location.assign(r.url)}async function FR(e){let t=await x(`POST`,`./api/auth/subscription/billing-portal`,{...NR(e),returnUrl:MR(),disableRedirect:!0});window.location.assign(t.url)}async function IR(e){let t=await x(`POST`,`./api/auth/subscription/cancel`,{...NR(e),returnUrl:MR(),disableRedirect:!0});window.location.assign(t.url)}var LR=(e,t)=>x(`PATCH`,`./api/orgs/${e}/billing`,{spendCapUsd:t}),RR=e=>e>=100?`${Math.round(e).toLocaleString()} GB`:`${(Math.round(e*100)/100).toLocaleString()} GB`,zR=e=>`$${e.toLocaleString(void 0,{minimumFractionDigits:e%1?2:0,maximumFractionDigits:2})}`;function BR(){let e=Ce(),t=e?.billing?Me(e):null,{data:n}=jR(t?.org.id??null);if(!t||!n?.billing||n.includedGb===null)return null;let r=n.monthGb/n.includedGb*100,i=n.plan.id===`free`;if(!n.blocked&&!(i&&r>=80))return null;let a=t.org.role===`owner`||t.org.role===`admin`,o=n.blocked??`${t.org.name} used ${Math.floor(r)}% of the Free plan's ${RR(n.includedGb)} this month. At 100%, new data is refused until the 1st.`;return(0,W.jsxs)(`div`,{className:`wl-banner ${n.blocked?`wl-banner-error`:`wl-banner-warn`} wl-banner-thin`,role:`status`,children:[o,` `,a?(0,W.jsx)(`a`,{href:S(`team`,[`billing`]),children:n.blocked&&n.reason===`cap`?`Change the spend cap`:`See plans`}):(0,W.jsx)(`span`,{children:`Ask an owner or admin to upgrade.`})]})}function VR(){let{items:e}=BE(),t=e.filter(e=>e.kind!==`dashboard`);if(t.length===0)return null;let n=location.hash;return(0,W.jsxs)(`nav`,{className:`wl-nav wl-nav-saved`,"aria-label":`Saved`,children:[(0,W.jsx)(`div`,{className:`wl-nav-head`,children:`Saved`}),t.map(e=>{let t=e.kind===`search`?Cy:e.shared?rb:N_;return(0,W.jsxs)(`a`,{href:e.href,className:n===e.href?`wl-active`:void 0,title:`${e.name}${e.ownerName?` (saved by ${e.ownerName})`:``}`,children:[(0,W.jsx)(t,{"aria-hidden":!0}),(0,W.jsx)(`span`,{className:`wl-truncate`,children:e.name})]},e.id)})]})}var HR=[{page:`overview`,label:`Overview`,icon:Lv},{page:`problems`,label:`Problems`,icon:Ny},{page:`search`,label:`Search`,icon:Cy},{page:`requests`,label:`Requests`,icon:Yv},{page:`traces`,label:`Traces`,icon:jy},{page:`database`,label:`Database`,icon:lv},{page:`rendering`,label:`Rendering`,icon:ty},{page:`errors`,label:`Errors`,icon:Zy},{page:`logs`,label:`Logs`,icon:xv},{page:`metrics`,label:`Metrics`,icon:h_,needs:`metrics`},{page:`hosts`,label:`Hosts`,icon:Ty,needs:`infra`},{page:`kubernetes`,label:`Kubernetes`,icon:L_,needs:`infra`},{page:`services`,label:`Services`,icon:F_},{page:`insights`,label:`Insights`,icon:Gv},{page:`uptime`,label:`Uptime`,icon:Fv,needs:`uptime`},{page:`users`,label:`Users`,icon:tb},{page:`alerts`,label:`Alerts`,icon:k_,needs:`alerts`},{page:`slos`,label:`SLOs`,icon:Gy,needs:`slos`},{page:`dashboards`,label:`Dashboards`,icon:Uv,needs:`saved`},{page:`team`,label:`Team`,icon:rb,needs:`accounts`},{page:`settings`,label:`Settings`,icon:ky}];function UR({page:e,counts:t={},dot:n}){let r=e===`trace`?`traces`:e,i=H(),a=HR.filter(e=>!e.needs||i.has(e.needs));return(0,W.jsxs)(`aside`,{className:`wl-sidebar`,children:[(0,W.jsx)(`a`,{className:`wl-sidebar-brand`,href:S(`overview`),"aria-label":`WizeLens overview`,children:(0,W.jsx)(iO,{dot:n})}),(0,W.jsx)(`nav`,{className:`wl-nav`,"aria-label":`Main`,children:a.map(({page:e,label:n,icon:i})=>(0,W.jsxs)(`a`,{href:S(e),className:r===e?`wl-active`:void 0,"aria-current":r===e?`page`:void 0,title:n,children:[(0,W.jsx)(i,{"aria-hidden":!0}),(0,W.jsx)(`span`,{children:n}),!!t[e]&&(0,W.jsx)(`em`,{className:`wl-nav-count`,children:t[e]>99?`99+`:t[e]})]},e))}),i.has(`saved`)&&(0,W.jsx)(VR,{}),(0,W.jsxs)(`div`,{className:`wl-sidebar-foot`,children:[(0,W.jsx)(`span`,{className:`wl-mark`,"aria-hidden":`true`,children:`W`}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`strong`,{children:`WizeWorks`}),(0,W.jsx)(`span`,{children:`Build. Observe. Ship.`})]})]})]})}function WR({title:e,values:t,value:n,onPick:r,all:i=!0}){if(t.length===0)return null;let a=i?[[``,`All ${e.toLowerCase()}s`],...t]:t;return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{className:`wl-menu-head`,children:e}),a.map(([e,t])=>(0,W.jsxs)(`button`,{type:`button`,className:`wl-menu-item${e===n?` wl-active`:``}`,onClick:()=>r(e),children:[(0,W.jsx)(`span`,{className:`wl-truncate`,children:t}),e===n&&(0,W.jsx)(G_,{size:14,"aria-hidden":`true`,className:`wl-menu-check`})]},e||`all`))]})}function GR({g:e,active:t,onPick:n}){let r=e.newest,i=e.instances.length>1?`${J(e.online)} of ${J(e.instances.length)} hosts online`:r.host,a=[r.project,r.environment,i].filter(Boolean).join(` · `),o=e.online>0;return(0,W.jsxs)(`button`,{type:`button`,className:`wl-menu-item${t?` wl-active`:``}`,onClick:n,children:[(0,W.jsx)(`span`,{className:`wl-env-dot${o?``:` wl-off`}`,title:o?`Online`:f(r)}),(0,W.jsxs)(`span`,{className:`wl-truncate`,children:[(0,W.jsx)(`strong`,{children:r.service}),(0,W.jsxs)(`span`,{className:`wl-muted wl-small`,children:[` · `,o?r.runtime??r.via:`seen ${Nb(r.lastSeenMs)}`]}),a&&(0,W.jsx)(`span`,{className:`wl-muted wl-small wl-block`,children:a})]}),t&&(0,W.jsx)(G_,{size:14,"aria-hidden":`true`,className:`wl-menu-check`})]})}function KR({registry:e,projects:t}){let[n,r]=ee(),[i,a]=b(),[o]=u(),s=uD(),c=nt((e?.services??[]).filter(e=>xe(e,{env:n,project:i},!t))),l=c.filter(e=>e.online>0).length,d=[t?t.find(([e])=>e===i)?.[1]:i,n].filter(Boolean).join(` · `)||`All projects`,f=e=>e.map(e=>[e,e]),p=(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Vv,{"aria-hidden":`true`}),(0,W.jsx)(`span`,{className:`wl-label`,children:d}),(0,W.jsxs)(`span`,{className:`wl-chip-count`,title:`${l} of ${c.length} services online`,children:[l,`/`,c.length]}),(0,W.jsx)(q_,{"aria-hidden":`true`})]});return(0,W.jsx)(Xb,{label:p,title:`Project, environment, and connected services`,children:l=>(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(WR,{title:`Project`,values:t??f(e?.projects??[]),value:i,all:!t,onPick:e=>(a(e),l())}),(0,W.jsx)(WR,{title:`Environment`,values:f(e?.environments??[]),value:n,onPick:e=>(r(e),l())}),(0,W.jsx)(`div`,{className:`wl-menu-head`,children:`Services`}),c.length>0&&(0,W.jsxs)(`button`,{type:`button`,className:`wl-menu-item${o?``:` wl-active`}`,onClick:()=>(s(``),l()),children:[(0,W.jsx)(`span`,{className:`wl-truncate`,children:`All services`}),!o&&(0,W.jsx)(G_,{size:14,"aria-hidden":`true`,className:`wl-menu-check`})]}),c.map(e=>(0,W.jsx)(GR,{g:e,active:gr(e.service)===o,onPick:()=>(s(gr(e.service)),l())},e.key)),c.length===0&&(0,W.jsx)(`div`,{className:`wl-menu-note`,children:`No service has sent data yet. See Settings to connect one.`})]})})}function qR(){let e=Ce(),t=e?.user;if(!t)return null;let n=Me(e)?.org,r=(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(tb,{"aria-hidden":`true`}),(0,W.jsx)(`span`,{className:`wl-label`,children:t.name}),(0,W.jsx)(q_,{"aria-hidden":`true`})]});return(0,W.jsx)(Xb,{label:r,title:`Signed in as ${t.email}`,children:e=>(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{className:`wl-menu-head`,children:t.email}),(0,W.jsxs)(`a`,{className:`wl-menu-item`,href:S(`account`),onClick:e,children:[(0,W.jsx)(Dy,{size:16,"aria-hidden":`true`}),` Account`]}),n&&(0,W.jsxs)(`a`,{className:`wl-menu-item`,href:S(`team`),onClick:e,children:[n.name,` · `,n.role]}),(0,W.jsxs)(`button`,{type:`button`,className:`wl-menu-item`,onClick:()=>void ce(),children:[(0,W.jsx)(Zv,{size:16,"aria-hidden":`true`}),` Sign out`]})]})})}var JR=864e5,YR=15;function XR(e){let t=e.spans.find(ve);return t?_n(t).message:`Request failed`}function ZR(e,t){let n=e.get(t.key);n?e.set(t.key,{...t,count:n.count+1,timeMs:Math.max(n.timeMs,t.timeMs)}):e.set(t.key,t)}function QR(e,t){let n=e.filter(e=>e.startMs>=t-JR),r=new Map(n.map(e=>[e.traceId,e])),i=new Map;for(let e of In(n)){let t=y(e.traceId);if(e.errors>0||(e.status??0)>=500){let n=XR(r.get(e.traceId));ZR(i,{key:`e|${e.endpoint}|${n}`,kind:`error`,title:`Error in ${e.endpoint}`,detail:n,timeMs:e.startMs,count:1,href:t})}for(let t of e.findings.filter(e=>e.kind!==`error`))ZR(i,{key:`i|${e.endpoint}|${t.kind}`,kind:`insight`,title:t.title,detail:e.endpoint,timeMs:e.startMs,count:1,href:y(e.traceId,`insights`)})}return[...i.values()].sort((e,t)=>t.timeMs-e.timeMs).slice(0,YR)}function $R(e){let t=H().has(`alerts`),n=GC(),{data:r}=zx(t&&n.ready?n.url():null);return(0,E.useMemo)(()=>(r?.events??[]).filter(t=>(t.kind===`fired`||t.kind===`remind`)&&t.timeMs>=e-JR).map(e=>({key:`a|${e.id}`,kind:`alert`,title:`${e.kind===`remind`?`Still firing`:`Alert`}: ${e.ruleName}`,detail:e.message,timeMs:e.timeMs,count:1,href:pe(e.ruleId)})),[r,e])}var ez={error:Zy,insight:Gv,alert:k_};function tz({note:e,unread:t,now:n}){let r=ez[e.kind];return(0,W.jsxs)(`a`,{className:`wl-menu-item wl-note`,href:e.href,children:[(0,W.jsx)(r,{size:18,color:e.kind===`insight`?`var(--wl-amber)`:`var(--wl-red)`,"aria-hidden":`true`}),(0,W.jsxs)(`span`,{className:`wl-truncate`,children:[(0,W.jsx)(`strong`,{className:t?void 0:`wl-muted`,children:e.title}),(0,W.jsxs)(`span`,{className:`wl-muted wl-small wl-truncate`,style:{display:`block`},children:[e.count>1?`${e.count}× · `:``,e.detail]})]}),(0,W.jsx)(`span`,{className:`wl-muted wl-small`,children:Nb(e.timeMs,n)})]})}function nz({traces:e,now:t}){let[n,r]=o(),i=$R(t),a=(0,E.useMemo)(()=>[...i,...QR(e,t)].sort((e,t)=>t.timeMs-e.timeMs).slice(0,YR),[i,e,t]),s=a.filter(e=>e.timeMs>Number(n)).length;return(0,W.jsx)(Xb,{label:(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(D_,{size:20,"aria-hidden":`true`}),s>0&&(0,W.jsx)(`span`,{className:`wl-ping`})]}),title:s?`${s} new notifications`:`Notifications`,buttonClass:`wl-icon-btn`,onOpen:()=>setTimeout(()=>r(String(Date.now())),1500),children:()=>(0,W.jsxs)(`div`,{style:{width:380},children:[(0,W.jsx)(`div`,{className:`wl-menu-head`,children:`Last 24 hours`}),a.length===0&&(0,W.jsx)(`div`,{className:`wl-menu-note`,children:`No errors or insights. All quiet.`}),a.map(e=>(0,W.jsx)(tz,{note:e,unread:e.timeMs>Number(n),now:t},e.key))]})})}var rz=Ye(),iz=220,az=3,oz=(e,t)=>e.toLowerCase().includes(t.toLowerCase()),sz=e=>e.catch(()=>null);async function cz(e,t,n,r){let i={q:e,size:`5`,page:`1`},[a,o,s,c,l,u,d]=await Promise.all([sz(fT(`errors`,{...i,status:`all`},t,n)),sz(fT(`database`,i,t,n)),sz(fT(`insights`,{q:e},t,n)),r.metrics?sz(ne(`./api/models/metrics?range=${t}&q=${encodeURIComponent(e)}`)):null,r.alerts?sz(ne(r.alerts)):null,r.slos?sz(ne(r.slos)):null,r.saved?sz(ne(r.saved)):null]);return[...(a?.groups??[]).slice(0,az).map(e=>({key:`eg${e.key}`,kind:`error`,title:`${e.type}: ${e.message}`,detail:`Error group · ${e.service}`,href:he(e.key)})),...(o?.queries??[]).slice(0,az).map(e=>({key:`q${e.key}`,kind:`query`,title:e.query,detail:`Query · ${e.count} runs`,href:He(e.query)})),...(s?.groups??[]).slice(0,az).map(e=>({key:`i${e.key}`,kind:`insight`,title:e.title,detail:e.shape,href:S(`insights`,[],{key:e.key})})),...(c?.catalog??[]).slice(0,az).map(e=>({key:`m${e.name}`,kind:`metric`,title:e.name,detail:`Metric · ${e.lastText}`,href:S(`metrics`,[],{metric:e.name})})),...(l?.rules??[]).filter(t=>oz(t.name,e)).slice(0,az).map(e=>({key:`a${e.id}`,kind:`alert`,title:e.name,detail:`Alert · ${e.state===`firing`?`Firing`:`OK`}`,href:pe(e.id)})),...(u?.slos??[]).filter(t=>oz(t.slo.name,e)).slice(0,az).map(e=>({key:`o${e.slo.id}`,kind:`slo`,title:e.slo.name,detail:`SLO`,href:Ve(e.slo.id)})),...(d?.items??[]).filter(t=>oz(t.name,e)).slice(0,az).map(e=>({key:`v${e.id}`,kind:`saved`,title:e.name,detail:e.kind===`dashboard`?`Dashboard`:e.kind===`search`?`Saved search`:`Saved view`,href:e.kind===`dashboard`?S(`dashboards`,[encodeURIComponent(e.id)]):e.href}))]}function lz(e,t,n){let r=H(),i=GC(),a=xT(),o=zE(),s={alerts:r.has(`alerts`)&&i.ready?i.url():null,slos:r.has(`slos`)&&a.ready?a.url():null,saved:o.on&&o.ready?o.url():null,metrics:r.has(`serverMetrics`)},c=JSON.stringify(s),[l,u]=(0,E.useState)([]),d=e.trim();return(0,E.useEffect)(()=>{if(u([]),d.length<2)return;let e=!0,r=setTimeout(()=>void cz(d,t,n,JSON.parse(c)).then(t=>e&&u(t)),iz);return()=>(e=!1,clearTimeout(r))},[d,t,n,c]),l}var uz=180,dz=e=>({key:`sr${e.traceId}`,kind:`request`,title:`${e.method} ${e.path}`,detail:`${e.status??`…`} · ${q(e.durationMs)} · ${e.service}`,href:S(`requests`,[],{trace:e.traceId})}),fz=e=>({key:`sl${e.key}`,kind:`log`,title:e.message,detail:`${e.level} · ${e.service}`,href:y(e.traceId,`logs`)});function pz(e,t,n){let[r,i]=(0,E.useState)([]),a=e.trim();return(0,E.useEffect)(()=>{if(i([]),!a||!gh(a).ok)return;let e=!0,r=setTimeout(async()=>{let r={q:a,range:t,limit:5},[o,s]=await Promise.all([Ux({...r,kind:`requests`},null,n),Ux({...r,kind:`logs`,limit:3},null,n)]).catch(()=>[null,null]);e&&i([...(o?.items??[]).map(dz),...(s?.items??[]).map(fz)])},uz);return()=>(e=!1,clearTimeout(r))},[a,t,n]),a?[{key:`search-all`,kind:`search`,title:`Search everything for “${a}”`,detail:`Requests, traces, spans, logs`,href:S(`search`,[],{q:a})},...r]:[]}var mz=6,hz=(e,t)=>e.toLowerCase().includes(t);function gz(e,t){let n=[];for(let r of In(e)){if(n.length>=mz)break;r.traceId.startsWith(t)?n.push({key:`t${r.traceId}`,kind:`trace`,title:r.traceId,detail:`${r.method} ${r.path}`,href:y(r.traceId)}):(hz(r.path,t)||hz(r.endpoint,t))&&n.push({key:`r${r.traceId}`,kind:`request`,title:`${r.method} ${r.path}`,detail:`${r.status??`…`} · ${q(r.durationMs)} · ${r.service}`,href:S(`requests`,[],{trace:r.traceId})})}return n}function _z(e,t){let n=new Set,r=[];for(let i of e)for(let e of i.spans.filter(ve)){let a=_n(e),o=`${a.type??``}: ${a.message}`;if(!n.has(o)&&hz(o,t)&&(n.add(o),r.push({key:`e${o}`,kind:`error`,title:a.type?`${a.type}: ${a.message}`:a.message,detail:`${a.service} · ${i.rootName}`,href:y(i.traceId,`errors`)}),r.length>=mz))return r}return r}function vz(e,t){let n=new Set;for(let r of e)for(let e of r.services)hz(e,t)&&n.add(e);return[...n].slice(0,mz).map(e=>({key:`s${e}`,kind:`service`,title:e,detail:`Service`,href:S(`services`,[encodeURIComponent(gr(e))])}))}function yz(e,t,n,r=!1){let i=n.trim().toLowerCase();return i?[...t.filter(e=>hz(e.label,i)).map(e=>({key:`p${e.page}`,kind:`page`,title:e.label,detail:`Go to page`,href:S(e.page)})),...r?[]:gz(e,i),..._z(e,i),...vz(e,i)]:t.map(e=>({key:`p${e.page}`,kind:`page`,title:e.label,detail:`Go to page`,href:S(e.page)}))}var bz={page:yv,request:Yv,trace:jy,error:Zy,service:F_,log:xv,search:Cy,query:lv,insight:Gv,metric:h_,alert:k_,slo:Gy,saved:N_};function xz(e){(0,E.useEffect)(()=>{let t=t=>{(t.ctrlKey||t.metaKey)&&t.key.toLowerCase()===`k`&&(t.preventDefault(),e())};return document.addEventListener(`keydown`,t),()=>document.removeEventListener(`keydown`,t)},[e])}function Sz({traces:e,onClose:t}){let[n,r]=(0,E.useState)(``),[i,a]=(0,E.useState)(0),o=H().has(`search`),[s]=Zg(),c=pz(n,s,o),l=lz(n,s,o),u=(0,E.useMemo)(()=>yz(e,HR,n,o),[e,n,o]),d=(0,E.useMemo)(()=>[...c.slice(0,1),...u,...l,...c.slice(1)],[c,u,l]),f=e=>{let n=d[e];n&&(T(n.href),t())};return(0,rz.createPortal)((0,W.jsx)(`div`,{className:`wl-palette-backdrop`,onMouseDown:e=>e.target===e.currentTarget&&t(),children:(0,W.jsxs)(`div`,{className:`wl-palette`,role:`dialog`,"aria-label":`Search`,children:[(0,W.jsx)(`input`,{autoFocus:!0,value:n,onChange:e=>(r(e.target.value),a(0)),onKeyDown:e=>{if(e.key===`Escape`)t();else if(e.key===`ArrowDown`)a(e=>Math.min(d.length-1,e+1));else if(e.key===`ArrowUp`)a(e=>Math.max(0,e-1));else if(e.key===`Enter`)f(i);else return;e.preventDefault()},placeholder:`Search requests, errors, queries, insights, metrics, alerts, saved views…`,"aria-label":`Search`}),(0,W.jsxs)(`div`,{className:`wl-palette-list`,role:`listbox`,children:[d.length===0&&(0,W.jsx)(`div`,{className:`wl-palette-empty`,children:`No matches.`}),d.map((e,t)=>{let n=bz[e.kind];return(0,W.jsxs)(`div`,{role:`option`,"aria-selected":t===i,className:`wl-palette-item${t===i?` wl-active`:``}`,onMouseEnter:()=>a(t),onClick:()=>f(t),children:[(0,W.jsx)(n,{"aria-hidden":`true`}),(0,W.jsx)(`span`,{className:`wl-truncate`,children:e.title}),(0,W.jsx)(`span`,{className:`wl-muted wl-small wl-truncate`,children:e.detail})]},e.key)})]})]})}),document.body)}var Cz=e=>String(e).padStart(2,`0`);function wz(e){let t=new Date(wb()?e:e-new Date(e).getTimezoneOffset()*6e4);return`${t.getUTCFullYear()}-${Cz(t.getUTCMonth()+1)}-${Cz(t.getUTCDate())}T${Cz(t.getUTCHours())}:${Cz(t.getUTCMinutes())}`}function Tz(e){let t=Date.parse(`${e}:00Z`);return wb()?t:t+new Date(t).getTimezoneOffset()*6e4}function Ez({current:e,onDone:t}){let n=Date.now(),[r,i]=(0,E.useState)(wz(e?.from??n-36e5)),[a,o]=(0,E.useState)(wz(e?.to??n)),s={from:Tz(r),to:Math.min(Tz(a),n)},c=Number.isFinite(s.from)&&Number.isFinite(s.to)&&s.to-s.from>=6e4;return(0,W.jsxs)(`form`,{className:`wl-range-custom`,onSubmit:e=>(e.preventDefault(),c&&(Yw(s),t())),children:[(0,W.jsxs)(`label`,{children:[`From `,(0,W.jsx)(`input`,{type:`datetime-local`,value:r,onChange:e=>i(e.target.value)})]}),(0,W.jsxs)(`label`,{children:[`To `,(0,W.jsx)(`input`,{type:`datetime-local`,value:a,onChange:e=>o(e.target.value)})]}),(0,W.jsx)(`button`,{type:`submit`,className:`wl-btn`,disabled:!c,children:`Apply`})]})}var Dz=[[`previous`,`The period before`],[`week`,`Same time last week`]];function Oz(){let[e,t]=Zg(),{ranges:n}=H(),[r]=Uw(),[i]=Ww(),a=Vw(r),o=a?`${Ob(a.from)} – ${Ob(a.to)}`:fe[e].label,s=(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(V_,{"aria-hidden":`true`}),(0,W.jsx)(`span`,{className:`wl-label`,children:o}),(0,W.jsx)(q_,{"aria-hidden":`true`})]}),c=(e,t,n)=>(0,W.jsxs)(`button`,{type:`button`,className:`wl-menu-item${e?` wl-active`:``}`,onClick:n,children:[(0,W.jsx)(`span`,{className:`wl-truncate`,children:t}),e&&(0,W.jsx)(G_,{size:14,"aria-hidden":`true`,className:`wl-menu-check`})]},t);return(0,W.jsx)(Xb,{label:s,title:`Time range`,children:r=>(0,W.jsxs)(W.Fragment,{children:[n.map(n=>c(!a&&n===e,fe[n].label,()=>(Yw(null),t(n),r()))),(0,W.jsx)(`div`,{className:`wl-menu-head`,children:`Custom range`}),(0,W.jsx)(Ez,{current:a,onDone:r}),(0,W.jsx)(`div`,{className:`wl-menu-head`,children:`Compare with`}),Dz.map(([e,t])=>c(i===e,t,()=>(Xw(e),r())))]})})}var kz=/^#\/(|overview|search|requests|traces|database|rendering|errors|logs|metrics|services|insights|slos|dashboards|users)(\/|\?|$)/;function Az({close:e}){let t=zE(),[n,r]=(0,E.useState)(``),[i,a]=(0,E.useState)(!1),[o,s]=(0,E.useState)(!1),c=qf(location.hash)!==null,[l,u]=(0,E.useState)(null),d=()=>{let r=location.hash||`#/`,a=r.startsWith(`#/search`)||c?`search`:`view`;VE(t.url(),`POST`,{kind:a,name:n.trim(),href:r,chart:c&&o,shared:!t.cloud||i}).then(()=>e(),e=>u(e instanceof Error?e.message:String(e)))};return(0,W.jsxs)(`form`,{className:`wl-save-view`,onSubmit:e=>(e.preventDefault(),d()),children:[(0,W.jsx)(Z,{label:`Name`,required:!0,autoFocus:!0,value:n,onChange:e=>r(e.target.value),placeholder:`Checkout errors this week`}),t.cloud&&(0,W.jsx)(Xx,{label:`Share with the team`,checked:i,onChange:e=>a(e.target.checked)}),c&&(0,W.jsx)(Xx,{label:`Chart it on the Logs page`,checked:o,onChange:e=>s(e.target.checked)}),(0,W.jsx)(`p`,{className:`wl-muted wl-small`,children:`Saves this page with its filters and time range. It shows under Saved in the sidebar.`}),l&&(0,W.jsx)(`p`,{className:`wl-text-error wl-small`,children:l}),(0,W.jsx)(`button`,{type:`submit`,className:`wl-btn wl-btn-primary`,disabled:!n.trim(),children:`Save view`})]})}function jz(){let e=zE();return i(),!e.on||!e.canWrite||!kz.test(location.hash||`#/`)?null:(0,W.jsx)(Xb,{label:(0,W.jsx)(zy,{size:18,"aria-hidden":`true`}),title:`Save this view`,children:e=>(0,W.jsx)(Az,{close:e})})}var Mz=[[`1`,`For 1 day`],[`7`,`For 7 days`],[`30`,`For 30 days`]],Nz=new Set([`overview`,`requests`,`errors`,`database`,`logs`,`insights`,`rendering`,`services`,`traces`]);function Pz(e){let[t,n,r]=e.params.map(C);return e.page===`errors`&&t?{page:`error`,params:{group:t}}:e.page===`services`&&t&&n===`endpoints`&&r?{page:`endpoint`,params:{service:t,endpoint:r}}:e.page===`services`&&t?{page:`service`,params:{service:t}}:e.page===`database`&&t===`queries`&&n?{page:`query`,params:{q:n}}:e.page===`rendering`&&t===`routes`&&n?{page:`route`,params:{route:n}}:Nz.has(e.page)&&!t?{page:e.page,params:{}}:null}function Fz({target:e}){let t=i(),[n]=Zg(),[r,a]=(0,E.useState)(`7`),[o,s]=(0,E.useState)(null),[l,u]=(0,E.useState)(null);return(0,W.jsxs)(`div`,{className:`wl-save-view`,children:[(0,W.jsx)(`p`,{className:`wl-muted wl-small`,children:`A read-only link to this page as it is now: its numbers are kept and do not change. Anyone with the link can open it.`}),(0,W.jsx)(X,{label:`How long`,value:r,options:Mz,onChange:a}),o?(0,W.jsxs)(`span`,{className:`wl-share-url`,children:[(0,W.jsx)(`code`,{className:`wl-truncate`,children:o}),(0,W.jsx)(Kb,{text:o,label:`Copy link`})]}):(0,W.jsx)(`button`,{type:`button`,className:`wl-btn wl-btn-primary`,onClick:()=>{let{window:i,compare:a}=qw(),o=c(),l={...Object.fromEntries(t.query),...Jw(i,a),...o.service?{service:o.service}:{},...e.params},d={page:e.page,range:n,params:l,env:o.env,title:document.title.replace(/ · .*$/,``),days:Number(r)};x(`POST`,`./api/projects/${encodeURIComponent(o.project)}/shares`,d).then(e=>s(e.url),e=>u(e instanceof Error?e.message:String(e)))},children:`Make a link`}),l&&(0,W.jsx)(`p`,{className:`wl-text-error wl-small`,children:l})]})}function Iz(){let e=i(),t=H(),n=Pz(e);return!t.has(`sharing`)||!c().project||!n?null:(0,W.jsx)(Xb,{label:(0,W.jsx)(qv,{size:18,"aria-hidden":`true`}),title:`Share this page`,children:()=>(0,W.jsx)(Fz,{target:n})})}function Lz(e){return e.find(e=>e.self)?.status===`down`?` wl-down`:e.some(e=>e.status===`down`)?` wl-partial`:``}function Rz({sources:e}){let t=e.find(e=>e.self)?.info?.environment??`Local`,n=(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{className:`wl-env-dot${Lz(e)}`}),(0,W.jsx)(`span`,{className:`wl-label`,children:t}),(0,W.jsx)(q_,{"aria-hidden":`true`})]});return(0,W.jsx)(Xb,{label:n,title:`Environment ${t}: connected services`,children:()=>(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{className:`wl-menu-head`,children:`Connected services`}),e.map(e=>(0,W.jsxs)(`a`,{className:`wl-menu-item`,href:`${e.endpoint}/`,target:e.self?void 0:`_blank`,rel:`noreferrer`,children:[(0,W.jsx)(`span`,{className:`wl-env-dot${e.status===`down`?` wl-down`:e.status===`pending`?` wl-partial`:``}`}),(0,W.jsxs)(`span`,{className:`wl-truncate`,children:[(0,W.jsx)(`strong`,{children:e.info?.service??e.endpoint}),(0,W.jsxs)(`span`,{className:`wl-muted wl-small`,children:[` · `,e.status===`down`?e.error??`unreachable`:e.info?.runtime??`…`]})]}),!e.self&&(0,W.jsx)(pv,{size:14,"aria-hidden":`true`})]},e.endpoint)),(0,W.jsx)(`div`,{className:`wl-menu-note`,children:`Services join this list when a request calls them.`})]})})}function zz(){let e=H(),t=e.service&&!e.service.endsWith(Yg[e.mode])?` · ${e.service}`:``,n=`${Yg[e.mode]}${t} · kept ${Qg(e.keptMs)}`;return(0,W.jsx)(`span`,{className:`wl-mode-badge`,title:`WizeLens runs ${e.mode===`in-app`?`inside this service`:`as a ${Yg[e.mode].toLowerCase()}`}. Data older than ${Qg(e.keptMs)} is dropped.`,children:n})}var Bz={light:`dark`,dark:`system`,system:`light`},Vz={light:Vy,dark:ry,system:ty};function Hz(){let[e,t]=je(),n=Vz[e];return(0,W.jsx)(`button`,{type:`button`,className:`wl-icon-btn`,onClick:()=>t(Bz[e]),title:`Theme: ${e}. Click for ${Bz[e]}.`,"aria-label":`Theme: ${e}`,children:(0,W.jsx)(n,{size:20,"aria-hidden":`true`})})}var Uz=typeof navigator<`u`&&/Mac|iPhone|iPad/.test(navigator.platform);function Wz(){let e=Ce();if(H().has(`accounts`))return(e?.orgs??[]).flatMap(e=>e.projects.map(t=>[t.id,`${e.name} / ${t.name}`]))}function Gz({data:e}){let[t,n]=(0,E.useState)(!1),r=Wz(),i=(0,E.useCallback)(()=>n(!0),[]);return xz(i),(0,W.jsxs)(`header`,{className:`wl-topbar`,children:[(0,W.jsxs)(`button`,{type:`button`,className:`wl-search-box`,onClick:i,"aria-label":`Search`,children:[(0,W.jsx)(Cy,{size:18,"aria-hidden":`true`}),(0,W.jsx)(`span`,{className:`wl-truncate`,children:`Search requests, traces, errors, services…`}),(0,W.jsx)(`kbd`,{children:Uz?`⌘ K`:`Ctrl K`})]}),(0,W.jsx)(`span`,{className:`wl-spacer`}),(0,W.jsx)(zz,{}),(0,W.jsx)(fD,{}),e.registry?(0,W.jsx)(KR,{registry:e.registry,projects:r}):(0,W.jsx)(Rz,{sources:e.sources}),(0,W.jsx)(Oz,{}),(0,W.jsx)(jz,{}),(0,W.jsx)(Iz,{}),(0,W.jsx)(nz,{traces:e.traces,now:e.updatedMs}),(0,W.jsx)(Hz,{}),r&&(0,W.jsx)(qR,{}),t&&(0,W.jsx)(Sz,{traces:e.traces,onClose:()=>n(!1)})]})}function Kz(){return vw()?(0,W.jsxs)(`div`,{className:`wl-banner wl-banner-info wl-banner-thin wl-update`,role:`status`,children:[`A new version of WizeLens is ready.`,` `,(0,W.jsx)(`button`,{type:`button`,className:`wl-link-btn`,onClick:()=>window.location.reload(),children:`Refresh`}),(0,W.jsx)(`button`,{type:`button`,className:`wl-link-btn wl-update-later`,onClick:hw,children:`Later`})]}):null}function qz(){return(0,W.jsxs)(`div`,{className:`wl-banner wl-banner-info`,role:`status`,children:[`This page changed in a new version of WizeLens.`,` `,(0,W.jsx)(`button`,{type:`button`,className:`wl-link-btn`,onClick:()=>window.location.reload(),children:`Refresh to load it`})]})}var Jz=e=>(0,E.lazy)(()=>e().then(e=>({default:e}),()=>(mw(),{default:qz}))),Yz={overview:rj,problems:ZI,search:hL,requests:yM,traces:AP,database:KO,rendering:Dj,errors:Pk,logs:FA,metrics:rI,hosts:fI,kubernetes:TI,services:cP,insights:Zk,settings:QL,alerts:bE,uptime:ER,slos:NE,dashboards:MD,users:KD,team:Jz(()=>Re(()=>import(`./TeamPage-jnluOMGo.js`).then(e=>e.TeamPage),__vite__mapDeps([0,1,2,3]),import.meta.url)),account:Jz(()=>Re(()=>import(`./AccountPage-VILWxQLm.js`).then(e=>e.AccountPage),__vite__mapDeps([4,1,3]),import.meta.url))},Xz=3e5,Zz={critical:`var(--wl-red)`,warning:`var(--wl-orange)`};function Qz(){let e=Se();return(0,E.useMemo)(()=>{let t=In(e.traces.filter(t=>t.startMs>=e.updatedMs-Xz));return t.some(Ln)?Zz.critical:t.some(e=>e.health===`warning`)?Zz.warning:void 0},[e.traces,e.updatedMs])}function $z({route:e}){let t=H().has(`accounts`);if(e.page===`trace`){let[t,n,r]=e.params;return n===`compare`&&r?(0,W.jsx)(NC,{a:t,b:r},`${t}/${r}`):(0,W.jsx)(TC,{traceId:t,view:n},t)}let n=e.page,r=n===`shared`||n===`status`||ue.includes(n)||n===`account`&&!t?rj:Yz[n];return(0,W.jsx)(r,{})}function eB(){return(0,W.jsx)(VF,{children:(0,W.jsx)(tB,{})})}function tB(){let e=i(),t=Se(),n=e_(),[r]=je(),o=Qz();(0,E.useEffect)(()=>a(r),[r]);let[s]=Gw(),[c]=Kw();Cb({utc:s===`utc`,hour12:c===`12`}),qF(),(0,E.useEffect)(()=>{window.scrollTo(0,0)},[e.page,e.params.join(`/`)]),(0,E.useEffect)(()=>{document.title=t.info?`WizeLens · ${t.info.service}`:`WizeLens`},[t.info]);let l=pT(),u=(0,E.useMemo)(()=>l===null?Tr(n.traces).length:0,[l,n.traces]),d=l??u;return(0,W.jsxs)(`div`,{className:`wl-shell`,children:[(0,W.jsx)(UR,{page:e.page,counts:{errors:d},dot:o}),(0,W.jsxs)(`div`,{className:`wl-main`,children:[(0,W.jsx)(Gz,{data:t}),(0,W.jsx)(Kz,{}),(0,W.jsx)(AR,{}),(0,W.jsx)(BR,{}),(0,W.jsx)(`main`,{className:`wl-page`,children:(0,W.jsx)($z,{route:e})})]})]})}m.start(),gw(),(0,Qe.createRoot)(document.getElementById(`root`)).render((0,W.jsx)(E.StrictMode,{children:(0,W.jsx)(eB,{})}));export{Nb as A,Yy as B,Jx as C,X as D,zx as E,fb as F,G_ as G,dy as H,G as I,D_ as K,db as L,Ob as M,Fb as N,Y as O,K as P,rb as R,Yx as S,Bx as T,qv as U,py as V,dv as W,ZO as _,FR as a,Xx as b,AR as c,EF as d,JN as f,KN as g,XN as h,zR as i,Db as j,Kb as k,_L as l,YN as m,PR as n,LR as o,qN as p,U as q,RR as r,jR as s,IR as t,gL as u,ZD as v,qx as w,Z as x,Q as y,tb as z};
58
+ `)){let e=n.indexOf(`:`);e>0&&(t[n.slice(0,e).trim()]=n.slice(e+1).trim())}return t}var oR=e=>{if(!e)return rR;let{name:t,url:n,method:r,headers:i,expectStatus:a,expectBody:o,intervalMin:s,timeoutMs:c,env:l,enabled:u}=e;return{name:t,url:n,method:r,headers:i,expectStatus:a,expectBody:o,intervalMin:s,timeoutMs:c,env:l,enabled:u}};function sR({initial:e,onSave:t,onCancel:n}){let[r,i]=(0,E.useState)(()=>oR(e)),[a,o]=(0,E.useState)(()=>iR(r.headers)),[s,c]=(0,E.useState)(null),l=e=>t=>i(n=>({...n,[e]:t}));return(0,W.jsx)(G,{title:e?`Edit "${e.name}"`:`New check`,className:`wl-panel-form`,children:(0,W.jsxs)(`form`,{className:`wl-form`,onSubmit:e=>{e.preventDefault(),t({...r,headers:aR(a)}).then(c)},children:[(0,W.jsxs)(Yx,{children:[(0,W.jsx)(Z,{label:`Name`,value:r.name,onChange:e=>l(`name`)(e.target.value),placeholder:`Website`}),(0,W.jsx)(Z,{label:`URL`,required:!0,type:`url`,value:r.url,onChange:e=>l(`url`)(e.target.value),placeholder:`https://example.com/health`}),(0,W.jsx)(Jx,{label:`Method`,value:r.method,options:nR,onChange:l(`method`)})]}),(0,W.jsxs)(Yx,{children:[(0,W.jsx)(Jx,{label:`Runs`,value:String(r.intervalMin),options:tR,onChange:e=>l(`intervalMin`)(Number(e))}),(0,W.jsx)(Z,{label:`Timeout (seconds)`,type:`number`,min:1,max:60,required:!0,value:r.timeoutMs/1e3,onChange:e=>l(`timeoutMs`)(Math.round(Number(e.target.value)*1e3))}),(0,W.jsx)(Z,{label:`Expected status`,value:r.expectStatus,onChange:e=>l(`expectStatus`)(e.target.value),hint:`"200", "200-299", or "200,301-302". A 3xx here stops redirects being followed.`}),(0,W.jsx)(Z,{label:`Environment (optional)`,value:r.env,onChange:e=>l(`env`)(e.target.value),placeholder:`None`})]}),(0,W.jsx)(Z,{label:`Response must contain (optional)`,value:r.expectBody,onChange:e=>l(`expectBody`)(e.target.value),placeholder:`"status":"ok"`}),(0,W.jsx)(qx,{label:`Headers (optional)`,value:a,onChange:e=>o(e.target.value),placeholder:`Authorization: Bearer ...`,hint:`One "Name: value" per line. Secret values show as [redacted]; leave them as they are to keep them.`}),(0,W.jsx)(Xx,{label:`On`,checked:r.enabled,onChange:e=>l(`enabled`)(e.target.checked)}),s&&(0,W.jsx)(`div`,{className:`wl-banner wl-banner-error`,children:s}),(0,W.jsxs)(`div`,{className:`wl-form-actions wl-form-actions-start`,children:[(0,W.jsx)(`button`,{type:`submit`,className:`wl-btn wl-btn-primary`,children:`Save check`}),(0,W.jsx)(`button`,{type:`button`,className:`wl-btn`,onClick:n,children:`Cancel`})]})]})})}function cR(e,t){return[{key:`state`,header:``,cell:e=>e.endMs===null?(0,W.jsx)(Y,{tone:`danger`,children:`Ongoing`}):(0,W.jsx)(Y,{tone:`success`,children:`Resolved`})},...t?[{key:`check`,header:`Check`,cell:e=>(0,W.jsx)(`a`,{href:S(`uptime`,[e.checkId]),children:e.checkName})}]:[],{key:`start`,header:`Started`,className:`wl-nowrap`,sort:e=>e.startMs,cell:e=>Ob(e.startMs)},{key:`length`,header:`Down For`,num:!0,sort:t=>Nh(t,e),cell:t=>LP(Nh(t,e))},{key:`reason`,header:`Reason`,className:`wl-wrap`,cell:e=>e.reason}]}function lR({incidents:e,nowMs:t,withCheck:n=!0}){return(0,W.jsx)(G,{title:`Incidents`,flush:!0,children:(0,W.jsx)(Q,{columns:cR(t,n),rows:e,rowKey:e=>e.id,empty:(0,W.jsx)(K,{children:`No incidents in the last 90 days.`}),defaultSort:{key:`start`,desc:!0}})})}function uR({c:e,nowMs:t}){let n=Rd(e.tlsExpiresMs,t);return n===null?(0,W.jsx)(`span`,{className:`wl-muted`,children:e.url.startsWith(`https:`)?`–`:`No TLS`}):(0,W.jsx)(Y,{tone:n<0?`danger`:n<14?`warning`:`neutral`,children:n<0?`Expired`:`${n} days`})}function dR({c:e}){let t=FP(e);return(0,W.jsx)(Hb,{tone:t.tone,colorText:t.tone===`danger`,children:t.label})}function fR(e){return e.canWrite?[{key:`actions`,header:``,cell:t=>(0,W.jsxs)(`span`,{className:`wl-row-actions`,children:[(0,W.jsx)(`button`,{type:`button`,className:`wl-link-btn`,onClick:()=>e.onRun(t),children:`Run now`}),(0,W.jsx)(`button`,{type:`button`,className:`wl-link-btn`,onClick:()=>e.onEdit(t),children:`Edit`}),(0,W.jsx)(`button`,{type:`button`,className:`wl-link-btn wl-text-error`,onClick:()=>e.onDelete(t),children:`Delete`})]})}]:[]}function pR(e){let t=e=>({key:e,header:e,num:!0,sort:t=>t.uptime[e]??-1,cell:t=>PP(t.uptime[e])});return[{key:`state`,header:`Status`,sort:e=>FP(e).rank,cell:e=>(0,W.jsx)(dR,{c:e})},{key:`name`,header:`Check`,sort:e=>e.name.toLowerCase(),className:`wl-uptime-name`,cell:e=>(0,W.jsxs)(`a`,{href:S(`uptime`,[e.id]),children:[(0,W.jsx)(`strong`,{children:e.name}),(0,W.jsxs)(`span`,{className:`wl-muted wl-small`,children:[e.method,` `,e.url]})]})},t(`24h`),t(`7d`),t(`30d`),{key:`avg`,header:`Response`,num:!0,sort:e=>e.lastDurationMs??-1,cell:t=>(0,W.jsx)(mR,{c:t,model:e.model})},{key:`last`,header:`Last Check`,className:`wl-nowrap`,sort:e=>e.lastRunMs??0,cell:t=>t.lastRunMs?Nb(t.lastRunMs,e.nowMs):`Not yet`},{key:`tls`,header:`Certificate`,sort:e=>e.tlsExpiresMs??1/0,cell:t=>(0,W.jsx)(uR,{c:t,nowMs:e.nowMs})},...fR(e)]}function mR({c:e,model:t}){let n=IP(t,e.id);return(0,W.jsxs)(`span`,{className:`wl-uptime-response`,children:[n&&(0,W.jsx)(cD,{values:n.avgMsSeries,width:80,height:20,color:`var(--wl-blue)`}),q(e.lastDurationMs)]})}function hR(e){return(0,W.jsx)(Q,{columns:pR(e),rows:e.checks,rowKey:e=>e.id,empty:e.empty,defaultSort:{key:`state`,desc:!1}})}var gR=`color-mix(in srgb, var(--wl-red) 45%, transparent)`;function _R(e,t){return[[`URL`,(0,W.jsxs)(`code`,{children:[e.method,` `,e.url]},`u`)],[`Runs`,e.intervalMin===1?`Every minute`:`Every ${e.intervalMin} minutes`],[`Expects`,`${e.expectStatus}${e.expectBody?` and "${e.expectBody}"`:``}`],[`Last check`,e.lastRunMs?`${Nb(e.lastRunMs,t)} · ${e.lastStatus??`no answer`} · ${q(e.lastDurationMs)}`:`Not yet`],[`Certificate`,e.tlsExpiresMs?(0,W.jsxs)(`span`,{children:[(0,W.jsx)(uR,{c:e,nowMs:t}),` ends `,Db(e.tlsExpiresMs)]},`t`):(0,W.jsx)(uR,{c:e,nowMs:t},`t`)],...e.env?[[`Environment`,e.env]]:[]]}function vR({c:e,nowMs:t,actions:n}){return(0,W.jsxs)(`section`,{className:`wl-panel wl-svc-head`,children:[(0,W.jsxs)(`a`,{className:`wl-back`,href:S(`uptime`),children:[(0,W.jsx)(y_,{size:14,"aria-hidden":`true`}),` All checks`]}),(0,W.jsxs)(`h1`,{className:`wl-svc-title`,children:[(0,W.jsx)(Fv,{size:22,"aria-hidden":!0}),(0,W.jsx)(`span`,{className:`wl-svc-name`,children:e.name}),(0,W.jsx)(`span`,{className:`wl-svc-status`,children:(0,W.jsx)(dR,{c:e})}),n]}),e.state===`down`&&e.lastError&&(0,W.jsx)(`div`,{className:`wl-banner wl-banner-error wl-uptime-error`,children:e.lastError}),(0,W.jsx)(`dl`,{className:`wl-stats`,children:_R(e,t).map(([e,t])=>(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`dt`,{children:e}),(0,W.jsx)(`dd`,{children:t})]},e))})]})}function yR({c:e,model:t}){let n=IP(t,e.id),r=(t,n)=>(0,W.jsx)($,{icon:Fv,label:n,value:PP(e.uptime[t]),change:null,upIsGood:!0,compareLabel:``,note:e.uptime[t]===null?`No runs yet`:RP(e.uptime[t])===`success`?`On target`:`Below 99.9%`,danger:RP(e.uptime[t])===`danger`});return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`wl-grid wl-grid-stats`,children:[r(`24h`,`Uptime (24 h)`),r(`7d`,`Uptime (7 days)`),r(`30d`,`Uptime (30 days)`),(0,W.jsx)($,{icon:tv,label:`Avg Response`,value:q(n?.avgMs),change:null,upIsGood:!1,compareLabel:``,note:`${J(n?.runs??0)} runs, ${J(n?.failures??0)} failed`,series:n?.avgMsSeries})]}),(0,W.jsx)(G,{title:`Response Time`,children:t&&n?(0,W.jsx)(eE,{starts:t.starts,lines:[{label:`Average`,values:n.avgMsSeries,color:`var(--wl-blue)`}],bars:[{label:`Failed`,values:n.failSeries,color:gR}],separateBarScale:!0,height:240,format:e=>q(e)}):(0,W.jsx)(K,{title:`No runs in this time range`,children:`Pick a longer range at the top, or run the check now.`})})]})}function bR({id:e}){let t=eR(),{model:n}=hT(`uptime`,{check:e}),[r,i]=(0,E.useState)(!1),[a,o]=(0,E.useState)(null),s=t.data?.checks.find(t=>t.id===e);if(!t.data)return(0,W.jsx)(G,{children:(0,W.jsx)(K,{title:t.error?`Could not load the check`:`Loading…`,children:t.error})});if(!s)return(0,W.jsxs)(G,{children:[(0,W.jsxs)(`a`,{className:`wl-back`,href:S(`uptime`),children:[(0,W.jsx)(y_,{size:14,"aria-hidden":`true`}),` All checks`]}),(0,W.jsx)(K,{title:`This check does not exist`,children:`It may have been deleted.`})]});let c=async e=>{let n=await t.save(e,s.id);return n||i(!1),n},l=t.canWrite&&(0,W.jsxs)(`span`,{className:`wl-uptime-actions`,children:[(0,W.jsx)(`button`,{type:`button`,className:`wl-btn`,onClick:()=>void t.runNow(s.id).then(e=>o(e??`Ran the check.`)),children:`Run now`}),(0,W.jsx)(`button`,{type:`button`,className:`wl-btn`,onClick:()=>i(!0),children:`Edit`}),(0,W.jsx)(`button`,{type:`button`,className:`wl-btn wl-text-error`,onClick:()=>void t.remove(s.id).then(e=>e?o(e):T(S(`uptime`))),children:`Delete`})]});return(0,W.jsxs)(`div`,{className:`wl-svc-page`,children:[(0,W.jsx)(vR,{c:s,nowMs:t.data.nowMs,actions:l}),a&&(0,W.jsx)(`div`,{className:`wl-banner wl-banner-info`,children:a}),r&&(0,W.jsx)(sR,{initial:s,onSave:c,onCancel:()=>i(!1)}),(0,W.jsx)(yR,{c:s,model:n}),(0,W.jsx)(lR,{incidents:t.data.incidents.filter(t=>t.checkId===e),nowMs:t.data.nowMs,withCheck:!1})]})}function xR(){let e=H(),t=c().project,n=Me(Ce())?.org.role,r=`./api/projects/${t}/status-page`,{data:i,error:a,reload:o}=zx(e.has(`statusPages`)&&t?r:null),[s,l]=(0,E.useState)(``),[u,d]=(0,E.useState)(null),[f,p]=(0,E.useState)(null);if(!e.has(`statusPages`)||!i)return null;let m=n!==void 0&&n!==`viewer`;return(0,W.jsxs)(G,{title:`Public Status Page`,children:[(0,W.jsx)(`p`,{className:`wl-muted wl-uptime-status-note`,children:i.enabled?`On since ${Db(i.createdMs)} as "${i.title}", opened ${J(i.views??0)} times. It shows check names, whether they are up, uptime, and when incidents happened; never URLs or errors.`:`Off. Turn it on to share an unguessable, read-only link with your users: check names, whether they are up, uptime, and when incidents happened. Never URLs or errors.`}),u&&(0,W.jsxs)(`div`,{className:`wl-share-link`,children:[(0,W.jsx)(`code`,{children:u}),(0,W.jsx)(Kb,{text:u}),(0,W.jsx)(`span`,{className:`wl-muted wl-small`,children:`Copy it now: the link is shown only once. A new link stops the old one.`})]}),(a||f)&&(0,W.jsx)(`div`,{className:`wl-banner wl-banner-error`,children:a??f}),m&&(0,W.jsxs)(Yx,{children:[(0,W.jsx)(Z,{label:`Title`,value:s,onChange:e=>l(e.target.value),placeholder:i.title??`Project name`}),(0,W.jsx)(`button`,{type:`button`,className:`wl-btn wl-btn-primary`,onClick:()=>void Bx(()=>x(`POST`,r,{title:s||i.title}).then(e=>d(e.url)),o).then(p),children:i.enabled?`New link`:`Turn on`}),i.enabled&&(0,W.jsx)(`button`,{type:`button`,className:`wl-btn`,onClick:()=>void Bx(()=>x(`DELETE`,r),o).then(e=>(p(e),d(null))),children:`Turn off`})]})]})}var SR=e=>{let t=e.filter(e=>e!==null);return t.length?t.reduce((e,t)=>e+t,0)/t.length:null};function CR({checks:e,model:t}){let n=e.filter(e=>e.enabled),r=n.filter(e=>e.state===`up`).length,i=t?.totals,a=!!t?.meta.hasPrev,o=(e,t)=>a&&e!=null?le(e,t??0):null,s=t?.meta.compareLabel??``,c=(t?.checks??[]).length?t.starts.map((e,n)=>t.checks.reduce((e,t)=>e+(t.failSeries[n]??0),0)):void 0;return(0,W.jsxs)(`div`,{className:`wl-grid wl-grid-stats`,children:[(0,W.jsx)($,{icon:$_,label:`Checks Up`,value:n.length?`${r} of ${n.length}`:`–`,change:null,upIsGood:!0,compareLabel:``,note:n.length-r>0?`${n.length-r} not up`:`All up`}),(0,W.jsx)($,{icon:Fv,label:`Uptime (24 h)`,value:PP(SR(n.map(e=>e.uptime[`24h`]))),change:null,upIsGood:!0,compareLabel:``,note:`Average of the checks that are on`}),(0,W.jsx)($,{icon:tv,label:`Avg Response`,value:q(i?.avgMs),change:o(i?.avgMs,i?.prevAvgMs),upIsGood:!1,compareLabel:s}),(0,W.jsx)($,{icon:Zy,label:`Failed Runs`,value:J(i?.failures??0),change:o(i?.failures,i?.prevFailures),upIsGood:!1,compareLabel:s,series:c,danger:!0})]})}function wR({checks:e,nowMs:t}){let n=e.filter(e=>e.enabled&&zd(e.tlsExpiresMs,t));return n.length===0?null:(0,W.jsx)(`div`,{className:`wl-banner wl-banner-warning wl-uptime-certs`,role:`status`,children:n.map(e=>{let n=Rd(e.tlsExpiresMs,t);return(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`strong`,{children:[e.name,`:`]}),` `,n<0?`the TLS certificate has expired.`:`the TLS certificate expires in ${n} ${n===1?`day`:`days`}.`,` Renew it before visitors see a warning.`]},e.id)})})}var TR=`Checks that call your sites and APIs on a schedule, from this host. Results are requests of the wizelens-uptime service.`;function ER(){let e=i().params[0];return H().has(`uptime`)?e?(0,W.jsx)(bR,{id:e}):(0,W.jsx)(kR,{}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(fb,{title:`Uptime`,subtitle:TR}),(0,W.jsx)(G,{children:(0,W.jsx)(K,{title:`This host does not run uptime checks`,children:`Uptime checks run on the local hub and on WizeLens Cloud.`})})]})}function DR(){let[e,t]=(0,E.useState)(null);return[e,(e,n)=>t(e??n??null)]}function OR(e,t,n){return{onRun:t=>void e.runNow(t.id).then(e=>n(e,`Ran ${t.name}.`)),onEdit:t,onDelete:t=>void e.remove(t.id).then(e=>n(e,`Deleted ${t.name}.`))}}function kR(){let e=eR(),{model:t}=hT(`uptime`),[n,r]=(0,E.useState)(null),[i,a]=DR(),o=e.data?.checks??[],s=OR(e,r,a),c=async t=>{let i=await e.save(t,n===`new`||!n?void 0:n.id);return i||r(null),i},l=e.canWrite&&!n&&(0,W.jsxs)(`button`,{type:`button`,className:`wl-btn wl-btn-primary`,onClick:()=>r(`new`),children:[(0,W.jsx)(dy,{"aria-hidden":`true`}),` New check`]});return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(fb,{title:`Uptime`,subtitle:TR,children:l}),e.error&&(0,W.jsx)(`div`,{className:`wl-banner wl-banner-error`,children:e.error}),i&&(0,W.jsx)(`div`,{className:`wl-banner wl-banner-info`,children:i}),(0,W.jsx)(wR,{checks:o,nowMs:e.data?.nowMs??Date.now()}),n&&(0,W.jsx)(sR,{initial:n===`new`?null:n,onSave:c,onCancel:()=>r(null)}),(0,W.jsx)(CR,{checks:o,model:t}),(0,W.jsx)(G,{title:`Checks`,flush:!0,children:(0,W.jsx)(hR,{checks:o,model:t,nowMs:e.data?.nowMs??Date.now(),canWrite:e.canWrite,...s,empty:(0,W.jsxs)(K,{title:`No checks yet`,children:[(0,W.jsx)(Fv,{"aria-hidden":`true`}),` Add one to hear when a site or API stops answering.`]})})}),(0,W.jsx)(lR,{incidents:e.data?.incidents??[],nowMs:e.data?.nowMs??Date.now()}),(0,W.jsx)(xR,{})]})}function AR({thin:e=!0}){let t=Ce(),[n,r]=(0,E.useState)(null),i=t?.user;return!t?.mail||!i||i.emailVerified?null:(0,W.jsxs)(`div`,{className:`wl-banner wl-banner-info${e?` wl-banner-thin`:``}`,role:`status`,children:[`Confirm your email: we sent a link to `,i.email,`.`,` `,n?(0,W.jsx)(`span`,{children:n}):(0,W.jsx)(`button`,{type:`button`,className:`wl-link-btn`,onClick:()=>void Te(e=>e.sendVerificationEmail({email:i.email})).then(()=>r(`We sent a new link.`),e=>r(ye(e))),children:`Send again`})]})}var jR=e=>zx(e?`./api/orgs/${e}/usage`:null),MR=()=>`${window.location.pathname}#/team/billing`,NR=e=>({customerType:`organization`,referenceId:e});async function PR(e,t,n){let r=await x(`POST`,`./api/auth/subscription/upgrade`,{...NR(e),plan:t,annual:n,successUrl:MR(),cancelUrl:MR(),returnUrl:MR(),disableRedirect:!0});window.location.assign(r.url)}async function FR(e){let t=await x(`POST`,`./api/auth/subscription/billing-portal`,{...NR(e),returnUrl:MR(),disableRedirect:!0});window.location.assign(t.url)}async function IR(e){let t=await x(`POST`,`./api/auth/subscription/cancel`,{...NR(e),returnUrl:MR(),disableRedirect:!0});window.location.assign(t.url)}var LR=(e,t)=>x(`PATCH`,`./api/orgs/${e}/billing`,{spendCapUsd:t}),RR=e=>e>=100?`${Math.round(e).toLocaleString()} GB`:`${(Math.round(e*100)/100).toLocaleString()} GB`,zR=e=>`$${e.toLocaleString(void 0,{minimumFractionDigits:e%1?2:0,maximumFractionDigits:2})}`;function BR(){let e=Ce(),t=e?.billing?Me(e):null,{data:n}=jR(t?.org.id??null);if(!t||!n?.billing||n.includedGb===null)return null;let r=n.monthGb/n.includedGb*100,i=n.plan.id===`free`;if(!n.blocked&&!(i&&r>=80))return null;let a=t.org.role===`owner`||t.org.role===`admin`,o=n.blocked??`${t.org.name} used ${Math.floor(r)}% of the Free plan's ${RR(n.includedGb)} this month. At 100%, new data is refused until the 1st.`;return(0,W.jsxs)(`div`,{className:`wl-banner ${n.blocked?`wl-banner-error`:`wl-banner-warn`} wl-banner-thin`,role:`status`,children:[o,` `,a?(0,W.jsx)(`a`,{href:S(`team`,[`billing`]),children:n.blocked&&n.reason===`cap`?`Change the spend cap`:`See plans`}):(0,W.jsx)(`span`,{children:`Ask an owner or admin to upgrade.`})]})}function VR(){let{items:e}=BE(),t=e.filter(e=>e.kind!==`dashboard`);if(t.length===0)return null;let n=location.hash;return(0,W.jsxs)(`nav`,{className:`wl-nav wl-nav-saved`,"aria-label":`Saved`,children:[(0,W.jsx)(`div`,{className:`wl-nav-head`,children:`Saved`}),t.map(e=>{let t=e.kind===`search`?Cy:e.shared?rb:N_;return(0,W.jsxs)(`a`,{href:e.href,className:n===e.href?`wl-active`:void 0,title:`${e.name}${e.ownerName?` (saved by ${e.ownerName})`:``}`,children:[(0,W.jsx)(t,{"aria-hidden":!0}),(0,W.jsx)(`span`,{className:`wl-truncate`,children:e.name})]},e.id)})]})}var HR=[{page:`overview`,label:`Overview`,icon:Lv},{page:`problems`,label:`Problems`,icon:Ny},{page:`search`,label:`Search`,icon:Cy},{page:`requests`,label:`Requests`,icon:Yv},{page:`traces`,label:`Traces`,icon:jy},{page:`database`,label:`Database`,icon:lv},{page:`rendering`,label:`Rendering`,icon:ty},{page:`errors`,label:`Errors`,icon:Zy},{page:`logs`,label:`Logs`,icon:xv},{page:`metrics`,label:`Metrics`,icon:h_,needs:`metrics`},{page:`hosts`,label:`Hosts`,icon:Ty,needs:`infra`},{page:`kubernetes`,label:`Kubernetes`,icon:L_,needs:`infra`},{page:`services`,label:`Services`,icon:F_},{page:`insights`,label:`Insights`,icon:Gv},{page:`uptime`,label:`Uptime`,icon:Fv,needs:`uptime`},{page:`users`,label:`Users`,icon:tb},{page:`alerts`,label:`Alerts`,icon:k_,needs:`alerts`},{page:`slos`,label:`SLOs`,icon:Gy,needs:`slos`},{page:`dashboards`,label:`Dashboards`,icon:Uv,needs:`saved`},{page:`team`,label:`Team`,icon:rb,needs:`accounts`},{page:`settings`,label:`Settings`,icon:ky}];function UR({page:e,counts:t={},dot:n}){let r=e===`trace`?`traces`:e,i=H(),a=HR.filter(e=>!e.needs||i.has(e.needs));return(0,W.jsxs)(`aside`,{className:`wl-sidebar`,children:[(0,W.jsx)(`a`,{className:`wl-sidebar-brand`,href:S(`overview`),"aria-label":`WizeLens overview`,children:(0,W.jsx)(iO,{dot:n})}),(0,W.jsx)(`nav`,{className:`wl-nav`,"aria-label":`Main`,children:a.map(({page:e,label:n,icon:i})=>(0,W.jsxs)(`a`,{href:S(e),className:r===e?`wl-active`:void 0,"aria-current":r===e?`page`:void 0,title:n,children:[(0,W.jsx)(i,{"aria-hidden":!0}),(0,W.jsx)(`span`,{children:n}),!!t[e]&&(0,W.jsx)(`em`,{className:`wl-nav-count`,children:t[e]>99?`99+`:t[e]})]},e))}),i.has(`saved`)&&(0,W.jsx)(VR,{}),(0,W.jsxs)(`div`,{className:`wl-sidebar-foot`,children:[(0,W.jsx)(`span`,{className:`wl-mark`,"aria-hidden":`true`,children:`W`}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`strong`,{children:`WizeWorks`}),(0,W.jsx)(`span`,{children:`Build. Observe. Ship.`})]})]})]})}function WR({title:e,values:t,value:n,onPick:r,all:i=!0}){if(t.length===0)return null;let a=i?[[``,`All ${e.toLowerCase()}s`],...t]:t;return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{className:`wl-menu-head`,children:e}),a.map(([e,t])=>(0,W.jsxs)(`button`,{type:`button`,className:`wl-menu-item${e===n?` wl-active`:``}`,onClick:()=>r(e),children:[(0,W.jsx)(`span`,{className:`wl-truncate`,children:t}),e===n&&(0,W.jsx)(G_,{size:14,"aria-hidden":`true`,className:`wl-menu-check`})]},e||`all`))]})}function GR({g:e,active:t,onPick:n}){let r=e.newest,i=e.instances.length>1?`${J(e.online)} of ${J(e.instances.length)} hosts online`:r.host,a=[r.project,r.environment,i].filter(Boolean).join(` · `),o=e.online>0;return(0,W.jsxs)(`button`,{type:`button`,className:`wl-menu-item${t?` wl-active`:``}`,onClick:n,children:[(0,W.jsx)(`span`,{className:`wl-env-dot${o?``:` wl-off`}`,title:o?`Online`:f(r)}),(0,W.jsxs)(`span`,{className:`wl-truncate`,children:[(0,W.jsx)(`strong`,{children:r.service}),(0,W.jsxs)(`span`,{className:`wl-muted wl-small`,children:[` · `,o?r.runtime??r.via:`seen ${Nb(r.lastSeenMs)}`]}),a&&(0,W.jsx)(`span`,{className:`wl-muted wl-small wl-block`,children:a})]}),t&&(0,W.jsx)(G_,{size:14,"aria-hidden":`true`,className:`wl-menu-check`})]})}function KR({registry:e,projects:t}){let[n,r]=ee(),[i,a]=b(),[o]=u(),s=uD(),c=nt((e?.services??[]).filter(e=>xe(e,{env:n,project:i},!t))),l=c.filter(e=>e.online>0).length,d=[t?t.find(([e])=>e===i)?.[1]:i,n].filter(Boolean).join(` · `)||`All projects`,f=e=>e.map(e=>[e,e]),p=(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(Vv,{"aria-hidden":`true`}),(0,W.jsx)(`span`,{className:`wl-label`,children:d}),(0,W.jsxs)(`span`,{className:`wl-chip-count`,title:`${l} of ${c.length} services online`,children:[l,`/`,c.length]}),(0,W.jsx)(q_,{"aria-hidden":`true`})]});return(0,W.jsx)(Xb,{label:p,title:`Project, environment, and connected services`,children:l=>(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(WR,{title:`Project`,values:t??f(e?.projects??[]),value:i,all:!t,onPick:e=>(a(e),l())}),(0,W.jsx)(WR,{title:`Environment`,values:f(e?.environments??[]),value:n,onPick:e=>(r(e),l())}),(0,W.jsx)(`div`,{className:`wl-menu-head`,children:`Services`}),c.length>0&&(0,W.jsxs)(`button`,{type:`button`,className:`wl-menu-item${o?``:` wl-active`}`,onClick:()=>(s(``),l()),children:[(0,W.jsx)(`span`,{className:`wl-truncate`,children:`All services`}),!o&&(0,W.jsx)(G_,{size:14,"aria-hidden":`true`,className:`wl-menu-check`})]}),c.map(e=>(0,W.jsx)(GR,{g:e,active:gr(e.service)===o,onPick:()=>(s(gr(e.service)),l())},e.key)),c.length===0&&(0,W.jsx)(`div`,{className:`wl-menu-note`,children:`No service has sent data yet. See Settings to connect one.`})]})})}function qR(){let e=Ce(),t=e?.user;if(!t)return null;let n=Me(e)?.org,r=(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(tb,{"aria-hidden":`true`}),(0,W.jsx)(`span`,{className:`wl-label`,children:t.name}),(0,W.jsx)(q_,{"aria-hidden":`true`})]});return(0,W.jsx)(Xb,{label:r,title:`Signed in as ${t.email}`,children:e=>(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{className:`wl-menu-head`,children:t.email}),(0,W.jsxs)(`a`,{className:`wl-menu-item`,href:S(`account`),onClick:e,children:[(0,W.jsx)(Dy,{size:16,"aria-hidden":`true`}),` Account`]}),n&&(0,W.jsxs)(`a`,{className:`wl-menu-item`,href:S(`team`),onClick:e,children:[n.name,` · `,n.role]}),(0,W.jsxs)(`button`,{type:`button`,className:`wl-menu-item`,onClick:()=>void ce(),children:[(0,W.jsx)(Zv,{size:16,"aria-hidden":`true`}),` Sign out`]})]})})}var JR=864e5,YR=15;function XR(e){let t=e.spans.find(ve);return t?_n(t).message:`Request failed`}function ZR(e,t){let n=e.get(t.key);n?e.set(t.key,{...t,count:n.count+1,timeMs:Math.max(n.timeMs,t.timeMs)}):e.set(t.key,t)}function QR(e,t){let n=e.filter(e=>e.startMs>=t-JR),r=new Map(n.map(e=>[e.traceId,e])),i=new Map;for(let e of In(n)){let t=y(e.traceId);if(e.errors>0||(e.status??0)>=500){let n=XR(r.get(e.traceId));ZR(i,{key:`e|${e.endpoint}|${n}`,kind:`error`,title:`Error in ${e.endpoint}`,detail:n,timeMs:e.startMs,count:1,href:t})}for(let t of e.findings.filter(e=>e.kind!==`error`))ZR(i,{key:`i|${e.endpoint}|${t.kind}`,kind:`insight`,title:t.title,detail:e.endpoint,timeMs:e.startMs,count:1,href:y(e.traceId,`insights`)})}return[...i.values()].sort((e,t)=>t.timeMs-e.timeMs).slice(0,YR)}function $R(e){let t=H().has(`alerts`),n=GC(),{data:r}=zx(t&&n.ready?n.url():null);return(0,E.useMemo)(()=>(r?.events??[]).filter(t=>(t.kind===`fired`||t.kind===`remind`)&&t.timeMs>=e-JR).map(e=>({key:`a|${e.id}`,kind:`alert`,title:`${e.kind===`remind`?`Still firing`:`Alert`}: ${e.ruleName}`,detail:e.message,timeMs:e.timeMs,count:1,href:pe(e.ruleId)})),[r,e])}var ez={error:Zy,insight:Gv,alert:k_};function tz({note:e,unread:t,now:n}){let r=ez[e.kind];return(0,W.jsxs)(`a`,{className:`wl-menu-item wl-note`,href:e.href,children:[(0,W.jsx)(r,{size:18,color:e.kind===`insight`?`var(--wl-amber)`:`var(--wl-red)`,"aria-hidden":`true`}),(0,W.jsxs)(`span`,{className:`wl-truncate`,children:[(0,W.jsx)(`strong`,{className:t?void 0:`wl-muted`,children:e.title}),(0,W.jsxs)(`span`,{className:`wl-muted wl-small wl-truncate`,style:{display:`block`},children:[e.count>1?`${e.count}× · `:``,e.detail]})]}),(0,W.jsx)(`span`,{className:`wl-muted wl-small`,children:Nb(e.timeMs,n)})]})}function nz({traces:e,now:t}){let[n,r]=o(),i=$R(t),a=(0,E.useMemo)(()=>[...i,...QR(e,t)].sort((e,t)=>t.timeMs-e.timeMs).slice(0,YR),[i,e,t]),s=a.filter(e=>e.timeMs>Number(n)).length;return(0,W.jsx)(Xb,{label:(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(D_,{size:20,"aria-hidden":`true`}),s>0&&(0,W.jsx)(`span`,{className:`wl-ping`})]}),title:s?`${s} new notifications`:`Notifications`,buttonClass:`wl-icon-btn`,onOpen:()=>setTimeout(()=>r(String(Date.now())),1500),children:()=>(0,W.jsxs)(`div`,{style:{width:380},children:[(0,W.jsx)(`div`,{className:`wl-menu-head`,children:`Last 24 hours`}),a.length===0&&(0,W.jsx)(`div`,{className:`wl-menu-note`,children:`No errors or insights. All quiet.`}),a.map(e=>(0,W.jsx)(tz,{note:e,unread:e.timeMs>Number(n),now:t},e.key))]})})}var rz=Ye(),iz=220,az=3,oz=(e,t)=>e.toLowerCase().includes(t.toLowerCase()),sz=e=>e.catch(()=>null);async function cz(e,t,n,r){let i={q:e,size:`5`,page:`1`},[a,o,s,c,l,u,d]=await Promise.all([sz(fT(`errors`,{...i,status:`all`},t,n)),sz(fT(`database`,i,t,n)),sz(fT(`insights`,{q:e},t,n)),r.metrics?sz(ne(`./api/models/metrics?range=${t}&q=${encodeURIComponent(e)}`)):null,r.alerts?sz(ne(r.alerts)):null,r.slos?sz(ne(r.slos)):null,r.saved?sz(ne(r.saved)):null]);return[...(a?.groups??[]).slice(0,az).map(e=>({key:`eg${e.key}`,kind:`error`,title:`${e.type}: ${e.message}`,detail:`Error group · ${e.service}`,href:he(e.key)})),...(o?.queries??[]).slice(0,az).map(e=>({key:`q${e.key}`,kind:`query`,title:e.query,detail:`Query · ${e.count} runs`,href:He(e.query)})),...(s?.groups??[]).slice(0,az).map(e=>({key:`i${e.key}`,kind:`insight`,title:e.title,detail:e.shape,href:S(`insights`,[],{key:e.key})})),...(c?.catalog??[]).slice(0,az).map(e=>({key:`m${e.name}`,kind:`metric`,title:e.name,detail:`Metric · ${e.lastText}`,href:S(`metrics`,[],{metric:e.name})})),...(l?.rules??[]).filter(t=>oz(t.name,e)).slice(0,az).map(e=>({key:`a${e.id}`,kind:`alert`,title:e.name,detail:`Alert · ${e.state===`firing`?`Firing`:`OK`}`,href:pe(e.id)})),...(u?.slos??[]).filter(t=>oz(t.slo.name,e)).slice(0,az).map(e=>({key:`o${e.slo.id}`,kind:`slo`,title:e.slo.name,detail:`SLO`,href:Ve(e.slo.id)})),...(d?.items??[]).filter(t=>oz(t.name,e)).slice(0,az).map(e=>({key:`v${e.id}`,kind:`saved`,title:e.name,detail:e.kind===`dashboard`?`Dashboard`:e.kind===`search`?`Saved search`:`Saved view`,href:e.kind===`dashboard`?S(`dashboards`,[encodeURIComponent(e.id)]):e.href}))]}function lz(e,t,n){let r=H(),i=GC(),a=xT(),o=zE(),s={alerts:r.has(`alerts`)&&i.ready?i.url():null,slos:r.has(`slos`)&&a.ready?a.url():null,saved:o.on&&o.ready?o.url():null,metrics:r.has(`serverMetrics`)},c=JSON.stringify(s),[l,u]=(0,E.useState)([]),d=e.trim();return(0,E.useEffect)(()=>{if(u([]),d.length<2)return;let e=!0,r=setTimeout(()=>void cz(d,t,n,JSON.parse(c)).then(t=>e&&u(t)),iz);return()=>(e=!1,clearTimeout(r))},[d,t,n,c]),l}var uz=180,dz=e=>({key:`sr${e.traceId}`,kind:`request`,title:`${e.method} ${e.path}`,detail:`${e.status??`…`} · ${q(e.durationMs)} · ${e.service}`,href:S(`requests`,[],{trace:e.traceId})}),fz=e=>({key:`sl${e.key}`,kind:`log`,title:e.message,detail:`${e.level} · ${e.service}`,href:y(e.traceId,`logs`)});function pz(e,t,n){let[r,i]=(0,E.useState)([]),a=e.trim();return(0,E.useEffect)(()=>{if(i([]),!a||!gh(a).ok)return;let e=!0,r=setTimeout(async()=>{let r={q:a,range:t,limit:5},[o,s]=await Promise.all([Ux({...r,kind:`requests`},null,n),Ux({...r,kind:`logs`,limit:3},null,n)]).catch(()=>[null,null]);e&&i([...(o?.items??[]).map(dz),...(s?.items??[]).map(fz)])},uz);return()=>(e=!1,clearTimeout(r))},[a,t,n]),a?[{key:`search-all`,kind:`search`,title:`Search everything for “${a}”`,detail:`Requests, traces, spans, logs`,href:S(`search`,[],{q:a})},...r]:[]}var mz=6,hz=(e,t)=>e.toLowerCase().includes(t);function gz(e,t){let n=[];for(let r of In(e)){if(n.length>=mz)break;r.traceId.startsWith(t)?n.push({key:`t${r.traceId}`,kind:`trace`,title:r.traceId,detail:`${r.method} ${r.path}`,href:y(r.traceId)}):(hz(r.path,t)||hz(r.endpoint,t))&&n.push({key:`r${r.traceId}`,kind:`request`,title:`${r.method} ${r.path}`,detail:`${r.status??`…`} · ${q(r.durationMs)} · ${r.service}`,href:S(`requests`,[],{trace:r.traceId})})}return n}function _z(e,t){let n=new Set,r=[];for(let i of e)for(let e of i.spans.filter(ve)){let a=_n(e),o=`${a.type??``}: ${a.message}`;if(!n.has(o)&&hz(o,t)&&(n.add(o),r.push({key:`e${o}`,kind:`error`,title:a.type?`${a.type}: ${a.message}`:a.message,detail:`${a.service} · ${i.rootName}`,href:y(i.traceId,`errors`)}),r.length>=mz))return r}return r}function vz(e,t){let n=new Set;for(let r of e)for(let e of r.services)hz(e,t)&&n.add(e);return[...n].slice(0,mz).map(e=>({key:`s${e}`,kind:`service`,title:e,detail:`Service`,href:S(`services`,[encodeURIComponent(gr(e))])}))}function yz(e,t,n,r=!1){let i=n.trim().toLowerCase();return i?[...t.filter(e=>hz(e.label,i)).map(e=>({key:`p${e.page}`,kind:`page`,title:e.label,detail:`Go to page`,href:S(e.page)})),...r?[]:gz(e,i),..._z(e,i),...vz(e,i)]:t.map(e=>({key:`p${e.page}`,kind:`page`,title:e.label,detail:`Go to page`,href:S(e.page)}))}var bz={page:yv,request:Yv,trace:jy,error:Zy,service:F_,log:xv,search:Cy,query:lv,insight:Gv,metric:h_,alert:k_,slo:Gy,saved:N_};function xz(e){(0,E.useEffect)(()=>{let t=t=>{(t.ctrlKey||t.metaKey)&&t.key.toLowerCase()===`k`&&(t.preventDefault(),e())};return document.addEventListener(`keydown`,t),()=>document.removeEventListener(`keydown`,t)},[e])}function Sz({traces:e,onClose:t}){let[n,r]=(0,E.useState)(``),[i,a]=(0,E.useState)(0),o=H().has(`search`),[s]=Zg(),c=pz(n,s,o),l=lz(n,s,o),u=(0,E.useMemo)(()=>yz(e,HR,n,o),[e,n,o]),d=(0,E.useMemo)(()=>[...c.slice(0,1),...u,...l,...c.slice(1)],[c,u,l]),f=e=>{let n=d[e];n&&(T(n.href),t())};return(0,rz.createPortal)((0,W.jsx)(`div`,{className:`wl-palette-backdrop`,onMouseDown:e=>e.target===e.currentTarget&&t(),children:(0,W.jsxs)(`div`,{className:`wl-palette`,role:`dialog`,"aria-label":`Search`,children:[(0,W.jsx)(`input`,{autoFocus:!0,value:n,onChange:e=>(r(e.target.value),a(0)),onKeyDown:e=>{if(e.key===`Escape`)t();else if(e.key===`ArrowDown`)a(e=>Math.min(d.length-1,e+1));else if(e.key===`ArrowUp`)a(e=>Math.max(0,e-1));else if(e.key===`Enter`)f(i);else return;e.preventDefault()},placeholder:`Search requests, errors, queries, insights, metrics, alerts, saved views…`,"aria-label":`Search`}),(0,W.jsxs)(`div`,{className:`wl-palette-list`,role:`listbox`,children:[d.length===0&&(0,W.jsx)(`div`,{className:`wl-palette-empty`,children:`No matches.`}),d.map((e,t)=>{let n=bz[e.kind];return(0,W.jsxs)(`div`,{role:`option`,"aria-selected":t===i,className:`wl-palette-item${t===i?` wl-active`:``}`,onMouseEnter:()=>a(t),onClick:()=>f(t),children:[(0,W.jsx)(n,{"aria-hidden":`true`}),(0,W.jsx)(`span`,{className:`wl-truncate`,children:e.title}),(0,W.jsx)(`span`,{className:`wl-muted wl-small wl-truncate`,children:e.detail})]},e.key)})]})]})}),document.body)}var Cz=e=>String(e).padStart(2,`0`);function wz(e){let t=new Date(wb()?e:e-new Date(e).getTimezoneOffset()*6e4);return`${t.getUTCFullYear()}-${Cz(t.getUTCMonth()+1)}-${Cz(t.getUTCDate())}T${Cz(t.getUTCHours())}:${Cz(t.getUTCMinutes())}`}function Tz(e){let t=Date.parse(`${e}:00Z`);return wb()?t:t+new Date(t).getTimezoneOffset()*6e4}function Ez({current:e,onDone:t}){let n=Date.now(),[r,i]=(0,E.useState)(wz(e?.from??n-36e5)),[a,o]=(0,E.useState)(wz(e?.to??n)),s={from:Tz(r),to:Math.min(Tz(a),n)},c=Number.isFinite(s.from)&&Number.isFinite(s.to)&&s.to-s.from>=6e4;return(0,W.jsxs)(`form`,{className:`wl-range-custom`,onSubmit:e=>(e.preventDefault(),c&&(Yw(s),t())),children:[(0,W.jsxs)(`label`,{children:[`From `,(0,W.jsx)(`input`,{type:`datetime-local`,value:r,onChange:e=>i(e.target.value)})]}),(0,W.jsxs)(`label`,{children:[`To `,(0,W.jsx)(`input`,{type:`datetime-local`,value:a,onChange:e=>o(e.target.value)})]}),(0,W.jsx)(`button`,{type:`submit`,className:`wl-btn`,disabled:!c,children:`Apply`})]})}var Dz=[[`previous`,`The period before`],[`week`,`Same time last week`]];function Oz(){let[e,t]=Zg(),{ranges:n}=H(),[r]=Uw(),[i]=Ww(),a=Vw(r),o=a?`${Ob(a.from)} – ${Ob(a.to)}`:fe[e].label,s=(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(V_,{"aria-hidden":`true`}),(0,W.jsx)(`span`,{className:`wl-label`,children:o}),(0,W.jsx)(q_,{"aria-hidden":`true`})]}),c=(e,t,n)=>(0,W.jsxs)(`button`,{type:`button`,className:`wl-menu-item${e?` wl-active`:``}`,onClick:n,children:[(0,W.jsx)(`span`,{className:`wl-truncate`,children:t}),e&&(0,W.jsx)(G_,{size:14,"aria-hidden":`true`,className:`wl-menu-check`})]},t);return(0,W.jsx)(Xb,{label:s,title:`Time range`,children:r=>(0,W.jsxs)(W.Fragment,{children:[n.map(n=>c(!a&&n===e,fe[n].label,()=>(Yw(null),t(n),r()))),(0,W.jsx)(`div`,{className:`wl-menu-head`,children:`Custom range`}),(0,W.jsx)(Ez,{current:a,onDone:r}),(0,W.jsx)(`div`,{className:`wl-menu-head`,children:`Compare with`}),Dz.map(([e,t])=>c(i===e,t,()=>(Xw(e),r())))]})})}var kz=/^#\/(|overview|search|requests|traces|database|rendering|errors|logs|metrics|services|insights|slos|dashboards|users)(\/|\?|$)/;function Az({close:e}){let t=zE(),[n,r]=(0,E.useState)(``),[i,a]=(0,E.useState)(!1),[o,s]=(0,E.useState)(!1),c=qf(location.hash)!==null,[l,u]=(0,E.useState)(null),d=()=>{let r=location.hash||`#/`,a=r.startsWith(`#/search`)||c?`search`:`view`;VE(t.url(),`POST`,{kind:a,name:n.trim(),href:r,chart:c&&o,shared:!t.cloud||i}).then(()=>e(),e=>u(e instanceof Error?e.message:String(e)))};return(0,W.jsxs)(`form`,{className:`wl-save-view`,onSubmit:e=>(e.preventDefault(),d()),children:[(0,W.jsx)(Z,{label:`Name`,required:!0,autoFocus:!0,value:n,onChange:e=>r(e.target.value),placeholder:`Checkout errors this week`}),t.cloud&&(0,W.jsx)(Xx,{label:`Share with the team`,checked:i,onChange:e=>a(e.target.checked)}),c&&(0,W.jsx)(Xx,{label:`Chart it on the Logs page`,checked:o,onChange:e=>s(e.target.checked)}),(0,W.jsx)(`p`,{className:`wl-muted wl-small`,children:`Saves this page with its filters and time range. It shows under Saved in the sidebar.`}),l&&(0,W.jsx)(`p`,{className:`wl-text-error wl-small`,children:l}),(0,W.jsx)(`button`,{type:`submit`,className:`wl-btn wl-btn-primary`,disabled:!n.trim(),children:`Save view`})]})}function jz(){let e=zE();return i(),!e.on||!e.canWrite||!kz.test(location.hash||`#/`)?null:(0,W.jsx)(Xb,{label:(0,W.jsx)(zy,{size:18,"aria-hidden":`true`}),title:`Save this view`,children:e=>(0,W.jsx)(Az,{close:e})})}var Mz=[[`1`,`For 1 day`],[`7`,`For 7 days`],[`30`,`For 30 days`]],Nz=new Set([`overview`,`requests`,`errors`,`database`,`logs`,`insights`,`rendering`,`services`,`traces`]);function Pz(e){let[t,n,r]=e.params.map(C);return e.page===`errors`&&t?{page:`error`,params:{group:t}}:e.page===`services`&&t&&n===`endpoints`&&r?{page:`endpoint`,params:{service:t,endpoint:r}}:e.page===`services`&&t?{page:`service`,params:{service:t}}:e.page===`database`&&t===`queries`&&n?{page:`query`,params:{q:n}}:e.page===`rendering`&&t===`routes`&&n?{page:`route`,params:{route:n}}:Nz.has(e.page)&&!t?{page:e.page,params:{}}:null}function Fz({target:e}){let t=i(),[n]=Zg(),[r,a]=(0,E.useState)(`7`),[o,s]=(0,E.useState)(null),[l,u]=(0,E.useState)(null);return(0,W.jsxs)(`div`,{className:`wl-save-view`,children:[(0,W.jsx)(`p`,{className:`wl-muted wl-small`,children:`A read-only link to this page as it is now: its numbers are kept and do not change. Anyone with the link can open it.`}),(0,W.jsx)(X,{label:`How long`,value:r,options:Mz,onChange:a}),o?(0,W.jsxs)(`span`,{className:`wl-share-url`,children:[(0,W.jsx)(`code`,{className:`wl-truncate`,children:o}),(0,W.jsx)(Kb,{text:o,label:`Copy link`})]}):(0,W.jsx)(`button`,{type:`button`,className:`wl-btn wl-btn-primary`,onClick:()=>{let{window:i,compare:a}=qw(),o=c(),l={...Object.fromEntries(t.query),...Jw(i,a),...o.service?{service:o.service}:{},...e.params},d={page:e.page,range:n,params:l,env:o.env,title:document.title.replace(/ · .*$/,``),days:Number(r)};x(`POST`,`./api/projects/${encodeURIComponent(o.project)}/shares`,d).then(e=>s(e.url),e=>u(e instanceof Error?e.message:String(e)))},children:`Make a link`}),l&&(0,W.jsx)(`p`,{className:`wl-text-error wl-small`,children:l})]})}function Iz(){let e=i(),t=H(),n=Pz(e);return!t.has(`sharing`)||!c().project||!n?null:(0,W.jsx)(Xb,{label:(0,W.jsx)(qv,{size:18,"aria-hidden":`true`}),title:`Share this page`,children:()=>(0,W.jsx)(Fz,{target:n})})}function Lz(e){return e.find(e=>e.self)?.status===`down`?` wl-down`:e.some(e=>e.status===`down`)?` wl-partial`:``}function Rz({sources:e}){let t=e.find(e=>e.self)?.info?.environment??`Local`,n=(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{className:`wl-env-dot${Lz(e)}`}),(0,W.jsx)(`span`,{className:`wl-label`,children:t}),(0,W.jsx)(q_,{"aria-hidden":`true`})]});return(0,W.jsx)(Xb,{label:n,title:`Environment ${t}: connected services`,children:()=>(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{className:`wl-menu-head`,children:`Connected services`}),e.map(e=>(0,W.jsxs)(`a`,{className:`wl-menu-item`,href:`${e.endpoint}/`,target:e.self?void 0:`_blank`,rel:`noreferrer`,children:[(0,W.jsx)(`span`,{className:`wl-env-dot${e.status===`down`?` wl-down`:e.status===`pending`?` wl-partial`:``}`}),(0,W.jsxs)(`span`,{className:`wl-truncate`,children:[(0,W.jsx)(`strong`,{children:e.info?.service??e.endpoint}),(0,W.jsxs)(`span`,{className:`wl-muted wl-small`,children:[` · `,e.status===`down`?e.error??`unreachable`:e.info?.runtime??`…`]})]}),!e.self&&(0,W.jsx)(pv,{size:14,"aria-hidden":`true`})]},e.endpoint)),(0,W.jsx)(`div`,{className:`wl-menu-note`,children:`Services join this list when a request calls them.`})]})})}function zz(){let e=H(),t=e.service&&!e.service.endsWith(Yg[e.mode])?` · ${e.service}`:``,n=`${Yg[e.mode]}${t} · kept ${Qg(e.keptMs)}`;return(0,W.jsx)(`span`,{className:`wl-mode-badge`,title:`WizeLens runs ${e.mode===`in-app`?`inside this service`:`as a ${Yg[e.mode].toLowerCase()}`}. Data older than ${Qg(e.keptMs)} is dropped.`,children:n})}var Bz={light:`dark`,dark:`system`,system:`light`},Vz={light:Vy,dark:ry,system:ty};function Hz(){let[e,t]=je(),n=Vz[e];return(0,W.jsx)(`button`,{type:`button`,className:`wl-icon-btn`,onClick:()=>t(Bz[e]),title:`Theme: ${e}. Click for ${Bz[e]}.`,"aria-label":`Theme: ${e}`,children:(0,W.jsx)(n,{size:20,"aria-hidden":`true`})})}var Uz=typeof navigator<`u`&&/Mac|iPhone|iPad/.test(navigator.platform);function Wz(){let e=Ce();if(H().has(`accounts`))return(e?.orgs??[]).flatMap(e=>e.projects.map(t=>[t.id,`${e.name} / ${t.name}`]))}function Gz({data:e}){let[t,n]=(0,E.useState)(!1),r=Wz(),i=(0,E.useCallback)(()=>n(!0),[]);return xz(i),(0,W.jsxs)(`header`,{className:`wl-topbar`,children:[(0,W.jsxs)(`button`,{type:`button`,className:`wl-search-box`,onClick:i,"aria-label":`Search`,children:[(0,W.jsx)(Cy,{size:18,"aria-hidden":`true`}),(0,W.jsx)(`span`,{className:`wl-truncate`,children:`Search requests, traces, errors, services…`}),(0,W.jsx)(`kbd`,{children:Uz?`⌘ K`:`Ctrl K`})]}),(0,W.jsx)(`span`,{className:`wl-spacer`}),(0,W.jsx)(zz,{}),(0,W.jsx)(fD,{}),e.registry?(0,W.jsx)(KR,{registry:e.registry,projects:r}):(0,W.jsx)(Rz,{sources:e.sources}),(0,W.jsx)(Oz,{}),(0,W.jsx)(jz,{}),(0,W.jsx)(Iz,{}),(0,W.jsx)(nz,{traces:e.traces,now:e.updatedMs}),(0,W.jsx)(Hz,{}),r&&(0,W.jsx)(qR,{}),t&&(0,W.jsx)(Sz,{traces:e.traces,onClose:()=>n(!1)})]})}function Kz(){return vw()?(0,W.jsxs)(`div`,{className:`wl-banner wl-banner-info wl-banner-thin wl-update`,role:`status`,children:[`A new version of WizeLens is ready.`,` `,(0,W.jsx)(`button`,{type:`button`,className:`wl-link-btn`,onClick:()=>window.location.reload(),children:`Refresh`}),(0,W.jsx)(`button`,{type:`button`,className:`wl-link-btn wl-update-later`,onClick:hw,children:`Later`})]}):null}function qz(){return(0,W.jsxs)(`div`,{className:`wl-banner wl-banner-info`,role:`status`,children:[`This page changed in a new version of WizeLens.`,` `,(0,W.jsx)(`button`,{type:`button`,className:`wl-link-btn`,onClick:()=>window.location.reload(),children:`Refresh to load it`})]})}var Jz=e=>(0,E.lazy)(()=>e().then(e=>({default:e}),()=>(mw(),{default:qz}))),Yz={overview:rj,problems:ZI,search:hL,requests:yM,traces:AP,database:KO,rendering:Dj,errors:Pk,logs:FA,metrics:rI,hosts:fI,kubernetes:TI,services:cP,insights:Zk,settings:QL,alerts:bE,uptime:ER,slos:NE,dashboards:MD,users:KD,team:Jz(()=>Re(()=>import(`./TeamPage-D8bcLIes.js`).then(e=>e.TeamPage),__vite__mapDeps([0,1,2,3]),import.meta.url)),account:Jz(()=>Re(()=>import(`./AccountPage-NUE9p2aP.js`).then(e=>e.AccountPage),__vite__mapDeps([4,1,3]),import.meta.url))},Xz=3e5,Zz={critical:`var(--wl-red)`,warning:`var(--wl-orange)`};function Qz(){let e=Se();return(0,E.useMemo)(()=>{let t=In(e.traces.filter(t=>t.startMs>=e.updatedMs-Xz));return t.some(Ln)?Zz.critical:t.some(e=>e.health===`warning`)?Zz.warning:void 0},[e.traces,e.updatedMs])}function $z({route:e}){let t=H().has(`accounts`);if(e.page===`trace`){let[t,n,r]=e.params;return n===`compare`&&r?(0,W.jsx)(NC,{a:t,b:r},`${t}/${r}`):(0,W.jsx)(TC,{traceId:t,view:n},t)}let n=e.page,r=n===`shared`||n===`status`||ue.includes(n)||n===`account`&&!t?rj:Yz[n];return(0,W.jsx)(r,{})}function eB(){return(0,W.jsx)(VF,{children:(0,W.jsx)(tB,{})})}function tB(){let e=i(),t=Se(),n=e_(),[r]=je(),o=Qz();(0,E.useEffect)(()=>a(r),[r]);let[s]=Gw(),[c]=Kw();Cb({utc:s===`utc`,hour12:c===`12`}),qF(),(0,E.useEffect)(()=>{window.scrollTo(0,0)},[e.page,e.params.join(`/`)]),(0,E.useEffect)(()=>{document.title=t.info?`WizeLens · ${t.info.service}`:`WizeLens`},[t.info]);let l=pT(),u=(0,E.useMemo)(()=>l===null?Tr(n.traces).length:0,[l,n.traces]),d=l??u;return(0,W.jsxs)(`div`,{className:`wl-shell`,children:[(0,W.jsx)(UR,{page:e.page,counts:{errors:d},dot:o}),(0,W.jsxs)(`div`,{className:`wl-main`,children:[(0,W.jsx)(Gz,{data:t}),(0,W.jsx)(Kz,{}),(0,W.jsx)(AR,{}),(0,W.jsx)(BR,{}),(0,W.jsx)(`main`,{className:`wl-page`,children:(0,W.jsx)($z,{route:e})})]})]})}m.start(),gw(),(0,Qe.createRoot)(document.getElementById(`root`)).render((0,W.jsx)(E.StrictMode,{children:(0,W.jsx)(eB,{})}));export{Nb as A,Yy as B,Jx as C,X as D,zx as E,fb as F,G_ as G,dy as H,G as I,D_ as K,db as L,Ob as M,Fb as N,Y as O,K as P,rb as R,Yx as S,Bx as T,qv as U,py as V,dv as W,ZO as _,FR as a,Xx as b,AR as c,EF as d,JN as f,KN as g,XN as h,zR as i,Db as j,Kb as k,_L as l,YN as m,PR as n,LR as o,qN as p,U as q,RR as r,jR as s,IR as t,gL as u,ZD as v,qx as w,Z as x,Q as y,tb as z};