effect-inspect 0.1.1 → 0.2.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 (34) hide show
  1. package/README.md +68 -0
  2. package/app/dist/client/assets/{index-smV05cfr.js → index-T-bCzOWw.js} +2 -2
  3. package/app/dist/client/assets/routes-C2qO8k2W.js +5 -0
  4. package/app/dist/server/assets/{_tanstack-start-manifest_v-CFQ3DEVN.js → _tanstack-start-manifest_v-B2BMiICr.js} +3 -3
  5. package/app/dist/server/assets/{router-CN98Ramo.js → router-dMcw-pHq.js} +1 -1
  6. package/app/dist/server/assets/{routes-eZ4XqxE9.js → routes-BmnrEVoN.js} +203 -157
  7. package/app/dist/server/server.js +2 -2
  8. package/dist/cli/QueryCommands.d.ts +127 -0
  9. package/dist/cli/QueryCommands.js +768 -0
  10. package/dist/cli.d.ts +1 -2
  11. package/dist/cli.js +150 -8
  12. package/dist/client/Client.d.ts +42 -1
  13. package/dist/client/Client.js +88 -4
  14. package/dist/collector/QueryApi.d.ts +29 -0
  15. package/dist/collector/QueryApi.js +91 -0
  16. package/dist/collector/Server.d.ts +1 -1
  17. package/dist/collector/Server.js +15 -8
  18. package/dist/collector/Store.d.ts +56 -16
  19. package/dist/collector/Store.js +37 -11
  20. package/dist/protocol/Codec.d.ts +10 -0
  21. package/dist/protocol/Schema.d.ts +118 -1
  22. package/dist/protocol/Schema.js +53 -1
  23. package/dist/query/Client.d.ts +30 -0
  24. package/dist/query/Client.js +74 -0
  25. package/dist/query/Query.d.ts +599 -0
  26. package/dist/query/Query.js +876 -0
  27. package/dist/trace/Timing.d.ts +18 -0
  28. package/dist/trace/Timing.js +57 -0
  29. package/dist/trace/TraceFile.d.ts +54 -0
  30. package/dist/trace/TraceFile.js +86 -0
  31. package/dist/trace/TraceStore.d.ts +202 -0
  32. package/dist/trace/TraceStore.js +328 -0
  33. package/package.json +3 -1
  34. package/app/dist/client/assets/routes-TKgeFdSW.js +0 -5
@@ -0,0 +1,328 @@
1
+ const NANOS_PER_MILLI = 1000000n;
2
+ /**
3
+ * Converts protocol nanos to milliseconds relative to `origin`, as a `number`.
4
+ *
5
+ * The subtraction happens in `bigint` so it stays exact, and only the
6
+ * (small, relative) result is narrowed to `number` — narrowing the absolute
7
+ * nanos first would lose precision well before it got here.
8
+ */
9
+ const toRelativeMillis = (time, origin) => Number((time - origin) / NANOS_PER_MILLI) + Number((time - origin) % NANOS_PER_MILLI) / 1_000_000;
10
+ /**
11
+ * Mutable span index for one session.
12
+ *
13
+ * Ingest is `apply`, one protocol message at a time, in arrival order. Reads
14
+ * are direct field access — `spans`, `roots` and `rows` are live structures,
15
+ * not copies, so the renderer must treat them as read-only and must re-read
16
+ * them (not cache them) whenever {@link version} changes.
17
+ */
18
+ export class TraceStore {
19
+ /** Every span seen, by span id. Includes spans that are still open. */
20
+ spans = new Map();
21
+ /** Root span ids in arrival order — the renderer's entry points. */
22
+ roots = [];
23
+ /** Span ids that have no `SpanEnd` yet, so the renderer can draw them open-ended. */
24
+ openSpans = new Set();
25
+ /** Logs in arrival order. */
26
+ logs = [];
27
+ /**
28
+ * Memory samples in arrival order, which is also time order.
29
+ *
30
+ * A plain array rather than anything indexed: the track draws the whole
31
+ * series each frame by walking it once, and at the client's 100ms interval a
32
+ * ten-minute trace is 6,000 entries — a scan the renderer does not notice.
33
+ * ponytail: linear scan, swap for a binary search into the viewport if a
34
+ * trace ever runs long enough for it to show up in a frame budget.
35
+ */
36
+ memory = [];
37
+ /**
38
+ * Largest `heapUsed` seen — the memory track's y-axis top, kept here so the
39
+ * renderer never re-scans the series to scale a frame.
40
+ */
41
+ memoryPeak = 0;
42
+ /** Smallest `heapUsed` seen — the memory track's y-axis floor. */
43
+ memoryTrough = Number.POSITIVE_INFINITY;
44
+ /** Largest `rss` seen; the secondary line has its own scale. */
45
+ memoryRssPeak = 0;
46
+ /**
47
+ * Every message ingested, in arrival order — the source for saving to a file.
48
+ *
49
+ * The rendered model above is lossy on purpose (relative millis, merged
50
+ * attributes, `Metrics`/`FiberEvent` dropped), so a file written from it
51
+ * would quietly lose whatever the chart does not draw. Keeping the decoded
52
+ * messages costs one array slot each — they are already allocated — and
53
+ * makes save a copy rather than a re-derivation.
54
+ */
55
+ raw = [];
56
+ /**
57
+ * Span ids bucketed by depth: `rows[2]` is every span nested two levels deep.
58
+ *
59
+ * This is the flame chart's row layout. It is maintained incrementally on
60
+ * ingest so the renderer never has to traverse the tree to find a row, and
61
+ * so drawing a viewport means scanning only the rows it covers.
62
+ */
63
+ rows = [];
64
+ /**
65
+ * Spans waiting on a parent that has not arrived, keyed by the missing
66
+ * parent id.
67
+ *
68
+ * A child can legitimately precede its parent: the backlog preserves arrival
69
+ * order, and a parent's `SpanStart` is emitted when it opens, which a
70
+ * concurrent fiber's child can beat to the wire. Rather than drop such a
71
+ * span, it is parked here and re-linked when the parent shows up.
72
+ */
73
+ pendingChildren = new Map();
74
+ /** Monotonic nanos of the first event seen; the zero point for `start`/`end`. */
75
+ origin;
76
+ /** Wall-clock millis matching {@link origin}, from the session's `Hello`. */
77
+ epochOrigin;
78
+ /**
79
+ * Bumped on every mutation.
80
+ *
81
+ * This is the *only* value React is allowed to observe. The renderer polls
82
+ * it per frame to decide whether to redraw; the UI mirrors it into an atom
83
+ * on a timer so counters update without a render per span.
84
+ */
85
+ version = 0;
86
+ spanCount = 0;
87
+ errorCount = 0;
88
+ eventCount = 0;
89
+ maxTime = 0;
90
+ /** Snapshot of the counters — allocates, so call it per repaint, not per span. */
91
+ stats() {
92
+ return {
93
+ spans: this.spanCount,
94
+ openSpans: this.openSpans.size,
95
+ errors: this.errorCount,
96
+ logs: this.logs.length,
97
+ events: this.eventCount,
98
+ duration: this.maxTime,
99
+ };
100
+ }
101
+ /** Drops everything — used when switching sessions. */
102
+ clear() {
103
+ this.spans.clear();
104
+ this.roots.length = 0;
105
+ this.openSpans.clear();
106
+ this.logs.length = 0;
107
+ this.memory.length = 0;
108
+ this.memoryPeak = 0;
109
+ this.memoryTrough = Number.POSITIVE_INFINITY;
110
+ this.memoryRssPeak = 0;
111
+ this.raw.length = 0;
112
+ this.rows.length = 0;
113
+ this.pendingChildren.clear();
114
+ this.origin = undefined;
115
+ this.epochOrigin = undefined;
116
+ this.spanCount = 0;
117
+ this.errorCount = 0;
118
+ this.eventCount = 0;
119
+ this.maxTime = 0;
120
+ this.version++;
121
+ }
122
+ /** Ingests one client message. Unknown/undrawn variants are ignored, not errors. */
123
+ apply(message) {
124
+ this.raw.push(message);
125
+ switch (message._tag) {
126
+ case 'Hello': {
127
+ this.anchor(message.clock.startTime);
128
+ this.epochOrigin = message.clock.wallClockEpochMillis;
129
+ break;
130
+ }
131
+ case 'SpanStart': {
132
+ this.applySpanStart(message);
133
+ break;
134
+ }
135
+ case 'SpanEnd': {
136
+ this.applySpanEnd(message);
137
+ break;
138
+ }
139
+ case 'SpanEvent': {
140
+ this.applySpanEvent(message);
141
+ break;
142
+ }
143
+ case 'Log': {
144
+ this.applyLog(message);
145
+ break;
146
+ }
147
+ case 'MemorySample': {
148
+ this.applyMemorySample(message);
149
+ break;
150
+ }
151
+ default:
152
+ // Metrics and FiberEvent are carried by the protocol but not drawn in
153
+ // M1 (see the spec); ignoring them here keeps the store's memory
154
+ // proportional to what the renderer actually reads.
155
+ return;
156
+ }
157
+ this.version++;
158
+ }
159
+ /** Ingests a batch, bumping `version` once rather than per message. */
160
+ applyAll(messages) {
161
+ const before = this.version;
162
+ for (const message of messages)
163
+ this.apply(message);
164
+ // `apply` already bumped per message; collapse to a single logical change
165
+ // so a 10k-message backlog is one repaint, not ten thousand.
166
+ this.version = before + 1;
167
+ }
168
+ anchor(time) {
169
+ this.origin ??= time;
170
+ }
171
+ relative(time) {
172
+ this.anchor(time);
173
+ const value = toRelativeMillis(time, this.origin);
174
+ if (value > this.maxTime)
175
+ this.maxTime = value;
176
+ return value;
177
+ }
178
+ applySpanStart(message) {
179
+ if (this.spans.has(message.spanId))
180
+ return; // SpanStart is sent once; a repeat is a replay.
181
+ // An ExternalParent's span body lives in another tracing system, so there
182
+ // is nothing to nest under here — treat it as a root, like Chrome does
183
+ // with a trace that starts mid-flight.
184
+ const parentId = message.parent?._tag === 'LocalParent' ? message.parent.spanId : undefined;
185
+ const parent = parentId === undefined ? undefined : this.spans.get(parentId);
186
+ const span = {
187
+ spanId: message.spanId,
188
+ traceId: message.traceId,
189
+ name: message.name,
190
+ kind: message.kind,
191
+ parentId,
192
+ start: this.relative(message.startTime),
193
+ end: undefined,
194
+ depth: parent === undefined ? 0 : parent.depth + 1,
195
+ outcome: undefined,
196
+ attributes: { ...message.attributes },
197
+ children: [],
198
+ events: [],
199
+ fiberId: message.fiberId,
200
+ orphaned: parentId !== undefined && parent === undefined,
201
+ };
202
+ this.spans.set(span.spanId, span);
203
+ this.openSpans.add(span.spanId);
204
+ this.spanCount++;
205
+ if (parent !== undefined) {
206
+ parent.children.push(span.spanId);
207
+ }
208
+ else if (parentId === undefined) {
209
+ this.roots.push(span.spanId);
210
+ }
211
+ else {
212
+ // Parent id known but span not here yet — park until it arrives.
213
+ const pending = this.pendingChildren.get(parentId);
214
+ if (pending === undefined)
215
+ this.pendingChildren.set(parentId, [span.spanId]);
216
+ else
217
+ pending.push(span.spanId);
218
+ }
219
+ this.addToRow(span);
220
+ this.adoptPending(span);
221
+ }
222
+ /** Re-links children that arrived before this span did. */
223
+ adoptPending(parent) {
224
+ const pending = this.pendingChildren.get(parent.spanId);
225
+ if (pending === undefined)
226
+ return;
227
+ this.pendingChildren.delete(parent.spanId);
228
+ for (const childId of pending) {
229
+ const child = this.spans.get(childId);
230
+ if (child === undefined)
231
+ continue;
232
+ parent.children.push(childId);
233
+ child.orphaned = false;
234
+ this.redepth(child, parent.depth + 1);
235
+ }
236
+ }
237
+ /**
238
+ * Moves a subtree to a new depth after a late parent arrives.
239
+ *
240
+ * Iterative rather than recursive: a deeply-nested Effect program can stack
241
+ * hundreds of spans and a blown call stack during ingest would take the
242
+ * whole webapp down.
243
+ */
244
+ redepth(root, depth) {
245
+ const stack = [[root, depth]];
246
+ while (stack.length > 0) {
247
+ const next = stack.pop();
248
+ if (next === undefined)
249
+ break;
250
+ const [span, spanDepth] = next;
251
+ if (span.depth !== spanDepth) {
252
+ this.removeFromRow(span);
253
+ span.depth = spanDepth;
254
+ this.addToRow(span);
255
+ }
256
+ for (const childId of span.children) {
257
+ const child = this.spans.get(childId);
258
+ if (child !== undefined)
259
+ stack.push([child, spanDepth + 1]);
260
+ }
261
+ }
262
+ }
263
+ addToRow(span) {
264
+ while (this.rows.length <= span.depth)
265
+ this.rows.push([]);
266
+ this.rows[span.depth].push(span.spanId);
267
+ }
268
+ removeFromRow(span) {
269
+ const row = this.rows[span.depth];
270
+ if (row === undefined)
271
+ return;
272
+ const index = row.indexOf(span.spanId);
273
+ if (index !== -1)
274
+ row.splice(index, 1);
275
+ }
276
+ applySpanEnd(message) {
277
+ const span = this.spans.get(message.spanId);
278
+ // A SpanEnd with no SpanStart means the backlog was truncated ahead of it;
279
+ // there is no bar to close, so drop it rather than invent a span.
280
+ if (span === undefined)
281
+ return;
282
+ span.end = this.relative(message.endTime);
283
+ span.outcome = message.outcome;
284
+ // SpanEnd carries only late attributes; merge them over what SpanStart set.
285
+ if (Object.keys(message.attributes).length > 0) {
286
+ span.attributes = { ...span.attributes, ...message.attributes };
287
+ }
288
+ if (this.openSpans.delete(message.spanId) && message.outcome._tag === 'Failure') {
289
+ this.errorCount++;
290
+ }
291
+ }
292
+ applySpanEvent(message) {
293
+ const span = this.spans.get(message.spanId);
294
+ if (span === undefined)
295
+ return;
296
+ span.events.push({
297
+ name: message.name,
298
+ time: this.relative(message.time),
299
+ attributes: message.attributes,
300
+ });
301
+ this.eventCount++;
302
+ }
303
+ applyMemorySample(message) {
304
+ this.memory.push({
305
+ time: this.relative(message.time),
306
+ heapUsed: message.heapUsed,
307
+ heapTotal: message.heapTotal,
308
+ rss: message.rss,
309
+ external: message.external,
310
+ });
311
+ if (message.heapUsed > this.memoryPeak)
312
+ this.memoryPeak = message.heapUsed;
313
+ if (message.heapUsed < this.memoryTrough)
314
+ this.memoryTrough = message.heapUsed;
315
+ if (message.rss > this.memoryRssPeak)
316
+ this.memoryRssPeak = message.rss;
317
+ }
318
+ applyLog(message) {
319
+ this.logs.push({
320
+ time: this.relative(message.time),
321
+ level: message.level,
322
+ message: message.message,
323
+ spanId: message.spanId,
324
+ fiberId: message.fiberId,
325
+ annotations: message.annotations,
326
+ });
327
+ }
328
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "effect-inspect",
3
- "version": "0.1.1",
3
+ "version": "0.2.0",
4
4
  "private": false,
5
5
  "description": "A live inspector for Effect programs",
6
6
  "repository": {
@@ -33,6 +33,8 @@
33
33
  "check": "oxfmt --check . && oxlint --disable-nested-config . && bun run typecheck",
34
34
  "test": "bun test src app",
35
35
  "check:write": "oxfmt --write . && oxlint --disable-nested-config --fix .",
36
+ "version:packages": "changeset version",
37
+ "release": "bun run build && changeset publish",
36
38
  "prepare": "effect-tsgo patch --oxlint",
37
39
  "build": "rm -rf dist && tsc -p tsconfig.build.json && bun run build:app",
38
40
  "dev": "tsc --watch --preserveWatchOutput",
@@ -1,5 +0,0 @@
1
- import{n as e}from"./rolldown-runtime-CbXtAM7H.js";import{$ as t,$t as n,B as r,Bt as i,C as a,Dt as o,E as s,Et as c,F as l,Gt as u,H as d,Ht as f,I as p,It as m,Jt as h,Kt as ee,Lt as te,M as g,Mt as _,N as ne,O as re,Ot as ie,P as ae,Pt as oe,Q as se,Qt as ce,R as le,Rt as ue,S as de,St as v,Tt as fe,U as pe,Ut as me,V as y,Vt as he,W as ge,Wt as _e,X as ve,Xt as ye,Y as be,Yt as xe,Zt as Se,_ as Ce,_t as we,a as Te,an as Ee,at as De,b,bt as Oe,c as ke,ct as Ae,d as je,en as Me,f as x,g as Ne,h as S,ht as Pe,i as Fe,in as C,it as Ie,j as Le,jt as Re,k as ze,kt as w,l as Be,lt as Ve,m as He,mt as Ue,n as We,nn as Ge,nt as Ke,o as qe,on as Je,ot as Ye,p as Xe,qt as Ze,r as Qe,rn as $e,rt as et,s as tt,st as nt,t as rt,tn as it,tt as at,u as T,ut as ot,v as st,w as ct,wt as lt,x as ut,xt as dt,y as ft,z as pt}from"./index-smV05cfr.js";var mt={name:`funnel-x`,size:24,node:[[`path`,{d:`M12.531 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14v6a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341l.427-.473`,key:`ol2ft2`}],[`path`,{d:`m16.5 3.5 5 5`,key:`15e6fa`}],[`path`,{d:`m21.5 3.5-5 5`,key:`m0lwru`}]],aliases:[`filter-x`]};mt.node;var ht=C(mt),gt={name:`monitor`,size:24,node:[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`,key:`48i651`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`,key:`1svkeh`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`,key:`vw1qmm`}]]};gt.node;var _t=C(gt),vt={name:`moon`,size:24,node:[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`,key:`kfwtm`}]]};vt.node;var yt=C(vt),bt={name:`mouse-pointer-click`,size:24,node:[[`path`,{d:`M14 4.1 12 6`,key:`ita8i4`}],[`path`,{d:`m5.1 8-2.9-.8`,key:`1go3kf`}],[`path`,{d:`m6 12-1.9 2`,key:`mnht97`}],[`path`,{d:`M7.2 2.2 8 5.1`,key:`1cfko1`}],[`path`,{d:`M9.037 9.69a.498.498 0 0 1 .653-.653l11 4.5a.5.5 0 0 1-.074.949l-4.349 1.041a1 1 0 0 0-.74.739l-1.04 4.35a.5.5 0 0 1-.95.074z`,key:`s0h3yz`}]]};bt.node;var xt=C(bt),St={name:`plug-zap`,size:24,node:[[`path`,{d:`M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z`,key:`goz73y`}],[`path`,{d:`m2 22 3-3`,key:`19mgm9`}],[`path`,{d:`M7.5 13.5 10 11`,key:`7xgeeb`}],[`path`,{d:`M10.5 16.5 13 14`,key:`10btkg`}],[`path`,{d:`m18 3-4 4h6l-4 4`,key:`16psg9`}]],aliases:[`plug-zap-2`]};St.node;var Ct=C(St),wt={name:`radio`,size:24,node:[[`path`,{d:`M16.247 7.761a6 6 0 0 1 0 8.478`,key:`1fwjs5`}],[`path`,{d:`M19.075 4.933a10 10 0 0 1 0 14.134`,key:`ehdyv1`}],[`path`,{d:`M4.925 19.067a10 10 0 0 1 0-14.134`,key:`1q22gi`}],[`path`,{d:`M7.753 16.239a6 6 0 0 1 0-8.478`,key:`r2q7qm`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}]]};wt.node;var Tt=C(wt),Et={name:`search-x`,size:24,node:[[`path`,{d:`m13.5 8.5-5 5`,key:`1cs55j`}],[`path`,{d:`m8.5 8.5 5 5`,key:`a8mexj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}],[`path`,{d:`m21 21-4.3-4.3`,key:`1qie3q`}]]};Et.node;var Dt=C(Et),Ot={name:`sun`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`m4.93 4.93 1.41 1.41`,key:`149t6j`}],[`path`,{d:`m17.66 17.66 1.41 1.41`,key:`ptbguv`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`m6.34 17.66-1.41 1.41`,key:`1m8zz5`}],[`path`,{d:`m19.07 4.93-1.41 1.41`,key:`1shlcs`}]]};Ot.node;var kt=C(Ot),At={name:`x`,size:24,node:[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]};At.node;var jt=C(At);function Mt(e){return(t,n)=>t===n?0:e(t,n)}var Nt=Mt((e,t)=>globalThis.Number.isNaN(e)&&globalThis.Number.isNaN(t)?0:globalThis.Number.isNaN(e)?-1:globalThis.Number.isNaN(t)?1:e<t?-1:1),Pt=e=>Se(2,(t,n)=>e(t,n)===-1),Ft=e=>Se(2,(t,n)=>e(t,n)===1),It=e=>Se(2,(t,n)=>e(t,n)!==1),Lt=e=>Se(2,(t,n)=>e(t,n)!==-1),Rt=dt,zt=`~effect/DateTime`,Bt=`~effect/DateTime/TimeZone`,Vt={[zt]:zt,pipe(){return $e(this,arguments)},[ie](){return this.toString()},toJSON(){return Ut(this).toJSON()}};({...Vt}),{...Vt};var Ht={[Bt]:Bt,[ie](){return this.toString()}};({...Ht}),{...Ht};var Ut=e=>new Date(e.epochMilliseconds),Wt=`~effect/BigDecimal`,Gt={[Wt]:Wt,[i](){let e=Qt(this);return m(te(e.value),ue(e.scale))},[oe](e){return Kt(e)&&cn(this,e)},toString(){return`BigDecimal(${ln(this)})`},toJSON(){return{_id:`BigDecimal`,value:String(this.value),scale:this.scale}},[ie](){return this.toJSON()},pipe(){return $e(this,arguments)}},Kt=e=>he(e,Wt),qt=(e,t)=>{if(!Number.isSafeInteger(t))throw RangeError(`Scale must be a safe integer, got ${t}`);let n=Object.create(Gt);return n.value=e,n.scale=t,n},Jt=(e,t)=>{if(e!==E&&e%Xt===E)throw RangeError(`Value must be normalized`);let n=qt(e,t);return n.normalized=n,n},E=BigInt(0),Yt=BigInt(1),Xt=BigInt(10),Zt=Jt(E,0),Qt=e=>{if(e.normalized===void 0){if(e.value===E)e.normalized=Zt;else{let t=`${e.value}`,n=0;for(let e=t.length-1;e>=0&&t[e]===`0`;e--)n++;n===0&&(e.normalized=e),e.normalized=Jt(BigInt(t.substring(0,t.length-n)),e.scale-n)}}return e.normalized},$t=100,en=[Yt],tn=(e,t)=>e===t?0:e<t?-1:1,nn=(e,t)=>{let n=`${e.value<E?-e.value:e.value}`,r=`${t.value<E?-t.value:t.value}`,i=BigInt(n.length-r.length)-BigInt(e.scale)+BigInt(t.scale);if(i!==E)return i<E?-1:1;let a=Math.max(n.length,r.length);for(let e=0;e<a;e++){let t=e<n.length?n.charCodeAt(e):48,i=e<r.length?r.charCodeAt(e):48;if(t!==i)return t<i?-1:1}return 0},rn=(e,t)=>{if(e.scale===t.scale)return tn(e.value,t.value);let n=an(e),r=an(t);if(n!==r)return n<r?-1:1;if(n===0)return 0;let i=e.scale-t.scale,a=Math.abs(i);if(a>$t)return n===-1?nn(t,e):nn(e,t);let o=en[a]??=Xt**BigInt(a);return i>0?tn(e.value,t.value*o):tn(e.value*o,t.value)},an=e=>e.value===E?0:e.value<E?-1:1,on=e=>e.value<E?qt(-e.value,e.scale):e,sn=we((e,t)=>rn(e,t)===0),cn=Se(2,(e,t)=>sn(e,t)),ln=e=>{let t=Qt(e);if(Math.abs(t.scale)>=16)return un(t);let n=t.value<E,r=n?`${t.value}`.substring(1):`${t.value}`,i,a;if(t.scale>=r.length)i=`0`,a=`0`.repeat(t.scale-r.length)+r;else{let e=r.length-t.scale;if(e>r.length){let t=e-r.length;i=`${r}${`0`.repeat(t)}`,a=``}else a=r.slice(e),i=r.slice(0,e)}let o=a===``?i:`${i}.${a}`;return n?`-${o}`:o},un=e=>{if(dn(e))return`0e+0`;let t=Qt(e),n=`${on(t).value}`,r=n.slice(0,1),i=n.slice(1),a=`${fn(t)?`-`:``}${r}`;i!==``&&(a+=`.${i}`);let o=i.length-t.scale;return`${a}e${o>=0?`+`:``}${o}`},dn=e=>e.value===E,fn=e=>e.value<E;function pn(e){return e.checks?e.checks[e.checks.length-1].annotations:e.annotations}var mn=`~sentinels`,hn=`~constructor`,gn=n(e=>{let t=pn(e)?.identifier;return typeof t==`string`?t:e.getExpected(gn)}),D=Symbol(),O=l,k=O(D),A=O(D),_n=e=>e===D?Ue():Pe(e),vn=e=>e._tag===`None`?k:O(e.value),yn=`~effect/SchemaIssue/Issue`;function bn(e){return he(e,yn)&&e[yn]===yn}function xn(e){return Object.hasOwn(e,`input`)}var j=class{[yn]=yn;constructor(e,t){t?.reportInput===!0&&e!==D&&(this.input=e)}},Sn=class extends j{_tag=`Filter`;filter;issue;constructor(e,t,n,r){super(n,r),this.filter=e,this.issue=t}},Cn=class extends j{_tag=`Encoding`;ast;issue;constructor(e,t,n,r){super(n,r),this.ast=e,this.issue=t}},wn=class extends j{_tag=`Pointer`;path;issue;constructor(e,t){super(),this.path=e,this.issue=t}},Tn=class extends j{_tag=`MissingKey`;annotations;constructor(e){super(),this.annotations=e}},En=class extends j{_tag=`UnexpectedKey`;ast;constructor(e,t,n){super(t,n),this.ast=e}},M=class extends j{_tag=`Composite`;ast;issues;constructor(e,t,n,r){super(n,r),this.ast=e,this.issues=t}},Dn=class extends j{_tag=`InvalidType`;ast;constructor(e,t,n){super(t,n),this.ast=e}},On=class extends j{_tag=`InvalidValue`;annotations;constructor(e,t,n){super(t,n),this.annotations=e}},kn=class extends j{_tag=`AnyOf`;ast;issues;constructor(e,t,n,r){super(n,r),this.ast=e,this.issues=t}},An=class extends j{_tag=`OneOf`;ast;successes;constructor(e,t,n,r){super(n,r),this.ast=e,this.successes=t}};function jn(e,t,n){if(bn(e))return e;if(typeof e==`string`)return new On({message:e},t,n);let r=typeof e.issue==`string`?new On({message:e.issue},t,n):e.issue;return new wn(e.path,r)}function Mn(e,t,n){if(e!==void 0)return typeof e==`boolean`?e?void 0:new On(void 0,t,n):jn(e,t,n)}function Nn(e,n,r,i){return Array.isArray(n)?t(n)?n.length===1?jn(n[0],r,i):new M(e,at(n,e=>jn(e,r,i)),r,i):void 0:Mn(n,r,i)}var Pn=e=>{let t=Un(e);if(t!==void 0)return t;switch(e._tag){case`InvalidType`:return Rn(gn(e.ast),e);case`InvalidValue`:{let t=Ln(e);if(t!==void 0)return Rn(t,e);let n=In(e);return n===void 0?`Expected a valid value`:`Invalid data ${n}`}case`MissingKey`:return`Missing key`;case`UnexpectedKey`:{let t=In(e);return t===void 0?`Expected no excess property`:`Unexpected key with value ${t}`}case`Forbidden`:return`Forbidden operation`;case`OneOf`:{let t=In(e);return t===void 0?`Expected exactly one member to match`:`Expected exactly one member to match the input ${t}`}}},Fn=e=>Un(e.issue)??Un(e);function In(e){return xn(e)?w(e.input):void 0}function Ln(e){let t=e.annotations?.expected;return typeof t==`string`?t:void 0}function Rn(e,t){let n=In(t);return n===void 0?`Expected ${e}`:`Expected ${e}, got ${n}`}function zn(e){let t=e.annotations?.expected;if(typeof t==`string`)return t;switch(e._tag){case`Filter`:return`<filter>`;case`FilterGroup`:return e.checks.map(e=>zn(e)).join(` & `)}}function Bn(){return e=>Hn(e,``)}var Vn=Bn();function Hn(e,t){let n;switch(e._tag){case`Filter`:{let r=Fn(e);if(r!==void 0)n=r;else{if(e.issue._tag!==`InvalidValue`)return Hn(e.issue,t);let r=Ln(e.issue);n=r===void 0?Rn(zn(e.filter),e):Rn(r,e.issue)}break}case`Encoding`:return Hn(e.issue,t);case`Pointer`:return Hn(e.issue,t+Re(e.path));case`Composite`:case`AnyOf`:if(e._tag===`Composite`||e.issues.length>0)return e.issues.map(e=>Hn(e,t)).join(`
2
- `);n=Un(e)??Rn(gn(e.ast),e);break;default:n=Pn(e)}return t?`${n}\n at ${t}`:n}function Un(e){if(e._tag===`Pointer`)return;if(e._tag===`Encoding`)return Un(e.issue);let t=(e._tag===`Filter`?e.filter.annotations:`annotations`in e?e.annotations:e.ast.annotations)?.[e._tag===`MissingKey`?`messageMissingKey`:e._tag===`UnexpectedKey`?`messageUnexpectedKey`:`message`];if(typeof t==`string`)return t}function Wn(e){let t;for(let n of e.reasons){if(!pt(n)||!bn(n.error))return;t??=n.error}return t}function Gn(e,t){let n=Wn(e);if(n===void 0)throw Error(t,{cause:e});return n}var Kn=e=>Object.assign(Object.create(Ge),e),qn=Kn({_tag:`Passthrough`});function Jn(){return qn}function N(e){return Kn({_tag:`Transform`,transform:e})}function Yn(e){return Kn({_tag:`TransformEffect`,transform:e})}function Xn(){return N(globalThis.String)}function Zn(){return N(globalThis.Number)}function Qn(){return N(globalThis.BigInt)}function $n(e){return Yn((t,n)=>Le({try:()=>JSON.parse(t,e?.reviver),catch:()=>new On({expected:`a valid JSON string`},t,n)}))}function er(e){return Yn((t,n)=>Le({try:()=>{let n=JSON.stringify(t,e?.replacer,e?.space);if(n===void 0)throw TypeError(`Value cannot be represented as JSON`);return n},catch:()=>new On({expected:`a JSON-serializable value`},t,n)}))}var tr=class extends it{_tag=`Middleware`;decode;encode;constructor(e,t){super(),this.decode=e,this.encode=t}flip(){return new tr(this.encode,this.decode)}},nr=`~effect/SchemaTransformation/Transformation`,P=class extends it{[nr]=nr;_tag=`Transformation`;decode;encode;constructor(e,t){super(),this.decode=e,this.encode=t}flip(){return new P(this.encode,this.decode)}};function rr(e){return he(e,nr)&&e[nr]===nr}var ir=e=>rr(e)?e:new P(e.decode,e.encode),ar=new P(Jn(),Jn());function or(){return ar}var sr=new P(Zn(),Xn()),cr=new P(Qn(),Xn());function lr(e){return new P($n(e??{}),er(e))}function ur(e){return t=>t._tag===e}var dr=ur(`Declaration`),fr=ur(`Never`),pr=ur(`Literal`),mr=ur(`UniqueSymbol`),hr=ur(`Arrays`),gr=ur(`Objects`),_r=ur(`Suspend`),F=class{to;transformation;constructor(e,t){this.to=e,this.transformation=t}},vr={},yr=class{isOptional;isMutable;constructorDefault;annotations;constructor(e,t,n=void 0,r=void 0){this.isOptional=e,this.isMutable=t,this.constructorDefault=n,this.annotations=r}},br=`~effect/Schema`,I=class{[br]=br;annotations;checks;encoding;context;constructor(e=void 0,t=void 0,n=void 0,r=void 0){this.annotations=e,this.checks=t,this.encoding=n,this.context=r}toString(){return`<${this._tag}>`}},xr=class extends I{_tag=`Declaration`;typeParameters;run;encodingChecks;encodingRun;constructor(e,t,n,r,i,a,o,s){super(n,r,i,a),this.typeParameters=e,this.run=t,this.encodingChecks=o,this.encodingRun=s}getParser(){let e;return(t,n)=>t===D?k:(e??=this.run(this.typeParameters))(t,this,n)}_rebuild(e,t,n,r,i){let a=Bi(this.typeParameters,e);return a===this.typeParameters&&t===this.checks&&n===this.encodingChecks&&r===this.run&&i===this.encodingRun?this:new xr(a,r,this.annotations,t,void 0,this.context,n,i)}recur(e){return this._rebuild(e,this.checks,this.encodingChecks,this.run,this.encodingRun)}flip(e){return this._rebuild(e,this.encodingChecks,this.checks,this.encodingRun??this.run,this.run)}getExpected(){let e=this.annotations?.expected;return typeof e==`string`?e:`<Declaration>`}},Sr=new class extends I{_tag=`Null`;getParser(){return ra(this,null)}getExpected(){return`null`}},Cr=class extends I{_tag=`Undefined`;getParser(){return ra(this,void 0)}toCodecJson(){return L(this,[wr])}getExpected(){return`undefined`}},wr=new F(Sr,new P(N(()=>void 0),N(()=>null))),Tr=new Cr,Er=new class extends I{_tag=`Unknown`;getParser(){return ia(this,ye)}getExpected(){return`unknown`}},Dr=class extends I{_tag=`Literal`;literal;constructor(e,t,n,r,i){if(super(t,n,r,i),typeof e==`number`&&!globalThis.Number.isFinite(e))throw Error(`A numeric literal must be finite, got ${w(e)}`);this.literal=e}getParser(){return ra(this,this.literal)}matchPart(e,t){return e===globalThis.String(this.literal)?this.literal:void 0}toCodecJson(){return typeof this.literal==`bigint`?Or(this):this}toCodecStringTree(){return typeof this.literal==`string`?this:Or(this)}getExpected(){return typeof this.literal==`string`?JSON.stringify(this.literal):globalThis.String(this.literal)}};function Or(e){let t=globalThis.String(e.literal);return L(e,[new F(new Dr(t),new P(N(()=>e.literal),N(()=>t)))])}var kr=new class extends I{_tag=`String`;getParser(){return ia(this,xe)}matchPart(e,t){let n=this.checks;return n&&!t.disableChecks&&ga(n,e,void 0,this,t)?void 0:e}getExpected(){return`string`}},Ar=class extends I{_tag=`Number`;getParser(){return ia(this,ee)}matchKey(e,t){return this._match(sa,e,t)}matchPart(e,t){return this._match(oa,e,t)}_match(e,t,n){if(!e.test(t))return;let r=globalThis.Number(t);return n.disableChecks||!this.checks?r:ga(this.checks,r,void 0,this,n)?void 0:r}toCodecJson(){return this.checks&&(jr(this.checks,`effect/schema/isFinite`)||jr(this.checks,`effect/schema/isInt`))?this:L(this,[Ti])}toCodecStringTree(){return this.toCodecJson()===this?L(this,[ua]):L(this,[da])}getExpected(){return`number`}};function jr(e,t){return e.some(e=>e.annotations?.representation?.id===t||e._tag===`FilterGroup`&&jr(e.checks,t))}var Mr=new Ar,Nr=new class extends I{_tag=`Boolean`;getParser(){return ia(this,me)}getExpected(){return`boolean`}},Pr=new class extends I{_tag=`BigInt`;getParser(){return ia(this,f)}matchPart(e,t){if(!fa.test(e))return;let n=globalThis.BigInt(e);return t.disableChecks||!this.checks?n:ga(this.checks,n,void 0,this,t)?void 0:n}toCodecStringTree(){return L(this,[ha])}getExpected(){return`bigint`}},Fr=class extends I{_tag=`Arrays`;isMutable;elements;rest;encodingChecks;constructor(e,t,n,r,i,a,o,s){super(r,i,a,o),this.isMutable=e,this.elements=t,this.rest=n,this.encodingChecks=s;let c=!1;for(let e=0;e<t.length;e++)if(Yi(t[e]))c=!0;else if(c)throw Error(`A required element cannot follow an optional element. ts(1257)`);if(c&&n.length>1)throw Error(`A required element cannot follow an optional element. ts(1257)`);for(let e=1;e<n.length;e++)if(Yi(n[e]))throw Error(`An optional element cannot follow a rest element. ts(1266)`)}getParser(e,t=e){let n=this,r,i,a=n.elements.length,o=Math.max(0,n.rest.length-1);function s(e,t){return t<a?r[t]:t>=e?i[t-e+1]:i[0]}return ct(function*(e,c){if(e===D)return D;if(!Array.isArray(e))return yield*b(new Dn(n,e,c));r||(r=n.elements.map(e=>({ast:e,parser:t(e)})),i=n.rest.map(e=>({ast:e,parser:t(e)})));let l=e.length,u={ast:n,getParser:s,input:e,len:l,tailThreshold:Math.max(a,l-o),output:new globalThis.Array(l),issues:void 0,options:c},d=n.rest.length===0?a:Math.max(l,a+o),f=c.concurrency===void 0?1:ge(c.concurrency),p=f===1?Rr(u,e,0,d):zr(u,e,{concurrency:f,end:d});if(p&&(yield*p),n.rest.length===0&&l>a)for(let t=a;t<=l-1;t++){let r=new En(n,e[t],c),i=new wn([t],r);if(c.errors===`all`)u.issues?u.issues.push(i):u.issues=[i];else return yield*b(new M(n,[i],e,c))}return u.issues?yield*b(new M(n,u.issues,e,c)):u.output})}_rebuild(e,t,n){let r=Bi(this.elements,e),i=Bi(this.rest,e);return r===this.elements&&i===this.rest&&t===this.checks&&n===this.encodingChecks?this:new Fr(this.isMutable,r,i,this.annotations,t,void 0,this.context,n)}recur(e){return this._rebuild(e,this.checks,this.encodingChecks)}flip(e){return this._rebuild(e,this.encodingChecks,this.checks)}getExpected(){return`array`}};function Ir(e,t,n,r){if(n._tag===`Failure`)return Br(e,e.ast,r,n);let i=n===A?t:n[v];if(i!==D)e.output[r]=i;else{let t=e.getParser(e.tailThreshold,r);if(Yi(t.ast))return;let n=new wn([r],new Tn(t.ast.context?.annotations));if(e.options.errors===`all`)e.issues?e.issues.push(n):e.issues=[n];else return g(new M(e.ast,[n],e.input,e.options))}}var Lr={onItem(e,t,n){let r=n<e.len?t:D;return e.getParser(e.tailThreshold,n).parser(r,e.options)},step:Ir},Rr=pe()(Lr),zr=d()(Lr),Br=(e,t,n,i)=>{if(i.cause.reasons.length===0)return i;let a=Wn(i.cause);if(a===void 0)return ne(r(i.cause,r=>new M(t,[new wn([n],r)],e.input,e.options)));let o=new wn([n],a);if(e.options.errors===`all`)e.issues?e.issues.push(o):e.issues=[o];else return g(new M(t,[o],e.input,e.options))},Vr=`[+-]?\\d*\\.?\\d+(?:[Ee][+-]?\\d+)?`;function Hr(e,t,n=vr){let r,i;function a(t){switch(t._tag){case`String`:case`TemplateLiteral`:return(r??=Object.keys(e)).filter(e=>t.matchPart(e,n)!==void 0);case`Number`:return(r??=Object.keys(e)).filter(e=>t.matchKey(e,n)!==void 0);case`Symbol`:return(i??=Object.getOwnPropertySymbols(e)).filter(e=>t.matchKey(e,n)!==void 0);case`Union`:return[...new Set(t.types.flatMap(a))];default:return[]}}return a(aa($i(t)))}var Ur=class{name;type;constructor(e,t){this.name=e,this.type=t}};function Wr(e){switch(e._tag){case`String`:case`Number`:case`Symbol`:case`TemplateLiteral`:return!0;case`Union`:return e.types.every(Wr);default:return!1}}function Gr(e){let t=ji(e);switch(t._tag){case`String`:case`Number`:case`Symbol`:case`TemplateLiteral`:return!0;case`Union`:return t.types.every(Gr);default:return!1}}function Kr(e){return Wr(e)&&Gr(e)}var qr=class{parameter;type;constructor(e,t){if(!Kr(e))throw Error(`Invalid index signature parameter ${e._tag}`);if(this.parameter=e,this.type=t,Yi(t)&&!na(t))throw Error("Cannot use `Schema.optionalKey` with index signatures, use `Schema.optional` instead.")}},Jr=class extends I{_tag=`Objects`;propertySignatures;indexSignatures;encodingChecks;constructor(e,t,n,r,i,a,o){super(n,r,i,a),this.propertySignatures=e,this.indexSignatures=t,this.encodingChecks=o;let s=new Set,c=[];for(let t of e){let e=t.name;s.has(e)?c.push(e):s.add(e)}if(c.length>0)throw Error(`Duplicate identifiers: ${JSON.stringify(c)}. ts(2300)`)}getParser(e,t=e){let n=this,r=[];for(let e of n.propertySignatures)r.push(typeof e.name==`number`?globalThis.String(e.name):e.name);let i=r.length,o=n.indexSignatures.length,s=i&&o?new Set(r):void 0;if(!i&&!o)return ia(n,u);let c,l,f=(e,t,r,a,o)=>{if(o._tag===`Failure`)return Br(e,n,t,o)??p;let c=o===A?a:o[v];if(r!==D&&c!==D){if(i&&(s.has(t)||s.has(typeof r==`number`?globalThis.String(r):r)))return p;lt(e.out,r,c)}return p},m=(e,t,r,i)=>{if(!i){let n=r.parserKey(t,e.options);if(!y(n))return de(ft(n),n=>m(e,t,r,n));i=n}if(i._tag===`Failure`)return Br(e,n,t,i)??p;let a=i===A?t:i[v],o=e.input[t],s=r.parserValue(o,e.options);return y(s)?f(e,t,a,o,s):de(ft(s),n=>f(e,t,a,o,n))},h=(e,t,n)=>{let r=e.input[t],i=n.parserValue(r,e.options);return y(i)?f(e,t,t,r,i):de(ft(i),n=>f(e,t,t,r,n))},ee=o?d()({onItem:(e,[t,n])=>n.is.parameter===kr?h(e,t,n):m(e,t,n),step:(e,t,n)=>n._tag===`Failure`?n:void 0}):void 0,te=()=>(c||(c=n.propertySignatures.map(e=>({parser:t(e.type),name:e.name,type:e.type})),l=o?n.indexSignatures.map(n=>({is:n,parserKey:e(aa(n.parameter)),parserValue:t(n.type)})):void 0),c),g=ct(function*(e,t){if(e===D)return D;if(typeof e!=`object`||!e||Array.isArray(e))return yield*b(new Dn(n,e,t));te();let a=e,u={},d={ast:n,input:a,out:u,issues:void 0,options:t},f=t.errors===`all`,p=t.onExcessProperty===`error`,g=t.concurrency===void 0?1:ge(t.concurrency),_=o&&p?n.indexSignatures.map(e=>Hr(a,e.parameter,t)):void 0;if(p){s??=new Set(r);let i=_?new Set(s):s;if(_)for(let e of _)for(let t of e)i.add(t);let o=Reflect.ownKeys(a);for(let r=0;r<o.length;r++){let s=o[r];if(!i.has(s)){let r=new En(n,a[s],t),i=new wn([s],r);if(f){d.issues?d.issues.push(i):d.issues=[i];continue}return yield*b(new M(n,[i],e,t))}}}if(i){let e=g===1?Zr(d,c):Qr(d,c,{concurrency:g});e&&(yield*e)}if(o&&g===1)for(let e=0;e<o;e++){let n=l[e],r=n.is.parameter===kr?h:m,i=_?.[e]??(n.is.parameter===kr?Object.keys(a):Hr(a,n.is.parameter,t));for(let e=0;e<i.length;e++){let t=r(d,i[e],n);if(!y(t))yield*t;else if(t._tag===`Failure`)return yield*t}}else if(ee){let e=ve();for(let n=0;n<o;n++){let r=l[n],i=_?.[n]??(r.is.parameter===kr?Object.keys(a):Hr(a,r.is.parameter,t));for(let t=0;t<i.length;t++)e.push([i[t],r])}let n=ee(d,e,{concurrency:g});n&&(yield*n)}return d.issues?yield*b(new M(n,d.issues,e,t)):u});if(o)return g;let _=(e,t,n)=>{let r=c[t];return de(ft(n),n=>{let i=Yr(e,r,n);if(i)return i;let o=()=>O(e.out),s=Zr(e,c.slice(t+1));return s?a(s,o):o()})};return(e,t)=>{if(e===D)return k;if(t.errors===`all`||t.onExcessProperty!==void 0||t.concurrency!==void 0&&ge(t.concurrency)!==1)return g(e,t);if(typeof e!=`object`||!e||Array.isArray(e))return b(new Dn(n,e,t));let r=te(),i=e,a={},o={ast:n,input:i,out:a,issues:void 0,options:t};try{for(let e=0;e<r.length;e++){let n=r[e],s=n.name,c=li(i,s),l=c?i[s]:D,u=n.parser(l,t);if(!y(u))return _(o,e,u);if(u===A){c&&lt(a,s,l);continue}let d=Yr(o,n,u);if(d)return d}}catch(e){return st(e)}return O(a)}}_rebuild(e,t,n,r){let i=Bi(this.propertySignatures,t=>{let n=e(t.type);return n===t.type?t:new Ur(t.name,n)}),a=Bi(this.indexSignatures,n=>{let r=t(n.parameter),i=e(n.type);return r===n.parameter&&i===n.type?n:new qr(r,i)});return i===this.propertySignatures&&a===this.indexSignatures&&n===this.checks&&r===this.encodingChecks?this:new Jr(i,a,this.annotations,n,void 0,this.context,r)}flip(e){return this._rebuild(e,e,this.encodingChecks,this.checks)}recur(e,t=e){return this._rebuild(e,t,this.checks,this.encodingChecks)}getExpected(){return this.propertySignatures.length===0&&this.indexSignatures.length===0?`object | array`:`object`}};function Yr(e,t,n){if(n._tag===`Failure`)return Br(e,e.ast,t.name,n);if(n===A)return;let r=n[v];if(r!==D){lt(e.out,t.name,r);return}if(delete e.out[t.name],!Yi(t.type)){let n=new wn([t.name],new Tn(t.type.context?.annotations));if(e.options.errors===`all`){e.issues?e.issues.push(n):e.issues=[n];return}return g(new M(e.ast,[n],e.input,e.options))}}var Xr={onItem(e,t){if(!li(e.input,t.name))return t.parser(D,e.options);let n=e.input[t.name];return lt(e.out,t.name,n),t.parser(n,e.options)},step:Yr},Zr=pe()(Xr),Qr=d()(Xr);function $r(e,t){return e?t?[...e,...t]:e:t}function ei(e,t,n){return new Jr(Reflect.ownKeys(e).map(t=>new Ur(t,e[t].ast)),[],n,t)}function ti(e){return e.ast}function ni(e,t=void 0){return new Fr(!1,e.map(e=>e.ast),[],void 0,t)}function ri(e,t,n){return new pi(e.map(ti),t,void 0,n)}var ii=Me(e=>{for(;;){if(_r(e))return Er;let t=e.encoding;if(!t)return e.recur?.(ii,ce)??e;if(t.some(e=>e.transformation._tag===`Middleware`&&e.transformation.decode!==ce))return Er;e=t[t.length-1].to}});function ai(e){switch(e._tag){case`Null`:return[`null`];case`Undefined`:return[`undefined`];case`String`:case`TemplateLiteral`:return[`string`];case`Number`:return[`number`];case`Boolean`:return[`boolean`];case`Symbol`:case`UniqueSymbol`:return[`symbol`];case`BigInt`:return[`bigint`];case`Arrays`:return[`array`];case`ObjectKeyword`:return[`object`,`array`,`function`];case`Objects`:return e.propertySignatures.length||e.indexSignatures.length?[`object`]:[`string`,`number`,`boolean`,`symbol`,`bigint`,`object`,`array`,`function`];case`Enum`:return Array.from(new Set(e.enums.map(([,e])=>typeof e)));case`Literal`:return[typeof e.literal];case`Union`:return Array.from(new Set(e.types.flatMap(ai)));default:return[`null`,`undefined`,`string`,`number`,`boolean`,`symbol`,`bigint`,`object`,`array`,`function`]}}function oi(e){switch(e._tag){default:return[];case`Declaration`:{let t=e.annotations?.[mn];return Array.isArray(t)?t:[]}case`Objects`:return e.propertySignatures.flatMap(e=>{let t=e.type;if(!Yi(t)){if(pr(t))return[{key:e.name,literal:t.literal}];if(mr(t))return[{key:e.name,literal:t.symbol}]}return[]});case`Arrays`:return e.elements.flatMap((e,t)=>{if(!Yi(e)){if(pr(e))return[{key:t,literal:e.literal}];if(mr(e))return[{key:t,literal:e.symbol}]}return[]});case`Union`:{if(e.types.length===0)return[];let t=e.types.map(e=>oi(ii(e)));return t[0].filter(e=>t.every(t=>t.some(t=>t.key===e.key&&t.literal===e.literal)))}case`Suspend`:return oi(e.thunk())}}var si=new WeakMap,ci=Object.freeze([]),li=(e,t)=>t===`__proto__`?Object.hasOwn(e,t):t in e;function ui(e){let t=si.get(e);if(t)return t;let n,r=0,i,a,o=!0;for(let t=0;t<e.length;t++){let s=e[t],c=ii(s);if(fr(c))continue;if(o){if(pr(c)||mr(c)){a??=new Map;let e=pr(c)?c.literal:c.symbol,t=a.get(e);t||a.set(e,t=[]),t.push(s)}else o=!1}let l=oi(c);if(l.length){n??=new Map,r++;for(let{key:e,literal:r}of l){let i=n.get(e);i||n.set(e,i=[new Map,new Set]),i[1].add(t);let a=i[0].get(r);a||i[0].set(r,a=new Set),a.add(t)}}else{i??={};let e=ai(c);for(let n of e)(i[n]??=[]).push(t)}}if(o&&a)a.forEach(Object.freeze),t=e=>a.get(e)??ci;else if(n?.size===1&&!i){let[r,[i]]=n.entries().next().value,a=i;for(let[t,n]of i)a.set(t,Object.freeze(Array.from(n,t=>e[t])));t=(t,n)=>{if(Ze(t)){let i=li(t,r)?t[r]:void 0;if(i!==void 0)return a.get(i)??ci;if(n)return e}return ci}}else if(n){let a;for(let e of n)(!a||e[1][0].size>a[1][0].size)&&e[1][1].size===r&&(a=e);t=(t,r)=>{let o=i?.[t===null?`null`:Array.isArray(t)?`array`:typeof t]??ci;if(!Ze(t))return o.map(t=>e[t]);let s=new Set(o),c;if(a){let[n,[i]]=a,l=li(t,n),u=l?t[n]:void 0;if(l&&(!r||u!==void 0)){let t=i.get(u);if(!t)return o.map(t=>e[t]);for(let e of t)s.add(e);c=n}}if(c===void 0)for(let[e,[i,a]]of n){let n=li(t,e),o=n?t[e]:void 0;if(n&&(!r||o!==void 0)){let e=i.get(o);if(e)for(let t of e)s.add(t)}else if(r)for(let e of a)s.add(e)}for(let[e,[i,a]]of n){if(e===c)continue;let n=li(t,e),o=n?t[e]:void 0;if(n&&(!r||o!==void 0)){let e=i.get(o);for(let t of s)a.has(t)&&!e?.has(t)&&s.delete(t)}}return Array.from(s).sort((e,t)=>e-t).map(t=>e[t])}}else t=t=>(i?.[t===null?`null`:Array.isArray(t)?`array`:typeof t]??ci).map(t=>e[t]).filter(di(t));return si.set(e,t),t}function di(e){return t=>{let n=ii(t);return n._tag===`Literal`?n.literal===e:n._tag!==`UniqueSymbol`||n.symbol===e}}function fi(e,t,n=!1){return ui(t)(e,n)}var pi=class extends I{_tag=`Union`;types;options;encodingChecks;constructor(e,t,n,r,i,a,o){super(n,r,i,a),this.types=e,this.options=t,this.encodingChecks=o}getParser(e,t){let n=this;return(r,i)=>{if(r===D)return k;let o=fi(r,n.types,t!==void 0);if(o.length===0)return b(new kn(n,[],r,i));if(o.length===1){let t=e(o[0])(r,i);return t._tag===`Success`?t:y(t)?mi(n,t.cause,r,i):Ce(t,e=>mi(n,e,r,i))}let s={ast:n,compile:e,input:r,out:void 0,successes:n.options?.mode===`oneOf`?[]:void 0,issues:void 0,options:i},c=hi(s,o);return c?a(c,e=>s.out===A?ze(r):s.out?s.out:b(new kn(n,s.issues??[],r,i))):s.out?s.out:b(new kn(n,s.issues??[],r,i))}}_rebuild(e,t,n){let r=Bi(this.types,e);return r===this.types&&t===this.checks&&n===this.encodingChecks?this:new pi(r,this.options,this.annotations,t,void 0,this.context,n)}recur(e){return this._rebuild(e,this.checks,this.encodingChecks)}flip(e){return this._rebuild(e,this.encodingChecks,this.checks)}matchPart(e,t){for(let n of this.types){let r=n.matchPart(e,t);if(r!==void 0)return r}}getExpected(e){let t=this.annotations?.expected;if(typeof t==`string`)return t;if(this.types.length===0)return`never`;let n=this.types.map(t=>{let n=$i(t);switch(n._tag){case`Arrays`:{let t=n.elements.filter(pr);if(t.length>0)return`${_i(n.isMutable)}[ ${t.map(t=>e(t)+vi(t.context?.isOptional)).join(`, `)}, ... ]`;break}case`Objects`:{let t=n.propertySignatures.filter(e=>pr(e.type));if(t.length>0)return`{ ${t.map(t=>`${_i(t.type.context?.isMutable)}${_(t.name)}${vi(t.type.context?.isOptional)}: ${e(t.type)}`).join(`, `)}, ... }`;break}}return e(n)});return Array.from(new Set(n)).join(` | `)}};function mi(e,t,n,r){let i=Wn(t);return i?g(new kn(e,[i],n,r)):ne(t)}var hi=pe()({onItem(e,t){return e.compile(t)(e.input,e.options)},step(e,t,n){if(n._tag===`Failure`){let t=Wn(n.cause);if(t===void 0)return n;e.issues?e.issues.push(t):e.issues=[t]}else{if(e.out&&e.successes)return e.successes.push(t),g(new An(e.ast,e.successes,e.input,e.options));if(e.out=n,e.successes)e.successes.push(t);else return p}}}),gi=new pi([new Dr(`Infinity`),new Dr(`-Infinity`),new Dr(`NaN`)]);function _i(e){return e?``:`readonly `}function vi(e){return e?`?`:``}var yi=class extends I{_tag=`Suspend`;thunk;constructor(e,t,n,r,i){if(n)throw Error(`Cannot add checks to Suspend`);super(t,void 0,r,i);let a;this.thunk=()=>a??=e()}getParser(e){let t;return(n,r)=>(t??=e(this.thunk()))(n,r)}recur(e){return new yi(()=>e(this.thunk()),this.annotations,void 0,void 0,this.context)}getExpected(e){return e(this.thunk())}},bi=class extends it{_tag=`Filter`;run;annotations;aborted;constructor(e,t=void 0,n=!1){super(),this.run=e,this.annotations=t,this.aborted=n}annotate(e){return new bi(this.run,{...this.annotations,...e},this.aborted)}abort(){return new bi(this.run,this.annotations,!0)}and(e,t){return new xi([this,e],t)}},xi=class extends it{_tag=`FilterGroup`;checks;annotations;constructor(e,t=void 0){super(),this.checks=e,this.annotations=t}annotate(e){return new xi(this.checks,{...this.annotations,...e})}and(e,t){return new xi([this,e],t)}};function Si(e,t,n=!1){return new bi((t,n,r)=>Nn(n,e(t,n,r),t,r),t,n)}function Ci(e){return Si(e=>globalThis.Number.isFinite(e),{expected:`a finite number`,representation:{id:`effect/schema/isFinite`,payload:null},toJsonSchema:()=>({type:`number`}),toCode:()=>({runtime:`Schema.isFinite()`}),arbitraryConstraint:{number:`finite`},...e})}var wi=Pi(Mr,[Ci()]),Ti=new F(new pi([wi,gi]),new P(Zn(),N(e=>globalThis.Number.isFinite(e)?e:globalThis.String(e))));function Ei(e,t){let n=e.source,r=new globalThis.RegExp(n,e.flags);return Si(e=>(r.lastIndex=0,r.test(e)),{expected:`a string matching the RegExp ${n}`,representation:{id:`effect/schema/isPattern`,payload:{source:n,flags:e.flags}},toJsonSchema:()=>({pattern:n}),arbitraryConstraint:{patterns:[{source:e.source,flags:e.flags}]},...t})}function Di(e,t){let n=Object.getOwnPropertyDescriptors(e);return t(n),Object.create(Object.getPrototypeOf(e),n)}var Oi=new WeakMap;function ki(e){return Oi.get(e)??e}function L(e,t){return e.encoding===t?e:Di(e,e=>{e.encoding.value=t})}function Ai(e,t){if(e.context===t)return e;let n=ki(e);if(n.context===t)return n;let r=Di(e,e=>{e.context.value=t});return Oi.set(r,n),r}function ji(e){return e.encoding?ji(e.encoding[e.encoding.length-1].to):e}function Mi(e,t){if(e.checks){let n=e.checks[e.checks.length-1];return Ni(e,be(e.checks.slice(0,-1),n.annotate(t)))}return Di(e,e=>{e.annotations.value={...e.annotations.value,...t}})}function Ni(e,t){if(e._tag===`Suspend`&&t)throw Error(`Cannot add checks to Suspend`);return e.checks===t?e:Di(e,e=>{e.checks.value=t})}function Pi(e,t){return Ni(e,$r(e.checks,t))}function Fi(e,t){let n=t(e.to);return n===e.to?e:new F(n,e.transformation)}function Ii(e,t){let n=e,r=n[n.length-1],i=Fi(r,t);return i===r?e:be(e.slice(0,e.length-1),i)}function Li(e){return t=>t.encoding?L(t,Ii(t.encoding,e)):t}function Ri(e,t){function n(r){if(r.encoding){let e=r.encoding[r.encoding.length-1];return t?.stopAt?.(e)?r:L(r,Ii(r.encoding,n))}return e(r)}return Me(n)}function zi(e,t,n){let r=new F(e,t);return L(n,n.encoding?[...n.encoding,r]:[r])}function Bi(e,t){let n=!1,r=Array(e.length);for(let i=0;i<e.length;i++){let a=e[i],o=t(a);o!==a&&(n=!0),r[i]=o}return n?r:e}function Vi(e,t){return Ai(e,e.context?new yr(e.context.isOptional,e.context.isMutable,e.context.constructorDefault,{...e.context.annotations,...t}):new yr(!1,!1,void 0,t))}var Hi=Me(e=>Ui(Ai(e,e.context?e.context.isOptional===!1?new yr(!0,e.context.isMutable,e.context.constructorDefault,e.context.annotations):e.context:new yr(!0,!1)))),Ui=Li(Hi),Wi=n(e=>Hi(new pi([e,Tr])));function Gi(e,t){return Ai(e,e.context?new yr(e.context.isOptional,e.context.isMutable,t,e.context.annotations):new yr(!1,!1,t))}function Ki(e,t,n){return zi(e,n,t)}function qi(e){let t=[],n=[];function r(e){switch(e._tag){case`Literal`:h(e.literal)&&t.push(e.literal);return;case`UniqueSymbol`:t.push(e.symbol);return;case`Never`:return;case`Union`:for(let t=0;t<e.types.length;t++)r(e.types[t]);return;default:n.push(e)}}return r(e),{literals:t,parameters:n}}function Ji(e,t){let{literals:n,parameters:r}=qi(e);return new Jr(n.map(e=>new Ur(e,t)),r.map(e=>new qr(e,t)))}function Yi(e){return e.context?.isOptional??!1}function Xi(e){return e.annotations?.[`~structural`]===!0||e._tag===`FilterGroup`&&e.checks.every(Xi)}function Zi(e){function t(e){return Xi(e)?[e]:e._tag===`FilterGroup`?e.checks.flatMap(t):[]}let n=e.flatMap(t);return se(n)?n:void 0}var Qi=Me(e=>{if(e.encoding)return Qi(L(e,void 0));let t=e,n=t.recur?.(Qi)??t,r=n.encodingChecks;if(r){let t=n===e?r:hr(n)||gr(n)||dr(n)&&n.typeParameters.length>0?Zi(r):void 0;return Di(n,e=>{e.encodingChecks.value=void 0,e.checks.value=$r(n.checks,t)})}return n}),$i=Me(e=>Qi(ta(e)));function ea(e,t){let n=t,r=n.length,i=n[r-1],a=[new F(ta(L(e,void 0)),n[0].transformation.flip())];for(let e=1;e<r;e++)a.unshift(new F(ta(n[e-1].to),n[e].transformation.flip()));let o=ta(i.to);return o.encoding?L(o,[...o.encoding,...a]):L(o,a)}var ta=n(e=>{if(e.encoding)return ea(e,e.encoding);let t=e;return t.flip?.(ta)??t.recur?.(ta)??t});function na(e){switch(e._tag){case`Undefined`:return!0;case`Union`:return e.types.some(na);default:return!1}}function ra(e,t){let n=t===0?A:O(t);return(r,i)=>r===D?k:r===t?n:b(new Dn(e,r,i))}function ia(e,t){return(n,r)=>n===D?k:t(n)?A:b(new Dn(e,n,r))}var aa=Ri(e=>{switch(e._tag){default:return e;case`Number`:return e.toCodecStringTree();case`Union`:return e.recur(aa)}}),oa=new globalThis.RegExp(`^${Vr}$`),sa=new globalThis.RegExp(`^(?:${Vr}|Infinity|-Infinity|NaN)$`);function ca(e){return Ei(oa,{expected:`a string representing a finite number`,representation:{id:`effect/schema/isStringFinite`,payload:null},toJsonSchema:()=>({pattern:oa.source}),...e})}var la=Pi(kr,[ca()]),ua=new F(la,sr),da=new F(new pi([la,gi]),sr),fa=new globalThis.RegExp(`^-?\\d+$`);function pa(e){return Ei(fa,{expected:`a string representing a bigint`,representation:{id:`effect/schema/isStringBigInt`,payload:null},toJsonSchema:()=>({pattern:fa.source}),...e})}var ma=Pi(kr,[pa({expected:`a string representing a bigint`})]),ha=new F(ma,cr);function ga(e,t,n,r,i){for(let a=0;a<e.length;a++){let o=e[a];if(o._tag===`FilterGroup`){if(n=ga(o.checks,t,n,r,i),n&&(i.errors!==`all`||n[n.length-1].filter.aborted))return n}else{let e=o.run(t,r,i);if(e){let r=new Sn(o,e,t,i);if(n?n.push(r):n=[r],i.errors!==`all`||o.aborted)return n}}}return n}function _a(e){if(!dr(e))return;let t=e.annotations?.[hn];return _e(t)?t(e.typeParameters):void 0}var va=(e,t,n)=>e===A?n(t):a(e,n);function ya(e){if(e._tag===`Middleware`)return(t,n,r)=>ba(t===A?e.decode(O(_n(n)),r):e.decode(s(t,_n),r));let t=e.decode;switch(t._tag){case`Passthrough`:return(e,t)=>e===A?O(t):e;case`Transform`:{let e=e=>e===D?k:O(t.transform(e));return(t,n)=>va(t,n,e)}case`TransformOptional`:{let e=e=>vn(t.transform(_n(e)));return(t,n)=>va(t,n,e)}case`TransformEffect`:return(e,n,r)=>va(e,n,e=>e===D?k:t.transform(e,r));case`TransformOptionalEffect`:return(e,n,r)=>va(e,n,e=>ba(t.transform(_n(e),r)))}}var ba=e=>a(e,vn),xa=(e,t,n,i)=>Ce(i,i=>ut(()=>r(i,r=>new Cn(e,r,t,n))));function Sa(e,t){let n=ya(e.link.transformation),r;return(i,a)=>{if(i===D)return k;if(e.isConstructed(i))return A;let o=(r??=t(e.link.to))(i,a);return n(o,i,a)}}function Ca(e,t){let n=e.context.constructorDefault;return(r,i)=>{if(r!==D&&r!==void 0)return t(r,i);let o=n;if(y(o)&&o._tag===`Success`){let e=t(o[v],i);return e===A?o:e}return a(xa(e,r,i,o),e=>{let n=t(e,i);return n===A?O(e):n})}}function wa(e,t){let n=t(e);return e.context?.constructorDefault===void 0?n:Ca(e,n)}function Ta(e,t,n,r,i){if(e._tag===`Declaration`)for(let n of e.typeParameters)t(n);let o=n?_a(e):void 0,s=o?Sa(o,t):r??e.getParser(t,n),c=e.checks,l=e.encoding,u=l?.map(e=>ya(e.transformation)),d=e.encodingChecks;if(!l&&!c&&!d)return s;let f,p=(t,n)=>{let r=s(t,n);if(d&&!n.disableChecks){if(y(r)){if(r._tag===`Success`){let i=r===A?t:r[v];if(t!==D&&i!==D){let i=ga(d,t,void 0,e,n);i&&(r=b(new M(e,i,t,n)))}}}else r=de(r,r=>{if(t!==D&&r!==D){let r=ga(d,t,void 0,e,n);if(r)return b(new M(e,r,t,n))}return ze(r)})}if(c&&!n.disableChecks){if(y(r)){if(r._tag===`Success`){let i=r===A?t:r[v];if(i===D)return r;let a=ga(c,i,void 0,e,n);a&&(r=b(new M(e,a,i,n)))}}else r=de(r,t=>{if(t!==D){let r=ga(c,t,void 0,e,n);if(r)return b(new M(e,r,t,n))}return ze(t)})}return r},m=i===void 0?p:i(p);return l?(n,r)=>{let i=f??=l.map(e=>t(e.to)),o=n,s=i[i.length-1](n,r);for(let e=l.length-1;e>=0;e--)if(s=u[e](s,o,r),e!==0){let t=i[e-1];s._tag===`Success`?(o=s[v],s=t(o,r)):s=a(s,e=>{let n=t(e,r);return n===A?O(e):n})}if(s._tag===`Success`){let e=s[v],t=m(e,r);return t===A?s:t}return s=xa(e,n,r,s),a(s,e=>{let t=m(e,r);return t===A?O(e):t})}:m}var Ea=Symbol(),Da=new WeakMap,Oa=e=>Ma(e).parser,ka=e=>Ma(e).makeEffect,Aa=e=>wa(e,ka),ja=class{ast;constructor(e){this.ast=e}get decodeEffect(){return this.cachedDecodeEffect??=Ta(this.ast,Oa)}get parser(){return this.decodeEffect}get makeEffect(){return this.cachedMakeEffect??=Ta(this.ast,ka,Aa)}};function Ma(e){let t=Da.get(e);if(t!==void 0)return t;let n=new ja(e);return Da.set(e,n),n}function Na(e){let t=e.ast,n;return(e,r)=>(n??=Wa(Xa,Qi(t)))(e,r?.disableChecks?r?.parseOptions?{...r.parseOptions,disableChecks:!0}:{disableChecks:!0}:r?.parseOptions)}function Pa(e){let t=Na(e);return(e,n)=>{let r=re(t(e,n));return ae(r)?Pe(r.value):(Gn(r.cause,`Option adapter can only return none for schema issues`),Ue())}}function Fa(e){return Ja(Qi(e.ast))}function Ia(e,t){let n=Ha(e.ast);return t===void 0?n:(e,r)=>n(e,Ba(t,r))}function La(e,t){return Ka(Ia(e,t))}function Ra(e,t){let n=Ha(ta(e.ast));return t===void 0?n:(e,r)=>n(e,Ba(t,r))}function za(e,t){return Ka(Ra(e,t))}var Ba=(e,t)=>t?{...e,...t}:e,Va=e=>e===D?b(new On):ze(e);function Ha(e){return Wa(Ya,e)}function Ua(e,t){return e===A?ze(t):y(e)?e[v]===D?Va(D):e:a(e,Va)}function Wa(e,t){let n;return(r,i)=>{let o=(n??=e(t))(r,i??vr);return o===A?ze(r):y(o)?o[v]===D?Va(D):o:a(o,Va)}}function Ga(e){return(t,n)=>re(e(t,n))}function Ka(e){let t=Ga(e);return(e,n)=>{let r=t(e,n);return ae(r)?ot(r.value):et(Gn(r.cause,`Result adapter can only return schema issues`))}}function qa(e,t){let n=re(e);if(ae(n))return n.value;let r=Gn(n.cause,t);throw Error(`Schema validation failed`,{cause:r})}function Ja(e){let t,n;return(r,i)=>{t??=Ma(e);let a=i?.disableChecks?i.parseOptions?{...i.parseOptions,disableChecks:!0}:{disableChecks:!0}:i?.parseOptions??vr,o=t.make;if(o!==void 0&&r!==D){let e;try{e=o(r,a)}catch(e){throw Gn(le(e),`Constructor adapter can only throw schema issues`),e}if(e!==Ea&&e!==D)return e}return qa(Ua((n??=t.makeEffect)(r,a),r),`Constructor adapter can only throw schema issues`)}}var Ya=e=>Ma(e).parser,Xa=e=>Ma(e).makeEffect,Za=`~effect/Schema/Schema`,Qa={[Za]:Za,pipe(){return $e(this,arguments)},annotate(e){return this.rebuild(Mi(this.ast,e))},annotateKey(e){return this.rebuild(Vi(this.ast,e))},check(...e){return this.rebuild(Pi(this.ast,e))}};function $a(e,t){function n(){}let r=Object.setPrototypeOf(n,Qa);return t&&(Object.hasOwn(t,`name`)||Object.hasOwn(t,`length`)||Object.hasOwn(t,`__proto__`))?Object.defineProperties(r,Object.getOwnPropertyDescriptors({...t})):Object.assign(r,t),r.ast=e,r.rebuild=e=>$a(e,t),r.makeEffect=Na(r),r.make=Fa(r),r.makeOption=Pa(r),r}var eo=e=>e,to=`~effect/Schema/SchemaError`;({...o}),{...o},{...Oe};var no=class extends Rt(`SchemaError`){[to]=to;constructor(e){let t=fe();c(0);try{super({issue:e})}finally{c(t)}}get message(){return Vn(this.issue)}toString(){return`SchemaError(${this.message})`}};function ro(e,t){let n=La(e,t);return(e,t)=>Ae(n(e,t),e=>new no(e))}function io(e,t){let n=za(e,t);return(e,t)=>Ae(n(e,t),e=>new no(e))}var ao=io,R=$a,oo=eo(e=>{let t=So(e);return R(Wi(e.ast),{schema:t})});function so(e){let t=R(new Dr(e),{literal:e,transform(n){return t.pipe(wo(so(n),{decode:N(()=>n),encode:N(()=>e)}))}});return t}var co=R(Sr),lo=R(Tr),z=R(kr),uo=R(Mr),fo=R(Nr),po=R(Pr);function mo(e,t){return R(e,{fields:t,mapFields(e,t){let n=e(this.fields);return mo(ei(n,t?.unsafePreserveChecks?this.ast.checks:void 0),n)}})}function B(e){return mo(ei(e,void 0),e)}function ho(e,t){return R(Ji(e.ast,t.ast),{key:e,value:t})}function go(e,t){return R(e,{elements:t,mapElements(e,t){let n=e(this.elements);return go(ni(n,t?.unsafePreserveChecks?this.ast.checks:void 0),n)}})}function _o(e){return go(ni(e),e)}var vo=eo(e=>R(new Fr(!1,[],[e.ast]),{value:e}));function yo(e,t){return R(e,{members:t,mapMembers(e,t){let n=e(this.members);return yo(ri(n,this.ast.options,t?.unsafePreserveChecks?this.ast.checks:void 0),n)}})}function V(e,t){return yo(ri(e,t,void 0),e)}function bo(e){let t=e.map(so);return R(ri(t,void 0,void 0),{literals:e,members:t,mapMembers(e){return V(e(this.members))},pick(e){return bo(e)},transform(e){return V(t.map((t,n)=>t.transform(e[n])))}})}var xo=eo(e=>V([e,co])),So=eo(e=>V([e,lo]));function Co(e){return R(new yi(()=>e().ast))}function wo(e,t){return n=>R(Ki(n.ast,e.ast,t?ir(t):or()),{from:n,to:e})}function To(e){return t=>R(Gi(t.ast,e),{schema:t})}function H(e){return so(e).pipe(To(ze(e)))}var Eo=Si,U=R(wi);function Do(e){let t=Lt(e.order),n=e.formatter??w;return(r,i)=>Eo(e=>t(e,r),{expected:`a value greater than or equal to ${n(r)}`,arbitraryConstraint:{order:e.order,minimum:r},...e.annotate?.(r),...i})}function Oo(e){let t=Lt(e.order),n=Ft(e.order),r=It(e.order),i=Pt(e.order),a=e.formatter??w;return(o,s)=>{let c=o.exclusiveMinimum?n:t,l=o.exclusiveMaximum?i:r;return Eo(e=>c(e,o.minimum)&&l(e,o.maximum),{expected:`a value between ${a(o.minimum)}${o.exclusiveMinimum?` (excluded)`:``} and ${a(o.maximum)}${o.exclusiveMaximum?` (excluded)`:``}`,arbitraryConstraint:{order:e.order,minimum:o.minimum,maximum:o.maximum,...o.exclusiveMinimum&&{exclusiveMinimum:!0},...o.exclusiveMaximum&&{exclusiveMaximum:!0}},...e.annotate?.(o),...s})}}function ko(e){if(!globalThis.Number.isFinite(e))throw new globalThis.RangeError(`Expected a finite number, got ${w(e)}`);return e}var Ao=Do({order:Nt,annotate:e=>({representation:{id:`effect/schema/isGreaterThanOrEqualTo`,payload:{minimum:ko(e)}},toJsonSchema:()=>({minimum:e}),toCode:()=>({runtime:`Schema.isGreaterThanOrEqualTo(${w(e)})`})})}),jo=Oo({order:Nt,annotate:e=>{let t=e.exclusiveMinimum?!0:void 0,n=e.exclusiveMaximum?!0:void 0;return{representation:{id:`effect/schema/isBetween`,payload:{minimum:ko(e.minimum),maximum:ko(e.maximum),...t&&{exclusiveMinimum:t},...n&&{exclusiveMaximum:n}}},toJsonSchema:()=>({[t?`exclusiveMinimum`:`minimum`]:e.minimum,[n?`exclusiveMaximum`:`maximum`]:e.maximum}),toCode:()=>({runtime:`Schema.isBetween({ minimum: ${w(e.minimum)}, maximum: ${w(e.maximum)}, exclusiveMinimum: ${w(t)}, exclusiveMaximum: ${w(n)} })`})}}});function Mo(e){return Eo(e=>globalThis.Number.isSafeInteger(e),{expected:`an integer`,representation:{id:`effect/schema/isInt`,payload:null},toJsonSchema:()=>({type:`integer`}),toCode:()=>({runtime:`Schema.isInt()`}),arbitraryConstraint:{number:`integer`},...e})}var W=uo.check(Mo()).check(Ao(0));globalThis.RegExp,globalThis.URL;var No=z.annotate({expected:`a string that will be decoded as JSON`,contentMediaType:`application/json`});function Po(e,t){return No.pipe(wo(e,lr(t)))}globalThis.File,globalThis.FormData,globalThis.URLSearchParams;var Fo=R(ma).pipe(wo(po,cr));globalThis.Uint8Array;var G=e(Je(),1),Io={version:-1,rows:[],rowOf:new Map,duration:0,ordered:[]},K=(e,t)=>e.end??t,Lo=(e,t=Io)=>{if(t.version===e.version)return t;let n=e.stats().duration,r=[];for(let t of e.rows)for(let n of t){let t=e.spans.get(n);t!==void 0&&r.push(t)}r.sort((e,t)=>e.start-t.start||e.depth-t.depth);let i=[],a=[],o=[],s=new Map,c=(e,t,r)=>{for(;i.length<=e;)i.push([]),a.push(-1/0),o.push([]);let c=K(t,n);i[e].push(t),r?o[e].push({from:t.start,to:c}):c>a[e]&&(a[e]=c),s.set(t.spanId,e)},l=(e,t,n)=>e>=i.length?!0:a[e]>t?!1:!o[e].some(e=>e.from<n&&t<e.to);if(r.length>=t.ordered.length)for(let e of r){let n=t.rowOf.get(e.spanId);n!==void 0&&c(n,e,!0)}let u=e=>{let t=e.parentId===void 0?void 0:s.get(e.parentId),r=e.start,i=K(e,n),a=t===void 0?0:t+1;for(;!l(a,r,i);)a++;return a};for(let e of r)s.has(e.spanId)||c(u(e),e,!1);let d=i.map(e=>{e.sort((e,t)=>e.start-t.start);let t=new Float64Array(e.length),r=-1/0;for(let i=0;i<e.length;i++){let a=K(e[i],n);a>r&&(r=a),t[i]=r}return{spans:e,maxEnd:t}});return{version:e.version,rows:d,rowOf:s,duration:n,ordered:r}},Ro=()=>Io,zo=(e,t)=>{let n=0,r=e.spans.length;for(;n<r;){let i=n+r>>>1;e.maxEnd[i]<t?n=i+1:r=i}return n},Bo=(e,t,n,r,i)=>{for(let a=zo(e,t);a<e.spans.length;a++){let o=e.spans[a];if(o.start>n)return;K(o,r)>=t&&i(o)}},Vo=(e,t,n,r,i)=>{let a=[];for(let o of t.children){let t=e.spans.get(o);if(t===void 0)continue;let s=Math.max(t.start,r),c=Math.min(K(t,n),i);c>s&&a.push([s,c])}if(a.length===0)return 0;a.sort((e,t)=>e[0]-t[0]);let o=0,[s,c]=a[0];for(let e=1;e<a.length;e++){let[t,n]=a[e];t>c?(o+=c-s,s=t,c=n):n>c&&(c=n)}return o+(c-s)},Ho=(e,t,n,r=-1/0,i=1/0)=>{let a=Math.max(t.start,r),o=Math.min(K(t,n),i);return o<=a?{total:0,self:0}:{total:o-a,self:Math.max(o-a-Vo(e,t,n,a,o),0)}},q=S(void 0),Uo=S(void 0),Wo=S(``),Go=S(!1),Ko=(e,t)=>t===``||e.toLowerCase().includes(t),qo=S(!1),Jo={summary:[],callTree:[],bottomUp:[],timings:[]},Yo=(e,t,n)=>({id:e,name:t,count:0,total:0,self:0,failed:!1,spanId:n,children:new Map}),Xo=(e,t,n)=>{e.count+=1,e.total+=t.total,e.self+=n,t.span.outcome?._tag===`Failure`&&(e.failed=!0)},Zo=(e,t,n,r)=>{let i=e.get(n);if(i!==void 0)return i;let a=Yo(t===``?n:`${t}\0${n}`,n,r);return e.set(n,a),a},Qo=(e,t)=>[...e].sort((e,n)=>n[t]-e[t]||e.name.localeCompare(n.name)).map(e=>({id:e.id,name:e.name,count:e.count,total:e.total,self:e.self,failed:e.failed,spanId:e.spanId,children:Qo(e.children.values(),t)})),$o=(e,t,n,r,i)=>{let a=e.stats().duration,o=r.toLowerCase(),s=[];for(let r of e.spans.values()){if(i&&!Ko(r.name,o))continue;let{total:c,self:l}=Ho(e,r,a,t,n);c<=0||s.push({span:r,total:c,self:l})}if(s.length===0)return Jo;s.sort((e,t)=>e.span.start-t.span.start);let c=new Map;for(let e of s)Xo(Zo(c,``,e.span.name,e.span.spanId),e,e.self);let l=[...c.values()].sort((e,t)=>t.self-e.self||e.name.localeCompare(t.name)).map(e=>({name:e.name,count:e.count,total:e.total,self:e.self,average:e.total/e.count,failed:e.failed,spanId:e.spanId})),u=new Set(s.map(e=>e.span.spanId)),d=new Map,f=t=>{let n=d.get(t.spanId);if(n!==void 0)return n;let r=t.parentId,i=r===void 0?void 0:e.spans.get(r),a=i===void 0||!u.has(i.spanId)?[t]:[...f(i),t];return d.set(t.spanId,a),a},p=new Map,m=new Map;for(let e of s){let t=f(e.span),n=Zo(p,``,t[0].name,t[0].spanId);for(let e=1;e<t.length;e++)n=Zo(n.children,n.id,t[e].name,t[e].spanId);Xo(n,e,e.self);let r=Zo(m,``,e.span.name,e.span.spanId);Xo(r,e,e.self);for(let n=t.length-2;n>=0;n--)r=Zo(r.children,r.id,t[n].name,t[n].spanId),Xo(r,e,e.self)}return{summary:l,callTree:Qo(p.values(),`total`),bottomUp:Qo(m.values(),`self`),timings:s}},es=Fo,ts=V([z,U,fo,co,vo(Co(()=>ts)),ho(z,Co(()=>ts))]),ns=ho(z,ts),rs=z,J={sessionId:rs},is=bo([`internal`,`server`,`client`,`producer`,`consumer`]),as=bo([`All`,`Fatal`,`Error`,`Warn`,`Info`,`Debug`,`Trace`,`None`]),os=B({startTime:es,wallClockEpochMillis:W}),ss=B({_tag:H(`Hello`),...J,program:z,pid:W,runtime:z,protocolVersion:W,clock:os}),cs=B({_tag:H(`ExternalParent`),spanId:z,traceId:z,sampled:fo}),ls=V([B({_tag:H(`LocalParent`),spanId:z}),cs]),us=B({_tag:H(`SpanStart`),...J,spanId:z,traceId:z,parent:oo(ls),name:z,kind:is,startTime:es,attributes:ns,sampled:fo,fiberId:oo(W)}),ds=V([B({_tag:H(`Success`)}),B({_tag:H(`Failure`),kind:bo([`Fail`,`Die`,`Interrupt`]),error:z,stack:oo(z)})]),fs=B({_tag:H(`SpanEnd`),...J,spanId:z,endTime:es,outcome:ds,attributes:ns}),ps=B({_tag:H(`SpanEvent`),...J,spanId:z,name:z,time:es,attributes:ns}),ms=B({_tag:H(`Log`),...J,time:es,level:as,message:ts,spanId:oo(z),fiberId:oo(W),annotations:ns}),hs=(e,t)=>B({type:H(e),name:z,description:oo(z),attributes:ho(z,z),state:t}),gs=V([hs(`Counter`,B({count:W,incremental:fo})),hs(`Gauge`,B({value:U})),hs(`Histogram`,B({buckets:vo(_o([U,W])),count:W,min:U,max:U,sum:U})),hs(`Frequency`,B({occurrences:ho(z,W)})),hs(`Summary`,B({quantiles:vo(_o([U.check(jo({minimum:0,maximum:1})),xo(U)])),count:W,min:U,max:U,sum:U}))]),_s=B({_tag:H(`Metrics`),...J,time:es,metrics:vo(gs)}),vs=B({_tag:H(`FiberEvent`),...J,fiberId:W,event:bo([`Start`,`End`,`Suspend`,`Resume`]),parentFiberId:oo(W),time:es}),ys=B({_tag:H(`MemorySample`),...J,time:es,heapUsed:W,heapTotal:W,rss:W,external:W}),bs=B({_tag:H(`Ping`),...J}),xs=B({_tag:H(`Pong`),...J}),Ss=B({_tag:H(`MetricsRequest`)}),Cs=V([ss,us,fs,ps,ms,_s,vs,ys,bs]),ws=V([xs,Ss]),Ts=B({sessionId:rs,program:z,pid:W,runtime:z,clock:os,active:fo,endedAtEpochMillis:oo(W)}),Es=V([B({_tag:H(`SessionList`),sessions:vo(Ts)}),B({_tag:H(`Backlog`),...J,messages:vo(Cs),complete:fo}),B({_tag:H(`Live`),message:Cs}),B({_tag:H(`SessionEnded`),...J,endedAtEpochMillis:W})]),Ds=V([B({_tag:H(`Subscribe`),...J}),B({_tag:H(`Unsubscribe`),...J})]),Os=B({_tag:H(`TraceFileHeader`),formatVersion:W,protocolVersion:W,session:Ts,savedAtEpochMillis:W}),ks=class extends Rt(`EncodeError`){get message(){return`Unencodable protocol message: ${this.reason}`}},As=class extends Rt(`DecodeError`){get message(){return`Invalid protocol message: ${this.reason}`}},js=e=>{let t=Po(e),n=ao(t),r=ro(t),i=e=>Ve(n(e),{onSuccess:e=>ot(`${e}\n`),onFailure:e=>et(new ks({reason:e.message}))}),a=e=>Ae(r(e.trim()),t=>new As({line:e,reason:t.message}));return{encode:e=>Ie(i(e)),encodeResult:i,decode:a,decodeAll:e=>Ke(e.split(`
3
- `).filter(e=>e.trim()!==``).map(a))}},Ms=js(Cs);js(ws);var Ns=js(Es),Ps=js(Ds),Fs=js(Os),Is=`.eitrace`,Ls=e=>et({_tag:`TraceFileError`,message:e}),Rs=`loaded:`,zs=e=>e.startsWith(Rs),Bs=(e,t,n)=>{let r=Fs.encode({_tag:`TraceFileHeader`,formatVersion:1,protocolVersion:1,session:e,savedAtEpochMillis:n}),i=[];for(let e of t)i.push(Ms.encode(e));return r+i.join(``)},Vs=(e,t)=>`${(e.program.split(/[/\\]/).pop()??`trace`).replace(/[^\w.-]+/g,`-`).replace(/^-+|-+$/g,``)||`trace`}-${new Date(t).toISOString().replace(/[:.]/g,`-`).slice(0,19)}${Is}`,Hs=e=>{let t=e.split(`
4
- `),n=t[0];if(n===void 0||n.trim()===``)return Ls(`The file is empty.`);let r=Fs.decode(n);if(Ye(r))return Ls(`This is not an effect-inspect trace file: its header could not be read.`);let i=r.success;if(i.formatVersion>1)return Ls(`This trace file is format version ${i.formatVersion}; this build understands up to 1.`);let a=[],o=0;for(let e=1;e<t.length;e++){let n=t[e];if(n.trim()===``)continue;let r=Ms.decode(n);if(nt(r)){a.push(r.success);continue}if(!t.slice(e+1).every(e=>e.trim()===``))return Ls(`This trace file is corrupt: line ${e+1} could not be read.`);o=1}return ot({header:i,messages:a,truncatedLines:o})},Us=e=>({...e.session,sessionId:zs(e.session.sessionId)?e.session.sessionId:`${Rs}${e.session.sessionId}`,active:!1,endedAtEpochMillis:e.session.endedAtEpochMillis??e.savedAtEpochMillis}),Ws=1000000n,Gs=(e,t)=>Number((e-t)/Ws)+Number((e-t)%Ws)/1e6,Ks=class{spans=new Map;roots=[];openSpans=new Set;logs=[];memory=[];memoryPeak=0;memoryTrough=1/0;memoryRssPeak=0;raw=[];rows=[];pendingChildren=new Map;origin;epochOrigin;version=0;spanCount=0;errorCount=0;eventCount=0;maxTime=0;stats(){return{spans:this.spanCount,openSpans:this.openSpans.size,errors:this.errorCount,logs:this.logs.length,events:this.eventCount,duration:this.maxTime}}clear(){this.spans.clear(),this.roots.length=0,this.openSpans.clear(),this.logs.length=0,this.memory.length=0,this.memoryPeak=0,this.memoryTrough=1/0,this.memoryRssPeak=0,this.raw.length=0,this.rows.length=0,this.pendingChildren.clear(),this.origin=void 0,this.epochOrigin=void 0,this.spanCount=0,this.errorCount=0,this.eventCount=0,this.maxTime=0,this.version++}apply(e){switch(this.raw.push(e),e._tag){case`Hello`:this.anchor(e.clock.startTime),this.epochOrigin=e.clock.wallClockEpochMillis;break;case`SpanStart`:this.applySpanStart(e);break;case`SpanEnd`:this.applySpanEnd(e);break;case`SpanEvent`:this.applySpanEvent(e);break;case`Log`:this.applyLog(e);break;case`MemorySample`:this.applyMemorySample(e);break;default:return}this.version++}applyAll(e){let t=this.version;for(let t of e)this.apply(t);this.version=t+1}anchor(e){this.origin??=e}relative(e){this.anchor(e);let t=Gs(e,this.origin);return t>this.maxTime&&(this.maxTime=t),t}applySpanStart(e){if(this.spans.has(e.spanId))return;let t=e.parent?._tag===`LocalParent`?e.parent.spanId:void 0,n=t===void 0?void 0:this.spans.get(t),r={spanId:e.spanId,traceId:e.traceId,name:e.name,kind:e.kind,parentId:t,start:this.relative(e.startTime),end:void 0,depth:n===void 0?0:n.depth+1,outcome:void 0,attributes:{...e.attributes},children:[],events:[],fiberId:e.fiberId,orphaned:t!==void 0&&n===void 0};if(this.spans.set(r.spanId,r),this.openSpans.add(r.spanId),this.spanCount++,n!==void 0)n.children.push(r.spanId);else if(t===void 0)this.roots.push(r.spanId);else{let e=this.pendingChildren.get(t);e===void 0?this.pendingChildren.set(t,[r.spanId]):e.push(r.spanId)}this.addToRow(r),this.adoptPending(r)}adoptPending(e){let t=this.pendingChildren.get(e.spanId);if(t!==void 0){this.pendingChildren.delete(e.spanId);for(let n of t){let t=this.spans.get(n);t!==void 0&&(e.children.push(n),t.orphaned=!1,this.redepth(t,e.depth+1))}}}redepth(e,t){let n=[[e,t]];for(;n.length>0;){let e=n.pop();if(e===void 0)break;let[t,r]=e;t.depth!==r&&(this.removeFromRow(t),t.depth=r,this.addToRow(t));for(let e of t.children){let t=this.spans.get(e);t!==void 0&&n.push([t,r+1])}}}addToRow(e){for(;this.rows.length<=e.depth;)this.rows.push([]);this.rows[e.depth].push(e.spanId)}removeFromRow(e){let t=this.rows[e.depth];if(t===void 0)return;let n=t.indexOf(e.spanId);n!==-1&&t.splice(n,1)}applySpanEnd(e){let t=this.spans.get(e.spanId);t!==void 0&&(t.end=this.relative(e.endTime),t.outcome=e.outcome,Object.keys(e.attributes).length>0&&(t.attributes={...t.attributes,...e.attributes}),this.openSpans.delete(e.spanId)&&e.outcome._tag===`Failure`&&this.errorCount++)}applySpanEvent(e){let t=this.spans.get(e.spanId);t!==void 0&&(t.events.push({name:e.name,time:this.relative(e.time),attributes:e.attributes}),this.eventCount++)}applyMemorySample(e){this.memory.push({time:this.relative(e.time),heapUsed:e.heapUsed,heapTotal:e.heapTotal,rss:e.rss,external:e.external}),e.heapUsed>this.memoryPeak&&(this.memoryPeak=e.heapUsed),e.heapUsed<this.memoryTrough&&(this.memoryTrough=e.heapUsed),e.rss>this.memoryRssPeak&&(this.memoryRssPeak=e.rss)}applyLog(e){this.logs.push({time:this.relative(e.time),level:e.level,message:e.message,spanId:e.spanId,fiberId:e.fiberId,annotations:e.annotations})}},qs=typeof window>`u`?`ws://localhost:34437/webapp`:`${window.location.protocol===`https:`?`wss:`:`ws:`}//${window.location.host}/webapp`,Y=new Ks,Js=S({_tag:`Connecting`}),Ys=S([]),Xs=S([]),Zs=Ne(e=>[...e(Xs).map(e=>e.session),...e(Ys)]),Qs=S(void 0),$s=S(0),ec=S(0),tc=Ne(e=>{let t=e(Qs);if(t!==void 0)return e(Zs).find(e=>e.sessionId===t)}),nc=Ne(e=>{e($s);let t=e(tc);if(t===void 0||Y.origin===void 0)return;let n=Y.origin-t.clock.startTime;return t.clock.wallClockEpochMillis+Number(n/1000000n)}),rc=Ne(e=>(e($s),Y.stats())),ic=e=>Math.min(1e3*2**e,1e4),ac=He(Ne(e=>{let t,n,r,i=0,a=!1,o,s=()=>{r===void 0&&(r=requestAnimationFrame(()=>{r=void 0,e.set($s,Y.version)}))},c=e=>{t?.readyState===WebSocket.OPEN&&t.send(Ps.encode(e))},l=()=>{let t=e.get(Qs);if(t!==o&&(o!==void 0&&!zs(o)&&c({_tag:`Unsubscribe`,sessionId:o}),o=t,Y.clear(),s(),t!==void 0)){if(zs(t)){let n=e.get(Xs).find(e=>e.session.sessionId===t);n!==void 0&&Y.applyAll(n.messages),s();return}c({_tag:`Subscribe`,sessionId:t})}},u=t=>{switch(t._tag){case`SessionList`:{let n=[...t.sessions].sort((e,t)=>t.clock.wallClockEpochMillis-e.clock.wallClockEpochMillis);e.set(Ys,n),e.get(Qs)===void 0&&n.length>0&&e.set(Qs,n[0].sessionId);break}case`Backlog`:if(t.sessionId!==o)return;Y.applyAll(t.messages),s();break;case`Live`:if(t.message.sessionId!==o)return;Y.apply(t.message),s()}},d=()=>{if(a)return;e.set(Js,{_tag:`Connecting`});let r=new WebSocket(qs);t=r,r.onopen=()=>{i=0,e.set(Js,{_tag:`Connected`}),!(o!==void 0&&zs(o))&&(o=void 0,l())},r.onmessage=t=>{if(typeof t.data!=`string`)return;let n=oc(t.data);if(n===void 0){e.set(ec,e.get(ec)+1);return}for(let e of n)u(e)},r.onerror=()=>{},r.onclose=()=>{if(a)return;t=void 0,(o===void 0||!zs(o))&&(o=void 0);let r=ic(i);e.set(Js,{_tag:`Disconnected`,reason:`Cannot reach the collector at ${qs}`,attempt:i}),i++,n=setTimeout(d,r)}};e.subscribe(Qs,()=>l()),e.addFinalizer(()=>{a=!0,n!==void 0&&clearTimeout(n),r!==void 0&&cancelAnimationFrame(r),t?.close(),t=void 0}),d()})),oc=e=>De(Ns.decodeAll(e)),sc=(e,t)=>{let n=Hs(t);if(Ye(n))return et(n.failure.message);let{header:r,messages:i,truncatedLines:a}=n.success,o=Us(r),s={session:o,messages:i,truncatedLines:a};return e.set(Xs,[s,...e.get(Xs).filter(e=>e.session.sessionId!==o.sessionId)]),e.set(Qs,o.sessionId),ot(o)},cc=(e,t)=>zs(t)?e.get(Xs).find(e=>e.session.sessionId===t)?.messages??Y.raw:Y.raw,X=(e,t,n)=>{let r=e.getPropertyValue(t).trim();return r===``?n:r},lc=(e,t,n)=>`color-mix(in oklch, ${e} ${n}%, ${t})`,uc=()=>{let e=getComputedStyle(document.documentElement),t=X(e,`--canvas`,`#1c1d20`),n=X(e,`--ink`,`#f5f6f7`),r=X(e,`--ink-2`,`#a8adb8`),i=X(e,`--ink-3`,`#6f7480`),a=X(e,`--red`,`#e05252`);return{bg:t,panel:X(e,`--surface`,`#26272c`),grid:X(e,`--grid-line`,`#3a3c42`),rulerText:i,label:n,labelDim:r,error:lc(a,t,72),errorHot:a,selected:n,depth:[X(e,`--depth-1`,`#3f3f46`),X(e,`--depth-2`,`#52525b`),X(e,`--depth-3`,`#34343a`),X(e,`--depth-4`,`#45454d`),X(e,`--depth-5`,`#2e2e33`)],overviewScrim:lc(t,`transparent`,72),overviewWindow:X(e,`--line-strong`,`#4a4d55`),memoryCurve:r,memoryFill:lc(r,`transparent`,16),memoryRss:i,memoryLabel:i,memoryBase:X(e,`--line`,`#33353b`),readoutBg:X(e,`--tooltip-bg`,`#1a1b1e`),readoutFg:X(e,`--tooltip-fg`,`#f5f6f7`)}},dc=.001,fc=(e,t)=>{let n=Math.max(t,dc),r=Math.min(Math.max(e.to-e.from,dc),n),i=e.from;return i<0&&(i=0),i+r>n&&(i=n-r),{from:i,to:i+r}},pc=(e,t,n,r)=>{let i=(e.to-e.from)*n,a=(t-e.from)/(e.to-e.from);return fc({from:t-i*a,to:t+i*(1-a)},r)},mc=(e,t,n)=>fc({from:e.from+t,to:e.to+t},n),hc=(e,t)=>e.from<=0&&e.to>=Math.max(t,dc)-dc,gc=(e,t)=>e.length===0?0:t?11:40,_c=e=>e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(0)} KB`:e<1073741824?`${(e/1048576).toFixed(1)} MB`:`${(e/1073741824).toFixed(2)} GB`,vc=(e,t)=>{let n=0,r=e.length-1,i=-1;for(;n<=r;){let a=n+r>>>1;e[a].time<=t?(i=a,n=a+1):r=a-1}return e[i===-1?0:i]},yc=e=>{let{ctx:t,samples:n,collapsed:r,top:i,height:a,width:o,timeToX:s,peak:c,trough:l,rssPeak:u,traceEnd:d,palette:f}=e;if(n.length===0||a<=0)return;if(r){t.save(),t.fillStyle=f.bg,t.fillRect(0,i,o,a),t.fillStyle=f.memoryLabel,t.textAlign=`left`,t.fillText(`+ memory · heap peak ${_c(c)}`,4,i+a/2),t.restore();return}let p=i+a,m=a-12,h=l,ee=c-h,te=e=>ee>0?p-(e-h)/ee*m-2:p-m/2;t.save(),t.beginPath(),t.rect(0,i,o,a),t.clip();let g=e=>{let t=s(e);return t<-o?-o:t>o*2?o*2:t},_=n[0],ne=n[n.length-1],re=g(0),ie=g(d);t.beginPath(),t.moveTo(re,p),t.lineTo(re,te(_.heapUsed));for(let e of n)t.lineTo(g(e.time),te(e.heapUsed));if(t.lineTo(ie,te(ne.heapUsed)),t.lineTo(ie,p),t.closePath(),t.fillStyle=f.memoryFill,t.fill(),t.strokeStyle=f.memoryCurve,t.lineWidth=1,t.stroke(),u>0){let e=e=>p-e/u*m-2;t.beginPath(),t.moveTo(re,e(_.rss));for(let r of n)t.lineTo(g(r.time),e(r.rss));t.lineTo(ie,e(ne.rss)),t.strokeStyle=f.memoryRss,t.setLineDash([2,2]),t.stroke(),t.setLineDash([])}t.strokeStyle=f.memoryBase,t.beginPath(),t.moveTo(0,p-.5),t.lineTo(o,p-.5),t.stroke();let ae=`− memory · heap ${_c(h)}–${_c(c)} · rss ${_c(u)}`;t.textAlign=`left`,t.fillStyle=f.bg,t.fillRect(0,i,t.measureText(ae).width+8,13),t.fillStyle=f.memoryLabel,t.fillText(ae,4,i+7),t.restore()},bc=34,xc=18,Z=16,Sc=26,Cc=class{canvas;registry;ctx;layout=Ro();view={from:0,to:1};following=!0;scrollY=0;width=0;height=0;dpr=1;frame;dirty=!0;lastVersion=-1;palette=uc();hover;cursorX;drag;overviewDrag=!1;overviewGrab=0;unsubscribes=[];observer;constructor(e,t){this.canvas=e,this.registry=t;let n=e.getContext(`2d`,{alpha:!1});if(n===null)throw Error(`2d canvas context unavailable`);this.ctx=n,this.observer=new ResizeObserver(()=>this.resize()),this.observer.observe(e),this.resize(),e.addEventListener(`pointerdown`,this.onPointerDown),e.addEventListener(`pointermove`,this.onPointerMove),e.addEventListener(`pointerup`,this.onPointerUp),e.addEventListener(`pointerleave`,this.onPointerLeave),e.addEventListener(`wheel`,this.onWheel,{passive:!1});let r=()=>this.invalidate();this.unsubscribes.push(t.subscribe(q,r),t.subscribe(Uo,r),t.subscribe(Wo,r),t.subscribe(Go,r),t.subscribe(qo,r),t.subscribe(We,()=>{this.palette=uc(),this.invalidate()})),this.loop()}dispose(){this.frame!==void 0&&cancelAnimationFrame(this.frame),this.observer.disconnect();for(let e of this.unsubscribes)e();this.canvas.removeEventListener(`pointerdown`,this.onPointerDown),this.canvas.removeEventListener(`pointermove`,this.onPointerMove),this.canvas.removeEventListener(`pointerup`,this.onPointerUp),this.canvas.removeEventListener(`pointerleave`,this.onPointerLeave),this.canvas.removeEventListener(`wheel`,this.onWheel)}resetView(){this.following=!0,this.invalidate()}revealSpan(e){let t=Y.spans.get(e);if(t===void 0)return;let n=this.total(),r=K(t,n),i=Math.max(this.view.to-this.view.from,(r-t.start)*1.4,.01),a=(t.start+r)/2;this.following=!1,this.setView(fc({from:a-i/2,to:a+i/2},n));let o=(this.layout.rowOf.get(t.spanId)??t.depth)*Z,s=this.chartTop(),c=this.height-s;o<this.scrollY?this.scrollY=o:o+Z>this.scrollY+c&&(this.scrollY=o+Z-c),this.invalidate()}viewport(){return this.view}zoomBy(e){this.setView(pc(this.view,this.keyboardAnchor(),e,this.total()))}panBy(e){this.setView(mc(this.view,(this.view.to-this.view.from)*e,this.total()))}scrollRows(e){let t=this.layout.rows.length*Z,n=this.height-this.chartTop();this.scrollY=Math.max(0,Math.min(this.scrollY+e,Math.max(t-n,0))),this.invalidate()}keyboardAnchor(){if(this.cursorX!==void 0)return this.xToTime(this.cursorX);let e=this.registry.get(q),t=e===void 0?void 0:Y.spans.get(e);return t===void 0?(this.view.from+this.view.to)/2:(t.start+K(t,this.total()))/2}hovered(){return this.hover}invalidate(){this.dirty=!0}total(){return Math.max(this.layout.duration,.001)}memoryHeight(){return gc(Y.memory,this.registry.get(qo))}chartTop(){return 52+this.memoryHeight()}setView(e){this.view=e,this.following=hc(e,this.total()),this.invalidate()}resize(){let e=this.canvas.getBoundingClientRect();e.width!==0&&e.height!==0&&(this.dpr=Math.min(globalThis.devicePixelRatio||1,2),this.width=e.width,this.height=e.height,this.canvas.width=Math.round(e.width*this.dpr),this.canvas.height=Math.round(e.height*this.dpr),this.invalidate())}loop=()=>{if(this.frame=requestAnimationFrame(this.loop),Y.version!==this.lastVersion&&(this.lastVersion=Y.version,this.layout=Lo(Y,this.layout),this.dirty=!0),this.following){let e=this.total();(this.view.from!==0||this.view.to!==e)&&(this.view={from:0,to:e},this.dirty=!0)}this.dirty&&(this.dirty=!1,this.draw())};timeToX(e){return(e-this.view.from)/(this.view.to-this.view.from)*this.width}xToTime(e){return this.view.from+e/this.width*(this.view.to-this.view.from)}pointer(e){let t=this.canvas.getBoundingClientRect();return{x:e.clientX-t.left,y:e.clientY-t.top}}hitTest(e,t){let n=this.chartTop();if(t<n)return;let r=Math.floor((t-n+this.scrollY)/Z),i=this.layout.rows[r];if(i===void 0)return;let a=this.total(),o=(this.view.to-this.view.from)/this.width*2,s=this.xToTime(e),c;if(Bo(i,s-o,s+o,a,e=>{e.start-o<=s&&K(e,a)+o>=s&&(c=e)}),c===void 0)return;let l=this.timeToX(c.start),u=this.timeToX(K(c,a));return{span:c,x:l,y:n+r*Z-this.scrollY,width:Math.max(u-l,1)}}onPointerDown=e=>{let{x:t,y:n}=this.pointer(e);if(this.canvas.setPointerCapture(e.pointerId),n<bc){let e=this.total(),n=this.view.from/e*this.width,r=this.view.to/e*this.width;if(t>=n&&t<=r)this.overviewDrag=!0,this.overviewGrab=t-n;else{let n=this.view.to-this.view.from,r=t/this.width*e;this.overviewDrag=!0,this.overviewGrab=n/e*this.width/2,this.setView(fc({from:r-n/2,to:r+n/2},e))}return}let r=this.memoryHeight();if(r>0&&n>=52&&n<52+r&&t<260){this.registry.set(qo,!this.registry.get(qo)),this.invalidate();return}let i=this.hitTest(t,n);this.registry.set(q,i?.span.spanId),this.drag={x:t,view:this.view}};onPointerMove=e=>{let{x:t,y:n}=this.pointer(e);if(this.cursorX=t,this.overviewDrag){let e=this.total(),n=this.view.to-this.view.from,r=(t-this.overviewGrab)/this.width*e;this.setView(fc({from:r,to:r+n},e));return}if(this.drag!==void 0){let e=(this.drag.view.to-this.drag.view.from)/this.width;this.setView(mc(this.drag.view,(this.drag.x-t)*e,this.total()));return}let r=this.hitTest(t,n);r?.span.spanId!==this.hover?.span.spanId&&this.registry.set(Uo,r?.span.spanId),this.hover=r,this.canvas.style.cursor=r===void 0?`default`:`pointer`,this.invalidate()};onPointerUp=e=>{this.canvas.releasePointerCapture(e.pointerId),this.drag=void 0,this.overviewDrag=!1};onPointerLeave=()=>{this.hover=void 0,this.cursorX=void 0,this.registry.set(Uo,void 0),this.invalidate()};onWheel=e=>{e.preventDefault();let{x:t}=this.pointer(e),n=this.total();if(e.altKey){this.scrollRows(e.deltaY);return}if(e.shiftKey){let t=(this.view.to-this.view.from)/this.width;this.setView(mc(this.view,e.deltaY*t,n));return}if(Math.abs(e.deltaX)>Math.abs(e.deltaY)){let t=(this.view.to-this.view.from)/this.width;this.setView(mc(this.view,e.deltaX*t,n));return}let r=Math.exp(e.deltaY*.002);this.setView(pc(this.view,this.xToTime(t),r,n))};depthFill(e){let t=this.palette.depth;return t[e%t.length]??this.palette.labelDim}draw(){let e=this.ctx;e.setTransform(this.dpr,0,0,this.dpr,0,0),e.fillStyle=this.palette.bg,e.fillRect(0,0,this.width,this.height),e.font=`10px ui-monospace, SFMono-Regular, Menlo, monospace`,e.textBaseline=`middle`;let t=this.registry.get(Wo).toLowerCase(),n=this.registry.get(Go),r=this.registry.get(q);this.drawOverview(t);let i=this.drawRuler();this.drawMemory(),this.drawBars(t,n,r,i)}drawOverview(e){let t=this.ctx,n=this.total();t.fillStyle=this.palette.panel,t.fillRect(0,0,this.width,bc);let r=this.layout.rows.length;if(r>0){let i=Math.max(30/r,.5);for(let a=0;a<r;a++){let r=this.layout.rows[a],o=2+a*i;for(let a of r.spans){let r=a.start/n*this.width,s=K(a,n)/n*this.width;(e===``||Ko(a.name,e))&&(t.fillStyle=this.depthFill(a.depth),t.fillRect(r,o,Math.max(s-r,.5),Math.max(i-.5,.5)))}}}let i=this.view.from/n*this.width,a=this.view.to/n*this.width;t.fillStyle=this.palette.overviewScrim,t.fillRect(0,0,i,bc),t.fillRect(a,0,this.width-a,bc),t.strokeStyle=this.palette.overviewWindow,t.lineWidth=1,t.strokeRect(i+.5,.5,Math.max(a-i-1,1),33)}drawRuler(){let e=this.ctx,t=bc;e.fillStyle=this.palette.bg,e.fillRect(0,t,this.width,xc);let n=Ec(this.view.from,this.view.to,this.width);e.fillStyle=this.palette.rulerText,e.textAlign=`left`;for(let t of n){let r=this.timeToX(t);e.fillText(Dc(t,n),r+3,43)}return e.strokeStyle=this.palette.grid,e.beginPath(),e.moveTo(0,51.5),e.lineTo(this.width,51.5),e.stroke(),n}drawMemory(){let e=this.memoryHeight();if(e===0)return;let t=this.cursorX===void 0?void 0:this.xToTime(this.cursorX),n=this.registry.get(qo);if(yc({ctx:this.ctx,samples:Y.memory,collapsed:n,top:52,height:e,width:this.width,timeToX:e=>this.timeToX(e),peak:Y.memoryPeak,trough:Y.memoryTrough,rssPeak:Y.memoryRssPeak,traceEnd:this.total(),cursorTime:t,palette:this.palette}),n||t===void 0)return;let r=vc(Y.memory,t);if(r===void 0)return;let i=this.ctx;i.save();let a=Math.round(this.timeToX(r.time))+.5;i.strokeStyle=this.palette.memoryLabel,i.beginPath(),i.moveTo(a,52),i.lineTo(a,52+e),i.stroke();let o=`heap ${_c(r.heapUsed)} · rss ${_c(r.rss)}`;i.textAlign=`left`;let s=i.measureText(o).width,c=a+6+s>this.width?a-6-s:a+6;i.fillStyle=this.palette.readoutBg,i.fillRect(c-3,52+e-16,s+6,12),i.fillStyle=this.palette.readoutFg,i.fillText(o,c,52+e-10),i.restore()}drawBars(e,t,n,r){let i=this.ctx,a=this.chartTop(),o=this.total(),s=this.hover?.span.spanId;i.save(),i.beginPath(),i.rect(0,a,this.width,this.height-a),i.clip(),i.strokeStyle=this.palette.grid,i.beginPath();for(let e of r){let t=Math.round(this.timeToX(e))+.5;i.moveTo(t,a),i.lineTo(t,this.height)}i.stroke();let c=Math.max(Math.floor(this.scrollY/Z),0),l=Math.min(Math.ceil((this.scrollY+this.height-a)/Z),this.layout.rows.length-1);i.textAlign=`left`;for(let r=c;r<=l;r++){let c=this.layout.rows[r];if(c===void 0)continue;let l=a+r*Z-this.scrollY;Bo(c,this.view.from,this.view.to,o,r=>{let a=Ko(r.name,e);if(t&&!a)return;let c=this.timeToX(r.start),u=Math.max(this.timeToX(K(r,o))-c,1),d=r.outcome?._tag===`Failure`,f=r.spanId===s;i.globalAlpha=a?1:.22,d?i.fillStyle=f?this.palette.errorHot:this.palette.error:i.fillStyle=f?this.palette.labelDim:this.depthFill(r.depth),i.fillRect(c,l,u,15),r.spanId===n&&(i.strokeStyle=this.palette.selected,i.lineWidth=1,i.strokeRect(c+.5,l+.5,Math.max(u-1,1),14)),u>=Sc&&(i.save(),i.beginPath(),i.rect(c,l,u-3,15),i.clip(),i.fillStyle=a?this.palette.label:this.palette.labelDim,i.fillText(r.name,c+3,l+15/2),i.restore())}),i.globalAlpha=1}i.restore()}},wc=e=>e>5?10:e>2?5:e>1?2:1,Tc=e=>e>=10?0:e>=1?1:e>=.1?2:3,Ec=(e,t,n)=>{let r=Math.max(Math.floor(n/90),1),i=(t-e)/r;if(!Number.isFinite(i)||i<=0)return[e];let a=10**Math.floor(Math.log10(i)),o=wc(i/a)*a,s=[];for(let n=Math.ceil(e/o)*o;n<=t;n+=o)s.push(n);return s.length===0?[e]:s},Dc=(e,t)=>{let n=t.length>1?Math.abs(t[1]-t[0]):Math.abs(e)||1;return n>=1e3?`${(e/1e3).toFixed(e%1e3==0?0:1)}s`:`${e.toFixed(Tc(n))}ms`},Q=Ee(),Oc=[[`W / S`,`zoom in / out around the cursor`],[`A / D`,`pan left / right`],[`Q / E`,`scroll rows up / down`],[`0`,`reset zoom, follow live data`],[`← / →`,`previous / next sibling span`],[`↑ / ↓`,`parent / first child span`],[`Enter`,`reveal the selected span`],[`Esc`,`clear the selection`],[`?`,`this list`]],kc=`a[href], button:not([disabled]), input, select, textarea, [tabindex]`,Ac=({onClose:e})=>{let t=(0,G.useRef)(null);return(0,G.useEffect)(()=>{let e=document.activeElement;t.current?.querySelector(kc)?.focus();let n=e=>{if(e.key!==`Tab`)return;let n=t.current;if(n===null)return;let r=[...n.querySelectorAll(kc)],i=r[0],a=r[r.length-1];if(i===void 0||a===void 0)return;let o=e.shiftKey?i:a;(document.activeElement===o||!n.contains(document.activeElement))&&(e.preventDefault(),(e.shiftKey?a:i).focus())};return globalThis.addEventListener(`keydown`,n,!0),()=>{globalThis.removeEventListener(`keydown`,n,!0),e instanceof HTMLElement&&e.focus()}},[]),(0,Q.jsx)(`div`,{onClick:e,className:`absolute inset-0 z-20 flex items-center justify-center bg-page/80`,children:(0,Q.jsxs)(`div`,{ref:t,role:`dialog`,"aria-modal":`true`,"aria-label":`Keyboard shortcuts`,onClick:e=>e.stopPropagation(),className:`w-80 rounded-card bg-surface p-4 text-[11px] shadow-overlay`,children:[(0,Q.jsxs)(`div`,{className:`flex items-baseline justify-between`,children:[(0,Q.jsx)(`h2`,{className:`text-xs text-ink`,children:`Keyboard`}),(0,Q.jsx)(Be,{type:`button`,variant:`quiet`,size:`xs`,onClick:e,className:`text-ink-2`,children:`close`})]}),(0,Q.jsx)(`dl`,{className:`mt-3 grid grid-cols-[5rem_1fr] gap-x-3 gap-y-1.5`,children:Oc.map(([e,t])=>(0,Q.jsxs)(`div`,{className:`contents`,children:[(0,Q.jsx)(`dt`,{className:`tabular-nums text-ink`,children:e}),(0,Q.jsx)(`dd`,{className:`text-ink-2`,children:t})]},e))})]})})},jc=(e,t)=>{let n=[];for(let r of t){let t=e.spans.get(r);t!==void 0&&n.push(t)}return n.sort((e,t)=>e.start-t.start||(e.spanId<t.spanId?-1:1)),n},Mc=(e,t)=>{let n=t.parentId===void 0?void 0:e.spans.get(t.parentId);return n===void 0?jc(e,t.orphaned?[...e.roots,t.spanId]:e.roots):jc(e,n.children)},Nc=(e,t,n)=>{let r=e.spans.get(t);if(r===void 0)return;if(n===`parent`)return r.parentId===void 0?void 0:e.spans.get(r.parentId)?.spanId;if(n===`child`)return jc(e,r.children)[0]?.spanId;let i=Mc(e,r),a=i.findIndex(e=>e.spanId===t);if(a!==-1)return i[n===`previous`?a-1:a+1]?.spanId},Pc=e=>jc(e,e.roots)[0]?.spanId,Fc=e=>{if(!(e instanceof HTMLElement))return!1;let t=e.tagName;return t===`INPUT`||t===`TEXTAREA`||t===`SELECT`||e.isContentEditable||e.closest(`[contenteditable="true"]`)!==null},Ic=1.25,Lc=.12,Rc=32,zc={ArrowUp:`parent`,ArrowDown:`child`,ArrowLeft:`previous`,ArrowRight:`next`},Bc=(e,t,n)=>{let r=(0,G.useContext)(Xe);(0,G.useEffect)(()=>{let i=i=>{if(Fc(i.target)||i.ctrlKey||i.metaKey||i.altKey)return;let a=qc(),o=r.get(q),s=zc[i.key];if(s!==void 0){let e=o===void 0?Pc(Y):Nc(Y,o,s);e!==void 0&&(r.set(q,e),Kc(e)),i.preventDefault();return}switch(i.key){case`w`:case`W`:a?.zoomBy(1/Ic);break;case`s`:case`S`:a?.zoomBy(Ic);break;case`a`:case`A`:a?.panBy(-.12);break;case`d`:case`D`:a?.panBy(Lc);break;case`q`:case`Q`:a?.scrollRows(-32);break;case`e`:case`E`:a?.scrollRows(Rc);break;case`Enter`:if(o===void 0){let e=Pc(Y);e!==void 0&&(r.set(q,e),Kc(e))}else Kc(o);break;case`Escape`:n?t():r.set(q,void 0);break;case`0`:a?.resetView();break;case`?`:e();break;default:return}i.preventDefault()};return globalThis.addEventListener(`keydown`,i),()=>globalThis.removeEventListener(`keydown`,i)},[r,e,t,n])},$=e=>Number.isFinite(e)?e>=1e3?`${(e/1e3).toFixed(2)}s`:e>=1?`${e.toFixed(2)}ms`:`${(e*1e3).toFixed(0)}µs`:`—`,Vc=e=>typeof e==`string`?e:JSON.stringify(e)??String(e),Hc=({renderer:e,containerWidth:t})=>{let n=x(Uo);if(e===void 0||n===void 0)return null;let r=e.hovered();if(r===void 0||r.span.spanId!==n)return null;let i=r.span,{total:a,self:o}=Ho(Y,i,Y.stats().duration),s=Object.entries(i.attributes).slice(0,6),c=Math.min(Math.max(r.x,4),Math.max(t-264,4));return(0,Q.jsxs)(`div`,{className:`pointer-events-none absolute z-10 w-64 rounded-card border border-[var(--tooltip-border)] bg-[var(--tooltip-bg)] p-2 text-[11px] text-[var(--tooltip-fg)] shadow-overlay`,style:{left:c,top:r.y+20},children:[(0,Q.jsx)(`div`,{className:`truncate`,children:i.name}),(0,Q.jsxs)(`dl`,{className:`mt-1.5 grid grid-cols-[auto_1fr] gap-x-3 gap-y-0.5 text-[var(--tooltip-muted)]`,children:[(0,Q.jsx)(`dt`,{children:`total`}),(0,Q.jsx)(`dd`,{className:`text-right tabular-nums text-[var(--tooltip-fg)]`,children:$(a)}),(0,Q.jsx)(`dt`,{children:`self`}),(0,Q.jsx)(`dd`,{className:`text-right tabular-nums text-[var(--tooltip-fg)]`,children:$(o)}),(0,Q.jsx)(`dt`,{children:`start`}),(0,Q.jsx)(`dd`,{className:`text-right tabular-nums text-[var(--tooltip-fg)]`,children:$(i.start)})]}),i.outcome?._tag===`Failure`&&(0,Q.jsx)(`p`,{className:`mt-1.5 line-clamp-3 border-t border-[var(--tooltip-border)] pt-1.5 text-red`,children:i.outcome.error}),s.length>0&&(0,Q.jsx)(`dl`,{className:`mt-1.5 grid grid-cols-[auto_1fr] gap-x-3 gap-y-0.5 border-t border-[var(--tooltip-border)] pt-1.5 text-[var(--tooltip-muted)]`,children:s.map(([e,t])=>(0,Q.jsxs)(`div`,{className:`contents`,children:[(0,Q.jsx)(`dt`,{className:`truncate`,children:e}),(0,Q.jsx)(`dd`,{className:`truncate text-right text-[var(--tooltip-fg)]`,children:Vc(t)})]},e))})]})},Uc=({onReset:e,onShowHelp:t})=>{let[n,r]=T(Wo),[i,a]=T(Go);return(0,Q.jsxs)(`div`,{className:`flex h-8 shrink-0 items-center gap-2 border-b border-line bg-surface px-2`,children:[(0,Q.jsx)(`input`,{value:n,onChange:e=>r(e.target.value),placeholder:`Filter spans…`,"aria-label":`Filter spans`,className:`h-6 w-56 rounded-control bg-field px-2 text-xs text-ink shadow-hairline placeholder:text-ink-3`}),(0,Q.jsxs)(`label`,{className:`flex items-center gap-1.5 text-[11px] text-ink-2`,children:[(0,Q.jsx)(`input`,{type:`checkbox`,checked:i,onChange:e=>a(e.target.checked),className:`accent-accent`}),`hide non-matching`]}),(0,Q.jsx)(Be,{variant:`quiet`,size:`xs`,onClick:e,className:`ml-auto text-ink-2`,children:`reset zoom`}),(0,Q.jsx)(Be,{variant:`quiet`,size:`xs`,onClick:t,"aria-label":`Keyboard shortcuts`,className:`text-ink-2`,children:`? keys`}),(0,Q.jsx)(`span`,{className:`text-[11px] text-ink-3`,children:`drag to pan · wheel to zoom · W/A/S/D`})]})},Wc=()=>{let e=(0,G.useContext)(Xe),t=(0,G.useRef)(null),n=(0,G.useRef)(null),[r,i]=(0,G.useState)(),[a,o]=(0,G.useState)(0),[s,c]=(0,G.useState)(!1);(0,G.useEffect)(()=>{let r=t.current;if(r===null)return;let a=new Cc(r,e);i(a);let s=new ResizeObserver(([e])=>o(e?.contentRect.width??0));return n.current!==null&&s.observe(n.current),()=>{s.disconnect(),a.dispose(),i(void 0)}},[e]),(0,G.useEffect)(()=>(Gc=r,()=>{Gc===r&&(Gc=void 0)}),[r]);let l=(0,G.useCallback)(()=>c(!0),[]),u=(0,G.useCallback)(()=>c(!1),[]);return Bc(l,u,s),(0,Q.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,Q.jsx)(Uc,{onReset:()=>r?.resetView(),onShowHelp:l}),(0,Q.jsxs)(`div`,{ref:n,className:`relative min-h-0 flex-1`,children:[(0,Q.jsx)(`canvas`,{ref:t,className:`absolute inset-0 size-full touch-none`}),(0,Q.jsx)(Hc,{renderer:r,containerWidth:a}),s&&(0,Q.jsx)(Ac,{onClose:u})]})]})},Gc,Kc=e=>Gc?.revealSpan(e),qc=()=>Gc,Jc=()=>Gc?.viewport(),Yc=22,Xc=8,Zc=`flex shrink-0 border-b border-line-strong bg-surface px-2 text-ink-3`,Qc=e=>`py-1 text-left transition-colors hover:text-ink ${e?`text-ink`:``}`,$c=`color-mix(in srgb, var(--accent) 10%, var(--surface))`,el=(e,t,n)=>e?$c:t?`var(--hover)`:n?void 0:`var(--stripe)`,tl=[{key:`start`,label:`Start`},{key:`self`,label:`Self`},{key:`total`,label:`Total`},{key:`name`,label:`Name`}],nl=(e,t,n)=>e===`name`?t.span.name.localeCompare(n.span.name):e===`start`?t.span.start-n.span.start:t[e]-n[e],rl=()=>{let e=x($s),t=x(Wo),n=x(Go),[r,i]=T(q),[a,o]=T(Uo),[s,c]=(0,G.useState)({key:`start`,desc:!1}),[l,u]=(0,G.useState)(0),[d,f]=(0,G.useState)(0),p=(0,G.useRef)(null),m=(0,G.useMemo)(()=>{let e=Y.stats().duration,r=t.toLowerCase(),i=[];for(let t of Y.spans.values()){let a=Ko(t.name,r);(!n||a)&&i.push({span:t,matched:a,...Ho(Y,t,e)})}return i.sort((e,t)=>(s.desc?-1:1)*nl(s.key,e,t)),i},[e,t,n,s]);(0,G.useEffect)(()=>{let e=p.current;if(e===null)return;let t=new ResizeObserver(([e])=>f(e?.contentRect.height??0));return t.observe(e),()=>t.disconnect()},[]),(0,G.useEffect)(()=>{let e=p.current;if(e===null||r===void 0)return;let t=m.findIndex(e=>e.span.spanId===r);if(t===-1)return;let n=t*Yc;(n<e.scrollTop||n+Yc>e.scrollTop+e.clientHeight)&&(e.scrollTop=n-e.clientHeight/2)},[r,m]);let h=Math.max(Math.floor(l/Yc)-Xc,0),ee=Math.min(Math.ceil((l+d)/Yc)+Xc,m.length),te=m.slice(h,ee);return(0,Q.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col text-[11px]`,children:[(0,Q.jsx)(`div`,{className:Zc,children:tl.map(e=>(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>c(t=>t.key===e.key?{key:e.key,desc:!t.desc}:{key:e.key,desc:e.key!==`name`&&e.key!==`start`}),className:`${Qc(s.key===e.key)} ${e.key===`name`?`flex-1 pl-3`:`w-24 pr-3 text-right`}`,children:[e.label,s.key===e.key&&(s.desc?` ↓`:` ↑`)]},e.key))}),(0,Q.jsx)(`div`,{ref:p,onScroll:e=>u(e.currentTarget.scrollTop),className:`min-h-0 flex-1 overflow-y-auto`,children:m.length===0?(0,Q.jsx)(`p`,{className:`px-3 py-2 text-ink-3`,children:`No spans match.`}):(0,Q.jsx)(`div`,{style:{height:m.length*Yc,position:`relative`},children:(0,Q.jsx)(`div`,{style:{transform:`translateY(${h*Yc}px)`},children:te.map((e,t)=>{let n=e.span.spanId,s=e.span.outcome?._tag===`Failure`,c=n===r;return(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>{i(n),Kc(n)},onMouseEnter:()=>o(n),onMouseLeave:()=>o(void 0),style:{height:Yc,background:el(c,n===a,(h+t)%2==0)},className:`flex w-full items-center px-2 text-left tabular-nums transition-colors ${c?`text-ink`:``} ${e.matched?`text-ink-2`:`text-ink-3`}`,children:[(0,Q.jsx)(`span`,{className:`w-24 pr-3 text-right`,children:$(e.span.start)}),(0,Q.jsx)(`span`,{className:`w-24 pr-3 text-right`,children:$(e.self)}),(0,Q.jsx)(`span`,{className:`w-24 pr-3 text-right`,children:$(e.total)}),(0,Q.jsx)(`span`,{className:`flex-1 truncate pl-3 ${s?`text-red`:`text-ink`}`,children:e.span.name})]},n)})})})})]})},il=150,al=()=>{let[e,t]=(0,G.useState)(()=>Jc()??{from:-1/0,to:1/0});return(0,G.useEffect)(()=>{let e=setInterval(()=>{let e=Jc();e!==void 0&&t(t=>t.from===e.from&&t.to===e.to?t:e)},il);return()=>clearInterval(e)},[]),e},ol=()=>{let e=x($s),t=x(Wo),n=x(Go),r=al();return(0,G.useMemo)(()=>$o(Y,r.from,r.to,t,n),[e,r.from,r.to,t,n])},sl=()=>(0,Q.jsx)(qe,{icon:ht,title:`No spans in view`,hint:`These tabs aggregate the chart's visible range. Reset the zoom, or clear the filter, to widen it.`}),cl=({children:e})=>(0,Q.jsx)(`span`,{className:`w-20 shrink-0 pr-3 text-right tabular-nums`,children:e}),ll=`${Zc} py-1 text-[11px]`,ul=`min-h-0 flex-1 overflow-y-auto text-[11px]`,dl=(e,t)=>`flex w-full items-center px-2 text-left tabular-nums transition-colors odd:bg-[var(--stripe)] hover:bg-[var(--hover)] ${e?`text-ink`:``} ${t?`text-ink-3`:`text-ink-2`}`,fl=e=>e?{background:el(!0,!1,!1)}:{},pl=()=>{let{summary:e}=ol(),t=x(Wo),[n,r]=T(q),[i,a]=(0,G.useState)({key:`self`,desc:!0}),o=(0,G.useMemo)(()=>{let t=(e,t)=>i.key===`name`?e.name.localeCompare(t.name):e[i.key]-t[i.key];return[...e].sort((e,n)=>(i.desc?-1:1)*t(e,n))},[e,i]);return o.length===0?(0,Q.jsx)(sl,{}):(0,Q.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,Q.jsx)(`div`,{className:ll,children:[{key:`count`,label:`Count`},{key:`total`,label:`Total`},{key:`self`,label:`Self`},{key:`average`,label:`Avg`},{key:`name`,label:`Name`}].map(e=>(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>a(t=>t.key===e.key?{key:e.key,desc:!t.desc}:{key:e.key,desc:e.key!==`name`}),className:`${Qc(i.key===e.key)} py-0 ${e.key===`name`?`flex-1 pl-3`:`w-20 pr-3 text-right`}`,children:[e.label,i.key===e.key&&(i.desc?` ↓`:` ↑`)]},e.key))}),(0,Q.jsx)(`div`,{className:ul,children:o.map(e=>(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>r(e.spanId),className:dl(e.spanId===n,!Ko(e.name,t.toLowerCase())),style:{height:22,...fl(e.spanId===n)},children:[(0,Q.jsx)(cl,{children:e.count}),(0,Q.jsx)(cl,{children:$(e.total)}),(0,Q.jsx)(cl,{children:$(e.self)}),(0,Q.jsx)(cl,{children:$(e.average)}),(0,Q.jsx)(`span`,{className:`flex-1 truncate pl-3 ${e.failed?`text-red`:``}`,children:e.name})]},e.name))})]})},ml=(e,t)=>e?t?`▾`:`▸`:``,hl=({node:e,depth:t,expanded:n,onToggle:r})=>{let[i,a]=T(q),o=x(Wo),s=n.has(e.id),c=e.children.length>0;return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`button`,{type:`button`,onClick:()=>{a(e.spanId),c&&r(e.id)},className:dl(e.spanId===i,!Ko(e.name,o.toLowerCase())),style:{height:22,...fl(e.spanId===i)},children:[(0,Q.jsx)(cl,{children:e.count}),(0,Q.jsx)(cl,{children:$(e.total)}),(0,Q.jsx)(cl,{children:$(e.self)}),(0,Q.jsxs)(`span`,{className:`flex-1 truncate pl-3 ${e.failed?`text-red`:``}`,style:{paddingLeft:t*12+12},children:[(0,Q.jsx)(`span`,{className:`inline-block w-3 text-ink-3`,children:ml(c,s)}),e.name]})]}),s&&e.children.map(e=>(0,Q.jsx)(hl,{node:e,depth:t+1,expanded:n,onToggle:r},e.id))]})},gl=({roots:e,selfLabel:t})=>{let[n,r]=(0,G.useState)(new Set),i=e=>r(t=>{let n=new Set(t);return n.delete(e)||n.add(e),n});return e.length===0?(0,Q.jsx)(sl,{}):(0,Q.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,Q.jsxs)(`div`,{className:ll,children:[(0,Q.jsx)(`span`,{className:`w-20 pr-3 text-right`,children:`Count`}),(0,Q.jsx)(`span`,{className:`w-20 pr-3 text-right`,children:`Total`}),(0,Q.jsx)(`span`,{className:`w-20 pr-3 text-right`,children:t}),(0,Q.jsx)(`span`,{className:`flex-1 pl-3`,children:`Name`})]}),(0,Q.jsx)(`div`,{className:ul,children:e.map(e=>(0,Q.jsx)(hl,{node:e,depth:0,expanded:n,onToggle:i},e.id))})]})},_l=()=>(0,Q.jsx)(gl,{roots:ol().callTree,selfLabel:`Self`}),vl=()=>(0,Q.jsx)(gl,{roots:ol().bottomUp,selfLabel:`Self`}),yl=[{id:`log`,label:`Event log`,render:()=>(0,Q.jsx)(rl,{})},{id:`summary`,label:`Summary`,render:()=>(0,Q.jsx)(pl,{})},{id:`bottom-up`,label:`Bottom-up`,render:()=>(0,Q.jsx)(vl,{})},{id:`call-tree`,label:`Call tree`,render:()=>(0,Q.jsx)(_l,{})}],bl={ArrowLeft:-1,ArrowRight:1},xl=()=>{let[e,t]=(0,G.useState)(220),[n,r]=(0,G.useState)(!1),[i,a]=(0,G.useState)(`log`),o=(0,G.useRef)(null);return(0,Q.jsxs)(`div`,{className:`flex shrink-0 flex-col border-t border-line bg-surface`,style:{height:n?`auto`:e},children:[(0,Q.jsxs)(`div`,{onPointerDown:n?void 0:n=>{if(n.target!==n.currentTarget)return;n.currentTarget.setPointerCapture(n.pointerId);let r=n.clientY,i=e,a=e=>{t(Math.min(Math.max(i-(e.clientY-r),80),600))},o=()=>{globalThis.removeEventListener(`pointermove`,a),globalThis.removeEventListener(`pointerup`,o)};globalThis.addEventListener(`pointermove`,a),globalThis.addEventListener(`pointerup`,o)},className:`flex h-8 shrink-0 items-center gap-1 px-2 ${n?``:`cursor-row-resize`}`,children:[(0,Q.jsx)(`div`,{ref:o,role:`tablist`,"aria-label":`Trace views`,onKeyDown:e=>{let t=bl[e.key];if(t===void 0)return;e.preventDefault();let n=yl[(yl.findIndex(e=>e.id===i)+t+yl.length)%yl.length];a(n.id),o.current?.querySelector(`[data-tab="${n.id}"]`)?.focus()},className:`flex items-center gap-1`,children:yl.map(e=>{let t=e.id===i;return(0,Q.jsx)(`button`,{type:`button`,role:`tab`,id:`drawer-tab-${e.id}`,"data-tab":e.id,"aria-selected":t,"aria-controls":`drawer-panel`,tabIndex:t?0:-1,onClick:()=>a(e.id),className:`rounded-chip px-2 py-1 text-[11px] transition-colors ${t?`bg-hover text-ink`:`text-ink-3 hover:bg-hover hover:text-ink-2`}`,children:e.label},e.id)})}),(0,Q.jsx)(Be,{type:`button`,variant:`quiet`,size:`xs`,onClick:()=>r(e=>!e),"aria-expanded":!n,"aria-controls":`drawer-panel`,className:`ml-auto text-ink-3 hover:text-ink`,children:n?`expand`:`collapse`})]}),!n&&(0,Q.jsx)(`div`,{id:`drawer-panel`,role:`tabpanel`,"aria-labelledby":`drawer-tab-${i}`,className:`flex min-h-0 flex-1 flex-col`,children:yl.find(e=>e.id===i).render()})]})},Sl=({label:e,value:t})=>(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`dt`,{className:`truncate text-ink-3`,children:e}),(0,Q.jsx)(`dd`,{className:`truncate text-right tabular-nums text-ink`,children:t})]}),Cl=`flex w-72 shrink-0 flex-col border-l border-line bg-surface text-[11px]`,wl=`border-b border-line px-2.5 py-2`,Tl=`mb-1 text-[10px] uppercase tracking-wider text-ink-3`,El={backgroundImage:`linear-gradient(var(--red-tint), var(--red-tint))`},Dl=({onToggle:e,onClear:t,title:n,children:r})=>(0,Q.jsxs)(`aside`,{id:`detail-panel`,className:Cl,children:[(0,Q.jsxs)(tt,{title:n,children:[t!==void 0&&(0,Q.jsx)(Be,{type:`button`,variant:`quiet`,size:`xs`,onClick:t,"aria-label":`Clear selection`,title:`Clear selection`,className:`size-6 shrink-0 px-0 text-ink-3 hover:text-ink`,children:(0,Q.jsx)(jt,{className:`size-3.5`})}),(0,Q.jsx)(Fe,{edge:`right`,collapsed:!1,onToggle:e,label:`Hide span detail`,controls:`detail-panel`})]}),(0,Q.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:r})]}),Ol=()=>{let[e,t]=T(q),[n,r]=ke(`detail`);if(x($s),n)return(0,Q.jsx)(Te,{edge:`right`,title:`Span`,onToggle:r,id:`detail-panel`});if(e===void 0)return(0,Q.jsx)(Dl,{onToggle:r,title:`Span`,children:(0,Q.jsx)(qe,{icon:xt,title:`No span selected`,hint:`Click a bar in the flame chart, or a row in the event log, to see its timings, attributes and logs.`})});let i=Y.spans.get(e);if(i===void 0)return(0,Q.jsx)(Dl,{onToggle:r,title:`Span`,children:(0,Q.jsx)(qe,{icon:Dt,title:`Span no longer in the trace`,hint:`The collector's backlog rolled past it. Select another span, or reload to start a fresh trace.`})});let a=Y.stats().duration,{total:o,self:s}=Ho(Y,i,a),c=Object.entries(i.attributes),l=Y.logs.filter(e=>e.spanId===i.spanId);return(0,Q.jsxs)(Dl,{onToggle:r,onClear:()=>t(void 0),title:`Span`,children:[(0,Q.jsxs)(`div`,{className:wl,children:[(0,Q.jsx)(`p`,{className:`break-words text-ink`,children:i.name}),(0,Q.jsx)(`p`,{className:`mt-0.5 text-ink-3`,children:i.kind})]}),(0,Q.jsxs)(`dl`,{className:`grid grid-cols-[auto_1fr] gap-x-3 gap-y-1 ${wl}`,children:[(0,Q.jsx)(Sl,{label:`start`,value:$(i.start)}),(0,Q.jsx)(Sl,{label:`total`,value:$(o)}),(0,Q.jsx)(Sl,{label:`self`,value:$(s)}),(0,Q.jsx)(Sl,{label:`depth`,value:String(i.depth)}),(0,Q.jsx)(Sl,{label:`children`,value:String(i.children.length)}),i.fiberId!==void 0&&(0,Q.jsx)(Sl,{label:`fiber`,value:String(i.fiberId)}),(0,Q.jsx)(Sl,{label:`state`,value:i.end===void 0?`running`:`ended`})]}),i.outcome?._tag===`Failure`&&(0,Q.jsxs)(`div`,{className:wl,style:El,children:[(0,Q.jsx)(`p`,{className:`text-ink-2`,children:i.outcome.kind}),(0,Q.jsx)(`p`,{className:`mt-1 break-words text-red`,children:i.outcome.error}),i.outcome.stack!==void 0&&(0,Q.jsx)(`pre`,{className:`mt-1.5 overflow-x-auto rounded-chip bg-inset p-2 text-[10px] leading-[1.6] whitespace-pre-wrap text-ink-2`,children:i.outcome.stack})]}),c.length>0&&(0,Q.jsxs)(`div`,{className:wl,children:[(0,Q.jsx)(`p`,{className:Tl,children:`Attributes`}),(0,Q.jsx)(`dl`,{className:`grid grid-cols-[auto_1fr] gap-x-3 gap-y-1`,children:c.map(([e,t])=>(0,Q.jsxs)(`div`,{className:`contents`,children:[(0,Q.jsx)(`dt`,{className:`truncate text-ink-3`,children:e}),(0,Q.jsx)(`dd`,{className:`break-words text-right text-ink-2`,children:Vc(t)})]},e))})]}),i.events.length>0&&(0,Q.jsxs)(`div`,{className:wl,children:[(0,Q.jsx)(`p`,{className:Tl,children:`Events`}),i.events.map((e,t)=>(0,Q.jsxs)(`div`,{className:`flex justify-between gap-2 py-0.5`,children:[(0,Q.jsx)(`span`,{className:`truncate text-ink-2`,children:e.name}),(0,Q.jsx)(`span`,{className:`shrink-0 tabular-nums text-ink-3`,children:$(e.time-i.start)})]},`${e.name}-${t}`))]}),l.length>0&&(0,Q.jsxs)(`div`,{className:`px-2.5 py-2`,children:[(0,Q.jsx)(`p`,{className:Tl,children:`Logs`}),l.map((e,t)=>(0,Q.jsxs)(`div`,{className:`py-0.5`,children:[(0,Q.jsx)(`span`,{className:e.level===`Error`?`text-red`:`text-ink-3`,children:e.level}),` `,(0,Q.jsx)(`span`,{className:`text-ink-2`,children:Vc(e.message)})]},t))]})]})},kl=[{value:`light`,label:`Light`,Icon:kt},{value:`dark`,label:`Dark`,Icon:yt},{value:`system`,label:`System`,Icon:_t}],Al=()=>()=>{},jl=()=>(0,G.useSyncExternalStore)(Al,()=>!0,()=>!1),Ml=()=>{let[e,t]=T(Qe),n=jl()?e:rt;return(0,Q.jsx)(`div`,{role:`radiogroup`,"aria-label":`Colour theme`,onKeyDown:e=>{let r={ArrowRight:1,ArrowDown:1,ArrowLeft:-1,ArrowUp:-1}[e.key];if(r===void 0)return;e.preventDefault();let i=kl[(kl.findIndex(e=>e.value===n)+r+kl.length)%kl.length];t(i.value),e.currentTarget.querySelector(`[data-theme="${i.value}"]`)?.focus()},className:`flex items-center gap-0.5 rounded-control bg-inset p-0.5 shadow-hairline`,children:kl.map(({value:e,label:r,Icon:i})=>{let a=n===e;return(0,Q.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":a,"aria-label":r,title:r,"data-theme":e,tabIndex:a?0:-1,onClick:()=>t(e),className:`flex size-6 items-center justify-center rounded-chip transition-colors ${a?`bg-surface text-ink shadow-btn`:`text-ink-3 hover:text-ink-2`}`,children:(0,Q.jsx)(i,{className:`size-3.5`})},e)})})},Nl={neutral:{cls:`bg-field text-ink-2`,ring:`var(--shadow-hairline)`},green:{cls:`bg-green-tint text-green`,ring:`0 0 0 1px color-mix(in oklch, var(--green) 28%, transparent)`},orange:{cls:`bg-orange-tint text-orange`,ring:`0 0 0 1px color-mix(in oklch, var(--orange) 28%, transparent)`},red:{cls:`bg-red-tint text-red`,ring:`0 0 0 1px color-mix(in oklch, var(--red) 28%, transparent)`},accent:{cls:`bg-accent-tint text-accent-ink`,ring:`0 0 0 1px color-mix(in oklch, var(--accent) 28%, transparent)`}},Pl=({children:e,tone:t=`neutral`,className:n=``})=>{let r=Nl[t];return(0,Q.jsx)(`span`,{className:`mx-0.5 inline-flex items-center rounded-full px-1.5 py-0
5
- align-middle text-[12px] font-medium ${r.cls} ${n}`,style:{boxShadow:r.ring},children:e})},Fl=`absolute inset-x-0 top-11 z-20 mx-auto flex w-fit max-w-xl items-baseline gap-3 rounded-card bg-surface px-3 py-2 text-xs shadow-overlay`,Il=e=>({backgroundImage:`linear-gradient(var(--${e}-tint), var(--${e}-tint))`}),Ll=(e,t)=>{let n=URL.createObjectURL(new Blob([t],{type:`application/x-ndjson`})),r=document.createElement(`a`);r.href=n,r.download=e,r.click(),URL.revokeObjectURL(n)},Rl=()=>{let e=(0,G.useContext)(Xe),t=x(tc),n=x(rc),r=x(Xs),[i,a]=(0,G.useState)(void 0),[o,s]=(0,G.useState)(!1),c=(0,G.useRef)(null),l=t=>{a(void 0),t.text().then(t=>{let n=sc(e,t);Ye(n)&&a(n.failure)}).catch(e=>a(`Could not read ${t.name}: ${String(e)}`))};(0,G.useEffect)(()=>{let e=e=>{e.dataTransfer?.types.includes(`Files`)===!0&&(e.preventDefault(),s(!0))},t=e=>{e.relatedTarget===null&&s(!1)},n=e=>{let t=e.dataTransfer?.files[0];t!==void 0&&(e.preventDefault(),s(!1),l(t))};return globalThis.addEventListener(`dragover`,e),globalThis.addEventListener(`dragleave`,t),globalThis.addEventListener(`drop`,n),()=>{globalThis.removeEventListener(`dragover`,e),globalThis.removeEventListener(`dragleave`,t),globalThis.removeEventListener(`drop`,n)}});let u=()=>{if(t===void 0)return;let n=Date.now(),r=Bs(t,cc(e,t.sessionId),n);Ll(Vs(t,n),r)},d=r.find(e=>e.session.sessionId===t?.sessionId&&e.truncatedLines>0);return(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,Q.jsx)(Be,{type:`button`,size:`xs`,onClick:u,disabled:t===void 0||n.spans===0,"data-testid":`save-trace`,children:`save`}),(0,Q.jsx)(Be,{type:`button`,size:`xs`,onClick:()=>c.current?.click(),"data-testid":`open-trace`,children:`open`}),(0,Q.jsx)(`input`,{ref:c,type:`file`,accept:Is,"data-testid":`trace-file-input`,className:`hidden`,onChange:e=>{let t=e.target.files?.[0];t!==void 0&&l(t),e.target.value=``}})]}),i!==void 0&&(0,Q.jsxs)(`div`,{"data-testid":`trace-file-error`,className:`${Fl} text-red`,style:Il(`red`),children:[i,(0,Q.jsx)(`button`,{type:`button`,onClick:()=>a(void 0),className:`shrink-0 text-ink-2 transition-colors hover:text-ink`,children:`dismiss`})]}),d!==void 0&&i===void 0&&(0,Q.jsx)(`div`,{"data-testid":`trace-file-truncated`,className:`${Fl} text-orange`,style:Il(`orange`),children:`This trace file was cut short mid-write; everything before the cut is shown.`}),o&&(0,Q.jsx)(`div`,{className:`pointer-events-none fixed inset-0 z-30 flex items-center justify-center bg-page/80`,children:(0,Q.jsxs)(`p`,{className:`rounded-card border border-dashed border-line-strong bg-surface px-6 py-4 text-xs text-ink-2 shadow-overlay`,children:[`Drop a `,`.eitrace`,` file to load it`]})})]})},zl=e=>new Date(e).toLocaleTimeString([],{hour12:!1}),Bl=e=>e<1e3?`${e.toFixed(1)}ms`:`${(e/1e3).toFixed(2)}s`,Vl={Connected:{label:`connected`,tone:`neutral`,dot:`bg-green`},Connecting:{label:`connecting`,tone:`neutral`,dot:`bg-ink-3 animate-pulse`},Disconnected:{label:`disconnected`,tone:`red`,dot:`bg-red`}},Hl=()=>{let e=x(Js),t=x(ec),{label:n,tone:r,dot:i}=Vl[e._tag];return(0,Q.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,Q.jsxs)(Pl,{tone:r,className:`gap-1.5`,children:[(0,Q.jsx)(`span`,{className:`size-1.5 rounded-full ${i}`}),n]}),t>0&&(0,Q.jsxs)(Pl,{tone:`red`,children:[t,` undecodable`]})]})},Ul=({label:e,value:t})=>(0,Q.jsxs)(`div`,{className:`flex items-baseline gap-1.5`,children:[(0,Q.jsx)(`span`,{className:`text-ink-3`,children:e}),(0,Q.jsx)(`span`,{className:`tabular-nums text-ink`,children:t})]}),Wl=()=>{let e=x(rc),t=x(nc);return(0,Q.jsxs)(`div`,{className:`flex items-center gap-4 text-xs`,children:[t!==void 0&&(0,Q.jsx)(Ul,{label:`t0`,value:zl(t)}),(0,Q.jsx)(Ul,{label:`spans`,value:String(e.spans)}),(0,Q.jsx)(Ul,{label:`open`,value:String(e.openSpans)}),(0,Q.jsx)(Ul,{label:`logs`,value:String(e.logs)}),(0,Q.jsx)(Ul,{label:`events`,value:String(e.events)}),(0,Q.jsx)(Ul,{label:`dur`,value:Bl(e.duration)}),e.errors>0&&(0,Q.jsxs)(`div`,{className:`flex items-baseline gap-1.5`,children:[(0,Q.jsx)(`span`,{className:`text-ink-3`,children:`errors`}),(0,Q.jsx)(Pl,{tone:`red`,className:`tabular-nums`,children:e.errors})]})]})},Gl=({session:e,selected:t,onSelect:n})=>(0,Q.jsxs)(`button`,{type:`button`,onClick:n,className:`w-full border-l-2 px-2 py-1.5 text-left transition-colors ${t?`border-accent bg-hover text-ink`:`border-transparent text-ink-2 hover:bg-hover hover:text-ink`}`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(`span`,{className:`size-1.5 shrink-0 rounded-full ${e.active?`bg-green`:`bg-line-strong`}`}),(0,Q.jsx)(`span`,{className:`truncate text-xs`,children:Yl(e.program)})]}),(0,Q.jsxs)(`div`,{className:`mt-0.5 flex justify-between pl-3.5 text-[10px] text-ink-3`,children:[(0,Q.jsx)(`span`,{children:zs(e.sessionId)?`file`:`pid ${e.pid}`}),(0,Q.jsx)(`span`,{className:`tabular-nums`,children:zl(e.clock.wallClockEpochMillis)})]})]}),Kl=({connected:e})=>e?(0,Q.jsx)(qe,{icon:Tt,title:`No sessions yet`,hint:(0,Q.jsxs)(Q.Fragment,{children:[`Run a program with the inspect layer attached, or drop a saved`,` `,(0,Q.jsx)(`code`,{className:`text-ink-2`,children:`.eitrace`}),` file anywhere on this page.`]})}):(0,Q.jsx)(qe,{icon:Ct,title:`Waiting for the collector`,hint:(0,Q.jsxs)(Q.Fragment,{children:[`Start it with `,(0,Q.jsx)(`code`,{className:`text-ink-2`,children:`bun run collector`}),`. This page reconnects on its own.`]})}),ql=()=>{let e=x(Zs),[t,n]=T(Qs),r=x(Js),[i,a]=ke(`sessions`);return i?(0,Q.jsx)(Te,{edge:`left`,title:`Sessions`,onToggle:a,id:`sessions-panel`}):(0,Q.jsxs)(`aside`,{id:`sessions-panel`,className:`flex w-56 shrink-0 flex-col border-r border-line bg-surface`,children:[(0,Q.jsx)(tt,{title:`Sessions`,children:(0,Q.jsx)(Fe,{edge:`left`,collapsed:!1,onToggle:a,label:`Hide sessions`,controls:`sessions-panel`})}),(0,Q.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:e.length===0?(0,Q.jsx)(Kl,{connected:r._tag===`Connected`}):e.map(e=>(0,Q.jsx)(Gl,{session:e,selected:e.sessionId===t,onSelect:()=>n(e.sessionId)},e.sessionId))})]})},Jl=()=>(0,Q.jsx)(qe,{className:`flex-1`,icon:Ct,title:`Collector unreachable`,hint:(0,Q.jsxs)(Q.Fragment,{children:[`Nothing is listening on `,(0,Q.jsx)(`code`,{className:`text-ink-2`,children:qs}),`. Start it with`,` `,(0,Q.jsx)(`code`,{className:`text-ink-2`,children:`bun run collector`}),` — this page reconnects on its own. You can still open a saved trace: drop one anywhere on this page.`]})}),Yl=e=>e.split(/[/\\]/).pop()||e,Xl=()=>x(tc)===void 0?(0,Q.jsx)(qe,{className:`flex-1`,icon:xt,title:`No session selected`,hint:`Pick a program from the sessions list to see its flame chart, event log and span detail.`}):(0,Q.jsxs)(`div`,{className:`flex min-h-0 flex-1`,children:[(0,Q.jsx)(Ol,{}),(0,Q.jsxs)(`div`,{className:`order-first flex min-w-0 flex-1 flex-col`,children:[(0,Q.jsx)(Wc,{}),(0,Q.jsx)(xl,{})]})]}),Zl=()=>{je(ac);let e=x(Js),t=x(tc),n=t!==void 0&&zs(t.sessionId);return(0,Q.jsxs)(`div`,{className:`relative flex h-screen flex-col bg-page font-mono text-ink antialiased`,children:[(0,Q.jsxs)(`header`,{className:`flex h-11 shrink-0 items-center justify-between gap-4 border-b border-line bg-surface px-3`,children:[(0,Q.jsxs)(`div`,{className:`flex min-w-0 items-baseline gap-3`,children:[(0,Q.jsx)(`h1`,{className:`text-sm text-ink`,children:`effect-inspect`}),t!==void 0&&(0,Q.jsxs)(`span`,{className:`truncate text-xs text-ink-3`,children:[Yl(t.program),` · `,t.runtime]})]}),(0,Q.jsxs)(`div`,{className:`flex shrink-0 items-center gap-4`,children:[(0,Q.jsx)(Wl,{}),(0,Q.jsx)(Rl,{}),(0,Q.jsx)(Hl,{}),(0,Q.jsx)(Ml,{})]})]}),(0,Q.jsxs)(`div`,{className:`flex min-h-0 flex-1`,children:[(0,Q.jsx)(ql,{}),(0,Q.jsx)(`main`,{className:`flex min-w-0 flex-1 flex-col`,children:e._tag===`Disconnected`&&!n?(0,Q.jsx)(Jl,{}):(0,Q.jsx)(Xl,{})})]})]})};export{Zl as component};