@oas-tools/oas-telemetry 0.7.1 → 0.8.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/.env.example +21 -2
  2. package/README.md +1 -2
  3. package/dist/cjs/config/bootConfig.cjs +19 -14
  4. package/dist/cjs/config/config.cjs +112 -125
  5. package/dist/cjs/config/config.types.cjs +1 -4
  6. package/dist/cjs/docs/openapi.yaml +158 -4
  7. package/dist/cjs/index.cjs +27 -30
  8. package/dist/cjs/routesManager.cjs +62 -70
  9. package/dist/cjs/telemetry/custom-implementations/exporters/InMemoryDbLogExporter.cjs +202 -190
  10. package/dist/cjs/telemetry/custom-implementations/exporters/InMemoryDbMetricExporter.cjs +204 -99
  11. package/dist/cjs/telemetry/custom-implementations/exporters/InMemoryDbSpanExporter.cjs +152 -116
  12. package/dist/cjs/telemetry/custom-implementations/instrumentations/logsInstrumentation.cjs +92 -0
  13. package/dist/cjs/telemetry/custom-implementations/metrics/tsdb/Chunk.cjs +159 -0
  14. package/dist/cjs/telemetry/custom-implementations/metrics/tsdb/Series.cjs +168 -0
  15. package/dist/cjs/telemetry/custom-implementations/metrics/tsdb/SeriesRegistry.cjs +389 -0
  16. package/dist/cjs/telemetry/custom-implementations/metrics/tsdb/types.cjs +2 -0
  17. package/dist/cjs/telemetry/custom-implementations/metrics/tsdb/utils.cjs +77 -0
  18. package/dist/cjs/telemetry/custom-implementations/processors/dynamicMultiLogProcessor.cjs +65 -63
  19. package/dist/cjs/telemetry/custom-implementations/processors/dynamicMultiSpanProcessor.cjs +63 -62
  20. package/dist/cjs/telemetry/custom-implementations/utils/circular.cjs +47 -47
  21. package/dist/cjs/telemetry/custom-implementations/utils/storagePath.cjs +39 -0
  22. package/dist/cjs/telemetry/custom-implementations/wrappers.cjs +141 -138
  23. package/dist/cjs/telemetry/initializeTelemetry.cjs +35 -91
  24. package/dist/cjs/telemetry/telemetryConfigurator.cjs +70 -72
  25. package/dist/cjs/telemetry/telemetryRegistry.cjs +45 -31
  26. package/dist/cjs/tlm-ai/agent.cjs +49 -64
  27. package/dist/cjs/tlm-ai/aiController.cjs +54 -76
  28. package/dist/cjs/tlm-ai/aiRoutes.cjs +17 -20
  29. package/dist/cjs/tlm-ai/aiService.cjs +91 -95
  30. package/dist/cjs/tlm-ai/tools.cjs +177 -174
  31. package/dist/cjs/tlm-auth/authController.cjs +80 -123
  32. package/dist/cjs/tlm-auth/authMiddleware.cjs +25 -30
  33. package/dist/cjs/tlm-auth/authRoutes.cjs +11 -14
  34. package/dist/cjs/tlm-log/logController.cjs +171 -116
  35. package/dist/cjs/tlm-log/logRoutes.cjs +20 -20
  36. package/dist/cjs/tlm-metric/metricsController.cjs +211 -121
  37. package/dist/cjs/tlm-metric/metricsRoutes.cjs +23 -20
  38. package/dist/cjs/tlm-plugin/pluginController.cjs +128 -140
  39. package/dist/cjs/tlm-plugin/pluginProcess.cjs +89 -94
  40. package/dist/cjs/tlm-plugin/pluginRoutes.cjs +11 -14
  41. package/dist/cjs/tlm-plugin/pluginService.cjs +73 -74
  42. package/dist/cjs/tlm-trace/traceController.cjs +169 -117
  43. package/dist/cjs/tlm-trace/traceRoutes.cjs +20 -20
  44. package/dist/cjs/tlm-ui/uiRoutes.cjs +63 -32
  45. package/dist/cjs/tlm-util/utilController.cjs +68 -70
  46. package/dist/cjs/tlm-util/utilRoutes.cjs +51 -63
  47. package/dist/cjs/types/index.cjs +2 -5
  48. package/dist/cjs/utils/logger.cjs +38 -43
  49. package/dist/cjs/utils/regexUtils.cjs +22 -22
  50. package/dist/esm/config/bootConfig.js +6 -0
  51. package/dist/esm/config/config.js +1 -2
  52. package/dist/esm/docs/openapi.yaml +158 -4
  53. package/dist/esm/index.js +9 -8
  54. package/dist/esm/routesManager.js +6 -10
  55. package/dist/esm/telemetry/custom-implementations/exporters/InMemoryDbLogExporter.js +47 -8
  56. package/dist/esm/telemetry/custom-implementations/exporters/InMemoryDbMetricExporter.js +164 -48
  57. package/dist/esm/telemetry/custom-implementations/exporters/InMemoryDbSpanExporter.js +69 -29
  58. package/dist/esm/telemetry/custom-implementations/instrumentations/logsInstrumentation.js +85 -0
  59. package/dist/esm/telemetry/custom-implementations/metrics/tsdb/Chunk.js +155 -0
  60. package/dist/esm/telemetry/custom-implementations/metrics/tsdb/Series.js +164 -0
  61. package/dist/esm/telemetry/custom-implementations/metrics/tsdb/SeriesRegistry.js +382 -0
  62. package/dist/esm/telemetry/custom-implementations/metrics/tsdb/types.js +1 -0
  63. package/dist/esm/telemetry/custom-implementations/metrics/tsdb/utils.js +74 -0
  64. package/dist/esm/telemetry/custom-implementations/processors/dynamicMultiLogProcessor.js +2 -1
  65. package/dist/esm/telemetry/custom-implementations/processors/dynamicMultiSpanProcessor.js +1 -1
  66. package/dist/esm/telemetry/custom-implementations/utils/storagePath.js +33 -0
  67. package/dist/esm/telemetry/custom-implementations/wrappers.js +5 -2
  68. package/dist/esm/telemetry/initializeTelemetry.js +27 -69
  69. package/dist/esm/telemetry/telemetryConfigurator.js +42 -40
  70. package/dist/esm/telemetry/telemetryRegistry.js +12 -1
  71. package/dist/esm/tlm-ai/agent.js +5 -3
  72. package/dist/esm/tlm-ai/aiController.js +3 -3
  73. package/dist/esm/tlm-ai/aiService.js +6 -2
  74. package/dist/esm/tlm-ai/tools.js +5 -9
  75. package/dist/esm/tlm-auth/authController.js +3 -2
  76. package/dist/esm/tlm-log/logController.js +84 -4
  77. package/dist/esm/tlm-log/logRoutes.js +5 -2
  78. package/dist/esm/tlm-metric/metricsController.js +172 -49
  79. package/dist/esm/tlm-metric/metricsRoutes.js +10 -4
  80. package/dist/esm/tlm-plugin/pluginController.js +6 -11
  81. package/dist/esm/tlm-plugin/pluginService.js +2 -4
  82. package/dist/esm/tlm-trace/traceController.js +102 -16
  83. package/dist/esm/tlm-trace/traceRoutes.js +5 -2
  84. package/dist/esm/tlm-ui/uiRoutes.js +5 -5
  85. package/dist/esm/tlm-util/utilController.js +3 -9
  86. package/dist/esm/tlm-util/utilRoutes.js +2 -2
  87. package/dist/types/config/bootConfig.d.ts +4 -0
  88. package/dist/types/config/config.d.ts +36 -7
  89. package/dist/types/config/config.types.d.ts +6 -0
  90. package/dist/types/index.d.ts +2 -3
  91. package/dist/types/telemetry/custom-implementations/exporters/InMemoryDbLogExporter.d.ts +4 -1
  92. package/dist/types/telemetry/custom-implementations/exporters/InMemoryDbMetricExporter.d.ts +60 -15
  93. package/dist/types/telemetry/custom-implementations/exporters/InMemoryDbSpanExporter.d.ts +9 -4
  94. package/dist/types/telemetry/custom-implementations/instrumentations/logsInstrumentation.d.ts +23 -0
  95. package/dist/types/telemetry/custom-implementations/metrics/tsdb/Chunk.d.ts +49 -0
  96. package/dist/types/telemetry/custom-implementations/metrics/tsdb/Series.d.ts +67 -0
  97. package/dist/types/telemetry/custom-implementations/metrics/tsdb/SeriesRegistry.d.ts +69 -0
  98. package/dist/types/telemetry/custom-implementations/metrics/tsdb/types.d.ts +68 -0
  99. package/dist/types/telemetry/custom-implementations/metrics/tsdb/utils.d.ts +21 -0
  100. package/dist/types/telemetry/custom-implementations/processors/dynamicMultiLogProcessor.d.ts +2 -2
  101. package/dist/types/telemetry/custom-implementations/utils/storagePath.d.ts +12 -0
  102. package/dist/types/telemetry/custom-implementations/wrappers.d.ts +1 -1
  103. package/dist/types/telemetry/telemetryConfigurator.d.ts +1 -1
  104. package/dist/types/telemetry/telemetryRegistry.d.ts +8 -0
  105. package/dist/types/tlm-ai/agent.d.ts +1 -1
  106. package/dist/types/tlm-ai/aiService.d.ts +1 -1
  107. package/dist/types/tlm-log/logController.d.ts +2 -0
  108. package/dist/types/tlm-metric/metricsController.d.ts +16 -2
  109. package/dist/types/tlm-trace/traceController.d.ts +3 -1
  110. package/dist/types/types/index.d.ts +2 -2
  111. package/dist/ui/assets/{ApiDocsPage-C_VVPPHa.js → ApiDocsPage-BFUrXE5F.js} +2 -2
  112. package/dist/ui/assets/CollapsibleCard-STA1GVQO.js +1 -0
  113. package/dist/ui/assets/DevToolsPage-BRSfZqO_.js +1 -0
  114. package/dist/ui/assets/LandingPage-DzeDy7q7.js +6 -0
  115. package/dist/ui/assets/LogsPage-BeiFrV2X.js +1 -0
  116. package/dist/ui/assets/{NotFoundPage-B3quk3P1.js → NotFoundPage-fRNOatbM.js} +1 -1
  117. package/dist/ui/assets/PluginCreatePage-Ch_RXsdf.js +50 -0
  118. package/dist/ui/assets/PluginPage-Cl65ZZ_n.js +27 -0
  119. package/dist/ui/assets/TraceSpansPage-BoK4M5Hh.js +6 -0
  120. package/dist/ui/assets/VirtualizedListPanel-zcj0v7DL.js +16 -0
  121. package/dist/ui/assets/alert-BkNVKxJN.js +1133 -0
  122. package/dist/ui/assets/badge-CN7FeufU.js +1 -0
  123. package/dist/ui/assets/{chevron-down-CPsvsmqj.js → chevron-down-CG--ounh.js} +1 -1
  124. package/dist/ui/assets/{chevron-up-Df9jMo1X.js → chevron-up-B6tzMAOm.js} +1 -1
  125. package/dist/ui/assets/{circle-alert-DOPQPvU8.js → circle-alert-BDF8Tq9y.js} +1 -1
  126. package/dist/ui/assets/dialog-BrpWNk36.js +15 -0
  127. package/dist/ui/assets/index-6xOVKwKn.js +305 -0
  128. package/dist/ui/assets/index-D6f1KjWV.css +1 -0
  129. package/dist/ui/assets/index-D96rVSkR.js +1 -0
  130. package/dist/ui/assets/info-99kuqpbx.js +6 -0
  131. package/dist/ui/assets/{input-Dzvg_ZEZ.js → input-B-01QDg_.js} +1 -1
  132. package/dist/ui/assets/label-CQLeZjM1.js +1 -0
  133. package/dist/ui/assets/{loader-circle-CrvlRy5o.js → loader-circle-BoDGk-BO.js} +1 -1
  134. package/dist/ui/assets/{loginPage-qa4V-B70.js → loginPage-8F4EEd1B.js} +1 -1
  135. package/dist/ui/assets/metrics-page-D1GxaB_c.css +1 -0
  136. package/dist/ui/assets/metrics-page-DPtteXqY.js +31 -0
  137. package/dist/ui/assets/popover-DS_8DYYt.js +11 -0
  138. package/dist/ui/assets/select-DYjegiXi.js +6 -0
  139. package/dist/ui/assets/separator-DGsRxIrl.js +6 -0
  140. package/dist/ui/assets/severityOptions-DEOvJqC9.js +11 -0
  141. package/dist/ui/assets/square-pen-DPhgYz6O.js +6 -0
  142. package/dist/ui/assets/switch-Di9NJH2A.js +1 -0
  143. package/dist/ui/assets/trace-DJq1miYa.js +1 -0
  144. package/dist/ui/assets/upload-BiLTpCnX.js +11 -0
  145. package/dist/ui/assets/{utilService-DNyqzwj0.js → utilService-CNZOmadC.js} +1 -1
  146. package/dist/ui/assets/wand-sparkles-CPoBNFFg.js +6 -0
  147. package/dist/ui/index.html +2 -2
  148. package/package.json +44 -48
  149. package/dist/ui/assets/CollapsibleCard-B3KR_8mL.js +0 -1
  150. package/dist/ui/assets/DevToolsPage-OyZcDcmw.js +0 -1
  151. package/dist/ui/assets/LandingPage-CppFBA6K.js +0 -6
  152. package/dist/ui/assets/LogsPage-9Fq8GArS.js +0 -26
  153. package/dist/ui/assets/PluginCreatePage-X_aCH4t4.js +0 -50
  154. package/dist/ui/assets/PluginPage-DMDSihrZ.js +0 -27
  155. package/dist/ui/assets/alert-jQ9HCPIf.js +0 -1133
  156. package/dist/ui/assets/badge-CNq0-mH5.js +0 -1
  157. package/dist/ui/assets/card-DFAwwhN3.js +0 -1
  158. package/dist/ui/assets/index-BkD6DijD.js +0 -15
  159. package/dist/ui/assets/index-CERGVYZK.js +0 -292
  160. package/dist/ui/assets/index-CSIPf9qw.css +0 -1
  161. package/dist/ui/assets/label-DuVnkZ4q.js +0 -1
  162. package/dist/ui/assets/select-DhS8YUtJ.js +0 -1
  163. package/dist/ui/assets/separator-isK4chBP.js +0 -6
  164. package/dist/ui/assets/severityOptions-O38dSOfk.js +0 -11
  165. package/dist/ui/assets/switch-Z3mImG9n.js +0 -1
  166. package/dist/ui/assets/tabs-_77MUUQe.js +0 -16
  167. package/dist/ui/assets/upload-C1LT4Gkb.js +0 -16
@@ -0,0 +1,6 @@
1
+ import{c as St,r as s,j as d,a as Re,_ as je,b as ye,R as wt,u as ce,d as L,A as yt,e as _,v as G,f as Ct,$ as Me,h as Ae,a0 as bt,x as Tt,a1 as It,a2 as Pt,N as _t,Q as Et,O as Nt,V as Rt,D as jt,C as Mt,a3 as Ne,g as At,a4 as Ot,a5 as Dt,P as kt,a6 as Oe,k as V}from"./index-6xOVKwKn.js";import{C as De}from"./chevron-down-CG--ounh.js";import{C as Vt}from"./chevron-up-B6tzMAOm.js";/**
2
+ * @license lucide-react v0.515.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */const Lt=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],$t=St("check",Lt);function Bt(e,o=[]){let t=[];function r(c,a){const i=s.createContext(a),l=t.length;t=[...t,a];const u=f=>{var y;const{scope:h,children:C,...w}=f,p=((y=h==null?void 0:h[e])==null?void 0:y[l])||i,S=s.useMemo(()=>w,Object.values(w));return d.jsx(p.Provider,{value:S,children:C})};u.displayName=c+"Provider";function m(f,h){var p;const C=((p=h==null?void 0:h[e])==null?void 0:p[l])||i,w=s.useContext(C);if(w)return w;if(a!==void 0)return a;throw new Error(`\`${f}\` must be used within \`${c}\``)}return[u,m]}const n=()=>{const c=t.map(a=>s.createContext(a));return function(i){const l=(i==null?void 0:i[e])||c;return s.useMemo(()=>({[`__scope${e}`]:{...i,[e]:l}}),[i,l])}};return n.scopeName=e,[r,Ht(n,...o)]}function Ht(...e){const o=e[0];if(e.length===1)return o;const t=()=>{const r=e.map(n=>({useScope:n(),scopeName:n.scopeName}));return function(c){const a=r.reduce((i,{useScope:l,scopeName:u})=>{const f=l(c)[`__scope${u}`];return{...i,...f}},{});return s.useMemo(()=>({[`__scope${o.scopeName}`]:a}),[a])}};return t.scopeName=o.scopeName,t}function ke(e){const o=Ft(e),t=s.forwardRef((r,n)=>{const{children:c,...a}=r,i=s.Children.toArray(c),l=i.find(Ut);if(l){const u=l.props.children,m=i.map(f=>f===l?s.Children.count(u)>1?s.Children.only(null):s.isValidElement(u)?u.props.children:null:f);return d.jsx(o,{...a,ref:n,children:s.isValidElement(u)?s.cloneElement(u,void 0,m):null})}return d.jsx(o,{...a,ref:n,children:c})});return t.displayName=`${e}.Slot`,t}function Ft(e){const o=s.forwardRef((t,r)=>{const{children:n,...c}=t;if(s.isValidElement(n)){const a=Kt(n),i=zt(c,n.props);return n.type!==s.Fragment&&(i.ref=r?Re(r,a):a),s.cloneElement(n,i)}return s.Children.count(n)>1?s.Children.only(null):null});return o.displayName=`${e}.SlotClone`,o}var Wt=Symbol("radix.slottable");function Ut(e){return s.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===Wt}function zt(e,o){const t={...o};for(const r in o){const n=e[r],c=o[r];/^on[A-Z]/.test(r)?n&&c?t[r]=(...i)=>{const l=c(...i);return n(...i),l}:n&&(t[r]=n):r==="style"?t[r]={...n,...c}:r==="className"&&(t[r]=[n,c].filter(Boolean).join(" "))}return{...e,...t}}function Kt(e){var r,n;let o=(r=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:r.get,t=o&&"isReactWarning"in o&&o.isReactWarning;return t?e.ref:(o=(n=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:n.get,t=o&&"isReactWarning"in o&&o.isReactWarning,t?e.props.ref:e.props.ref||e.ref)}var Gt=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],j=Gt.reduce((e,o)=>{const t=ke(`Primitive.${o}`),r=s.forwardRef((n,c)=>{const{asChild:a,...i}=n,l=a?t:o;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),d.jsx(l,{...i,ref:c})});return r.displayName=`Primitive.${o}`,{...e,[o]:r}},{}),Yt=[" ","Enter","ArrowUp","ArrowDown"],qt=[" ","Enter"],J="Select",[de,ue,Zt]=bt(J),[oe]=Bt(J,[Zt,Ae]),pe=Ae(),[Xt,Y]=oe(J),[Qt,Jt]=oe(J),Ve=e=>{const{__scopeSelect:o,children:t,open:r,defaultOpen:n,onOpenChange:c,value:a,defaultValue:i,onValueChange:l,dir:u,name:m,autoComplete:f,disabled:h,required:C,form:w}=e,p=pe(o),[S,y]=s.useState(null),[v,x]=s.useState(null),[M,A]=s.useState(!1),ne=je(u),[E,D]=ye({prop:r,defaultProp:n??!1,onChange:c,caller:J}),[U,Z]=ye({prop:a,defaultProp:i,onChange:l,caller:J}),$=s.useRef(null),B=S?w||!!S.closest("form"):!0,[z,H]=s.useState(new Set),F=Array.from(z).map(N=>N.props.value).join(";");return d.jsx(wt,{...p,children:d.jsxs(Xt,{required:C,scope:o,trigger:S,onTriggerChange:y,valueNode:v,onValueNodeChange:x,valueNodeHasChildren:M,onValueNodeHasChildrenChange:A,contentId:ce(),value:U,onValueChange:Z,open:E,onOpenChange:D,dir:ne,triggerPointerDownPosRef:$,disabled:h,children:[d.jsx(de.Provider,{scope:o,children:d.jsx(Qt,{scope:e.__scopeSelect,onNativeOptionAdd:s.useCallback(N=>{H(k=>new Set(k).add(N))},[]),onNativeOptionRemove:s.useCallback(N=>{H(k=>{const W=new Set(k);return W.delete(N),W})},[]),children:t})}),B?d.jsxs(st,{"aria-hidden":!0,required:C,tabIndex:-1,name:m,autoComplete:f,value:U,onChange:N=>Z(N.target.value),disabled:h,form:w,children:[U===void 0?d.jsx("option",{value:""}):null,Array.from(z)]},F):null]})})};Ve.displayName=J;var Le="SelectTrigger",$e=s.forwardRef((e,o)=>{const{__scopeSelect:t,disabled:r=!1,...n}=e,c=pe(t),a=Y(Le,t),i=a.disabled||r,l=L(o,a.onTriggerChange),u=ue(t),m=s.useRef("touch"),[f,h,C]=it(p=>{const S=u().filter(x=>!x.disabled),y=S.find(x=>x.value===a.value),v=lt(S,p,y);v!==void 0&&a.onValueChange(v.value)}),w=p=>{i||(a.onOpenChange(!0),C()),p&&(a.triggerPointerDownPosRef.current={x:Math.round(p.pageX),y:Math.round(p.pageY)})};return d.jsx(yt,{asChild:!0,...c,children:d.jsx(j.button,{type:"button",role:"combobox","aria-controls":a.contentId,"aria-expanded":a.open,"aria-required":a.required,"aria-autocomplete":"none",dir:a.dir,"data-state":a.open?"open":"closed",disabled:i,"data-disabled":i?"":void 0,"data-placeholder":at(a.value)?"":void 0,...n,ref:l,onClick:_(n.onClick,p=>{p.currentTarget.focus(),m.current!=="mouse"&&w(p)}),onPointerDown:_(n.onPointerDown,p=>{m.current=p.pointerType;const S=p.target;S.hasPointerCapture(p.pointerId)&&S.releasePointerCapture(p.pointerId),p.button===0&&p.ctrlKey===!1&&p.pointerType==="mouse"&&(w(p),p.preventDefault())}),onKeyDown:_(n.onKeyDown,p=>{const S=f.current!=="";!(p.ctrlKey||p.altKey||p.metaKey)&&p.key.length===1&&h(p.key),!(S&&p.key===" ")&&Yt.includes(p.key)&&(w(),p.preventDefault())})})})});$e.displayName=Le;var Be="SelectValue",He=s.forwardRef((e,o)=>{const{__scopeSelect:t,className:r,style:n,children:c,placeholder:a="",...i}=e,l=Y(Be,t),{onValueNodeHasChildrenChange:u}=l,m=c!==void 0,f=L(o,l.onValueNodeChange);return G(()=>{u(m)},[u,m]),d.jsx(j.span,{...i,ref:f,style:{pointerEvents:"none"},children:at(l.value)?d.jsx(d.Fragment,{children:a}):c})});He.displayName=Be;var eo="SelectIcon",Fe=s.forwardRef((e,o)=>{const{__scopeSelect:t,children:r,...n}=e;return d.jsx(j.span,{"aria-hidden":!0,...n,ref:o,children:r||"▼"})});Fe.displayName=eo;var to="SelectPortal",We=e=>d.jsx(Ct,{asChild:!0,...e});We.displayName=to;var ee="SelectContent",Ue=s.forwardRef((e,o)=>{const t=Y(ee,e.__scopeSelect),[r,n]=s.useState();if(G(()=>{n(new DocumentFragment)},[]),!t.open){const c=r;return c?Me.createPortal(d.jsx(ze,{scope:e.__scopeSelect,children:d.jsx(de.Slot,{scope:e.__scopeSelect,children:d.jsx("div",{children:e.children})})}),c):null}return d.jsx(Ke,{...e,ref:o})});Ue.displayName=ee;var O=10,[ze,q]=oe(ee),oo="SelectContentImpl",no=ke("SelectContent.RemoveScroll"),Ke=s.forwardRef((e,o)=>{const{__scopeSelect:t,position:r="item-aligned",onCloseAutoFocus:n,onEscapeKeyDown:c,onPointerDownOutside:a,side:i,sideOffset:l,align:u,alignOffset:m,arrowPadding:f,collisionBoundary:h,collisionPadding:C,sticky:w,hideWhenDetached:p,avoidCollisions:S,...y}=e,v=Y(ee,t),[x,M]=s.useState(null),[A,ne]=s.useState(null),E=L(o,g=>M(g)),[D,U]=s.useState(null),[Z,$]=s.useState(null),B=ue(t),[z,H]=s.useState(!1),F=s.useRef(!1);s.useEffect(()=>{if(x)return _t(x)},[x]),Et();const N=s.useCallback(g=>{const[P,...R]=B().map(T=>T.ref.current),[I]=R.slice(-1),b=document.activeElement;for(const T of g)if(T===b||(T==null||T.scrollIntoView({block:"nearest"}),T===P&&A&&(A.scrollTop=0),T===I&&A&&(A.scrollTop=A.scrollHeight),T==null||T.focus(),document.activeElement!==b))return},[B,A]),k=s.useCallback(()=>N([D,x]),[N,D,x]);s.useEffect(()=>{z&&k()},[z,k]);const{onOpenChange:W,triggerPointerDownPosRef:K}=v;s.useEffect(()=>{if(x){let g={x:0,y:0};const P=I=>{var b,T;g={x:Math.abs(Math.round(I.pageX)-(((b=K.current)==null?void 0:b.x)??0)),y:Math.abs(Math.round(I.pageY)-(((T=K.current)==null?void 0:T.y)??0))}},R=I=>{g.x<=10&&g.y<=10?I.preventDefault():x.contains(I.target)||W(!1),document.removeEventListener("pointermove",P),K.current=null};return K.current!==null&&(document.addEventListener("pointermove",P),document.addEventListener("pointerup",R,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",P),document.removeEventListener("pointerup",R,{capture:!0})}}},[x,W,K]),s.useEffect(()=>{const g=()=>W(!1);return window.addEventListener("blur",g),window.addEventListener("resize",g),()=>{window.removeEventListener("blur",g),window.removeEventListener("resize",g)}},[W]);const[ve,ae]=it(g=>{const P=B().filter(b=>!b.disabled),R=P.find(b=>b.ref.current===document.activeElement),I=lt(P,g,R);I&&setTimeout(()=>I.ref.current.focus())}),he=s.useCallback((g,P,R)=>{const I=!F.current&&!R;(v.value!==void 0&&v.value===P||I)&&(U(g),I&&(F.current=!0))},[v.value]),ge=s.useCallback(()=>x==null?void 0:x.focus(),[x]),te=s.useCallback((g,P,R)=>{const I=!F.current&&!R;(v.value!==void 0&&v.value===P||I)&&$(g)},[v.value]),ie=r==="popper"?Ce:Ge,re=ie===Ce?{side:i,sideOffset:l,align:u,alignOffset:m,arrowPadding:f,collisionBoundary:h,collisionPadding:C,sticky:w,hideWhenDetached:p,avoidCollisions:S}:{};return d.jsx(ze,{scope:t,content:x,viewport:A,onViewportChange:ne,itemRefCallback:he,selectedItem:D,onItemLeave:ge,itemTextRefCallback:te,focusSelectedItem:k,selectedItemText:Z,position:r,isPositioned:z,searchRef:ve,children:d.jsx(Nt,{as:no,allowPinchZoom:!0,children:d.jsx(Rt,{asChild:!0,trapped:v.open,onMountAutoFocus:g=>{g.preventDefault()},onUnmountAutoFocus:_(n,g=>{var P;(P=v.trigger)==null||P.focus({preventScroll:!0}),g.preventDefault()}),children:d.jsx(jt,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:c,onPointerDownOutside:a,onFocusOutside:g=>g.preventDefault(),onDismiss:()=>v.onOpenChange(!1),children:d.jsx(ie,{role:"listbox",id:v.contentId,"data-state":v.open?"open":"closed",dir:v.dir,onContextMenu:g=>g.preventDefault(),...y,...re,onPlaced:()=>H(!0),ref:E,style:{display:"flex",flexDirection:"column",outline:"none",...y.style},onKeyDown:_(y.onKeyDown,g=>{const P=g.ctrlKey||g.altKey||g.metaKey;if(g.key==="Tab"&&g.preventDefault(),!P&&g.key.length===1&&ae(g.key),["ArrowUp","ArrowDown","Home","End"].includes(g.key)){let I=B().filter(b=>!b.disabled).map(b=>b.ref.current);if(["ArrowUp","End"].includes(g.key)&&(I=I.slice().reverse()),["ArrowUp","ArrowDown"].includes(g.key)){const b=g.target,T=I.indexOf(b);I=I.slice(T+1)}setTimeout(()=>N(I)),g.preventDefault()}})})})})})})});Ke.displayName=oo;var ro="SelectItemAlignedPosition",Ge=s.forwardRef((e,o)=>{const{__scopeSelect:t,onPlaced:r,...n}=e,c=Y(ee,t),a=q(ee,t),[i,l]=s.useState(null),[u,m]=s.useState(null),f=L(o,E=>m(E)),h=ue(t),C=s.useRef(!1),w=s.useRef(!0),{viewport:p,selectedItem:S,selectedItemText:y,focusSelectedItem:v}=a,x=s.useCallback(()=>{if(c.trigger&&c.valueNode&&i&&u&&p&&S&&y){const E=c.trigger.getBoundingClientRect(),D=u.getBoundingClientRect(),U=c.valueNode.getBoundingClientRect(),Z=y.getBoundingClientRect();if(c.dir!=="rtl"){const b=Z.left-D.left,T=U.left-b,X=E.left-T,Q=E.width+X,xe=Math.max(Q,D.width),Se=window.innerWidth-O,we=Ne(T,[O,Math.max(O,Se-xe)]);i.style.minWidth=Q+"px",i.style.left=we+"px"}else{const b=D.right-Z.right,T=window.innerWidth-U.right-b,X=window.innerWidth-E.right-T,Q=E.width+X,xe=Math.max(Q,D.width),Se=window.innerWidth-O,we=Ne(T,[O,Math.max(O,Se-xe)]);i.style.minWidth=Q+"px",i.style.right=we+"px"}const $=h(),B=window.innerHeight-O*2,z=p.scrollHeight,H=window.getComputedStyle(u),F=parseInt(H.borderTopWidth,10),N=parseInt(H.paddingTop,10),k=parseInt(H.borderBottomWidth,10),W=parseInt(H.paddingBottom,10),K=F+N+z+W+k,ve=Math.min(S.offsetHeight*5,K),ae=window.getComputedStyle(p),he=parseInt(ae.paddingTop,10),ge=parseInt(ae.paddingBottom,10),te=E.top+E.height/2-O,ie=B-te,re=S.offsetHeight/2,g=S.offsetTop+re,P=F+N+g,R=K-P;if(P<=te){const b=$.length>0&&S===$[$.length-1].ref.current;i.style.bottom="0px";const T=u.clientHeight-p.offsetTop-p.offsetHeight,X=Math.max(ie,re+(b?ge:0)+T+k),Q=P+X;i.style.height=Q+"px"}else{const b=$.length>0&&S===$[0].ref.current;i.style.top="0px";const X=Math.max(te,F+p.offsetTop+(b?he:0)+re)+R;i.style.height=X+"px",p.scrollTop=P-te+p.offsetTop}i.style.margin=`${O}px 0`,i.style.minHeight=ve+"px",i.style.maxHeight=B+"px",r==null||r(),requestAnimationFrame(()=>C.current=!0)}},[h,c.trigger,c.valueNode,i,u,p,S,y,c.dir,r]);G(()=>x(),[x]);const[M,A]=s.useState();G(()=>{u&&A(window.getComputedStyle(u).zIndex)},[u]);const ne=s.useCallback(E=>{E&&w.current===!0&&(x(),v==null||v(),w.current=!1)},[x,v]);return d.jsx(ao,{scope:t,contentWrapper:i,shouldExpandOnScrollRef:C,onScrollButtonChange:ne,children:d.jsx("div",{ref:l,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:M},children:d.jsx(j.div,{...n,ref:f,style:{boxSizing:"border-box",maxHeight:"100%",...n.style}})})})});Ge.displayName=ro;var so="SelectPopperPosition",Ce=s.forwardRef((e,o)=>{const{__scopeSelect:t,align:r="start",collisionPadding:n=O,...c}=e,a=pe(t);return d.jsx(Mt,{...a,...c,ref:o,align:r,collisionPadding:n,style:{boxSizing:"border-box",...c.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})});Ce.displayName=so;var[ao,_e]=oe(ee,{}),be="SelectViewport",Ye=s.forwardRef((e,o)=>{const{__scopeSelect:t,nonce:r,...n}=e,c=q(be,t),a=_e(be,t),i=L(o,c.onViewportChange),l=s.useRef(0);return d.jsxs(d.Fragment,{children:[d.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:r}),d.jsx(de.Slot,{scope:t,children:d.jsx(j.div,{"data-radix-select-viewport":"",role:"presentation",...n,ref:i,style:{position:"relative",flex:1,overflow:"hidden auto",...n.style},onScroll:_(n.onScroll,u=>{const m=u.currentTarget,{contentWrapper:f,shouldExpandOnScrollRef:h}=a;if(h!=null&&h.current&&f){const C=Math.abs(l.current-m.scrollTop);if(C>0){const w=window.innerHeight-O*2,p=parseFloat(f.style.minHeight),S=parseFloat(f.style.height),y=Math.max(p,S);if(y<w){const v=y+C,x=Math.min(w,v),M=v-x;f.style.height=x+"px",f.style.bottom==="0px"&&(m.scrollTop=M>0?M:0,f.style.justifyContent="flex-end")}}}l.current=m.scrollTop})})})]})});Ye.displayName=be;var qe="SelectGroup",[io,lo]=oe(qe),co=s.forwardRef((e,o)=>{const{__scopeSelect:t,...r}=e,n=ce();return d.jsx(io,{scope:t,id:n,children:d.jsx(j.div,{role:"group","aria-labelledby":n,...r,ref:o})})});co.displayName=qe;var Ze="SelectLabel",uo=s.forwardRef((e,o)=>{const{__scopeSelect:t,...r}=e,n=lo(Ze,t);return d.jsx(j.div,{id:n.id,...r,ref:o})});uo.displayName=Ze;var le="SelectItem",[po,Xe]=oe(le),Qe=s.forwardRef((e,o)=>{const{__scopeSelect:t,value:r,disabled:n=!1,textValue:c,...a}=e,i=Y(le,t),l=q(le,t),u=i.value===r,[m,f]=s.useState(c??""),[h,C]=s.useState(!1),w=L(o,v=>{var x;return(x=l.itemRefCallback)==null?void 0:x.call(l,v,r,n)}),p=ce(),S=s.useRef("touch"),y=()=>{n||(i.onValueChange(r),i.onOpenChange(!1))};if(r==="")throw new Error("A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return d.jsx(po,{scope:t,value:r,disabled:n,textId:p,isSelected:u,onItemTextChange:s.useCallback(v=>{f(x=>x||((v==null?void 0:v.textContent)??"").trim())},[]),children:d.jsx(de.ItemSlot,{scope:t,value:r,disabled:n,textValue:m,children:d.jsx(j.div,{role:"option","aria-labelledby":p,"data-highlighted":h?"":void 0,"aria-selected":u&&h,"data-state":u?"checked":"unchecked","aria-disabled":n||void 0,"data-disabled":n?"":void 0,tabIndex:n?void 0:-1,...a,ref:w,onFocus:_(a.onFocus,()=>C(!0)),onBlur:_(a.onBlur,()=>C(!1)),onClick:_(a.onClick,()=>{S.current!=="mouse"&&y()}),onPointerUp:_(a.onPointerUp,()=>{S.current==="mouse"&&y()}),onPointerDown:_(a.onPointerDown,v=>{S.current=v.pointerType}),onPointerMove:_(a.onPointerMove,v=>{var x;S.current=v.pointerType,n?(x=l.onItemLeave)==null||x.call(l):S.current==="mouse"&&v.currentTarget.focus({preventScroll:!0})}),onPointerLeave:_(a.onPointerLeave,v=>{var x;v.currentTarget===document.activeElement&&((x=l.onItemLeave)==null||x.call(l))}),onKeyDown:_(a.onKeyDown,v=>{var M;((M=l.searchRef)==null?void 0:M.current)!==""&&v.key===" "||(qt.includes(v.key)&&y(),v.key===" "&&v.preventDefault())})})})})});Qe.displayName=le;var se="SelectItemText",Je=s.forwardRef((e,o)=>{const{__scopeSelect:t,className:r,style:n,...c}=e,a=Y(se,t),i=q(se,t),l=Xe(se,t),u=Jt(se,t),[m,f]=s.useState(null),h=L(o,y=>f(y),l.onItemTextChange,y=>{var v;return(v=i.itemTextRefCallback)==null?void 0:v.call(i,y,l.value,l.disabled)}),C=m==null?void 0:m.textContent,w=s.useMemo(()=>d.jsx("option",{value:l.value,disabled:l.disabled,children:C},l.value),[l.disabled,l.value,C]),{onNativeOptionAdd:p,onNativeOptionRemove:S}=u;return G(()=>(p(w),()=>S(w)),[p,S,w]),d.jsxs(d.Fragment,{children:[d.jsx(j.span,{id:l.textId,...c,ref:h}),l.isSelected&&a.valueNode&&!a.valueNodeHasChildren?Me.createPortal(c.children,a.valueNode):null]})});Je.displayName=se;var et="SelectItemIndicator",tt=s.forwardRef((e,o)=>{const{__scopeSelect:t,...r}=e;return Xe(et,t).isSelected?d.jsx(j.span,{"aria-hidden":!0,...r,ref:o}):null});tt.displayName=et;var Te="SelectScrollUpButton",ot=s.forwardRef((e,o)=>{const t=q(Te,e.__scopeSelect),r=_e(Te,e.__scopeSelect),[n,c]=s.useState(!1),a=L(o,r.onScrollButtonChange);return G(()=>{if(t.viewport&&t.isPositioned){let i=function(){const u=l.scrollTop>0;c(u)};const l=t.viewport;return i(),l.addEventListener("scroll",i),()=>l.removeEventListener("scroll",i)}},[t.viewport,t.isPositioned]),n?d.jsx(rt,{...e,ref:a,onAutoScroll:()=>{const{viewport:i,selectedItem:l}=t;i&&l&&(i.scrollTop=i.scrollTop-l.offsetHeight)}}):null});ot.displayName=Te;var Ie="SelectScrollDownButton",nt=s.forwardRef((e,o)=>{const t=q(Ie,e.__scopeSelect),r=_e(Ie,e.__scopeSelect),[n,c]=s.useState(!1),a=L(o,r.onScrollButtonChange);return G(()=>{if(t.viewport&&t.isPositioned){let i=function(){const u=l.scrollHeight-l.clientHeight,m=Math.ceil(l.scrollTop)<u;c(m)};const l=t.viewport;return i(),l.addEventListener("scroll",i),()=>l.removeEventListener("scroll",i)}},[t.viewport,t.isPositioned]),n?d.jsx(rt,{...e,ref:a,onAutoScroll:()=>{const{viewport:i,selectedItem:l}=t;i&&l&&(i.scrollTop=i.scrollTop+l.offsetHeight)}}):null});nt.displayName=Ie;var rt=s.forwardRef((e,o)=>{const{__scopeSelect:t,onAutoScroll:r,...n}=e,c=q("SelectScrollButton",t),a=s.useRef(null),i=ue(t),l=s.useCallback(()=>{a.current!==null&&(window.clearInterval(a.current),a.current=null)},[]);return s.useEffect(()=>()=>l(),[l]),G(()=>{var m;const u=i().find(f=>f.ref.current===document.activeElement);(m=u==null?void 0:u.ref.current)==null||m.scrollIntoView({block:"nearest"})},[i]),d.jsx(j.div,{"aria-hidden":!0,...n,ref:o,style:{flexShrink:0,...n.style},onPointerDown:_(n.onPointerDown,()=>{a.current===null&&(a.current=window.setInterval(r,50))}),onPointerMove:_(n.onPointerMove,()=>{var u;(u=c.onItemLeave)==null||u.call(c),a.current===null&&(a.current=window.setInterval(r,50))}),onPointerLeave:_(n.onPointerLeave,()=>{l()})})}),fo="SelectSeparator",mo=s.forwardRef((e,o)=>{const{__scopeSelect:t,...r}=e;return d.jsx(j.div,{"aria-hidden":!0,...r,ref:o})});mo.displayName=fo;var Pe="SelectArrow",vo=s.forwardRef((e,o)=>{const{__scopeSelect:t,...r}=e,n=pe(t),c=Y(Pe,t),a=q(Pe,t);return c.open&&a.position==="popper"?d.jsx(At,{...n,...r,ref:o}):null});vo.displayName=Pe;var ho="SelectBubbleInput",st=s.forwardRef(({__scopeSelect:e,value:o,...t},r)=>{const n=s.useRef(null),c=L(r,n),a=Tt(o);return s.useEffect(()=>{const i=n.current;if(!i)return;const l=window.HTMLSelectElement.prototype,m=Object.getOwnPropertyDescriptor(l,"value").set;if(a!==o&&m){const f=new Event("change",{bubbles:!0});m.call(i,o),i.dispatchEvent(f)}},[a,o]),d.jsx(j.select,{...t,style:{...It,...t.style},ref:c,defaultValue:o})});st.displayName=ho;function at(e){return e===""||e===void 0}function it(e){const o=Pt(e),t=s.useRef(""),r=s.useRef(0),n=s.useCallback(a=>{const i=t.current+a;o(i),(function l(u){t.current=u,window.clearTimeout(r.current),u!==""&&(r.current=window.setTimeout(()=>l(""),1e3))})(i)},[o]),c=s.useCallback(()=>{t.current="",window.clearTimeout(r.current)},[]);return s.useEffect(()=>()=>window.clearTimeout(r.current),[]),[t,n,c]}function lt(e,o,t){const n=o.length>1&&Array.from(o).every(u=>u===o[0])?o[0]:o,c=t?e.indexOf(t):-1;let a=go(e,Math.max(c,0));n.length===1&&(a=a.filter(u=>u!==t));const l=a.find(u=>u.textValue.toLowerCase().startsWith(n.toLowerCase()));return l!==t?l:void 0}function go(e,o){return e.map((t,r)=>e[(o+r)%e.length])}var xo=Ve,So=$e,wo=He,yo=Fe,Co=We,bo=Ue,To=Ye,Io=Qe,Po=Je,_o=tt,Eo=ot,No=nt;function Ro(e,o=[]){let t=[];function r(c,a){const i=s.createContext(a),l=t.length;t=[...t,a];const u=f=>{var y;const{scope:h,children:C,...w}=f,p=((y=h==null?void 0:h[e])==null?void 0:y[l])||i,S=s.useMemo(()=>w,Object.values(w));return d.jsx(p.Provider,{value:S,children:C})};u.displayName=c+"Provider";function m(f,h){var p;const C=((p=h==null?void 0:h[e])==null?void 0:p[l])||i,w=s.useContext(C);if(w)return w;if(a!==void 0)return a;throw new Error(`\`${f}\` must be used within \`${c}\``)}return[u,m]}const n=()=>{const c=t.map(a=>s.createContext(a));return function(i){const l=(i==null?void 0:i[e])||c;return s.useMemo(()=>({[`__scope${e}`]:{...i,[e]:l}}),[i,l])}};return n.scopeName=e,[r,jo(n,...o)]}function jo(...e){const o=e[0];if(e.length===1)return o;const t=()=>{const r=e.map(n=>({useScope:n(),scopeName:n.scopeName}));return function(c){const a=r.reduce((i,{useScope:l,scopeName:u})=>{const f=l(c)[`__scope${u}`];return{...i,...f}},{});return s.useMemo(()=>({[`__scope${o.scopeName}`]:a}),[a])}};return t.scopeName=o.scopeName,t}function Mo(e){const o=Ao(e),t=s.forwardRef((r,n)=>{const{children:c,...a}=r,i=s.Children.toArray(c),l=i.find(Do);if(l){const u=l.props.children,m=i.map(f=>f===l?s.Children.count(u)>1?s.Children.only(null):s.isValidElement(u)?u.props.children:null:f);return d.jsx(o,{...a,ref:n,children:s.isValidElement(u)?s.cloneElement(u,void 0,m):null})}return d.jsx(o,{...a,ref:n,children:c})});return t.displayName=`${e}.Slot`,t}function Ao(e){const o=s.forwardRef((t,r)=>{const{children:n,...c}=t;if(s.isValidElement(n)){const a=Vo(n),i=ko(c,n.props);return n.type!==s.Fragment&&(i.ref=r?Re(r,a):a),s.cloneElement(n,i)}return s.Children.count(n)>1?s.Children.only(null):null});return o.displayName=`${e}.SlotClone`,o}var Oo=Symbol("radix.slottable");function Do(e){return s.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===Oo}function ko(e,o){const t={...o};for(const r in o){const n=e[r],c=o[r];/^on[A-Z]/.test(r)?n&&c?t[r]=(...i)=>{const l=c(...i);return n(...i),l}:n&&(t[r]=n):r==="style"?t[r]={...n,...c}:r==="className"&&(t[r]=[n,c].filter(Boolean).join(" "))}return{...e,...t}}function Vo(e){var r,n;let o=(r=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:r.get,t=o&&"isReactWarning"in o&&o.isReactWarning;return t?e.ref:(o=(n=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:n.get,t=o&&"isReactWarning"in o&&o.isReactWarning,t?e.props.ref:e.props.ref||e.ref)}var Lo=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],fe=Lo.reduce((e,o)=>{const t=Mo(`Primitive.${o}`),r=s.forwardRef((n,c)=>{const{asChild:a,...i}=n,l=a?t:o;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),d.jsx(l,{...i,ref:c})});return r.displayName=`Primitive.${o}`,{...e,[o]:r}},{}),me="Tabs",[$o]=Ro(me,[Oe]),ct=Oe(),[Bo,Ee]=$o(me),dt=s.forwardRef((e,o)=>{const{__scopeTabs:t,value:r,onValueChange:n,defaultValue:c,orientation:a="horizontal",dir:i,activationMode:l="automatic",...u}=e,m=je(i),[f,h]=ye({prop:r,onChange:n,defaultProp:c??"",caller:me});return d.jsx(Bo,{scope:t,baseId:ce(),value:f,onValueChange:h,orientation:a,dir:m,activationMode:l,children:d.jsx(fe.div,{dir:m,"data-orientation":a,...u,ref:o})})});dt.displayName=me;var ut="TabsList",pt=s.forwardRef((e,o)=>{const{__scopeTabs:t,loop:r=!0,...n}=e,c=Ee(ut,t),a=ct(t);return d.jsx(Ot,{asChild:!0,...a,orientation:c.orientation,dir:c.dir,loop:r,children:d.jsx(fe.div,{role:"tablist","aria-orientation":c.orientation,...n,ref:o})})});pt.displayName=ut;var ft="TabsTrigger",mt=s.forwardRef((e,o)=>{const{__scopeTabs:t,value:r,disabled:n=!1,...c}=e,a=Ee(ft,t),i=ct(t),l=gt(a.baseId,r),u=xt(a.baseId,r),m=r===a.value;return d.jsx(Dt,{asChild:!0,...i,focusable:!n,active:m,children:d.jsx(fe.button,{type:"button",role:"tab","aria-selected":m,"aria-controls":u,"data-state":m?"active":"inactive","data-disabled":n?"":void 0,disabled:n,id:l,...c,ref:o,onMouseDown:_(e.onMouseDown,f=>{!n&&f.button===0&&f.ctrlKey===!1?a.onValueChange(r):f.preventDefault()}),onKeyDown:_(e.onKeyDown,f=>{[" ","Enter"].includes(f.key)&&a.onValueChange(r)}),onFocus:_(e.onFocus,()=>{const f=a.activationMode!=="manual";!m&&!n&&f&&a.onValueChange(r)})})})});mt.displayName=ft;var vt="TabsContent",ht=s.forwardRef((e,o)=>{const{__scopeTabs:t,value:r,forceMount:n,children:c,...a}=e,i=Ee(vt,t),l=gt(i.baseId,r),u=xt(i.baseId,r),m=r===i.value,f=s.useRef(m);return s.useEffect(()=>{const h=requestAnimationFrame(()=>f.current=!1);return()=>cancelAnimationFrame(h)},[]),d.jsx(kt,{present:n||m,children:({present:h})=>d.jsx(fe.div,{"data-state":m?"active":"inactive","data-orientation":i.orientation,role:"tabpanel","aria-labelledby":l,hidden:!h,id:u,tabIndex:0,...a,ref:o,style:{...e.style,animationDuration:f.current?"0s":void 0},children:h&&c})})});ht.displayName=vt;function gt(e,o){return`${e}-trigger-${o}`}function xt(e,o){return`${e}-content-${o}`}var Ho=dt,Fo=pt,Wo=mt,Uo=ht;function Zo({className:e,...o}){return d.jsx(Ho,{"data-slot":"tabs",className:V("flex flex-col gap-2",e),...o})}function Xo({className:e,...o}){return d.jsx(Fo,{"data-slot":"tabs-list",className:V("bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]",e),...o})}function Qo({className:e,...o}){return d.jsx(Wo,{"data-slot":"tabs-trigger",className:V("data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...o})}function Jo({className:e,...o}){return d.jsx(Uo,{"data-slot":"tabs-content",className:V("flex-1 outline-none",e),...o})}function en({...e}){return d.jsx(xo,{"data-slot":"select",...e})}function tn({...e}){return d.jsx(wo,{"data-slot":"select-value",...e})}function on({className:e,size:o="default",children:t,...r}){return d.jsxs(So,{"data-slot":"select-trigger","data-size":o,className:V("border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...r,children:[t,d.jsx(yo,{asChild:!0,children:d.jsx(De,{className:"size-4 opacity-50"})})]})}function nn({className:e,children:o,position:t="popper",...r}){return d.jsx(Co,{children:d.jsxs(bo,{"data-slot":"select-content",className:V("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md",t==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",e),position:t,...r,children:[d.jsx(zo,{}),d.jsx(To,{className:V("p-1",t==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),children:o}),d.jsx(Ko,{})]})})}function rn({className:e,children:o,...t}){return d.jsxs(Io,{"data-slot":"select-item",className:V("focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",e),...t,children:[d.jsx("span",{className:"absolute right-2 flex size-3.5 items-center justify-center",children:d.jsx(_o,{children:d.jsx($t,{className:"size-4"})})}),d.jsx(Po,{children:o})]})}function zo({className:e,...o}){return d.jsx(Eo,{"data-slot":"select-scroll-up-button",className:V("flex cursor-default items-center justify-center py-1",e),...o,children:d.jsx(Vt,{className:"size-4"})})}function Ko({className:e,...o}){return d.jsx(No,{"data-slot":"select-scroll-down-button",className:V("flex cursor-default items-center justify-center py-1",e),...o,children:d.jsx(De,{className:"size-4"})})}export{$t as C,en as S,Zo as T,Xo as a,Qo as b,Jo as c,on as d,tn as e,nn as f,rn as g};
@@ -0,0 +1,6 @@
1
+ import{c as l,r as p,j as e,k as v}from"./index-6xOVKwKn.js";import{P as h}from"./index-D96rVSkR.js";/**
2
+ * @license lucide-react v0.515.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */const m=[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}]],j=l("trash",m);var u="Separator",n="horizontal",f=["horizontal","vertical"],s=p.forwardRef((a,r)=>{const{decorative:o,orientation:t=n,...c}=a,i=x(t)?t:n,d=o?{role:"none"}:{"aria-orientation":i==="vertical"?i:void 0,role:"separator"};return e.jsx(h.div,{"data-orientation":i,...d,...c,ref:r})});s.displayName=u;function x(a){return f.includes(a)}var N=s;function k({className:a,orientation:r="horizontal",decorative:o=!0,...t}){return e.jsx(N,{"data-slot":"separator",decorative:o,orientation:r,className:v("bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",a),...t})}export{k as S,j as T};
@@ -0,0 +1,11 @@
1
+ import{c as p,o as s}from"./index-6xOVKwKn.js";import{I as c}from"./info-99kuqpbx.js";import{C as d}from"./circle-alert-BDF8Tq9y.js";/**
2
+ * @license lucide-react v0.515.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */const y=[["path",{d:"m8 2 1.88 1.88",key:"fmnt4t"}],["path",{d:"M14.12 3.88 16 2",key:"qol33r"}],["path",{d:"M9 7.13v-1a3.003 3.003 0 1 1 6 0v1",key:"d7y7pr"}],["path",{d:"M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6",key:"xs1cw7"}],["path",{d:"M12 20v-9",key:"1qisl0"}],["path",{d:"M6.53 9C4.6 8.8 3 7.1 3 5",key:"32zzws"}],["path",{d:"M6 13H2",key:"82j7cp"}],["path",{d:"M3 21c0-2.1 1.7-3.9 3.8-4",key:"4p0ekp"}],["path",{d:"M20.97 5c0 2.1-1.6 3.8-3.5 4",key:"18gb23"}],["path",{d:"M22 13h-4",key:"1jl80f"}],["path",{d:"M17.2 17c2.1.1 3.8 1.9 3.8 4",key:"k3fwyw"}]],g=p("bug",y);/**
7
+ * @license lucide-react v0.515.0 - ISC
8
+ *
9
+ * This source code is licensed under the ISC license.
10
+ * See the LICENSE file in the root directory of this source tree.
11
+ */const m=[["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"}]],u=p("triangle-alert",m);class w{async findLogs(e){const{limit:t=50,query:a={},textSearch:o}=e,r={timestamp:-1};return{logs:((await s.post("/logs/find",{query:a,limit:t,textSearch:o,sort:r})).data.logs||[]).reverse()}}async findOlderLogs(e,t){const{limit:a=50,query:o={},textSearch:r}=e;o.timestamp={$lt:t};const n={timestamp:-1},l=(await s.post("/logs/find",{query:o,limit:a,textSearch:r,sort:n})).data.logs||[];return l.reverse(),{logs:l}}async findNewerLogs(e,t){const{limit:a=50,query:o={},textSearch:r}=e;o.timestamp={$gt:t};const n={timestamp:1};return{logs:(await s.post("/logs/find",{query:o,limit:a,textSearch:r,sort:n})).data.logs||[]}}async getStatus(){return{active:!!(await s.get("/logs/status")).data.active}}async startCollection(){await s.post("/logs/start")}async stopCollection(){await s.post("/logs/stop")}async resetLogs(){await s.post("/logs/reset")}async setRetentionTime(e){return{message:(await s.post("/logs/retention-time",{retentionTimeInSeconds:e})).data.message}}async getRetentionTime(){return(await s.get("/logs/retention-time")).data.retentionTimeInSeconds||0}async generateLog(e){return(await s.post("/utils/generate-log",{log:e})).data.message}async generateCustomLog({log:e,method:t,repeat:a}){return(await s.post("/utils/generate-log",{log:e,method:t,repeat:a})).data.message}async generateMockLogs(e){return(await s.post("/utils/generate-mock-logs",{count:e})).data.message}download(){const t=`${s.defaults.baseURL}/logs/export`;window.open(t,"_blank")}async import(e,t){const a=await e.text(),r=`${s.defaults.baseURL}/logs/import?reset=${t.reset}`,n=await fetch(r,{method:"POST",headers:{"Content-Type":"application/x-ndjson"},body:a});if(!n.ok)throw new Error(`Import failed: ${n.statusText}`)}}const b=new w,f=[{value:"TRACE",label:"TRACE (1-4)",description:"Fine-grained debugging event. Usually disabled.",color:"text-gray-600 dark:text-gray-400",icon:g},{value:"DEBUG",label:"DEBUG (5-8)",description:"Debugging event.",color:"text-gray-600 dark:text-gray-400",icon:g},{value:"INFO",label:"INFO (9-12)",description:"Informational event.",color:"text-blue-600 dark:text-blue-400",icon:c},{value:"WARN",label:"WARN (13-16)",description:"Warning event.",color:"text-yellow-600 dark:text-yellow-400",icon:u},{value:"ERROR",label:"ERROR (17-20)",description:"Error event.",color:"text-red-600 dark:text-red-400",icon:d},{value:"FATAL",label:"FATAL (21-24)",description:"Fatal error or crash.",color:"text-red-600 dark:text-red-400",icon:d},{value:"UNSPECIFIED",label:"UNSPECIFIED (0)",description:"Unspecified value.",color:"text-gray-600 dark:text-gray-400",icon:c}];export{b as l,f as s};
@@ -0,0 +1,6 @@
1
+ import{c as a}from"./index-6xOVKwKn.js";/**
2
+ * @license lucide-react v0.515.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */const e=[["path",{d:"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7",key:"1m0v6g"}],["path",{d:"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z",key:"ohrbg2"}]],c=a("square-pen",e);export{c as S};
@@ -0,0 +1 @@
1
+ import{r as i,j as h,a as B,d as y,b as T,e as $,x as O,y as M,k as g}from"./index-6xOVKwKn.js";function A(e,t=[]){let n=[];function o(a,c){const s=i.createContext(c),l=n.length;n=[...n,c];const u=d=>{var S;const{scope:p,children:b,...m}=d,x=((S=p==null?void 0:p[e])==null?void 0:S[l])||s,v=i.useMemo(()=>m,Object.values(m));return h.jsx(x.Provider,{value:v,children:b})};u.displayName=a+"Provider";function f(d,p){var x;const b=((x=p==null?void 0:p[e])==null?void 0:x[l])||s,m=i.useContext(b);if(m)return m;if(c!==void 0)return c;throw new Error(`\`${d}\` must be used within \`${a}\``)}return[u,f]}const r=()=>{const a=n.map(c=>i.createContext(c));return function(s){const l=(s==null?void 0:s[e])||a;return i.useMemo(()=>({[`__scope${e}`]:{...s,[e]:l}}),[s,l])}};return r.scopeName=e,[o,H(r,...t)]}function H(...e){const t=e[0];if(e.length===1)return t;const n=()=>{const o=e.map(r=>({useScope:r(),scopeName:r.scopeName}));return function(a){const c=o.reduce((s,{useScope:l,scopeName:u})=>{const d=l(a)[`__scope${u}`];return{...s,...d}},{});return i.useMemo(()=>({[`__scope${t.scopeName}`]:c}),[c])}};return n.scopeName=t.scopeName,n}function V(e){const t=W(e),n=i.forwardRef((o,r)=>{const{children:a,...c}=o,s=i.Children.toArray(a),l=s.find(L);if(l){const u=l.props.children,f=s.map(d=>d===l?i.Children.count(u)>1?i.Children.only(null):i.isValidElement(u)?u.props.children:null:d);return h.jsx(t,{...c,ref:r,children:i.isValidElement(u)?i.cloneElement(u,void 0,f):null})}return h.jsx(t,{...c,ref:r,children:a})});return n.displayName=`${e}.Slot`,n}function W(e){const t=i.forwardRef((n,o)=>{const{children:r,...a}=n;if(i.isValidElement(r)){const c=F(r),s=z(a,r.props);return r.type!==i.Fragment&&(s.ref=o?B(o,c):c),i.cloneElement(r,s)}return i.Children.count(r)>1?i.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var D=Symbol("radix.slottable");function L(e){return i.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===D}function z(e,t){const n={...t};for(const o in t){const r=e[o],a=t[o];/^on[A-Z]/.test(o)?r&&a?n[o]=(...s)=>{const l=a(...s);return r(...s),l}:r&&(n[o]=r):o==="style"?n[o]={...r,...a}:o==="className"&&(n[o]=[r,a].filter(Boolean).join(" "))}return{...e,...n}}function F(e){var o,r;let t=(o=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:o.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=(r=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:r.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var U=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],k=U.reduce((e,t)=>{const n=V(`Primitive.${t}`),o=i.forwardRef((r,a)=>{const{asChild:c,...s}=r,l=c?n:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),h.jsx(l,{...s,ref:a})});return o.displayName=`Primitive.${t}`,{...e,[t]:o}},{}),C="Switch",[q]=A(C),[X,Z]=q(C),P=i.forwardRef((e,t)=>{const{__scopeSwitch:n,name:o,checked:r,defaultChecked:a,required:c,disabled:s,value:l="on",onCheckedChange:u,form:f,...d}=e,[p,b]=i.useState(null),m=y(t,w=>b(w)),x=i.useRef(!1),v=p?f||!!p.closest("form"):!0,[S,N]=T({prop:r,defaultProp:a??!1,onChange:u,caller:C});return h.jsxs(X,{scope:n,checked:S,disabled:s,children:[h.jsx(k.button,{type:"button",role:"switch","aria-checked":S,"aria-required":c,"data-state":j(S),"data-disabled":s?"":void 0,disabled:s,value:l,...d,ref:m,onClick:$(e.onClick,w=>{N(I=>!I),v&&(x.current=w.isPropagationStopped(),x.current||w.stopPropagation())})}),v&&h.jsx(R,{control:p,bubbles:!x.current,name:o,value:l,checked:S,required:c,disabled:s,form:f,style:{transform:"translateX(-100%)"}})]})});P.displayName=C;var E="SwitchThumb",_=i.forwardRef((e,t)=>{const{__scopeSwitch:n,...o}=e,r=Z(E,n);return h.jsx(k.span,{"data-state":j(r.checked),"data-disabled":r.disabled?"":void 0,...o,ref:t})});_.displayName=E;var G="SwitchBubbleInput",R=i.forwardRef(({__scopeSwitch:e,control:t,checked:n,bubbles:o=!0,...r},a)=>{const c=i.useRef(null),s=y(c,a),l=O(n),u=M(t);return i.useEffect(()=>{const f=c.current;if(!f)return;const d=window.HTMLInputElement.prototype,b=Object.getOwnPropertyDescriptor(d,"checked").set;if(l!==n&&b){const m=new Event("click",{bubbles:o});b.call(f,n),f.dispatchEvent(m)}},[l,n,o]),h.jsx("input",{type:"checkbox","aria-hidden":!0,defaultChecked:n,...r,tabIndex:-1,ref:s,style:{...r.style,...u,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});R.displayName=G;function j(e){return e?"checked":"unchecked"}var J=P,K=_;function Y({className:e,...t}){return h.jsx(J,{"data-slot":"switch",className:g("peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",e),...t,children:h.jsx(K,{"data-slot":"switch-thumb",className:g("bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0")})})}export{Y as S};
@@ -0,0 +1 @@
1
+ const b=["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS","TRACE","CONNECT"];function t(e){return typeof e!="number"?!1:e>=100&&e<600&&Number.isInteger(e)}function n(e){return e.split(/[,\s]+/).map(r=>Number(r.trim())).filter(t)}function o(e){switch(e.toUpperCase()){case"GET":return"bg-blue-100 text-blue-800 border-blue-200";case"POST":return"bg-green-100 text-green-800 border-green-200";case"PUT":return"bg-yellow-100 text-yellow-800 border-yellow-200";case"DELETE":return"bg-red-100 text-red-800 border-red-200";case"PATCH":return"bg-purple-100 text-purple-800 border-purple-200";case"HEAD":return"bg-slate-100 text-slate-800 border-slate-200";case"OPTIONS":return"bg-cyan-100 text-cyan-800 border-cyan-200";case"TRACE":return"bg-amber-100 text-amber-800 border-amber-200";case"CONNECT":return"bg-indigo-100 text-indigo-800 border-indigo-200";default:return"bg-gray-100 text-gray-800 border-gray-200"}}function l(e){return e>=200&&e<300?"bg-green-100 text-green-800 border-green-200":e>=300&&e<400?"bg-blue-100 text-blue-800 border-blue-200":e>=400&&e<500?"bg-yellow-100 text-yellow-800 border-yellow-200":"bg-red-100 text-red-800 border-red-200"}function u(e){switch(e){case"INFO":return"bg-blue-100 text-blue-800 border-blue-200";case"WARN":return"bg-yellow-100 text-yellow-800 border-yellow-200";case"ERROR":return"bg-red-100 text-red-800 border-red-200";default:return"bg-gray-100 text-gray-800 border-gray-200"}}export{b as H,o as a,l as b,u as g,n as p};
@@ -0,0 +1,11 @@
1
+ import{c as a}from"./index-6xOVKwKn.js";/**
2
+ * @license lucide-react v0.515.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */const o=[["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"}]],e=a("download",o);/**
7
+ * @license lucide-react v0.515.0 - ISC
8
+ *
9
+ * This source code is licensed under the ISC license.
10
+ * See the LICENSE file in the root directory of this source tree.
11
+ */const d=[["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"}]],n=a("upload",d);export{e as D,n as U};
@@ -1 +1 @@
1
- import{y as e}from"./index-CERGVYZK.js";const s={getHeapStats:async()=>(await e.get("/utils/heapStats")).data,getOpenApiSpec:async()=>(await e.get("/utils/spec")).data,getOasTelemetryOpenApiSpec:async()=>(await e.get("/utils/oas-telemetry-spec")).data};export{s as u};
1
+ import{o as e}from"./index-6xOVKwKn.js";const s={getHeapStats:async()=>(await e.get("/utils/heapStats")).data,getOpenApiSpec:async()=>(await e.get("/utils/spec")).data,getOasTelemetryOpenApiSpec:async()=>(await e.get("/utils/oas-telemetry-spec")).data};export{s as u};
@@ -0,0 +1,6 @@
1
+ import{c as a}from"./index-6xOVKwKn.js";/**
2
+ * @license lucide-react v0.515.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */const e=[["path",{d:"m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72",key:"ul74o6"}],["path",{d:"m14 7 3 3",key:"1r5n42"}],["path",{d:"M5 6v4",key:"ilb8ba"}],["path",{d:"M19 14v4",key:"blhpug"}],["path",{d:"M10 2v2",key:"7u0qdc"}],["path",{d:"M7 8H3",key:"zfb6yr"}],["path",{d:"M21 16h-4",key:"1cnmox"}],["path",{d:"M11 3H9",key:"1obp7u"}]],d=a("wand-sparkles",e);export{d as W};
@@ -5,8 +5,8 @@
5
5
  <link rel="icon" type="image/svg+xml" href="./oas-tlm.svg" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <title>OAS-Telemetry</title>
8
- <script type="module" crossorigin src="./assets/index-CERGVYZK.js"></script>
9
- <link rel="stylesheet" crossorigin href="./assets/index-CSIPf9qw.css">
8
+ <script type="module" crossorigin src="./assets/index-6xOVKwKn.js"></script>
9
+ <link rel="stylesheet" crossorigin href="./assets/index-D6f1KjWV.css">
10
10
  </head>
11
11
  <body>
12
12
  <div id="root"></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oas-tools/oas-telemetry",
3
- "version": "0.7.1",
3
+ "version": "0.8.0-alpha.0",
4
4
  "description": "Automatically collects and stores telemetry data in memory using OpenTelemetry. Just import the Express middleware to access it through the built-in REST API or web UI—no extra setup required.",
5
5
  "author": "Manuel Otero",
6
6
  "contributors": [
@@ -10,17 +10,20 @@
10
10
  "license": "Apache-2.0",
11
11
  "type": "module",
12
12
  "scripts": {
13
- "dev": "env OASTLM_BOOT_ENV=development tsx test/e2e/servers/otTestServer.ts",
13
+ "dev": "env OASTLM_BOOT_ENV=development tsx watch test/e2e/servers/otTestServer.ts",
14
14
  "esm": "echo 'Remember to execute: \"npm run build\"' && node test/e2e/servers/otTestServer.mjs",
15
15
  "cjs": "echo 'Remember to execute: \"npm run build\"' && node test/e2e/servers/otTestServer.cjs",
16
- "build": "npm run build:esm && npm run build:cjs && npm run copy:types",
17
- "build:esm": "tsc -p tsconfig.json && npm run copy:spec",
16
+ "build": "npm run clean && npm run build:types && npm run build:esm && npm run build:cjs && npm run copy:spec && npm run copy:ui",
17
+ "clean": "rm -rf dist",
18
+ "build:types": "tsc --declaration --emitDeclarationOnly --declarationDir ./dist/types",
19
+ "build:esm": "tsc -p tsconfig.esm.json",
20
+ "build:cjs": "tsc -p tsconfig.cjs.json && npm run postbuild:cjs",
21
+ "postbuild:cjs": "find dist/cjs -name '*.js' -exec bash -c 'mv \"$1\" \"${1%.js}.cjs\"' _ {} \\; && find dist/cjs -name '*.cjs' -exec sed -i \"s/\\.js'/\\.cjs'/g\" {} \\; && find dist/cjs -name '*.cjs' -exec sed -i 's/\\.js\"/\\.cjs\"/g' {} \\; && find dist/cjs -name '*.cjs' -exec sed -i 's/import\\.meta\\.url/__filename/g' {} \\;",
18
22
  "copy:spec": "mkdir -p dist/esm/docs dist/cjs/docs && cp src/docs/openapi.yaml dist/esm/docs/ && cp src/docs/openapi.yaml dist/cjs/docs/",
19
- "build:cjs": "babel ./dist/esm -d ./dist/cjs --out-file-extension .cjs --config-file ./.babelrc",
23
+ "copy:ui": "mkdir -p dist/ui && cp -r ../ui/dist/* dist/ui/ 2>/dev/null || true",
20
24
  "test": "vitest --run",
21
25
  "test:watch": "vitest",
22
- "lint": "eslint --ext .ts . --fix",
23
- "copy:types": "mkdir -p dist/types && cp src/types/cjs-index.d.ts dist/types/index.d.ts"
26
+ "lint": "eslint --ext .ts . --fix"
24
27
  },
25
28
  "files": [
26
29
  ".env.example",
@@ -31,11 +34,11 @@
31
34
  ".": {
32
35
  "require": {
33
36
  "types": "./dist/types/index.d.ts",
34
- "require": "./dist/cjs/index.cjs"
37
+ "default": "./dist/cjs/index.cjs"
35
38
  },
36
39
  "import": {
37
40
  "types": "./dist/types/index.d.ts",
38
- "import": "./dist/esm/index.js"
41
+ "default": "./dist/esm/index.js"
39
42
  }
40
43
  }
41
44
  },
@@ -43,55 +46,48 @@
43
46
  "node": ">=18"
44
47
  },
45
48
  "dependencies": {
46
- "@opentelemetry/api-logs": "^0.205.0",
47
- "@opentelemetry/core": "^2.0.1",
48
- "@opentelemetry/host-metrics": "^0.36.0",
49
- "@opentelemetry/instrumentation": "^0.202.0",
50
- "@opentelemetry/instrumentation-http": "^0.51.0",
51
- "@opentelemetry/resources": "^2.1.0",
52
- "@opentelemetry/sdk-logs": "^0.202.0",
53
- "@opentelemetry/sdk-metrics": "^2.0.1",
54
- "@opentelemetry/sdk-trace-base": "^2.0.1",
55
- "@opentelemetry/sdk-trace-node": "^2.0.1",
56
- "@opentelemetry/semantic-conventions": "^1.34.0",
49
+ "@opentelemetry/api-logs": "^0.214.0",
50
+ "@opentelemetry/core": "^2.6.1",
51
+ "@opentelemetry/instrumentation": "^0.214.0",
52
+ "@opentelemetry/instrumentation-http": "^0.214.0",
53
+ "@opentelemetry/instrumentation-runtime-node": "^0.27.0",
54
+ "@opentelemetry/resources": "^2.6.1",
55
+ "@opentelemetry/sdk-logs": "^0.214.0",
56
+ "@opentelemetry/sdk-metrics": "^2.6.1",
57
+ "@opentelemetry/sdk-node": "^0.214.0",
58
+ "@opentelemetry/sdk-trace-base": "^2.6.1",
59
+ "@opentelemetry/sdk-trace-node": "^2.6.1",
60
+ "@opentelemetry/semantic-conventions": "^1.40.0",
57
61
  "@seald-io/nedb": "^4.1.2",
58
- "axios": "^1.12.2",
62
+ "axios": "^1.15.0",
59
63
  "cookie-parser": "^1.4.7",
60
- "cors": "^2.8.5",
61
- "dotenv": "^17.0.1",
64
+ "cors": "^2.8.6",
65
+ "dotenv": "^17.4.1",
62
66
  "dynamic-installer": "^2.0.0",
63
- "express": "^4.21.2",
64
- "globals": "^16.4.0",
65
- "import-from-string": "^0.0.4",
66
- "js-yaml": "^4.1.0",
67
- "jsonwebtoken": "^9.0.2",
67
+ "express": "^5.2.1",
68
+ "globals": "^17.4.0",
69
+ "import-from-string": "^0.0.5",
70
+ "js-yaml": "^4.1.1",
71
+ "jsonwebtoken": "^9.0.3",
68
72
  "lodash.merge": "^4.6.2",
69
- "minisearch": "^7.1.2",
70
- "openai": "^5.6.0",
73
+ "minisearch": "^7.2.0",
74
+ "openai": "^6.34.0",
71
75
  "uuid": "^13.0.0"
72
76
  },
73
77
  "devDependencies": {
74
- "@babel/cli": "^7.24.1",
75
- "@babel/core": "^7.24.4",
76
- "@babel/plugin-transform-class-properties": "^7.27.1",
77
- "@babel/plugin-transform-object-rest-spread": "^7.27.3",
78
- "@babel/preset-env": "^7.24.4",
79
- "@eslint/js": "^9.29.0",
80
- "@opentelemetry/api": "^1.9.0",
81
- "@types/cookie-parser": "^1.4.9",
78
+ "@eslint/js": "^9.39.4",
79
+ "@opentelemetry/api": "^1.9.1",
80
+ "@types/cookie-parser": "^1.4.10",
82
81
  "@types/cors": "^2.8.19",
83
- "@types/express": "^5.0.3",
82
+ "@types/express": "^5.0.6",
84
83
  "@types/js-yaml": "^4.0.9",
85
- "@types/jsonwebtoken": "^9.0.9",
84
+ "@types/jsonwebtoken": "^9.0.10",
86
85
  "@types/lodash.merge": "^4.6.9",
87
- "babel-plugin-add-module-exports": "^1.0.4",
88
- "babel-plugin-module-extension": "^0.1.3",
89
- "babel-plugin-transform-import-meta": "^2.3.3",
90
- "eslint": "^9.29.0",
86
+ "eslint": "^9.39.4",
91
87
  "eslint-plugin-import": "^2.32.0",
92
- "tsx": "^4.20.1",
93
- "typescript": "^5.9.3",
94
- "typescript-eslint": "^8.34.1",
95
- "vitest": "^3.2.4"
88
+ "tsx": "^4.21.0",
89
+ "typescript": "^6.0.2",
90
+ "typescript-eslint": "^8.58.1",
91
+ "vitest": "^4.1.3"
96
92
  }
97
93
  }
@@ -1 +0,0 @@
1
- import{j as s,B as l}from"./index-CERGVYZK.js";import{b as n,c as i,d as m}from"./card-DFAwwhN3.js";import{C as c}from"./chevron-up-Df9jMo1X.js";import{C as x}from"./chevron-down-CPsvsmqj.js";const p=({isOpen:a,onToggle:r,header:e,children:o,className:t})=>s.jsxs(n,{className:t,children:[s.jsxs(i,{className:"flex flex-row items-center justify-between cursor-pointer",onClick:r,children:[s.jsx("div",{children:e}),s.jsx(l,{variant:"ghost",size:"icon","aria-label":a?"Collapse":"Expand",tabIndex:-1,className:"ml-2",children:a?s.jsx(c,{className:"h-5 w-5"}):s.jsx(x,{className:"h-5 w-5"})})]}),a&&s.jsx(m,{children:o})]});export{p as C};
@@ -1 +0,0 @@
1
- import{r as a,j as e,I as M,B as g,a0 as F,t}from"./index-CERGVYZK.js";import{C as G,a as I}from"./card-DFAwwhN3.js";import{I as x}from"./input-Dzvg_ZEZ.js";import{L as r}from"./label-DuVnkZ4q.js";import{T as D,a as E,b as u,c as h,W as p}from"./tabs-_77MUUQe.js";import{S as P,a as O,b as R,c as V,d as W}from"./select-DhS8YUtJ.js";import{s as n,l as b}from"./severityOptions-O38dSOfk.js";import{C as B}from"./CollapsibleCard-B3KR_8mL.js";import"./chevron-down-CPsvsmqj.js";import"./chevron-up-Df9jMo1X.js";import"./circle-alert-DOPQPvU8.js";const H=[{value:"info",label:"Info",icon:n[2].icon},{value:"warn",label:"Warn",icon:n[3].icon},{value:"error",label:"Error",icon:n[4].icon},{value:"debug",label:"Debug",icon:n[1].icon}];function U(){const[j,f]=a.useState("custom"),[c,v]=a.useState("Hello Oas Telemetry!"),[i,N]=a.useState("info"),[m,k]=a.useState(1),[d,C]=a.useState(50),[l,o]=a.useState(!1),[w,L]=a.useState(!1),S=async()=>{o(!0);try{await b.generateCustomLog({log:c,method:i,repeat:m}),t.success("Log(s) generated. Please wait a few seconds for them to appear.")}catch{t.error("Failed to generate log(s).")}finally{o(!1)}},y=async()=>{o(!0);try{await b.generateMockLogs(d),t.success("Mock logs generation started.")}catch{t.error("Failed to generate mock logs.")}finally{o(!1)}};return e.jsx(B,{isOpen:w,onToggle:()=>L(s=>!s),header:e.jsxs(e.Fragment,{children:[e.jsxs(G,{className:"flex items-center gap-2",children:[e.jsx(p,{className:"h-5 w-5"}),"Log Generator"]}),e.jsx(I,{children:"Generate logs for testing and demonstration purposes."})]}),children:e.jsxs(D,{value:j,onValueChange:s=>f(s),children:[e.jsxs(E,{className:"mb-4 grid grid-cols-2 w-full",children:[e.jsx(u,{value:"custom",children:"Custom Log"}),e.jsx(u,{value:"mock",children:"Mock Logs"})]}),e.jsx(h,{value:"custom",children:e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("div",{children:[e.jsx(r,{htmlFor:"log-message",className:"mb-1 block",children:"Message"}),e.jsx(M,{id:"log-message",value:c,onChange:s=>v(s.target.value),placeholder:"Log text",disabled:l,className:"mb-2"})]}),e.jsxs("div",{className:"flex gap-4 flex-col sm:flex-row sm:items-end",children:[e.jsxs("div",{className:"flex gap-4 flex-row",children:[e.jsxs("div",{children:[e.jsx(r,{htmlFor:"log-method",className:"mb-1 block",children:"Method"}),e.jsxs(P,{value:i,onValueChange:N,disabled:l,children:[e.jsx(O,{className:"min-w-[120px]",children:e.jsx(R,{placeholder:"Method"})}),e.jsx(V,{children:H.map(s=>{const T=s.icon;return e.jsxs(W,{value:s.value,className:"flex items-center gap-2",children:[e.jsx(T,{className:"h-4 w-4 mr-1"}),s.label]},s.value)})})]})]}),e.jsxs("div",{children:[e.jsx(r,{htmlFor:"log-repeat",className:"mb-1 block",children:"Repeat"}),e.jsx(x,{id:"log-repeat",type:"number",min:1,value:m,onChange:s=>k(Number(s.target.value)),disabled:l,className:"w-20"})]})]}),e.jsxs(g,{onClick:S,disabled:l,children:[e.jsx(F,{className:"h-4 w-4 mr-2"}),"Generate"]})]})]})}),e.jsx(h,{value:"mock",children:e.jsxs("div",{className:"flex flex-col sm:flex-row gap-4 sm:items-end",children:[e.jsxs("div",{children:[e.jsx(r,{htmlFor:"mock-count",className:"mb-1 block",children:"Number of Mock Logs"}),e.jsx(x,{id:"mock-count",type:"number",min:1,value:d,onChange:s=>C(Number(s.target.value)),disabled:l,className:"w-32"})]}),e.jsxs(g,{onClick:y,disabled:l,className:"mt-2 sm:mt-0",children:[e.jsx(p,{className:"h-4 w-4 mr-2"}),"Generate Mock Logs"]})]})})]})})}function ee(){return e.jsx("div",{className:"min-h-screen bg-background",children:e.jsxs("main",{className:"container mx-auto px-4 py-4 md:py-8 space-y-4 md:space-y-6",children:[e.jsx("h1",{className:"text-2xl font-bold mb-2",children:"Dev Tools"}),e.jsx("p",{className:"text-muted-foreground mb-6",children:"Utilities for testing and development."}),e.jsx(U,{})]})})}export{ee as default};
@@ -1,6 +0,0 @@
1
- import{c as he,r as i,u as O,a as ve,j as t,P as W,b as te,d as ge,e as V,f as ye,g as ne,h as be,i as Ne,R as je,A as Ce,k as we,l as Ee,C as Te,m as Pe,n as Re,o as Oe,p as Y,F as X,M as De,W as Le,q as Ae,B as _e,s as Me,U as ke}from"./index-CERGVYZK.js";import{B as Se}from"./badge-CNq0-mH5.js";import{C as A,a as _,b as K,c as J,d as Q}from"./card-DFAwwhN3.js";import{L as Ie}from"./label-DuVnkZ4q.js";import{S as Fe}from"./switch-Z3mImG9n.js";import{u as Ue}from"./utilService-DNyqzwj0.js";/**
2
- * @license lucide-react v0.515.0 - ISC
3
- *
4
- * This source code is licensed under the ISC license.
5
- * See the LICENSE file in the root directory of this source tree.
6
- */const He=[["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"}]],F=he("external-link",He);function j(e,s,{checkForDefaultPrevented:n=!0}={}){return function(o){if(e==null||e(o),n===!1||!o.defaultPrevented)return s==null?void 0:s(o)}}var Be="DismissableLayer",U="dismissableLayer.update",We="dismissableLayer.pointerDownOutside",ze="dismissableLayer.focusOutside",Z,se=i.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),re=i.forwardRef((e,s)=>{const{disableOutsidePointerEvents:n=!1,onEscapeKeyDown:r,onPointerDownOutside:o,onFocusOutside:l,onInteractOutside:u,onDismiss:m,...d}=e,c=i.useContext(se),[a,x]=i.useState(null),f=(a==null?void 0:a.ownerDocument)??(globalThis==null?void 0:globalThis.document),[,p]=i.useState({}),v=O(s,h=>x(h)),g=Array.from(c.layers),[y]=[...c.layersWithOutsidePointerEventsDisabled].slice(-1),N=g.indexOf(y),b=a?g.indexOf(a):-1,w=c.layersWithOutsidePointerEventsDisabled.size>0,C=b>=N,E=qe(h=>{const L=h.target,q=[...c.branches].some(I=>I.contains(L));!C||q||(o==null||o(h),u==null||u(h),h.defaultPrevented||m==null||m())},f),P=Ve(h=>{const L=h.target;[...c.branches].some(I=>I.contains(L))||(l==null||l(h),u==null||u(h),h.defaultPrevented||m==null||m())},f);return ve(h=>{b===c.layers.size-1&&(r==null||r(h),!h.defaultPrevented&&m&&(h.preventDefault(),m()))},f),i.useEffect(()=>{if(a)return n&&(c.layersWithOutsidePointerEventsDisabled.size===0&&(Z=f.body.style.pointerEvents,f.body.style.pointerEvents="none"),c.layersWithOutsidePointerEventsDisabled.add(a)),c.layers.add(a),ee(),()=>{n&&c.layersWithOutsidePointerEventsDisabled.size===1&&(f.body.style.pointerEvents=Z)}},[a,f,n,c]),i.useEffect(()=>()=>{a&&(c.layers.delete(a),c.layersWithOutsidePointerEventsDisabled.delete(a),ee())},[a,c]),i.useEffect(()=>{const h=()=>p({});return document.addEventListener(U,h),()=>document.removeEventListener(U,h)},[]),t.jsx(W.div,{...d,ref:v,style:{pointerEvents:w?C?"auto":"none":void 0,...e.style},onFocusCapture:j(e.onFocusCapture,P.onFocusCapture),onBlurCapture:j(e.onBlurCapture,P.onBlurCapture),onPointerDownCapture:j(e.onPointerDownCapture,E.onPointerDownCapture)})});re.displayName=Be;var Ge="DismissableLayerBranch",$e=i.forwardRef((e,s)=>{const n=i.useContext(se),r=i.useRef(null),o=O(s,r);return i.useEffect(()=>{const l=r.current;if(l)return n.branches.add(l),()=>{n.branches.delete(l)}},[n.branches]),t.jsx(W.div,{...e,ref:o})});$e.displayName=Ge;function qe(e,s=globalThis==null?void 0:globalThis.document){const n=te(e),r=i.useRef(!1),o=i.useRef(()=>{});return i.useEffect(()=>{const l=m=>{if(m.target&&!r.current){let d=function(){oe(We,n,c,{discrete:!0})};const c={originalEvent:m};m.pointerType==="touch"?(s.removeEventListener("click",o.current),o.current=d,s.addEventListener("click",o.current,{once:!0})):d()}else s.removeEventListener("click",o.current);r.current=!1},u=window.setTimeout(()=>{s.addEventListener("pointerdown",l)},0);return()=>{window.clearTimeout(u),s.removeEventListener("pointerdown",l),s.removeEventListener("click",o.current)}},[s,n]),{onPointerDownCapture:()=>r.current=!0}}function Ve(e,s=globalThis==null?void 0:globalThis.document){const n=te(e),r=i.useRef(!1);return i.useEffect(()=>{const o=l=>{l.target&&!r.current&&oe(ze,n,{originalEvent:l},{discrete:!1})};return s.addEventListener("focusin",o),()=>s.removeEventListener("focusin",o)},[s,n]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}function ee(){const e=new CustomEvent(U);document.dispatchEvent(e)}function oe(e,s,n,{discrete:r}){const o=n.originalEvent.target,l=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});s&&o.addEventListener(e,s,{once:!0}),r?ge(o,l):o.dispatchEvent(l)}function Ye(e,s){return i.useReducer((n,r)=>s[n][r]??n,e)}var z=e=>{const{present:s,children:n}=e,r=Xe(s),o=typeof n=="function"?n({present:r.isPresent}):i.Children.only(n),l=O(r.ref,Ke(o));return typeof n=="function"||r.isPresent?i.cloneElement(o,{ref:l}):null};z.displayName="Presence";function Xe(e){const[s,n]=i.useState(),r=i.useRef(null),o=i.useRef(e),l=i.useRef("none"),u=e?"mounted":"unmounted",[m,d]=Ye(u,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return i.useEffect(()=>{const c=M(r.current);l.current=m==="mounted"?c:"none"},[m]),V(()=>{const c=r.current,a=o.current;if(a!==e){const f=l.current,p=M(c);e?d("MOUNT"):p==="none"||(c==null?void 0:c.display)==="none"?d("UNMOUNT"):d(a&&f!==p?"ANIMATION_OUT":"UNMOUNT"),o.current=e}},[e,d]),V(()=>{if(s){let c;const a=s.ownerDocument.defaultView??window,x=p=>{const g=M(r.current).includes(CSS.escape(p.animationName));if(p.target===s&&g&&(d("ANIMATION_END"),!o.current)){const y=s.style.animationFillMode;s.style.animationFillMode="forwards",c=a.setTimeout(()=>{s.style.animationFillMode==="forwards"&&(s.style.animationFillMode=y)})}},f=p=>{p.target===s&&(l.current=M(r.current))};return s.addEventListener("animationstart",f),s.addEventListener("animationcancel",x),s.addEventListener("animationend",x),()=>{a.clearTimeout(c),s.removeEventListener("animationstart",f),s.removeEventListener("animationcancel",x),s.removeEventListener("animationend",x)}}else d("ANIMATION_END")},[s,d]),{isPresent:["mounted","unmountSuspended"].includes(m),ref:i.useCallback(c=>{r.current=c?getComputedStyle(c):null,n(c)},[])}}function M(e){return(e==null?void 0:e.animationName)||"none"}function Ke(e){var r,o;let s=(r=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:r.get,n=s&&"isReactWarning"in s&&s.isReactWarning;return n?e.ref:(s=(o=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:o.get,n=s&&"isReactWarning"in s&&s.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var[k,Ot]=ye("Tooltip",[ne]),S=ne(),ae="TooltipProvider",Je=700,H="tooltip.open",[Qe,G]=k(ae),ie=e=>{const{__scopeTooltip:s,delayDuration:n=Je,skipDelayDuration:r=300,disableHoverableContent:o=!1,children:l}=e,u=i.useRef(!0),m=i.useRef(!1),d=i.useRef(0);return i.useEffect(()=>{const c=d.current;return()=>window.clearTimeout(c)},[]),t.jsx(Qe,{scope:s,isOpenDelayedRef:u,delayDuration:n,onOpen:i.useCallback(()=>{window.clearTimeout(d.current),u.current=!1},[]),onClose:i.useCallback(()=>{window.clearTimeout(d.current),d.current=window.setTimeout(()=>u.current=!0,r)},[r]),isPointerInTransitRef:m,onPointerInTransitChange:i.useCallback(c=>{m.current=c},[]),disableHoverableContent:o,children:l})};ie.displayName=ae;var R="Tooltip",[Ze,D]=k(R),le=e=>{const{__scopeTooltip:s,children:n,open:r,defaultOpen:o,onOpenChange:l,disableHoverableContent:u,delayDuration:m}=e,d=G(R,e.__scopeTooltip),c=S(s),[a,x]=i.useState(null),f=be(),p=i.useRef(0),v=u??d.disableHoverableContent,g=m??d.delayDuration,y=i.useRef(!1),[N,b]=Ne({prop:r,defaultProp:o??!1,onChange:h=>{h?(d.onOpen(),document.dispatchEvent(new CustomEvent(H))):d.onClose(),l==null||l(h)},caller:R}),w=i.useMemo(()=>N?y.current?"delayed-open":"instant-open":"closed",[N]),C=i.useCallback(()=>{window.clearTimeout(p.current),p.current=0,y.current=!1,b(!0)},[b]),E=i.useCallback(()=>{window.clearTimeout(p.current),p.current=0,b(!1)},[b]),P=i.useCallback(()=>{window.clearTimeout(p.current),p.current=window.setTimeout(()=>{y.current=!0,b(!0),p.current=0},g)},[g,b]);return i.useEffect(()=>()=>{p.current&&(window.clearTimeout(p.current),p.current=0)},[]),t.jsx(je,{...c,children:t.jsx(Ze,{scope:s,contentId:f,open:N,stateAttribute:w,trigger:a,onTriggerChange:x,onTriggerEnter:i.useCallback(()=>{d.isOpenDelayedRef.current?P():C()},[d.isOpenDelayedRef,P,C]),onTriggerLeave:i.useCallback(()=>{v?E():(window.clearTimeout(p.current),p.current=0)},[E,v]),onOpen:C,onClose:E,disableHoverableContent:v,children:n})})};le.displayName=R;var B="TooltipTrigger",ce=i.forwardRef((e,s)=>{const{__scopeTooltip:n,...r}=e,o=D(B,n),l=G(B,n),u=S(n),m=i.useRef(null),d=O(s,m,o.onTriggerChange),c=i.useRef(!1),a=i.useRef(!1),x=i.useCallback(()=>c.current=!1,[]);return i.useEffect(()=>()=>document.removeEventListener("pointerup",x),[x]),t.jsx(Ce,{asChild:!0,...u,children:t.jsx(W.button,{"aria-describedby":o.open?o.contentId:void 0,"data-state":o.stateAttribute,...r,ref:d,onPointerMove:j(e.onPointerMove,f=>{f.pointerType!=="touch"&&!a.current&&!l.isPointerInTransitRef.current&&(o.onTriggerEnter(),a.current=!0)}),onPointerLeave:j(e.onPointerLeave,()=>{o.onTriggerLeave(),a.current=!1}),onPointerDown:j(e.onPointerDown,()=>{o.open&&o.onClose(),c.current=!0,document.addEventListener("pointerup",x,{once:!0})}),onFocus:j(e.onFocus,()=>{c.current||o.onOpen()}),onBlur:j(e.onBlur,o.onClose),onClick:j(e.onClick,o.onClose)})})});ce.displayName=B;var $="TooltipPortal",[et,tt]=k($,{forceMount:void 0}),de=e=>{const{__scopeTooltip:s,forceMount:n,children:r,container:o}=e,l=D($,s);return t.jsx(et,{scope:s,forceMount:n,children:t.jsx(z,{present:n||l.open,children:t.jsx(we,{asChild:!0,container:o,children:r})})})};de.displayName=$;var T="TooltipContent",ue=i.forwardRef((e,s)=>{const n=tt(T,e.__scopeTooltip),{forceMount:r=n.forceMount,side:o="top",...l}=e,u=D(T,e.__scopeTooltip);return t.jsx(z,{present:r||u.open,children:u.disableHoverableContent?t.jsx(me,{side:o,...l,ref:s}):t.jsx(nt,{side:o,...l,ref:s})})}),nt=i.forwardRef((e,s)=>{const n=D(T,e.__scopeTooltip),r=G(T,e.__scopeTooltip),o=i.useRef(null),l=O(s,o),[u,m]=i.useState(null),{trigger:d,onClose:c}=n,a=o.current,{onPointerInTransitChange:x}=r,f=i.useCallback(()=>{m(null),x(!1)},[x]),p=i.useCallback((v,g)=>{const y=v.currentTarget,N={x:v.clientX,y:v.clientY},b=at(N,y.getBoundingClientRect()),w=it(N,b),C=lt(g.getBoundingClientRect()),E=dt([...w,...C]);m(E),x(!0)},[x]);return i.useEffect(()=>()=>f(),[f]),i.useEffect(()=>{if(d&&a){const v=y=>p(y,a),g=y=>p(y,d);return d.addEventListener("pointerleave",v),a.addEventListener("pointerleave",g),()=>{d.removeEventListener("pointerleave",v),a.removeEventListener("pointerleave",g)}}},[d,a,p,f]),i.useEffect(()=>{if(u){const v=g=>{const y=g.target,N={x:g.clientX,y:g.clientY},b=(d==null?void 0:d.contains(y))||(a==null?void 0:a.contains(y)),w=!ct(N,u);b?f():w&&(f(),c())};return document.addEventListener("pointermove",v),()=>document.removeEventListener("pointermove",v)}},[d,a,u,c,f]),t.jsx(me,{...e,ref:l})}),[st,rt]=k(R,{isInside:!1}),ot=Pe("TooltipContent"),me=i.forwardRef((e,s)=>{const{__scopeTooltip:n,children:r,"aria-label":o,onEscapeKeyDown:l,onPointerDownOutside:u,...m}=e,d=D(T,n),c=S(n),{onClose:a}=d;return i.useEffect(()=>(document.addEventListener(H,a),()=>document.removeEventListener(H,a)),[a]),i.useEffect(()=>{if(d.trigger){const x=f=>{const p=f.target;p!=null&&p.contains(d.trigger)&&a()};return window.addEventListener("scroll",x,{capture:!0}),()=>window.removeEventListener("scroll",x,{capture:!0})}},[d.trigger,a]),t.jsx(re,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:l,onPointerDownOutside:u,onFocusOutside:x=>x.preventDefault(),onDismiss:a,children:t.jsxs(Te,{"data-state":d.stateAttribute,...c,...m,ref:s,style:{...m.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[t.jsx(ot,{children:r}),t.jsx(st,{scope:n,isInside:!0,children:t.jsx(Re,{id:d.contentId,role:"tooltip",children:o||r})})]})})});ue.displayName=T;var pe="TooltipArrow",xe=i.forwardRef((e,s)=>{const{__scopeTooltip:n,...r}=e,o=S(n);return rt(pe,n).isInside?null:t.jsx(Ee,{...o,...r,ref:s})});xe.displayName=pe;function at(e,s){const n=Math.abs(s.top-e.y),r=Math.abs(s.bottom-e.y),o=Math.abs(s.right-e.x),l=Math.abs(s.left-e.x);switch(Math.min(n,r,o,l)){case l:return"left";case o:return"right";case n:return"top";case r:return"bottom";default:throw new Error("unreachable")}}function it(e,s,n=5){const r=[];switch(s){case"top":r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case"bottom":r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case"left":r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case"right":r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n});break}return r}function lt(e){const{top:s,right:n,bottom:r,left:o}=e;return[{x:o,y:s},{x:n,y:s},{x:n,y:r},{x:o,y:r}]}function ct(e,s){const{x:n,y:r}=e;let o=!1;for(let l=0,u=s.length-1;l<s.length;u=l++){const m=s[l],d=s[u],c=m.x,a=m.y,x=d.x,f=d.y;a>r!=f>r&&n<(x-c)*(r-a)/(f-a)+c&&(o=!o)}return o}function dt(e){const s=e.slice();return s.sort((n,r)=>n.x<r.x?-1:n.x>r.x?1:n.y<r.y?-1:n.y>r.y?1:0),ut(s)}function ut(e){if(e.length<=1)return e.slice();const s=[];for(let r=0;r<e.length;r++){const o=e[r];for(;s.length>=2;){const l=s[s.length-1],u=s[s.length-2];if((l.x-u.x)*(o.y-u.y)>=(l.y-u.y)*(o.x-u.x))s.pop();else break}s.push(o)}s.pop();const n=[];for(let r=e.length-1;r>=0;r--){const o=e[r];for(;n.length>=2;){const l=n[n.length-1],u=n[n.length-2];if((l.x-u.x)*(o.y-u.y)>=(l.y-u.y)*(o.x-u.x))n.pop();else break}n.push(o)}return n.pop(),s.length===1&&n.length===1&&s[0].x===n[0].x&&s[0].y===n[0].y?s:s.concat(n)}var mt=ie,pt=le,xt=ce,ft=de,ht=ue,vt=xe;function fe({delayDuration:e=0,...s}){return t.jsx(mt,{"data-slot":"tooltip-provider",delayDuration:e,...s})}function gt({...e}){return t.jsx(fe,{children:t.jsx(pt,{"data-slot":"tooltip",...e})})}function yt({...e}){return t.jsx(xt,{"data-slot":"tooltip-trigger",...e})}function bt({className:e,sideOffset:s=0,children:n,...r}){return t.jsx(ft,{children:t.jsxs(ht,{"data-slot":"tooltip-content",sideOffset:s,className:Oe("bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance",e),...r,children:[n,t.jsx(vt,{className:"bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]"})]})})}const Nt=e=>{switch(e){case"INFO":return"bg-blue-100 text-blue-800 border-blue-200";case"WARN":return"bg-yellow-100 text-yellow-800 border-yellow-200";case"ERROR":return"bg-red-100 text-red-800 border-red-200";default:return"bg-gray-100 text-gray-800 border-gray-200"}};function jt({content:e,timestamp:s,isUser:n}){return t.jsxs("div",{className:`flex items-end gap-2 ${n?"justify-end":"justify-start"}`,children:[!n&&t.jsx("div",{className:"flex-shrink-0 w-7 h-7 rounded-full border m-1 p-1 flex items-center justify-center",children:t.jsx(Me,{className:"w-4 h-4"})}),t.jsxs("div",{className:`max-w-[70%] rounded-md px-2 py-1 break-words ${n?"bg-primary text-primary-foreground":"bg-muted text-foreground"} text-xs`,children:[e,t.jsx("span",{className:"text-[10px] opacity-60 mt-0.5 block",children:s.toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit"})})]}),n&&t.jsx("div",{className:"flex-shrink-0 w-7 h-7 rounded-full border m-1 p-1 flex items-center justify-center",children:t.jsx(ke,{className:"w-4 h-4"})})]})}function Dt(){Y();const[e,s]=i.useState(null),[n,r]=i.useState(!1);i.useEffect(()=>{o()},[]),i.useEffect(()=>{if(!n)return;const a=setInterval(o,2e3);return()=>clearInterval(a)},[n]);const o=async()=>{try{const a=await Ue.getHeapStats();s(a)}catch(a){console.error("Failed to load heap stats:",a)}},l=[{level:"INFO",message:"Server started on port 3000",time:"12:30:00"},{level:"WARN",message:"High memory usage detected",time:"12:32:15"},{level:"ERROR",message:"Database connection timeout",time:"12:33:42"},{level:"ERROR",message:"Endpoint /api/v1/orders failed with status 500",time:"12:34:10"},{level:"WARN",message:"Slow response detected on /api/v1/users",time:"12:34:30"}],u=[{role:"user",content:"What happened in the last error?",timestamp:new Date(Date.now()-6e4)},{role:"assistant",content:"The last error was a database connection timeout at 12:33.",timestamp:new Date(Date.now()-3e4)},{role:"user",content:"Any critical issues?",timestamp:new Date(Date.now()-2e4)},{role:"assistant",content:"Detected that endpoint /api/v1/orders consistently generates error logs.",timestamp:new Date}],m=[{key:"logs",to:"/logs",hoverMessage:"Go to logs page",header:t.jsxs(t.Fragment,{children:[t.jsxs(A,{className:"flex items-center gap-2",children:[t.jsx(X,{className:"h-5 w-5 text-purple-600"}),"Logs",t.jsx(F,{className:"h-4 w-4 text-gray-400"})]}),t.jsx(_,{children:"Latest system events and messages."})]}),content:t.jsx("div",{className:"space-y-3",children:l.map((a,x)=>t.jsxs("div",{className:"flex items-start gap-2 text-xs",children:[t.jsx(Se,{className:`${Nt(a.level)} border rounded-sm text-xs`,children:a.level}),t.jsxs("div",{className:"flex-1",children:[t.jsx("div",{className:"text-gray-900",children:a.message}),t.jsx("div",{className:"text-gray-500 text-[10px]",children:a.time})]})]},x))})},{key:"chat",to:"/chat",hoverMessage:"Go to chat page",header:t.jsxs(t.Fragment,{children:[t.jsxs(A,{className:"flex items-center gap-2",children:[t.jsx(De,{className:"h-5 w-5 text-blue-600"}),"AI Chat",t.jsx(F,{className:"h-4 w-4 text-gray-400"})]}),t.jsx(_,{children:"Ask the AI about logs and server requests."})]}),content:t.jsx("div",{className:"space-y-2",children:u.map((a,x)=>t.jsx(jt,{content:a.content,timestamp:a.timestamp,isUser:a.role==="user"},x))})},{key:"plugins",to:"/plugins",hoverMessage:"Go to plugins page",header:t.jsxs(t.Fragment,{children:[t.jsxs(A,{className:"flex items-center gap-2",children:[t.jsx(Ae,{className:"h-5 w-5 text-green-600"}),"Plugin System",t.jsx(F,{className:"h-4 w-4 text-gray-400"})]}),t.jsx(_,{children:"Extend telemetry with custom plugins."})]}),content:t.jsxs("div",{className:"flex flex-col gap-2",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(Le,{className:"h-4 w-4 text-yellow-700"}),t.jsx("span",{className:"font-semibold text-sm",children:"Error Detector Plugin"})]}),t.jsx("div",{className:"text-xs text-muted-foreground",children:"Monitors logs and traces for critical errors and sends notifications."}),t.jsxs("div",{className:"bg-gray-100 rounded p-2 mt-2 text-xs font-mono",children:[t.jsx("span",{className:"text-green-700",children:"Plugin active"}),": ",t.jsx("span",{className:"text-gray-700",children:'Detects "ERROR" logs and alerts team.'})]}),t.jsxs("div",{className:"bg-gray-100 rounded p-2 text-xs font-mono",children:[t.jsx("span",{className:"text-blue-700",children:"Plugin detected"}),": ",t.jsx("span",{className:"text-gray-700",children:"5 logs of error caused by the same endpoint."})]}),t.jsxs("div",{className:"bg-gray-100 rounded p-2 text-xs font-mono",children:[t.jsx("span",{className:"text-purple-700",children:"Plugin info"}),": ",t.jsx("span",{className:"text-gray-700",children:"No critical errors detected in the last 24h."})]})]})}];function d({children:a,header:x,hoverMessage:f,to:p}){const[v,g]=i.useState(!1),y=Y();return t.jsxs(K,{className:"relative group cursor-pointer",tabIndex:0,role:"button",onClick:()=>y(p),onMouseEnter:()=>g(!0),onMouseLeave:()=>g(!1),children:[t.jsx(J,{children:x}),t.jsxs(Q,{className:"relative min-h-[260px] rounded-lg overflow-hidden flex flex-col justify-center px-10",children:[a,t.jsx("div",{className:`absolute inset-0 flex items-center justify-center z-10 transition-opacity duration-200 rounded-lg mx-6 ${v?"bg-gray-900 opacity-100":"bg-gray-900 opacity-5"}`,children:t.jsx("span",{className:"text-white font-semibold text-lg transition-opacity duration-200",children:v?f:""})})]})]})}function c(){return t.jsx("div",{className:"flex flex-col gap-8 xl:grid xl:grid-cols-3 xl:gap-8 ",children:m.map(a=>t.jsx(d,{header:a.header,hoverMessage:a.hoverMessage,to:a.to,children:a.content},a.key))})}return t.jsx("div",{className:"min-h-screen bg-gray-50",children:t.jsx(fe,{children:t.jsx("section",{className:"py-16",children:t.jsxs("div",{className:"container mx-auto px-6",children:[t.jsxs(K,{children:[t.jsxs(J,{children:[t.jsxs(A,{className:"flex items-center gap-2",children:[t.jsx(X,{className:"h-5 w-5"}),"Heap Statistics"]}),t.jsx(_,{children:"Memory usage and performance metrics"})]}),t.jsxs(Q,{children:[t.jsxs("div",{className:"flex items-center justify-between mb-4",children:[t.jsxs("div",{className:"flex items-center space-x-2",children:[t.jsx(Fe,{id:"auto-update-heap",checked:n,onCheckedChange:r}),t.jsxs(Ie,{htmlFor:"auto-update-heap",children:["Auto Update: ",n?"Enabled":"Manual"]})]}),t.jsxs(gt,{children:[t.jsx(yt,{asChild:!0,children:t.jsx(_e,{onClick:o,variant:"outline",size:"sm",disabled:n,className:n?"opacity-50 cursor-not-allowed":"",children:"Update"})}),t.jsx(bt,{children:n?"Disabled while auto update is enabled":"Click to manually update heap stats"})]})]}),e&&t.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4",children:[t.jsxs("div",{className:"bg-blue-50 p-4 rounded-lg",children:[t.jsx("div",{className:"text-sm font-medium text-blue-600",children:"Used Heap"}),t.jsxs("div",{className:"text-2xl font-bold text-blue-900",children:[e.used_heap_size.toFixed(2)," ",e.units]})]}),t.jsxs("div",{className:"bg-green-50 p-4 rounded-lg",children:[t.jsx("div",{className:"text-sm font-medium text-green-600",children:"Total Heap"}),t.jsxs("div",{className:"text-2xl font-bold text-green-900",children:[e.total_heap_size.toFixed(2)," ",e.units]})]}),t.jsxs("div",{className:"bg-yellow-50 p-4 rounded-lg",children:[t.jsx("div",{className:"text-sm font-medium text-yellow-600",children:"Available"}),t.jsxs("div",{className:"text-2xl font-bold text-yellow-900",children:[e.total_available_size.toFixed(2)," ",e.units]})]}),t.jsxs("div",{className:"bg-purple-50 p-4 rounded-lg",children:[t.jsx("div",{className:"text-sm font-medium text-purple-600",children:"External Memory"}),t.jsxs("div",{className:"text-2xl font-bold text-purple-900",children:[e.external_memory.toFixed(2)," ",e.units]})]}),t.jsxs("div",{className:"bg-red-50 p-4 rounded-lg",children:[t.jsx("div",{className:"text-sm font-medium text-red-600",children:"Heap Limit"}),t.jsxs("div",{className:"text-2xl font-bold text-red-900",children:[e.heap_size_limit.toFixed(2)," ",e.units]})]}),t.jsxs("div",{className:"bg-indigo-50 p-4 rounded-lg",children:[t.jsx("div",{className:"text-sm font-medium text-indigo-600",children:"Peak Malloc"}),t.jsxs("div",{className:"text-2xl font-bold text-indigo-900",children:[e.peak_malloced_memory.toFixed(2)," ",e.units]})]}),t.jsxs("div",{className:"bg-pink-50 p-4 rounded-lg",children:[t.jsx("div",{className:"text-sm font-medium text-pink-600",children:"Native Contexts"}),t.jsx("div",{className:"text-2xl font-bold text-pink-900",children:e.number_of_native_contexts})]}),t.jsxs("div",{className:"bg-cyan-50 p-4 rounded-lg",children:[t.jsx("div",{className:"text-sm font-medium text-cyan-600",children:"Global Handles"}),t.jsxs("div",{className:"text-2xl font-bold text-cyan-900",children:[e.used_global_handles_size.toFixed(3)," ",e.units]})]})]})]})]}),t.jsx("div",{className:"mt-10"}),t.jsx(c,{})]})})})})}export{Dt as default};