@unblind/react 0.1.0-alpha.0 → 0.1.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +11 -3
package/dist/index.d.mts
CHANGED
|
@@ -376,7 +376,7 @@ type UnblindProviderProps = UnblindClientProviderProps & UnblindScopeProps & Pro
|
|
|
376
376
|
declare function UnblindProvider({ children, queryClient, apiBaseUrl, fetchImpl, timeRange, startTime, endTime, interval, attributes, groupBy, operator, appearance, }: UnblindProviderProps): react_jsx_runtime.JSX.Element;
|
|
377
377
|
|
|
378
378
|
interface UseMetricsReturn {
|
|
379
|
-
|
|
379
|
+
metrics: MetricMetadataList | undefined;
|
|
380
380
|
isLoading: boolean;
|
|
381
381
|
hasError: boolean;
|
|
382
382
|
refetch: () => void;
|
package/dist/index.d.ts
CHANGED
|
@@ -376,7 +376,7 @@ type UnblindProviderProps = UnblindClientProviderProps & UnblindScopeProps & Pro
|
|
|
376
376
|
declare function UnblindProvider({ children, queryClient, apiBaseUrl, fetchImpl, timeRange, startTime, endTime, interval, attributes, groupBy, operator, appearance, }: UnblindProviderProps): react_jsx_runtime.JSX.Element;
|
|
377
377
|
|
|
378
378
|
interface UseMetricsReturn {
|
|
379
|
-
|
|
379
|
+
metrics: MetricMetadataList | undefined;
|
|
380
380
|
isLoading: boolean;
|
|
381
381
|
hasError: boolean;
|
|
382
382
|
refetch: () => void;
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var We=Object.create;var K=Object.defineProperty;var Ke=Object.getOwnPropertyDescriptor;var Ye=Object.getOwnPropertyNames;var Xe=Object.getPrototypeOf,Je=Object.prototype.hasOwnProperty;var Ze=(e,t)=>{for(var r in t)K(e,r,{get:t[r],enumerable:!0})},ge=(e,t,r,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Ye(t))!Je.call(e,o)&&o!==r&&K(e,o,{get:()=>t[o],enumerable:!(i=Ke(t,o))||i.enumerable});return e};var Y=(e,t,r)=>(r=e!=null?We(Xe(e)):{},ge(t||!e||!e.__esModule?K(r,"default",{value:e,enumerable:!0}):r,e)),et=e=>ge(K({},"__esModule",{value:!0}),e);var Ut={};Ze(Ut,{Chart:()=>ie,Divider:()=>re,TimeseriesChart:()=>$e,UnblindClientProvider:()=>X,UnblindProvider:()=>be,UnblindScope:()=>J,useLogs:()=>Se,useMetrics:()=>we,useRefresh:()=>se,useScope:()=>j,useTheme:()=>te,useTimeseries:()=>Z,useUnblindClientConfig:()=>S,useUsage:()=>Ce});module.exports=et(Ut);var B=require("@tanstack/react-query"),L=require("react"),ae=require("react/jsx-runtime"),he=(0,L.createContext)(void 0);function X({children:e,queryClient:t,queryClientConfig:r,apiBaseUrl:i="/api/unblind",fetchImpl:o}){let s=(0,L.useMemo)(()=>{if(t)return t;let n={refetchOnWindowFocus:!1,refetchOnReconnect:!1,refetchOnMount:!1},l={defaultOptions:{queries:n}};return r?new B.QueryClient({...r,defaultOptions:{...r.defaultOptions,queries:{...n,...r.defaultOptions?.queries}}}):new B.QueryClient(l)},[t,r]),a=(0,L.useMemo)(()=>({apiBaseUrl:i,fetchImpl:o}),[i,o]);return(0,ae.jsx)(B.QueryClientProvider,{client:s,children:(0,ae.jsx)(he.Provider,{value:a,children:e})})}function S(){let e=(0,L.useContext)(he);if(!e)throw new Error("useUnblindConfig must be used within an UnblindClientProvider. Please wrap your app or component tree with <UnblindClientProvider>.");return e}function se(){let e=(0,B.useQueryClient)();return(0,L.useCallback)(async()=>{await e.refetchQueries({queryKey:["unblind","timeseries"]})},[e])}var A=require("react"),E=require("react/jsx-runtime"),le=(0,A.createContext)(void 0);function J({children:e,timeRange:t,startTime:r,endTime:i,interval:o,attributes:s,groupBy:a,operator:n,appearance:l}){let c=(0,A.useContext)(le),p=l?.components?.Loading,u=l?.components?.Error,m=l?.components?.Tooltip,d=(0,A.useMemo)(()=>{if(!(!p&&!u&&!m))return{components:{...p&&{Loading:p},...u&&{Error:u},...m&&{Tooltip:m}}}},[p,u,m]),h=(0,A.useMemo)(()=>({timeRange:t??c?.timeRange,startTime:r??c?.startTime,endTime:i??c?.endTime,interval:o??c?.interval,attributes:s??c?.attributes,groupBy:a??c?.groupBy,operator:n??c?.operator,appearance:d??c?.appearance}),[t,r,i,o,s,a,n,d,c]);return(0,E.jsx)(le.Provider,{value:h,children:e})}var tt=()=>(0,E.jsx)("div",{className:"flex h-full items-center justify-center text-sm text-gray-500",children:"Loading data..."}),rt=({error:e})=>(0,E.jsx)("div",{className:"flex h-full items-center justify-center text-sm text-red-500",children:e?.message??"Something went wrong"}),ot=()=>(0,E.jsx)("div",{className:"flex h-full items-center justify-center",children:(0,E.jsxs)("div",{className:"text-center",children:[(0,E.jsx)("div",{className:"mx-auto flex h-10 w-10 items-center justify-center rounded-full bg-gray-100 dark:bg-zinc-800",children:(0,E.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor",className:"size-5 text-gray-400 dark:text-gray-500",children:(0,E.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"})})}),(0,E.jsx)("p",{className:"mt-2 text-sm text-gray-500 dark:text-gray-400",children:"No data available for this time range"})]})}),it=["#7c3aed","#eab308","#2563eb","#dc2626","#16a34a","#f97316","#0891b2","#9333ea","#ca8a04","#4f46e5","#0d9488","#be185d"],nt="6h";function j(){let e=(0,A.useContext)(le);return{timeRange:e?.timeRange||nt,startTime:e?.startTime,endTime:e?.endTime,interval:e?.interval,attributes:e?.attributes,groupBy:e?.groupBy,operator:e?.operator,appearance:{components:{Loading:e?.appearance?.components?.Loading??tt,Error:e?.appearance?.components?.Error??rt,Empty:e?.appearance?.components?.Empty??ot,Tooltip:e?.appearance?.components?.Tooltip},colors:e?.appearance?.colors||it}}}var ce=require("react/jsx-runtime");function be({children:e,queryClient:t,apiBaseUrl:r,fetchImpl:i,timeRange:o,startTime:s,endTime:a,interval:n,attributes:l,groupBy:c,operator:p,appearance:u}){return(0,ce.jsx)(X,{queryClient:t,apiBaseUrl:r,fetchImpl:i,children:(0,ce.jsx)(J,{timeRange:o,startTime:s,endTime:a,interval:n,attributes:l,groupBy:c,operator:p,appearance:u,children:e})})}var ye=require("@tanstack/react-query");function we(){let{apiBaseUrl:e,fetchImpl:t=fetch}=S(),r=(0,ye.useQuery)({queryKey:["unblind","metrics"],queryFn:async()=>{let i=await t(`${e}/metrics`,{headers:{"Content-Type":"application/json"}});if(!i.ok)throw new Error("Error loading metrics metadata");if(i.status===200){let{data:o}=await i.json();return o}else throw new Error("Unexpected status code")}});return{list:r.data,isLoading:r.isLoading,hasError:r.isError,refetch:r.refetch}}var ve=require("@tanstack/react-query"),q=require("react");var xe=Y(require("ms"));function at(e){let t=Date.now();return[t-(0,xe.default)(e),t]}function H(e,t,r){let i,o;if(typeof t=="number"&&typeof r=="number")i=t,o=r;else if(e){let[s,a]=at(e);i=s,o=a}else throw new Error("Either timeRange or both startTime and endTime must be provided");return[i,o]}function Z({queries:e,timeRange:t,startTime:r,endTime:i,interval:o}){let{apiBaseUrl:s,fetchImpl:a=fetch}=S(),n=(0,q.useMemo)(()=>e.map(b=>b.metrics.join(",")).join(","),[e]),l=(0,q.useMemo)(()=>e.map(b=>{let T=b.attributes;if(!T)return"";let y=Object.keys(T);return y.length===0?"":y.map(x=>x+":"+T[x]?.join(",")).join(",")}).join(","),[e]),c=(0,q.useMemo)(()=>e.map(b=>b.operator),[e]),p=(0,q.useMemo)(()=>e.map(b=>b.groupBy).join(", "),[e]),m=(0,ve.useQuery)({queryKey:["unblind","timeseries",n,l,r,i,t,o,c,p],queryFn:async()=>{if(!n)throw new Error("Missing required parameters");if(n.length===0)throw new Error("No series provided");let[b,T]=H(t,r,i),y={queries:e,startTime:b,endTime:T,interval:o},x=await a(`${s}/tenants/timeseries`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(y)});if(!x.ok)throw new Error("Error fetching metric");let{series:C,times:P,metadata:R}=await x.json();if(!C)throw console.error("Series not found"),new Error("Series not found");return{series:C,times:P,metadata:R}},enabled:!!n&&(typeof r=="number"&&typeof i=="number"||!!t)}),{metadata:d,series:h,times:k}=(0,q.useMemo)(()=>m.data?{series:m.data.series,times:m.data.times,metadata:m.data.metadata}:{series:[],times:[],metadata:{}},[m]),w=m.isLoading,f=m.isFetching,g=m.isError;return{data:{series:h,times:k,metadata:d},isLoading:w,isFetching:f,hasError:g,refetch:m.refetch}}var ke=require("@tanstack/react-query"),Te=require("react");function Ce({timeRange:e,startTime:t,endTime:r}){let{apiBaseUrl:i,fetchImpl:o=fetch}=S(),a=(0,ke.useQuery)({queryKey:["unblind","usage",e,t,r],queryFn:async()=>{let[p,u]=H(e,t,r),m=`${i}/tenants/usage`,d=await o(m,{headers:{"Content-Type":"application/json"},body:JSON.stringify({startTime:p,endTime:u})});if(!d.ok)throw new Error("Error fetching usage");let{data:h}=await d.json();if(!h)throw new Error("usage not found");return h},enabled:typeof t=="number"&&typeof r=="number"||!!e}),n=(0,Te.useMemo)(()=>a.data?a.data||[]:[],[a]),l=a.isLoading||a.isRefetching,c=a.isError;return{usage:n,isLoading:l,hasError:c,refetch:a.refetch}}var Pe=require("@tanstack/react-query"),Ue=require("react");function Se({timeRange:e,filters:t,startTime:r,endTime:i}){let{apiBaseUrl:o,fetchImpl:s=fetch}=S(),a=typeof r=="number"&&typeof i=="number"||!!e,n=(0,Pe.useInfiniteQuery)({queryKey:["unblind","logs",e,t.map(c=>c.name+":"+c.value).sort().join(",")],queryFn:async({pageParam:c})=>{let p=t.reduce((C,P)=>(C[P.name]||(C[P.name]=[]),C[P.name].push(P.value),C),{}),{body:u=[],severity:m=[],"service.name":d=[],"trace.id":h=[],"span.id":k=[],...w}=p,[f,g]=H(e,r,i),b=Date.now(),T=await s(`${o}/tenants/logs`,{method:"POST",body:JSON.stringify({filter:{attributes:w,body:u,severity:m,traceId:h,spanId:k,service:d},startTime:f,endTime:g,pagination:{page:c}}),headers:{"Content-Type":"application/json"}});if(!T.ok)throw new Error("Error fetching logs");let{data:y,next_page:x}=await T.json();if(!y)throw new Error("logs not found");return{data:y,next_page:x}},enabled:a,initialPageParam:void 0,getNextPageParam:c=>c.next_page});return{logs:(0,Ue.useMemo)(()=>n.data?n.data.pages.flatMap(c=>c.data||[]):[],[n.data]),isLoading:n.isLoading,hasError:n.isError,hasNextPage:n.hasNextPage??!1,fetchNextPage:n.fetchNextPage,isFetchingNextPage:n.isFetchingNextPage,refetch:n.refetch}}var ee=require("react");function te(){let[e,t]=(0,ee.useState)(!1);return(0,ee.useEffect)(()=>{let r=()=>t(document.documentElement.classList.contains("dark"));return r(),window.addEventListener("storage",r),window.addEventListener("theme-change",r),()=>{window.removeEventListener("storage",r),window.removeEventListener("theme-change",r)}},[]),e}var oe=require("react"),Ge=Y(require("uplot"));var W=Y(require("uplot")),je=require("@grafana/data");var N=require("@grafana/data");var U={millisecond:1,second:1e3,minute:6e4,hour:36e5,day:864e5,month:24192e5,year:31536e6},_={second:[1,2,5,10,15,30],minute:[1,2,5,10,15,30],hour:[1,2,3,4,6,8,12],day:[1,2,3,7,14],month:[1,2,3,6],year:[1,2,5,10,20,50,100]};function st(e,t,r,i){if(t>U.day){let o=N.systemDateFormats.interval.year,s=Math.round(U.year/U.day)*U.day;return Math.round(t/U.day)*U.day===s?o=N.systemDateFormats.interval.year:t<=U.year?o=N.systemDateFormats.interval.month:o=N.systemDateFormats.interval.day,e.map(n=>(0,N.dateTimeFormat)(n,{format:o,timeZone:i}))}return e.map(o=>{let s=new Date(o),a=t<U.minute,n=t<U.second,l=s.toLocaleTimeString("en-GB",{hour:"2-digit",minute:"2-digit",hour12:!1,timeZone:i});return(l==="00:00"||l==="24:00")&&!a&&!n?s.toLocaleDateString(void 0,{day:"2-digit",month:"short",timeZone:i}):s.toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit",second:a?"2-digit":void 0,fractionalSecondDigits:n?3:void 0,hour12:!1,timeZone:i})})}function Me(e){let t=[{size:U.second/1e3,increments:_.second},{size:U.minute/1e3,increments:_.minute},{size:U.hour/1e3,increments:_.hour},{size:U.day/1e3,increments:_.day},{size:U.month/1e3,increments:_.month},{size:U.year/1e3,increments:_.year}];for(let o of t)for(let s of o.increments){let a=o.size*s;if(a>=e)return{increment:a*1e3,multiplier:s}}let r=t[t.length-1],i=r.increments[r.increments.length-1];return{increment:r.size*i*1e3,multiplier:i}}function Ee(e,t,r){return[t,r]}function lt(e,t,r,i){let o=r-t,s=e.width,a=Math.floor(s/100),n=o/a,{increment:l,multiplier:c}=Me(n),p=l/1e3,u=[];if(o<12*3600){let d=Math.ceil(t/p)*p;for(;d<=r;d+=p)u.push(d);return u}if(o<3*86400){if(l>=6*3600*1e3){let h=l/1e3/3600,k=new Date(t*1e3);if(i==="UTC"){let f=k.getUTCHours(),g=Math.floor(f/h)*h;k.setUTCHours(g,0,0,0)}else{let f=k.getHours(),g=Math.floor(f/h)*h;k.setHours(g,0,0,0)}let w=k.getTime()/1e3;for(w<t&&(w+=p);w<=r;)u.push(w),w+=p;return u}let d=Math.ceil(t/p)*p;for(;d<=r;d+=p)u.push(d);return u}if(l>=U.day){let d=new Date(t*1e3);i==="UTC"?(d.setUTCHours(0,0,0,0),d.getTime()/1e3<t&&d.setUTCDate(d.getUTCDate()+c)):(d.setHours(0,0,0,0),d.getTime()/1e3<t&&d.setDate(d.getDate()+c));let h=d.getTime()/1e3;for(;h<=r;)u.push(h),i==="UTC"?d.setUTCDate(d.getUTCDate()+c):d.setDate(d.getDate()+c),h=d.getTime()/1e3;return u}let m=Math.ceil(t/p)*p;for(;m<=r;m+=p)u.push(m);return u}function Re(e,t,r){return t.length===0?[]:t.map((i,o)=>o===0||o===t.length-1?(0,N.dateTimeFormatTimeAgo)(i*1e3,{timeZone:r}):"")}function ct(e,t,r){let i=e.scales.x,o=((i?.max??0)-(i?.min??0))*1e3,s=Math.floor(e.width/100),a=o/1e3/s,{increment:n}=Me(a),l=t.map(c=>c*1e3);return st(l,n,o,r)}function Le(e,t=!1){let r=t?(s,a,n,l)=>Ee(s,n,l):(s,a,n,l)=>lt(s,n,l,e),i=t?(s,a)=>Re(s,a,e):(s,a)=>ct(s,a,e),o=t?(s,a,n,l,c)=>{let u=document.createElement("canvas").getContext("2d");if(!u)return 0;u.font=F;let m=Re(s,Ee(s,n,l),e),d=Math.max(u.measureText(m[0]||"").width,u.measureText(m[1]||"").width);return Math.ceil(d/2)+15}:void 0;return{font:F,labelFont:F,grid:{show:!1,width:.5},ticks:{width:.5},splits:r,values:i,size:20}}var Q=require("@floating-ui/dom"),Ve=Y(require("uplot"));var Ne=require("react-dom/client"),pe=class{overlay=null;reactRoot=null;initialize(){this.overlay||(this.overlay=document.createElement("div"),this.overlay.id="unblind-tooltip-overlay",this.overlay.style.display="none",this.overlay.style.position="fixed",this.overlay.style.pointerEvents="none",this.overlay.style.zIndex="9999",document.body.appendChild(this.overlay),this.reactRoot=(0,Ne.createRoot)(this.overlay))}getOverlay(){return this.overlay}render(t){this.reactRoot&&this.reactRoot.render(t)}show(){this.overlay&&(this.overlay.style.display="block")}hide(){this.overlay&&(this.overlay.style.display="none"),this.render(null)}destroy(){this.reactRoot&&(this.reactRoot.unmount(),this.reactRoot=null),this.overlay&&(this.overlay.remove(),this.overlay=null)}},G=new pe;var de=require("@grafana/data"),Ie=require("react");var ze=require("react/jsx-runtime");function re({className:e="h-px bg-gray-200 border-gray-200 dark:bg-white/15",...t}){return(0,ze.jsx)("hr",{role:"presentation",...t,className:e})}var v=require("react/jsx-runtime");function pt(e){return typeof e.metric=="string"?e.metric:e.metric?.textContent||"Unknown Metric"}function Ae(e){let t=e.attributes||{};if(t["service.name"])return String(t["service.name"]);let i=Object.keys(t)[0];return i?String(t[i]):"z-fallback"}function De(e){return[...e].sort((t,r)=>(Number(r.value)||0)-(Number(t.value)||0))}function dt(e){return[...e].sort((t,r)=>Ae(t).localeCompare(Ae(r)))}function ut(e){let t={};return e.forEach(r=>{let i=pt(r);t[i]||(t[i]=[]),t[i].push(r)}),t}function mt(e,t){let r=ut(e);return Object.keys(r).sort((o,s)=>o.localeCompare(s)).map(o=>{let s=r[o];if(!s)return{metricName:o,items:[]};let a=t?De(s):dt(s);return{metricName:o,items:a}})}function ft({item:e,groupIdx:t,idx:r}){let i=e.attributes||{},o=Object.entries(i),s=typeof e.metric=="string"?e.metric:e.metric?.textContent||"Unknown",a=o,n=o.find(([l])=>l==="service.name");return n?(s=String(n[1]),a=o.filter(([l])=>l!=="service.name")):o.length>0&&o[0]&&(s=`${o[0][0]}: ${o[0][1]}`,a=o.slice(1)),(0,v.jsxs)("div",{className:"group flex flex-col px-3 py-1 hover:bg-slate-50 dark:hover:bg-white/5 transition-colors",children:[(0,v.jsxs)("div",{className:"flex items-center justify-between gap-4",children:[(0,v.jsxs)("div",{className:"flex items-center gap-2.5 min-w-0 overflow-hidden",children:[(0,v.jsx)("span",{className:"size-2 mt-0.5 shrink-0 rounded-full shadow-sm ring-1 ring-black/5 dark:ring-white/10",style:{backgroundColor:e.color}}),(0,v.jsx)("span",{className:"truncate font-medium text-slate-600 dark:text-slate-300",title:s,children:s})]}),(0,v.jsx)("div",{className:"font-semibold tabular-nums text-slate-900 dark:text-white whitespace-nowrap",children:e.formattedValue??(0,v.jsx)("span",{className:"font-normal text-slate-400",children:"\u2014"})})]}),a.length>0&&(0,v.jsx)("div",{className:"mt-0.5 flex flex-wrap gap-x-3 gap-y-0.5 pl-4.5 text-xs text-slate-500 dark:text-slate-400",children:a.map(([l,c])=>(0,v.jsxs)("span",{className:"flex items-center gap-1",children:[(0,v.jsxs)("span",{className:"opacity-70",children:[l,":"]}),(0,v.jsx)("span",{className:"font-medium text-slate-600 dark:text-slate-300",children:String(c)})]},l))})]},`item-${t}-${r}`)}function gt({group:e,groupIdx:t,hasAttributes:r}){return(0,v.jsxs)("div",{className:"flex flex-col",children:[r&&(0,v.jsx)("div",{className:`sticky top-0 z-10 bg-white/95 dark:bg-zinc-900/95 backdrop-blur-sm px-3 py-1.5 font-semibold text-slate-900 dark:text-white ${t>0?"mt-2 border-t border-gray-100 dark:border-white/5 pt-3":""}`,children:e.metricName}),(0,v.jsx)("div",{className:"flex flex-col gap-1",children:e.items.map((i,o)=>(0,v.jsx)(ft,{item:i,groupIdx:t,idx:o},`item-${t}-${o}`))})]},e.metricName)}function Oe({timestamp:e,items:t,timeZone:r,spansMultipleDays:i,orderByValues:o,hasAttributes:s}){let a=i?(0,de.dateTimeFormat)(e*1e3,{format:"MMM DD, HH:mm:ss",timeZone:r}):(0,de.dateTimeFormat)(e*1e3,{format:"HH:mm:ss",timeZone:r}),n=(0,Ie.useMemo)(()=>{let l=mt(t,o);if(!s&&o&&l.length>0){let c=l.flatMap(m=>m.items),p=De(c);return[{metricName:l[0]?.metricName||"Metrics",items:p}]}return l},[t,o,s]);return(0,v.jsxs)("div",{style:{fontSize:"13px"},className:"flex w-[320px] flex-col gap-1 text-sm rounded-lg text-slate-900 dark:text-slate-200 border border-gray-200/80 bg-white shadow-xl ring-1 ring-gray-200/40 dark:ring-zinc-800/40 dark:border-white/10 dark:bg-zinc-900",children:[(0,v.jsx)("div",{className:"flex items-center justify-between px-3 pt-2.5 font-medium text-slate-700 dark:text-slate-100",children:a}),(0,v.jsx)(re,{className:"my-1 border-gray-100 dark:border-white/5"}),n.length>0?(0,v.jsx)("div",{className:"flex flex-col pb-2",children:n.map((l,c)=>(0,v.jsx)(gt,{group:l,groupIdx:c,hasAttributes:s},l.metricName))}):(0,v.jsx)("div",{className:"px-3 pb-3 italic text-zinc-400 text-xs",children:"No data available"})]})}var ue=require("react/jsx-runtime"),ht=4,bt=8;function yt(e,t){if(!e||e.length===0)return!1;let r=e[0],i=e[e.length-1];if(r==null||i==null)return!1;let o=new Date(r*1e3),s=new Date(i*1e3),a=n=>t==="UTC"?`${n.getUTCFullYear()}-${n.getUTCMonth()}-${n.getUTCDate()}`:n.toLocaleDateString(void 0,{timeZone:t});return a(o)!==a(s)}function wt(e,t){let r=!1;for(let o=1;o<e.series.length;o++)if(e.data[o]?.[t]!=null){r=!0;break}if(r)return t;let i=e.data[0].length;for(let o=1;t+o<i||t-o>=0;o++){let s=t-o,a=t+o;if(s>=0){for(let n=1;n<e.series.length;n++)if(e.data[n]?.[s]!=null)return s}if(a<i){for(let n=1;n<e.series.length;n++)if(e.data[n]?.[a]!=null)return a}}return t}function xt(e,t,r,i,o){let s=!1,a=[];for(let n=1;n<e.series.length;n++){let l=e.data[n]?.[t]??null;if(i&&l!=null&&n>1){let k=e.data[n-1]?.[t]??0;l=l-k}let c=e.series[n],p=o?.[n-1],u=c?.label??`Series ${n}`,m=c?.stroke,d=typeof m=="function"?m(Ve.default,n):m??"#ffffff00",h=l==null?void 0:r?r(l):String(l);p?.attributes&&Object.keys(p?.attributes).length>0&&(s=!0),a.push({metric:u,color:d,value:l===null?void 0:l,formattedValue:h,attributes:p?.attributes})}return{items:a,hasAttributes:s}}async function vt(e,t){let{x:r,y:i}=await(0,Q.computePosition)({getBoundingClientRect:()=>({x:t.left,y:t.top,width:0,height:0,top:t.top,left:t.left,right:t.left,bottom:t.top})},e,{placement:"top-start",strategy:"fixed",middleware:[(0,Q.offset)({mainAxis:ht,crossAxis:bt}),(0,Q.flip)()]});e.style.left=`${r}px`,e.style.top=`${i}px`}function Be(e,t,r,i,o,s){let a,n,l,c=!1;function p(){let d=a.getBoundingClientRect();n=d.left,l=d.top}function u(){G.hide()}function m(){G.show()}return{hooks:{init:d=>{G.initialize(),a=d.over,window.addEventListener("scroll",p,!0),window.addEventListener("resize",p),a.onmouseenter=()=>{c=!0,m()},a.onmouseleave=()=>{c=!1,u()},p()},setSize:()=>{p()},setCursor:d=>{let{left:h,top:k,idx:w}=d.cursor;if(!c||w==null){u();return}let g=d.data[0],b=yt(g,r),T=wt(d,w),y=d.data[0][T];if(y===void 0)return;let{items:x,hasAttributes:C}=xt(d,T,e,t,o),P={left:(h||0)+n,top:(k||0)+l};m();let R=i,D=R?(0,ue.jsx)(R,{timestamp:y,items:x,timeZone:r}):(0,ue.jsx)(Oe,{timestamp:y,items:x,timeZone:r,spansMultipleDays:b,stacked:t,hasAttributes:C,orderByValues:s});G.render(D);let O=G.getOverlay();O&&vt(O,P)},destroy(){window.removeEventListener("scroll",p,!0),window.removeEventListener("resize",p)}}}}var F='11px "Inter", sans-serif';var Fe=(e,t)=>{let r=e;return t&&t.unit&&t.unit.code&&t.unit.code!=="1"&&(!r&&t.unit?r=t.unit.code:r&&t.unit.code!==r&&(r=void 0)),r},me=(e,t,r)=>Array.isArray(r)?r[t]:r(e,t),kt=e=>{let t=W.default.paths.bars({size:[.6,100],radius:0,gap:0}),r=W.default.paths.linear({alignGaps:0}),i=W.default.paths.spline({alignGaps:1}),o=W.default.paths.stepped({alignGaps:1});switch(e){case"line":return r;case"bar":return t;case"area":return r;case"step":return o;case"spline":return i;default:return r}},Tt=(e,t,r,i)=>{switch(i){case"area":return me(e,t,r);case"bar":return me(e,t,r);default:return}},Ct=e=>{switch(e){case"bar":return 1;case"line":return 2;case"area":return 2;case"step":return 1.5;default:return 1}},He=(e,t,r,i,o,s,a,n,l,c,p)=>{let u=e?.clientWidth??1050,m=e?.clientHeight??250,d=typeof t=="string"?String(t).toLowerCase().replaceAll("by","bytes"):t,h=(0,je.getValueFormat)(d==="1"?null:d),k=Ct(i),w={width:u,height:m,scales:{y:{range:{min:{mode:1,soft:0},max:{pad:2}}}},plugins:[Be(f=>{let g=h(f,2);return g.text+(g.suffix?.trim()||"")},o,n,l,r,p)],padding:c?[10,15,10,15]:[8,15,8,15],cursor:{y:!1,sync:{key:"_"},drag:{setScale:!0,x:!0,y:!1},move:(f,g,b)=>{let T=f.posToVal(g,"x"),y=f.data[0];if(!y||y.length===0)return[g,b];let x=0,C=0,P=y.length-1;for(;P-C>1;){let z=Math.floor((C+P)/2),$=y[z];$!=null&&$<T?C=z:P=z}let R=y[C],D=y[P];R!=null&&D!=null?x=Math.abs(R-T)<Math.abs(D-T)?C:P:R!=null?x=C:D!=null&&(x=P);let O=x;for(let z=x;z>=0;z--){let $=!1;for(let ne=1;ne<f.data.length;ne++){let fe=f.data[ne];if(fe&&fe[z]!=null){$=!0;break}}if($){O=z;break}}let V=y[O];return V==null?[g,b]:[f.valToPos(V,"x"),b]}},series:[{},...r.map((f,g)=>({label:f.metric,stroke:me(f,g,a),width:k,points:{show:!1},spanGaps:!0,paths:kt(i),fill:Tt(f,g,a,i)}))],axes:[Le(n,c),qe(h)],legend:{show:!1}};if(s){let f=w.axes?.[0],g=w.axes?.[1];f&&(f.stroke="#dadada",f.grid&&(f.grid.stroke="#2c3235")),g&&(g.stroke="#dadada",g.grid&&(g.grid.stroke="#2c3235"))}else{let f=w.axes?.[0],g=w.axes?.[1];f&&(f.stroke="#45556c"),g&&(g.stroke="#45556c")}return w};var Pt=(e,t,r,i)=>{let o=e.axes[r];if(i>1)return o?._size;let s=(o?.ticks?.size||0)+(o?.gap||0),a=(t??[]).reduce((n,l)=>l.length>n.length?l:n,"");return a!=""&&(e.ctx.font=o?.font?.[0]??e.ctx.font,s+=e.ctx.measureText(a).width/devicePixelRatio),Math.ceil(s)};function qe(e){return{gap:0,font:F,labelFont:F,grid:{show:!0,width:.5},ticks:{width:.5},values:(t,r)=>r.map(i=>{let o=e(i);return o.text+(o.suffix?.trim()||"")}),size:Pt}}function _e(e,t){let r=[],i=e[0],o=i.length,s=Array(o).fill(0),a=[i];return e.forEach((n,l)=>{l!==0&&(t?a.push(n):a.push(n.map((c,p)=>s[p]=s[p]+(c||0))))}),e.forEach((n,l)=>{l===0||t||r.push({series:[e.findIndex((c,p)=>p>l),l]})}),{data:a,bands:r.filter(n=>n.series[1]>-1)}}var Qe=require("react/jsx-runtime");function ie(e){let{times:t,series:r,metadata:i,type:o,className:s,timeZone:a,options:n,tooltipAppearance:l,colors:c,orderByValues:p}=e,u=(0,oe.useRef)(null),m=te(),d=j(),h=c||d.appearance.colors;return(0,oe.useEffect)(()=>{if(!r||r.length===0){console.warn("No series provided");return}let k=[t],w;r.forEach(x=>{let C=i[x.metric];w=Fe(w,C),k.push(x.values)});let f=o==="bar"||o==="area",g=_e(k,!f),b=u.current,T=He(b,w,r,o,f,m,h,a,l,p),y=null;if(b){T.bands=g.bands,y=new Ge.default({...T,...n},g.data,b);let x=new ResizeObserver(()=>{y?.setSize({width:b.clientWidth,height:b.clientHeight})});return x.observe(b),()=>{y?.destroy(),x.disconnect()}}},[r,t,o,m,i,a,l,h,p]),(0,Qe.jsx)("div",{ref:u,className:s})}var I=require("react/jsx-runtime");function $e({metrics:e,operator:t,attributes:r,groupBy:i,timeRange:o,startTime:s,endTime:a,interval:n,type:l="line",className:c,appearance:p}){let u=j(),m=o??u.timeRange,d=s??u.startTime,h=a??u.endTime,k=n??u.interval,w=r??u.attributes,f=i??u.groupBy,g=t??u.operator,b=p?.colors??u.appearance.colors,T=p?.orderByValues??u.appearance.orderByValues,{isLoading:y,data:x,hasError:C}=Z({queries:e.map(M=>({metrics:[M],operator:g,attributes:w,groupBy:f})),timeRange:m,startTime:d,endTime:h,interval:k}),{series:P,times:R,metadata:D}=x,O=P.every(M=>M.isEmpty),V=c||"h-full w-full";if(y){let M=p?.components?.Loading??u.appearance.components.Loading;return(0,I.jsx)("div",{className:V,children:(0,I.jsx)(M,{})})}if(O){let M=p?.components?.Empty??u.appearance.components.Empty;return(0,I.jsx)("div",{className:V,children:(0,I.jsx)(M,{})})}if(C){let M=p?.components?.Error??u.appearance.components.Error;return(0,I.jsx)("div",{className:V,children:(0,I.jsx)(M,{})})}return(0,I.jsx)(ie,{times:R,series:P,metadata:D,type:l,className:V,tooltipAppearance:p?.components?.Tooltip??u.appearance.components.Tooltip,colors:b,orderByValues:T})}0&&(module.exports={Chart,Divider,TimeseriesChart,UnblindClientProvider,UnblindProvider,UnblindScope,useLogs,useMetrics,useRefresh,useScope,useTheme,useTimeseries,useUnblindClientConfig,useUsage});
|
|
1
|
+
"use strict";var We=Object.create;var K=Object.defineProperty;var Ke=Object.getOwnPropertyDescriptor;var Ye=Object.getOwnPropertyNames;var Xe=Object.getPrototypeOf,Je=Object.prototype.hasOwnProperty;var Ze=(e,t)=>{for(var r in t)K(e,r,{get:t[r],enumerable:!0})},ge=(e,t,r,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Ye(t))!Je.call(e,o)&&o!==r&&K(e,o,{get:()=>t[o],enumerable:!(i=Ke(t,o))||i.enumerable});return e};var Y=(e,t,r)=>(r=e!=null?We(Xe(e)):{},ge(t||!e||!e.__esModule?K(r,"default",{value:e,enumerable:!0}):r,e)),et=e=>ge(K({},"__esModule",{value:!0}),e);var Ut={};Ze(Ut,{Chart:()=>ie,Divider:()=>re,TimeseriesChart:()=>$e,UnblindClientProvider:()=>X,UnblindProvider:()=>be,UnblindScope:()=>J,useLogs:()=>Se,useMetrics:()=>we,useRefresh:()=>se,useScope:()=>j,useTheme:()=>te,useTimeseries:()=>Z,useUnblindClientConfig:()=>S,useUsage:()=>Ce});module.exports=et(Ut);var B=require("@tanstack/react-query"),L=require("react"),ae=require("react/jsx-runtime"),he=(0,L.createContext)(void 0);function X({children:e,queryClient:t,queryClientConfig:r,apiBaseUrl:i="/api/unblind",fetchImpl:o}){let s=(0,L.useMemo)(()=>{if(t)return t;let n={refetchOnWindowFocus:!1,refetchOnReconnect:!1,refetchOnMount:!1},l={defaultOptions:{queries:n}};return r?new B.QueryClient({...r,defaultOptions:{...r.defaultOptions,queries:{...n,...r.defaultOptions?.queries}}}):new B.QueryClient(l)},[t,r]),a=(0,L.useMemo)(()=>({apiBaseUrl:i,fetchImpl:o}),[i,o]);return(0,ae.jsx)(B.QueryClientProvider,{client:s,children:(0,ae.jsx)(he.Provider,{value:a,children:e})})}function S(){let e=(0,L.useContext)(he);if(!e)throw new Error("useUnblindConfig must be used within an UnblindClientProvider. Please wrap your app or component tree with <UnblindClientProvider>.");return e}function se(){let e=(0,B.useQueryClient)();return(0,L.useCallback)(async()=>{await e.refetchQueries({queryKey:["unblind","timeseries"]})},[e])}var A=require("react"),E=require("react/jsx-runtime"),le=(0,A.createContext)(void 0);function J({children:e,timeRange:t,startTime:r,endTime:i,interval:o,attributes:s,groupBy:a,operator:n,appearance:l}){let c=(0,A.useContext)(le),p=l?.components?.Loading,u=l?.components?.Error,m=l?.components?.Tooltip,d=(0,A.useMemo)(()=>{if(!(!p&&!u&&!m))return{components:{...p&&{Loading:p},...u&&{Error:u},...m&&{Tooltip:m}}}},[p,u,m]),h=(0,A.useMemo)(()=>({timeRange:t??c?.timeRange,startTime:r??c?.startTime,endTime:i??c?.endTime,interval:o??c?.interval,attributes:s??c?.attributes,groupBy:a??c?.groupBy,operator:n??c?.operator,appearance:d??c?.appearance}),[t,r,i,o,s,a,n,d,c]);return(0,E.jsx)(le.Provider,{value:h,children:e})}var tt=()=>(0,E.jsx)("div",{className:"flex h-full items-center justify-center text-sm text-gray-500",children:"Loading data..."}),rt=({error:e})=>(0,E.jsx)("div",{className:"flex h-full items-center justify-center text-sm text-red-500",children:e?.message??"Something went wrong"}),ot=()=>(0,E.jsx)("div",{className:"flex h-full items-center justify-center",children:(0,E.jsxs)("div",{className:"text-center",children:[(0,E.jsx)("div",{className:"mx-auto flex h-10 w-10 items-center justify-center rounded-full bg-gray-100 dark:bg-zinc-800",children:(0,E.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor",className:"size-5 text-gray-400 dark:text-gray-500",children:(0,E.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"})})}),(0,E.jsx)("p",{className:"mt-2 text-sm text-gray-500 dark:text-gray-400",children:"No data available for this time range"})]})}),it=["#7c3aed","#eab308","#2563eb","#dc2626","#16a34a","#f97316","#0891b2","#9333ea","#ca8a04","#4f46e5","#0d9488","#be185d"],nt="6h";function j(){let e=(0,A.useContext)(le);return{timeRange:e?.timeRange||nt,startTime:e?.startTime,endTime:e?.endTime,interval:e?.interval,attributes:e?.attributes,groupBy:e?.groupBy,operator:e?.operator,appearance:{components:{Loading:e?.appearance?.components?.Loading??tt,Error:e?.appearance?.components?.Error??rt,Empty:e?.appearance?.components?.Empty??ot,Tooltip:e?.appearance?.components?.Tooltip},colors:e?.appearance?.colors||it}}}var ce=require("react/jsx-runtime");function be({children:e,queryClient:t,apiBaseUrl:r,fetchImpl:i,timeRange:o,startTime:s,endTime:a,interval:n,attributes:l,groupBy:c,operator:p,appearance:u}){return(0,ce.jsx)(X,{queryClient:t,apiBaseUrl:r,fetchImpl:i,children:(0,ce.jsx)(J,{timeRange:o,startTime:s,endTime:a,interval:n,attributes:l,groupBy:c,operator:p,appearance:u,children:e})})}var ye=require("@tanstack/react-query");function we(){let{apiBaseUrl:e,fetchImpl:t=fetch}=S(),r=(0,ye.useQuery)({queryKey:["unblind","metrics"],queryFn:async()=>{let i=await t(`${e}/metrics`,{headers:{"Content-Type":"application/json"}});if(!i.ok)throw new Error("Error loading metrics metadata");if(i.status===200){let{data:o}=await i.json();return o}else throw new Error("Unexpected status code")}});return{metrics:r.data,isLoading:r.isLoading,hasError:r.isError,refetch:r.refetch}}var ve=require("@tanstack/react-query"),q=require("react");var xe=Y(require("ms"));function at(e){let t=Date.now();return[t-(0,xe.default)(e),t]}function H(e,t,r){let i,o;if(typeof t=="number"&&typeof r=="number")i=t,o=r;else if(e){let[s,a]=at(e);i=s,o=a}else throw new Error("Either timeRange or both startTime and endTime must be provided");return[i,o]}function Z({queries:e,timeRange:t,startTime:r,endTime:i,interval:o}){let{apiBaseUrl:s,fetchImpl:a=fetch}=S(),n=(0,q.useMemo)(()=>e.map(b=>b.metrics.join(",")).join(","),[e]),l=(0,q.useMemo)(()=>e.map(b=>{let T=b.attributes;if(!T)return"";let y=Object.keys(T);return y.length===0?"":y.map(x=>x+":"+T[x]?.join(",")).join(",")}).join(","),[e]),c=(0,q.useMemo)(()=>e.map(b=>b.operator),[e]),p=(0,q.useMemo)(()=>e.map(b=>b.groupBy).join(", "),[e]),m=(0,ve.useQuery)({queryKey:["unblind","timeseries",n,l,r,i,t,o,c,p],queryFn:async()=>{if(!n)throw new Error("Missing required parameters");if(n.length===0)throw new Error("No series provided");let[b,T]=H(t,r,i),y={queries:e,startTime:b,endTime:T,interval:o},x=await a(`${s}/tenants/timeseries`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(y)});if(!x.ok)throw new Error("Error fetching metric");let{series:C,times:P,metadata:R}=await x.json();if(!C)throw console.error("Series not found"),new Error("Series not found");return{series:C,times:P,metadata:R}},enabled:!!n&&(typeof r=="number"&&typeof i=="number"||!!t)}),{metadata:d,series:h,times:k}=(0,q.useMemo)(()=>m.data?{series:m.data.series,times:m.data.times,metadata:m.data.metadata}:{series:[],times:[],metadata:{}},[m]),w=m.isLoading,f=m.isFetching,g=m.isError;return{data:{series:h,times:k,metadata:d},isLoading:w,isFetching:f,hasError:g,refetch:m.refetch}}var ke=require("@tanstack/react-query"),Te=require("react");function Ce({timeRange:e,startTime:t,endTime:r}){let{apiBaseUrl:i,fetchImpl:o=fetch}=S(),a=(0,ke.useQuery)({queryKey:["unblind","usage",e,t,r],queryFn:async()=>{let[p,u]=H(e,t,r),m=`${i}/tenants/usage`,d=await o(m,{headers:{"Content-Type":"application/json"},body:JSON.stringify({startTime:p,endTime:u})});if(!d.ok)throw new Error("Error fetching usage");let{data:h}=await d.json();if(!h)throw new Error("usage not found");return h},enabled:typeof t=="number"&&typeof r=="number"||!!e}),n=(0,Te.useMemo)(()=>a.data?a.data||[]:[],[a]),l=a.isLoading||a.isRefetching,c=a.isError;return{usage:n,isLoading:l,hasError:c,refetch:a.refetch}}var Pe=require("@tanstack/react-query"),Ue=require("react");function Se({timeRange:e,filters:t,startTime:r,endTime:i}){let{apiBaseUrl:o,fetchImpl:s=fetch}=S(),a=typeof r=="number"&&typeof i=="number"||!!e,n=(0,Pe.useInfiniteQuery)({queryKey:["unblind","logs",e,t.map(c=>c.name+":"+c.value).sort().join(",")],queryFn:async({pageParam:c})=>{let p=t.reduce((C,P)=>(C[P.name]||(C[P.name]=[]),C[P.name].push(P.value),C),{}),{body:u=[],severity:m=[],"service.name":d=[],"trace.id":h=[],"span.id":k=[],...w}=p,[f,g]=H(e,r,i),b=Date.now(),T=await s(`${o}/tenants/logs`,{method:"POST",body:JSON.stringify({filter:{attributes:w,body:u,severity:m,traceId:h,spanId:k,service:d},startTime:f,endTime:g,pagination:{page:c}}),headers:{"Content-Type":"application/json"}});if(!T.ok)throw new Error("Error fetching logs");let{data:y,next_page:x}=await T.json();if(!y)throw new Error("logs not found");return{data:y,next_page:x}},enabled:a,initialPageParam:void 0,getNextPageParam:c=>c.next_page});return{logs:(0,Ue.useMemo)(()=>n.data?n.data.pages.flatMap(c=>c.data||[]):[],[n.data]),isLoading:n.isLoading,hasError:n.isError,hasNextPage:n.hasNextPage??!1,fetchNextPage:n.fetchNextPage,isFetchingNextPage:n.isFetchingNextPage,refetch:n.refetch}}var ee=require("react");function te(){let[e,t]=(0,ee.useState)(!1);return(0,ee.useEffect)(()=>{let r=()=>t(document.documentElement.classList.contains("dark"));return r(),window.addEventListener("storage",r),window.addEventListener("theme-change",r),()=>{window.removeEventListener("storage",r),window.removeEventListener("theme-change",r)}},[]),e}var oe=require("react"),Ge=Y(require("uplot"));var W=Y(require("uplot")),je=require("@grafana/data");var N=require("@grafana/data");var U={millisecond:1,second:1e3,minute:6e4,hour:36e5,day:864e5,month:24192e5,year:31536e6},_={second:[1,2,5,10,15,30],minute:[1,2,5,10,15,30],hour:[1,2,3,4,6,8,12],day:[1,2,3,7,14],month:[1,2,3,6],year:[1,2,5,10,20,50,100]};function st(e,t,r,i){if(t>U.day){let o=N.systemDateFormats.interval.year,s=Math.round(U.year/U.day)*U.day;return Math.round(t/U.day)*U.day===s?o=N.systemDateFormats.interval.year:t<=U.year?o=N.systemDateFormats.interval.month:o=N.systemDateFormats.interval.day,e.map(n=>(0,N.dateTimeFormat)(n,{format:o,timeZone:i}))}return e.map(o=>{let s=new Date(o),a=t<U.minute,n=t<U.second,l=s.toLocaleTimeString("en-GB",{hour:"2-digit",minute:"2-digit",hour12:!1,timeZone:i});return(l==="00:00"||l==="24:00")&&!a&&!n?s.toLocaleDateString(void 0,{day:"2-digit",month:"short",timeZone:i}):s.toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit",second:a?"2-digit":void 0,fractionalSecondDigits:n?3:void 0,hour12:!1,timeZone:i})})}function Me(e){let t=[{size:U.second/1e3,increments:_.second},{size:U.minute/1e3,increments:_.minute},{size:U.hour/1e3,increments:_.hour},{size:U.day/1e3,increments:_.day},{size:U.month/1e3,increments:_.month},{size:U.year/1e3,increments:_.year}];for(let o of t)for(let s of o.increments){let a=o.size*s;if(a>=e)return{increment:a*1e3,multiplier:s}}let r=t[t.length-1],i=r.increments[r.increments.length-1];return{increment:r.size*i*1e3,multiplier:i}}function Ee(e,t,r){return[t,r]}function lt(e,t,r,i){let o=r-t,s=e.width,a=Math.floor(s/100),n=o/a,{increment:l,multiplier:c}=Me(n),p=l/1e3,u=[];if(o<12*3600){let d=Math.ceil(t/p)*p;for(;d<=r;d+=p)u.push(d);return u}if(o<3*86400){if(l>=6*3600*1e3){let h=l/1e3/3600,k=new Date(t*1e3);if(i==="UTC"){let f=k.getUTCHours(),g=Math.floor(f/h)*h;k.setUTCHours(g,0,0,0)}else{let f=k.getHours(),g=Math.floor(f/h)*h;k.setHours(g,0,0,0)}let w=k.getTime()/1e3;for(w<t&&(w+=p);w<=r;)u.push(w),w+=p;return u}let d=Math.ceil(t/p)*p;for(;d<=r;d+=p)u.push(d);return u}if(l>=U.day){let d=new Date(t*1e3);i==="UTC"?(d.setUTCHours(0,0,0,0),d.getTime()/1e3<t&&d.setUTCDate(d.getUTCDate()+c)):(d.setHours(0,0,0,0),d.getTime()/1e3<t&&d.setDate(d.getDate()+c));let h=d.getTime()/1e3;for(;h<=r;)u.push(h),i==="UTC"?d.setUTCDate(d.getUTCDate()+c):d.setDate(d.getDate()+c),h=d.getTime()/1e3;return u}let m=Math.ceil(t/p)*p;for(;m<=r;m+=p)u.push(m);return u}function Re(e,t,r){return t.length===0?[]:t.map((i,o)=>o===0||o===t.length-1?(0,N.dateTimeFormatTimeAgo)(i*1e3,{timeZone:r}):"")}function ct(e,t,r){let i=e.scales.x,o=((i?.max??0)-(i?.min??0))*1e3,s=Math.floor(e.width/100),a=o/1e3/s,{increment:n}=Me(a),l=t.map(c=>c*1e3);return st(l,n,o,r)}function Le(e,t=!1){let r=t?(s,a,n,l)=>Ee(s,n,l):(s,a,n,l)=>lt(s,n,l,e),i=t?(s,a)=>Re(s,a,e):(s,a)=>ct(s,a,e),o=t?(s,a,n,l,c)=>{let u=document.createElement("canvas").getContext("2d");if(!u)return 0;u.font=F;let m=Re(s,Ee(s,n,l),e),d=Math.max(u.measureText(m[0]||"").width,u.measureText(m[1]||"").width);return Math.ceil(d/2)+15}:void 0;return{font:F,labelFont:F,grid:{show:!1,width:.5},ticks:{width:.5},splits:r,values:i,size:20}}var Q=require("@floating-ui/dom"),Ve=Y(require("uplot"));var Ne=require("react-dom/client"),pe=class{overlay=null;reactRoot=null;initialize(){this.overlay||(this.overlay=document.createElement("div"),this.overlay.id="unblind-tooltip-overlay",this.overlay.style.display="none",this.overlay.style.position="fixed",this.overlay.style.pointerEvents="none",this.overlay.style.zIndex="9999",document.body.appendChild(this.overlay),this.reactRoot=(0,Ne.createRoot)(this.overlay))}getOverlay(){return this.overlay}render(t){this.reactRoot&&this.reactRoot.render(t)}show(){this.overlay&&(this.overlay.style.display="block")}hide(){this.overlay&&(this.overlay.style.display="none"),this.render(null)}destroy(){this.reactRoot&&(this.reactRoot.unmount(),this.reactRoot=null),this.overlay&&(this.overlay.remove(),this.overlay=null)}},G=new pe;var de=require("@grafana/data"),Ie=require("react");var ze=require("react/jsx-runtime");function re({className:e="h-px bg-gray-200 border-gray-200 dark:bg-white/15",...t}){return(0,ze.jsx)("hr",{role:"presentation",...t,className:e})}var v=require("react/jsx-runtime");function pt(e){return typeof e.metric=="string"?e.metric:e.metric?.textContent||"Unknown Metric"}function Ae(e){let t=e.attributes||{};if(t["service.name"])return String(t["service.name"]);let i=Object.keys(t)[0];return i?String(t[i]):"z-fallback"}function De(e){return[...e].sort((t,r)=>(Number(r.value)||0)-(Number(t.value)||0))}function dt(e){return[...e].sort((t,r)=>Ae(t).localeCompare(Ae(r)))}function ut(e){let t={};return e.forEach(r=>{let i=pt(r);t[i]||(t[i]=[]),t[i].push(r)}),t}function mt(e,t){let r=ut(e);return Object.keys(r).sort((o,s)=>o.localeCompare(s)).map(o=>{let s=r[o];if(!s)return{metricName:o,items:[]};let a=t?De(s):dt(s);return{metricName:o,items:a}})}function ft({item:e,groupIdx:t,idx:r}){let i=e.attributes||{},o=Object.entries(i),s=typeof e.metric=="string"?e.metric:e.metric?.textContent||"Unknown",a=o,n=o.find(([l])=>l==="service.name");return n?(s=String(n[1]),a=o.filter(([l])=>l!=="service.name")):o.length>0&&o[0]&&(s=`${o[0][0]}: ${o[0][1]}`,a=o.slice(1)),(0,v.jsxs)("div",{className:"group flex flex-col px-3 py-1 hover:bg-slate-50 dark:hover:bg-white/5 transition-colors",children:[(0,v.jsxs)("div",{className:"flex items-center justify-between gap-4",children:[(0,v.jsxs)("div",{className:"flex items-center gap-2.5 min-w-0 overflow-hidden",children:[(0,v.jsx)("span",{className:"size-2 mt-0.5 shrink-0 rounded-full shadow-sm ring-1 ring-black/5 dark:ring-white/10",style:{backgroundColor:e.color}}),(0,v.jsx)("span",{className:"truncate font-medium text-slate-600 dark:text-slate-300",title:s,children:s})]}),(0,v.jsx)("div",{className:"font-semibold tabular-nums text-slate-900 dark:text-white whitespace-nowrap",children:e.formattedValue??(0,v.jsx)("span",{className:"font-normal text-slate-400",children:"\u2014"})})]}),a.length>0&&(0,v.jsx)("div",{className:"mt-0.5 flex flex-wrap gap-x-3 gap-y-0.5 pl-4.5 text-xs text-slate-500 dark:text-slate-400",children:a.map(([l,c])=>(0,v.jsxs)("span",{className:"flex items-center gap-1",children:[(0,v.jsxs)("span",{className:"opacity-70",children:[l,":"]}),(0,v.jsx)("span",{className:"font-medium text-slate-600 dark:text-slate-300",children:String(c)})]},l))})]},`item-${t}-${r}`)}function gt({group:e,groupIdx:t,hasAttributes:r}){return(0,v.jsxs)("div",{className:"flex flex-col",children:[r&&(0,v.jsx)("div",{className:`sticky top-0 z-10 bg-white/95 dark:bg-zinc-900/95 backdrop-blur-sm px-3 py-1.5 font-semibold text-slate-900 dark:text-white ${t>0?"mt-2 border-t border-gray-100 dark:border-white/5 pt-3":""}`,children:e.metricName}),(0,v.jsx)("div",{className:"flex flex-col gap-1",children:e.items.map((i,o)=>(0,v.jsx)(ft,{item:i,groupIdx:t,idx:o},`item-${t}-${o}`))})]},e.metricName)}function Oe({timestamp:e,items:t,timeZone:r,spansMultipleDays:i,orderByValues:o,hasAttributes:s}){let a=i?(0,de.dateTimeFormat)(e*1e3,{format:"MMM DD, HH:mm:ss",timeZone:r}):(0,de.dateTimeFormat)(e*1e3,{format:"HH:mm:ss",timeZone:r}),n=(0,Ie.useMemo)(()=>{let l=mt(t,o);if(!s&&o&&l.length>0){let c=l.flatMap(m=>m.items),p=De(c);return[{metricName:l[0]?.metricName||"Metrics",items:p}]}return l},[t,o,s]);return(0,v.jsxs)("div",{style:{fontSize:"13px"},className:"flex w-[320px] flex-col gap-1 text-sm rounded-lg text-slate-900 dark:text-slate-200 border border-gray-200/80 bg-white shadow-xl ring-1 ring-gray-200/40 dark:ring-zinc-800/40 dark:border-white/10 dark:bg-zinc-900",children:[(0,v.jsx)("div",{className:"flex items-center justify-between px-3 pt-2.5 font-medium text-slate-700 dark:text-slate-100",children:a}),(0,v.jsx)(re,{className:"my-1 border-gray-100 dark:border-white/5"}),n.length>0?(0,v.jsx)("div",{className:"flex flex-col pb-2",children:n.map((l,c)=>(0,v.jsx)(gt,{group:l,groupIdx:c,hasAttributes:s},l.metricName))}):(0,v.jsx)("div",{className:"px-3 pb-3 italic text-zinc-400 text-xs",children:"No data available"})]})}var ue=require("react/jsx-runtime"),ht=4,bt=8;function yt(e,t){if(!e||e.length===0)return!1;let r=e[0],i=e[e.length-1];if(r==null||i==null)return!1;let o=new Date(r*1e3),s=new Date(i*1e3),a=n=>t==="UTC"?`${n.getUTCFullYear()}-${n.getUTCMonth()}-${n.getUTCDate()}`:n.toLocaleDateString(void 0,{timeZone:t});return a(o)!==a(s)}function wt(e,t){let r=!1;for(let o=1;o<e.series.length;o++)if(e.data[o]?.[t]!=null){r=!0;break}if(r)return t;let i=e.data[0].length;for(let o=1;t+o<i||t-o>=0;o++){let s=t-o,a=t+o;if(s>=0){for(let n=1;n<e.series.length;n++)if(e.data[n]?.[s]!=null)return s}if(a<i){for(let n=1;n<e.series.length;n++)if(e.data[n]?.[a]!=null)return a}}return t}function xt(e,t,r,i,o){let s=!1,a=[];for(let n=1;n<e.series.length;n++){let l=e.data[n]?.[t]??null;if(i&&l!=null&&n>1){let k=e.data[n-1]?.[t]??0;l=l-k}let c=e.series[n],p=o?.[n-1],u=c?.label??`Series ${n}`,m=c?.stroke,d=typeof m=="function"?m(Ve.default,n):m??"#ffffff00",h=l==null?void 0:r?r(l):String(l);p?.attributes&&Object.keys(p?.attributes).length>0&&(s=!0),a.push({metric:u,color:d,value:l===null?void 0:l,formattedValue:h,attributes:p?.attributes})}return{items:a,hasAttributes:s}}async function vt(e,t){let{x:r,y:i}=await(0,Q.computePosition)({getBoundingClientRect:()=>({x:t.left,y:t.top,width:0,height:0,top:t.top,left:t.left,right:t.left,bottom:t.top})},e,{placement:"top-start",strategy:"fixed",middleware:[(0,Q.offset)({mainAxis:ht,crossAxis:bt}),(0,Q.flip)()]});e.style.left=`${r}px`,e.style.top=`${i}px`}function Be(e,t,r,i,o,s){let a,n,l,c=!1;function p(){let d=a.getBoundingClientRect();n=d.left,l=d.top}function u(){G.hide()}function m(){G.show()}return{hooks:{init:d=>{G.initialize(),a=d.over,window.addEventListener("scroll",p,!0),window.addEventListener("resize",p),a.onmouseenter=()=>{c=!0,m()},a.onmouseleave=()=>{c=!1,u()},p()},setSize:()=>{p()},setCursor:d=>{let{left:h,top:k,idx:w}=d.cursor;if(!c||w==null){u();return}let g=d.data[0],b=yt(g,r),T=wt(d,w),y=d.data[0][T];if(y===void 0)return;let{items:x,hasAttributes:C}=xt(d,T,e,t,o),P={left:(h||0)+n,top:(k||0)+l};m();let R=i,D=R?(0,ue.jsx)(R,{timestamp:y,items:x,timeZone:r}):(0,ue.jsx)(Oe,{timestamp:y,items:x,timeZone:r,spansMultipleDays:b,stacked:t,hasAttributes:C,orderByValues:s});G.render(D);let O=G.getOverlay();O&&vt(O,P)},destroy(){window.removeEventListener("scroll",p,!0),window.removeEventListener("resize",p)}}}}var F='11px "Inter", sans-serif';var Fe=(e,t)=>{let r=e;return t&&t.unit&&t.unit.code&&t.unit.code!=="1"&&(!r&&t.unit?r=t.unit.code:r&&t.unit.code!==r&&(r=void 0)),r},me=(e,t,r)=>Array.isArray(r)?r[t]:r(e,t),kt=e=>{let t=W.default.paths.bars({size:[.6,100],radius:0,gap:0}),r=W.default.paths.linear({alignGaps:0}),i=W.default.paths.spline({alignGaps:1}),o=W.default.paths.stepped({alignGaps:1});switch(e){case"line":return r;case"bar":return t;case"area":return r;case"step":return o;case"spline":return i;default:return r}},Tt=(e,t,r,i)=>{switch(i){case"area":return me(e,t,r);case"bar":return me(e,t,r);default:return}},Ct=e=>{switch(e){case"bar":return 1;case"line":return 2;case"area":return 2;case"step":return 1.5;default:return 1}},He=(e,t,r,i,o,s,a,n,l,c,p)=>{let u=e?.clientWidth??1050,m=e?.clientHeight??250,d=typeof t=="string"?String(t).toLowerCase().replaceAll("by","bytes"):t,h=(0,je.getValueFormat)(d==="1"?null:d),k=Ct(i),w={width:u,height:m,scales:{y:{range:{min:{mode:1,soft:0},max:{pad:2}}}},plugins:[Be(f=>{let g=h(f,2);return g.text+(g.suffix?.trim()||"")},o,n,l,r,p)],padding:c?[10,15,10,15]:[8,15,8,15],cursor:{y:!1,sync:{key:"_"},drag:{setScale:!0,x:!0,y:!1},move:(f,g,b)=>{let T=f.posToVal(g,"x"),y=f.data[0];if(!y||y.length===0)return[g,b];let x=0,C=0,P=y.length-1;for(;P-C>1;){let z=Math.floor((C+P)/2),$=y[z];$!=null&&$<T?C=z:P=z}let R=y[C],D=y[P];R!=null&&D!=null?x=Math.abs(R-T)<Math.abs(D-T)?C:P:R!=null?x=C:D!=null&&(x=P);let O=x;for(let z=x;z>=0;z--){let $=!1;for(let ne=1;ne<f.data.length;ne++){let fe=f.data[ne];if(fe&&fe[z]!=null){$=!0;break}}if($){O=z;break}}let V=y[O];return V==null?[g,b]:[f.valToPos(V,"x"),b]}},series:[{},...r.map((f,g)=>({label:f.metric,stroke:me(f,g,a),width:k,points:{show:!1},spanGaps:!0,paths:kt(i),fill:Tt(f,g,a,i)}))],axes:[Le(n,c),qe(h)],legend:{show:!1}};if(s){let f=w.axes?.[0],g=w.axes?.[1];f&&(f.stroke="#dadada",f.grid&&(f.grid.stroke="#2c3235")),g&&(g.stroke="#dadada",g.grid&&(g.grid.stroke="#2c3235"))}else{let f=w.axes?.[0],g=w.axes?.[1];f&&(f.stroke="#45556c"),g&&(g.stroke="#45556c")}return w};var Pt=(e,t,r,i)=>{let o=e.axes[r];if(i>1)return o?._size;let s=(o?.ticks?.size||0)+(o?.gap||0),a=(t??[]).reduce((n,l)=>l.length>n.length?l:n,"");return a!=""&&(e.ctx.font=o?.font?.[0]??e.ctx.font,s+=e.ctx.measureText(a).width/devicePixelRatio),Math.ceil(s)};function qe(e){return{gap:0,font:F,labelFont:F,grid:{show:!0,width:.5},ticks:{width:.5},values:(t,r)=>r.map(i=>{let o=e(i);return o.text+(o.suffix?.trim()||"")}),size:Pt}}function _e(e,t){let r=[],i=e[0],o=i.length,s=Array(o).fill(0),a=[i];return e.forEach((n,l)=>{l!==0&&(t?a.push(n):a.push(n.map((c,p)=>s[p]=s[p]+(c||0))))}),e.forEach((n,l)=>{l===0||t||r.push({series:[e.findIndex((c,p)=>p>l),l]})}),{data:a,bands:r.filter(n=>n.series[1]>-1)}}var Qe=require("react/jsx-runtime");function ie(e){let{times:t,series:r,metadata:i,type:o,className:s,timeZone:a,options:n,tooltipAppearance:l,colors:c,orderByValues:p}=e,u=(0,oe.useRef)(null),m=te(),d=j(),h=c||d.appearance.colors;return(0,oe.useEffect)(()=>{if(!r||r.length===0){console.warn("No series provided");return}let k=[t],w;r.forEach(x=>{let C=i[x.metric];w=Fe(w,C),k.push(x.values)});let f=o==="bar"||o==="area",g=_e(k,!f),b=u.current,T=He(b,w,r,o,f,m,h,a,l,p),y=null;if(b){T.bands=g.bands,y=new Ge.default({...T,...n},g.data,b);let x=new ResizeObserver(()=>{y?.setSize({width:b.clientWidth,height:b.clientHeight})});return x.observe(b),()=>{y?.destroy(),x.disconnect()}}},[r,t,o,m,i,a,l,h,p]),(0,Qe.jsx)("div",{ref:u,className:s})}var I=require("react/jsx-runtime");function $e({metrics:e,operator:t,attributes:r,groupBy:i,timeRange:o,startTime:s,endTime:a,interval:n,type:l="line",className:c,appearance:p}){let u=j(),m=o??u.timeRange,d=s??u.startTime,h=a??u.endTime,k=n??u.interval,w=r??u.attributes,f=i??u.groupBy,g=t??u.operator,b=p?.colors??u.appearance.colors,T=p?.orderByValues??u.appearance.orderByValues,{isLoading:y,data:x,hasError:C}=Z({queries:e.map(M=>({metrics:[M],operator:g,attributes:w,groupBy:f})),timeRange:m,startTime:d,endTime:h,interval:k}),{series:P,times:R,metadata:D}=x,O=P.every(M=>M.isEmpty),V=c||"h-full w-full";if(y){let M=p?.components?.Loading??u.appearance.components.Loading;return(0,I.jsx)("div",{className:V,children:(0,I.jsx)(M,{})})}if(O){let M=p?.components?.Empty??u.appearance.components.Empty;return(0,I.jsx)("div",{className:V,children:(0,I.jsx)(M,{})})}if(C){let M=p?.components?.Error??u.appearance.components.Error;return(0,I.jsx)("div",{className:V,children:(0,I.jsx)(M,{})})}return(0,I.jsx)(ie,{times:R,series:P,metadata:D,type:l,className:V,tooltipAppearance:p?.components?.Tooltip??u.appearance.components.Tooltip,colors:b,orderByValues:T})}0&&(module.exports={Chart,Divider,TimeseriesChart,UnblindClientProvider,UnblindProvider,UnblindScope,useLogs,useMetrics,useRefresh,useScope,useTheme,useTimeseries,useUnblindClientConfig,useUsage});
|
|
2
2
|
//# sourceMappingURL=index.js.map
|