UNPKG

miniflare

Version:

Fun, full-featured, fully-local simulator for Cloudflare Workers

1 lines 11.8 kB
import{c as e,s as t,z as n}from"./useRouterState-DkU0JPAO.js";import{Bt as r,Ut as i,Vt as a,n as o,r as s,t as c}from"./button-cdxnqcgzwko8ooha-DW4HgSd6.js";import{t as l}from"./Copy.es-Bz99FhyZ.js";import{C as u,E as d,S as f,n as p,p as m,s as h,u as g,w as _,x as v}from"./observability-OhToSqn-.js";import{t as y}from"./X.es-Cti8Pwro.js";import{t as b}from"./input-group-lxdd09p60cf27pe1-FmDFsFZv.js";import{t as x}from"./select-kva5ru5f673kah1m-DMJc8LO6.js";import{At as S,Mt as C,Ot as w,nt as T,zt as E}from"./index-CkemaNd1.js";var D=n(t(),1),O=new Map([[`bold`,D.createElement(D.Fragment,null,D.createElement(`path`,{d:`M160,116h48a20,20,0,0,0,20-20V48a20,20,0,0,0-20-20H160a20,20,0,0,0-20,20V60H128a28,28,0,0,0-28,28v28H76v-4A20,20,0,0,0,56,92H24A20,20,0,0,0,4,112v32a20,20,0,0,0,20,20H56a20,20,0,0,0,20-20v-4h24v28a28,28,0,0,0,28,28h12v12a20,20,0,0,0,20,20h48a20,20,0,0,0,20-20V160a20,20,0,0,0-20-20H160a20,20,0,0,0-20,20v12H128a4,4,0,0,1-4-4V88a4,4,0,0,1,4-4h12V96A20,20,0,0,0,160,116ZM52,140H28V116H52Zm112,24h40v40H164Zm0-112h40V92H164Z`}))],[`duotone`,D.createElement(D.Fragment,null,D.createElement(`path`,{d:`M64,112v32a8,8,0,0,1-8,8H24a8,8,0,0,1-8-8V112a8,8,0,0,1,8-8H56A8,8,0,0,1,64,112ZM208,40H160a8,8,0,0,0-8,8V96a8,8,0,0,0,8,8h48a8,8,0,0,0,8-8V48A8,8,0,0,0,208,40Zm0,112H160a8,8,0,0,0-8,8v48a8,8,0,0,0,8,8h48a8,8,0,0,0,8-8V160A8,8,0,0,0,208,152Z`,opacity:`0.2`}),D.createElement(`path`,{d:`M160,112h48a16,16,0,0,0,16-16V48a16,16,0,0,0-16-16H160a16,16,0,0,0-16,16V64H128a24,24,0,0,0-24,24v32H72v-8A16,16,0,0,0,56,96H24A16,16,0,0,0,8,112v32a16,16,0,0,0,16,16H56a16,16,0,0,0,16-16v-8h32v32a24,24,0,0,0,24,24h16v16a16,16,0,0,0,16,16h48a16,16,0,0,0,16-16V160a16,16,0,0,0-16-16H160a16,16,0,0,0-16,16v16H128a8,8,0,0,1-8-8V88a8,8,0,0,1,8-8h16V96A16,16,0,0,0,160,112ZM56,144H24V112H56v32Zm104,16h48v48H160Zm0-112h48V96H160Z`}))],[`fill`,D.createElement(D.Fragment,null,D.createElement(`path`,{d:`M144,96V80H128a8,8,0,0,0-8,8v80a8,8,0,0,0,8,8h16V160a16,16,0,0,1,16-16h48a16,16,0,0,1,16,16v48a16,16,0,0,1-16,16H160a16,16,0,0,1-16-16V192H128a24,24,0,0,1-24-24V136H72v8a16,16,0,0,1-16,16H24A16,16,0,0,1,8,144V112A16,16,0,0,1,24,96H56a16,16,0,0,1,16,16v8h32V88a24,24,0,0,1,24-24h16V48a16,16,0,0,1,16-16h48a16,16,0,0,1,16,16V96a16,16,0,0,1-16,16H160A16,16,0,0,1,144,96Z`}))],[`light`,D.createElement(D.Fragment,null,D.createElement(`path`,{d:`M160,110h48a14,14,0,0,0,14-14V48a14,14,0,0,0-14-14H160a14,14,0,0,0-14,14V66H128a22,22,0,0,0-22,22v34H70V112A14,14,0,0,0,56,98H24a14,14,0,0,0-14,14v32a14,14,0,0,0,14,14H56a14,14,0,0,0,14-14V134h36v34a22,22,0,0,0,22,22h18v18a14,14,0,0,0,14,14h48a14,14,0,0,0,14-14V160a14,14,0,0,0-14-14H160a14,14,0,0,0-14,14v18H128a10,10,0,0,1-10-10V88a10,10,0,0,1,10-10h18V96A14,14,0,0,0,160,110ZM58,144a2,2,0,0,1-2,2H24a2,2,0,0,1-2-2V112a2,2,0,0,1,2-2H56a2,2,0,0,1,2,2Zm100,16a2,2,0,0,1,2-2h48a2,2,0,0,1,2,2v48a2,2,0,0,1-2,2H160a2,2,0,0,1-2-2Zm0-112a2,2,0,0,1,2-2h48a2,2,0,0,1,2,2V96a2,2,0,0,1-2,2H160a2,2,0,0,1-2-2Z`}))],[`regular`,D.createElement(D.Fragment,null,D.createElement(`path`,{d:`M160,112h48a16,16,0,0,0,16-16V48a16,16,0,0,0-16-16H160a16,16,0,0,0-16,16V64H128a24,24,0,0,0-24,24v32H72v-8A16,16,0,0,0,56,96H24A16,16,0,0,0,8,112v32a16,16,0,0,0,16,16H56a16,16,0,0,0,16-16v-8h32v32a24,24,0,0,0,24,24h16v16a16,16,0,0,0,16,16h48a16,16,0,0,0,16-16V160a16,16,0,0,0-16-16H160a16,16,0,0,0-16,16v16H128a8,8,0,0,1-8-8V88a8,8,0,0,1,8-8h16V96A16,16,0,0,0,160,112ZM56,144H24V112H56v32Zm104,16h48v48H160Zm0-112h48V96H160Z`}))],[`thin`,D.createElement(D.Fragment,null,D.createElement(`path`,{d:`M160,108h48a12,12,0,0,0,12-12V48a12,12,0,0,0-12-12H160a12,12,0,0,0-12,12V68H128a20,20,0,0,0-20,20v36H68V112a12,12,0,0,0-12-12H24a12,12,0,0,0-12,12v32a12,12,0,0,0,12,12H56a12,12,0,0,0,12-12V132h40v36a20,20,0,0,0,20,20h20v20a12,12,0,0,0,12,12h48a12,12,0,0,0,12-12V160a12,12,0,0,0-12-12H160a12,12,0,0,0-12,12v20H128a12,12,0,0,1-12-12V88a12,12,0,0,1,12-12h20V96A12,12,0,0,0,160,108ZM60,144a4,4,0,0,1-4,4H24a4,4,0,0,1-4-4V112a4,4,0,0,1,4-4H56a4,4,0,0,1,4,4Zm96,16a4,4,0,0,1,4-4h48a4,4,0,0,1,4,4v48a4,4,0,0,1-4,4H160a4,4,0,0,1-4-4Zm0-112a4,4,0,0,1,4-4h48a4,4,0,0,1,4,4V96a4,4,0,0,1-4,4H160a4,4,0,0,1-4-4Z`}))]]),k=D.forwardRef((e,t)=>D.createElement(r,{ref:t,...e,weights:O}));k.displayName=`TreeStructureIcon`;var A=e(),j=[{key:`service`,label:`Service`,type:`string`},{key:`operation`,label:`Operation`,type:`string`},{key:`message`,label:`Message`,type:`string`},{key:`level`,label:`Level`,type:`string`}],M={error:`Error`,warn:`Warn`,info:`Info`,debug:`Debug`},N=i(c);function P(e){if(!e)return null;try{return JSON.parse(e)}catch{return e}}function F(e){switch(e){case`error`:return`bg-red-500/15 text-red-500`;case`warn`:return`bg-amber-500/15 text-amber-600 dark:text-amber-400`;case`debug`:return`bg-gray-500/15 text-kumo-subtle`;default:return`bg-blue-500/15 text-blue-600 dark:text-blue-400`}}function I(){let[e,t]=(0,D.useState)([]),[n,r]=(0,D.useState)(!1),[i,a]=(0,D.useState)(null),[s,c]=(0,D.useState)(!1),[l,h]=(0,D.useState)(!1),[w,T]=(0,D.useState)(null),[E,O]=(0,D.useState)(``),[k,N]=(0,D.useState)(``),[P,F]=(0,D.useState)(`all`),[I,z]=(0,D.useState)([]),B=E!==k,V=(0,D.useCallback)(()=>N(E),[E]),H=(0,D.useCallback)(()=>{O(``),N(``)},[]),U=(0,D.useCallback)(async()=>{r(!0),a(null);try{let e=_(k);t(await m({search:e.text,level:e.level??P,operation:e.operation,traceId:e.traceId,spanId:e.spanId,clauses:I})),c(!1)}catch(e){g(e)?(c(!0),a(null)):a(e instanceof Error?e.message:`Failed to load events`)}finally{r(!1)}},[k,P,I]),W=(0,D.useCallback)(async()=>{h(!0);try{await p(),T(null),await U()}catch(e){a(e instanceof Error?e.message:`Failed to clear data`)}finally{h(!1)}},[U]);return(0,D.useEffect)(()=>{U()},[U]),(0,D.useEffect)(()=>{if(s)return;let e=setInterval(()=>void U(),3e3);return()=>clearInterval(e)},[U,s]),s?(0,A.jsx)(f,{}):(0,A.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,A.jsxs)(`header`,{className:`flex min-h-14 items-center gap-2.5 border-b border-kumo-fill px-6`,children:[(0,A.jsx)(S,{size:18,className:`text-kumo-subtle`}),(0,A.jsxs)(`div`,{className:`flex flex-col`,children:[(0,A.jsx)(`span`,{className:`pl-1 text-sm leading-tight font-semibold text-kumo-default`,children:`Events`}),(0,A.jsxs)(`span`,{className:`pl-1 text-[11px] leading-tight text-kumo-subtle`,children:[e.length,` event`,e.length===1?``:`s`]})]}),(0,A.jsx)(`div`,{className:`flex-1`}),(0,A.jsx)(d,{onConfirm:W,loading:l,disabled:e.length===0}),(0,A.jsx)(o,{size:`sm`,"aria-label":`Refresh events`,loading:n,onClick:()=>void U()})]}),(0,A.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-kumo-fill px-6 py-3`,children:[(0,A.jsxs)(b,{size:`sm`,className:`flex-1`,children:[(0,A.jsx)(`div`,{className:`flex items-center justify-center pl-2 text-kumo-subtle`,children:(0,A.jsx)(C,{size:14})}),(0,A.jsx)(`input`,{"aria-label":`Search events`,value:E,onChange:e=>O(e.currentTarget.value),onKeyDown:e=>{e.key===`Enter`&&V()},placeholder:`Search, or query e.g. level:error op:/checkout timeout — press Enter`,className:`w-full bg-transparent px-2 text-xs text-kumo-default outline-none placeholder:text-kumo-subtle`}),E?(0,A.jsx)(b.Button,{shape:`square`,variant:`ghost`,"aria-label":`Clear search`,onClick:H,children:(0,A.jsx)(y,{size:12})}):null]}),(0,A.jsx)(v,{variant:`events`}),(0,A.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs text-kumo-subtle`,children:[`Level`,(0,A.jsxs)(x,{"aria-label":`Filter by level`,value:P,onValueChange:e=>F(String(e)),renderValue:e=>e===`all`?(0,A.jsx)(`span`,{className:`text-kumo-subtle`,children:`Any`}):M[String(e)],children:[(0,A.jsx)(x.Option,{value:`all`,children:`Any level`}),(0,A.jsx)(x.Option,{value:`error`,children:`Error`}),(0,A.jsx)(x.Option,{value:`warn`,children:`Warn`}),(0,A.jsx)(x.Option,{value:`info`,children:`Info`}),(0,A.jsx)(x.Option,{value:`debug`,children:`Debug`})]})]}),(0,A.jsx)(u,{fields:j,clauses:I,onApply:z,itemNoun:`events`})]}),(0,A.jsxs)(`div`,{className:`flex-1 overflow-y-auto px-6 py-5`,children:[i?(0,A.jsx)(`div`,{className:`mb-3 rounded bg-red-500/10 px-3 py-2 text-xs text-red-500`,children:i}):null,(0,A.jsx)(`div`,{className:`overflow-hidden rounded-lg border border-kumo-fill bg-kumo-base`,children:e.length===0&&!n&&!B?E||P!==`all`||I.length>0?(0,A.jsx)(R,{title:`No matching events`,body:`No events match your current search or filters. Try clearing them.`,inline:!0}):(0,A.jsx)(R,{title:`No events yet`,body:`Send some requests to your Worker; any console.log output will show up here.`,inline:!0}):(0,A.jsxs)(`table`,{className:`w-full border-collapse text-sm`,children:[(0,A.jsx)(`thead`,{children:(0,A.jsxs)(`tr`,{className:`border-b border-kumo-fill text-left text-xs text-kumo-subtle`,children:[(0,A.jsx)(`th`,{className:`w-52 py-2 pr-3 pl-4 font-medium`,children:`Timestamp`}),(0,A.jsx)(`th`,{className:`w-20 py-2 pr-3 font-medium`,children:`Level`}),(0,A.jsx)(`th`,{className:`py-2 pr-3 font-medium`,children:`Message`}),(0,A.jsx)(`th`,{className:`w-48 py-2 pr-3 font-medium`,children:`Service`}),(0,A.jsx)(`th`,{className:`w-28 py-2 pr-3 font-medium`,children:`Trace`})]})}),(0,A.jsx)(`tbody`,{children:e.map(e=>{let t=`${e.trace_id}-${e.seq}`,n=w===t;return(0,A.jsx)(L,{event:e,isOpen:n,onToggle:()=>T(n?null:t)},t)})})]})})]})]})}function L({event:e,isOpen:t,onToggle:n}){let r=w(),i=E({strict:!1,select:e=>e.worker}),o=(0,D.useMemo)(()=>{let t={timestamp:e.created_at,level:e.level,service:e.service,operation:e.operation,trace_id:e.trace_id,span_id:e.span_id,offset_ms:e.ts_ms,message:P(e.message)};return JSON.stringify(t,null,2)},[e]),c=(0,D.useCallback)(async()=>{try{await T(o),r.add({title:`Copied to clipboard`,variant:`success`})}catch{r.add({title:`Failed to copy to clipboard`,description:`Something went wrong when trying to copy the event JSON.`,variant:`default`})}},[o,r]);return(0,A.jsxs)(A.Fragment,{children:[(0,A.jsxs)(`tr`,{onClick:n,className:a(`cursor-pointer border-b border-kumo-fill hover:bg-black/[0.03] dark:hover:bg-white/5`,t&&`bg-blue-100 dark:bg-blue-900/30`),children:[(0,A.jsxs)(`td`,{className:`py-2 pr-3 pl-4 font-mono text-xs text-kumo-default`,children:[e.created_at??``,(0,A.jsx)(`span`,{className:`text-kumo-subtle`,children:` UTC`})]}),(0,A.jsx)(`td`,{className:`py-2 pr-3`,children:(0,A.jsx)(`span`,{className:a(`rounded px-1.5 py-0.5 text-[10px] font-medium uppercase`,F(e.level)),children:e.level??`log`})}),(0,A.jsx)(`td`,{className:`truncate py-2 pr-3 font-mono text-xs text-kumo-default`,children:h(e.message??void 0)||(0,A.jsx)(`span`,{className:`text-kumo-subtle italic`,children:`(no message)`})}),(0,A.jsx)(`td`,{className:`py-2 pr-3 font-mono text-xs text-kumo-subtle`,children:e.service??`-`}),(0,A.jsx)(`td`,{className:`py-2 pr-3`,children:e.span_id?(0,A.jsx)(N,{to:`/observability`,search:{worker:i,trace:e.trace_id,span:e.span_id},size:`sm`,variant:`secondary`,icon:k,title:`Open this event's trace in the Traces view`,onClick:e=>e.stopPropagation(),children:`View trace`}):null})]}),t?(0,A.jsx)(`tr`,{className:`bg-kumo-base`,children:(0,A.jsx)(`td`,{colSpan:5,className:`px-4 py-3`,children:(0,A.jsxs)(`div`,{className:`relative rounded-lg border border-kumo-fill bg-kumo-elevated p-3`,children:[(0,A.jsx)(s,{size:`sm`,shape:`square`,variant:`ghost`,icon:l,"aria-label":`Copy JSON`,className:`absolute top-2 right-2`,onClick:()=>void c()}),(0,A.jsx)(`pre`,{className:`overflow-x-auto font-mono text-sm leading-relaxed text-kumo-default`,children:o})]})})}):null]})}function R({title:e,body:t,inline:n}){return(0,A.jsxs)(`div`,{className:a(`flex flex-col items-center justify-center text-center`,n?`py-16`:`h-full`),children:[(0,A.jsx)(S,{size:32,className:`mb-3 text-kumo-subtle`}),(0,A.jsx)(`h3`,{className:`text-base font-semibold text-kumo-default`,children:e}),(0,A.jsx)(`p`,{className:`mt-2 max-w-md text-sm text-kumo-subtle`,children:t})]})}export{I as component};