durable-actors-observer 0.7.2 → 0.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -2
- package/dist/components/ui/drawer.d.ts +15 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1255 -1133
- package/dist/request-timeline.d.ts +10 -1
- package/dist/standalone/app.css +1 -1
- package/dist/standalone/app.js +26 -24
- package/dist/styles.css +1 -1
- package/package.json +3 -2
package/dist/index.js
CHANGED
|
@@ -1,83 +1,84 @@
|
|
|
1
1
|
import * as e from "react";
|
|
2
2
|
import { useEffect as t, useId as n, useMemo as r, useRef as i, useState as a } from "react";
|
|
3
|
-
import { Activity as o, ArrowRight as s, Box as c, Cable as l, Calendar as u, ChartNoAxesGantt as d, ChevronDown as f, ChevronDownIcon as p, ChevronLeftIcon as m, ChevronRightIcon as h, CircleHelp as g, Download as _, Hash as v, LayoutGrid as y, List as ee, Pause as b, Play as
|
|
4
|
-
import { Command as
|
|
5
|
-
import { clsx as
|
|
6
|
-
import { extendTailwindMerge as
|
|
7
|
-
import { Fragment as
|
|
8
|
-
import { Slot as
|
|
9
|
-
import { cva as
|
|
10
|
-
import { DayPicker as
|
|
11
|
-
import * as
|
|
12
|
-
import
|
|
3
|
+
import { Activity as o, ArrowRight as s, Box as c, Cable as l, Calendar as u, ChartNoAxesGantt as d, ChevronDown as f, ChevronDownIcon as p, ChevronLeftIcon as m, ChevronRightIcon as h, CircleHelp as g, Download as _, Hash as v, LayoutGrid as y, List as ee, Pause as b, Play as te, RefreshCw as ne, Search as x, SearchIcon as S, SunMoon as C, Unplug as w, X as T } from "lucide-react";
|
|
4
|
+
import { Command as E } from "cmdk";
|
|
5
|
+
import { clsx as D } from "clsx";
|
|
6
|
+
import { extendTailwindMerge as O } from "tailwind-merge";
|
|
7
|
+
import { Fragment as k, jsx as A, jsxs as j } from "react/jsx-runtime";
|
|
8
|
+
import { Slot as M } from "@radix-ui/react-slot";
|
|
9
|
+
import { cva as N } from "class-variance-authority";
|
|
10
|
+
import { DayPicker as P, getDefaultClassNames as F } from "react-day-picker";
|
|
11
|
+
import * as I from "@radix-ui/react-popover";
|
|
12
|
+
import { Drawer as L } from "vaul";
|
|
13
13
|
import { JsonView as re } from "react-json-view-lite";
|
|
14
14
|
import { create as ie } from "jsondiffpatch";
|
|
15
15
|
import { format as ae } from "jsondiffpatch/formatters/html";
|
|
16
|
+
import * as R from "@radix-ui/react-dialog";
|
|
16
17
|
import { createParser as oe } from "eventsource-parser";
|
|
17
18
|
//#region src/lib/utils.ts
|
|
18
|
-
var se =
|
|
19
|
-
function
|
|
20
|
-
return se(
|
|
19
|
+
var se = O({ prefix: "la" });
|
|
20
|
+
function z(...e) {
|
|
21
|
+
return se(D(e));
|
|
21
22
|
}
|
|
22
23
|
//#endregion
|
|
23
24
|
//#region src/components/ui/command.tsx
|
|
24
25
|
function ce({ className: e, ...t }) {
|
|
25
|
-
return /* @__PURE__ */
|
|
26
|
+
return /* @__PURE__ */ A(E, {
|
|
26
27
|
"data-slot": "command",
|
|
27
|
-
className:
|
|
28
|
+
className: z("la:flex la:h-full la:w-full la:flex-col la:overflow-hidden la:rounded-md la:bg-popover la:text-popover-foreground", e),
|
|
28
29
|
...t
|
|
29
30
|
});
|
|
30
31
|
}
|
|
31
32
|
function le({ className: e, ...t }) {
|
|
32
|
-
return /* @__PURE__ */
|
|
33
|
+
return /* @__PURE__ */ j("div", {
|
|
33
34
|
"data-slot": "command-input-wrapper",
|
|
34
35
|
className: "la:flex la:h-9 la:items-center la:gap-2 la:border-b la:px-3",
|
|
35
|
-
children: [/* @__PURE__ */
|
|
36
|
+
children: [/* @__PURE__ */ A(S, { className: "la:size-4 la:shrink-0 la:opacity-50" }), /* @__PURE__ */ A(E.Input, {
|
|
36
37
|
"data-slot": "command-input",
|
|
37
|
-
className:
|
|
38
|
+
className: z("la:flex la:h-10 la:w-full la:rounded-md la:bg-transparent la:py-3 la:text-sm la:outline-hidden la:placeholder:text-muted-foreground la:disabled:cursor-not-allowed la:disabled:opacity-50", e),
|
|
38
39
|
...t
|
|
39
40
|
})]
|
|
40
41
|
});
|
|
41
42
|
}
|
|
42
43
|
function ue({ className: e, ...t }) {
|
|
43
|
-
return /* @__PURE__ */
|
|
44
|
+
return /* @__PURE__ */ A(E.List, {
|
|
44
45
|
"data-slot": "command-list",
|
|
45
|
-
className:
|
|
46
|
+
className: z("la:max-h-[300px] la:scroll-py-1 la:overflow-x-hidden la:overflow-y-auto", e),
|
|
46
47
|
...t
|
|
47
48
|
});
|
|
48
49
|
}
|
|
49
50
|
function de({ ...e }) {
|
|
50
|
-
return /* @__PURE__ */
|
|
51
|
+
return /* @__PURE__ */ A(E.Empty, {
|
|
51
52
|
"data-slot": "command-empty",
|
|
52
53
|
className: "la:py-6 la:text-center la:text-sm",
|
|
53
54
|
...e
|
|
54
55
|
});
|
|
55
56
|
}
|
|
56
57
|
function fe({ className: e, ...t }) {
|
|
57
|
-
return /* @__PURE__ */
|
|
58
|
+
return /* @__PURE__ */ A(E.Group, {
|
|
58
59
|
"data-slot": "command-group",
|
|
59
|
-
className:
|
|
60
|
+
className: z("la:overflow-hidden la:p-1 la:text-foreground la:[&_[cmdk-group-heading]]:px-2 la:[&_[cmdk-group-heading]]:py-1.5 la:[&_[cmdk-group-heading]]:text-xs la:[&_[cmdk-group-heading]]:font-medium la:[&_[cmdk-group-heading]]:text-muted-foreground", e),
|
|
60
61
|
...t
|
|
61
62
|
});
|
|
62
63
|
}
|
|
63
64
|
function pe({ className: e, ...t }) {
|
|
64
|
-
return /* @__PURE__ */
|
|
65
|
+
return /* @__PURE__ */ A(E.Separator, {
|
|
65
66
|
"data-slot": "command-separator",
|
|
66
|
-
className:
|
|
67
|
+
className: z("la:-mx-1 la:h-px la:bg-border", e),
|
|
67
68
|
...t
|
|
68
69
|
});
|
|
69
70
|
}
|
|
70
71
|
function me({ className: e, ...t }) {
|
|
71
|
-
return /* @__PURE__ */
|
|
72
|
+
return /* @__PURE__ */ A(E.Item, {
|
|
72
73
|
"data-slot": "command-item",
|
|
73
|
-
className:
|
|
74
|
+
className: z("la:relative la:flex la:cursor-default la:items-center la:gap-2 la:rounded-sm la:px-2 la:py-1.5 la:text-sm la:outline-hidden la:select-none la:data-[disabled=true]:pointer-events-none la:data-[disabled=true]:opacity-50 la:data-[selected=true]:bg-accent la:data-[selected=true]:text-accent-foreground la:[&_svg]:pointer-events-none la:[&_svg]:shrink-0 la:[&_svg:not([class*='size-'])]:size-4 la:[&_svg:not([class*='text-'])]:text-muted-foreground", e),
|
|
74
75
|
...t
|
|
75
76
|
});
|
|
76
77
|
}
|
|
77
78
|
function he({ className: e, ...t }) {
|
|
78
|
-
return /* @__PURE__ */
|
|
79
|
+
return /* @__PURE__ */ A("span", {
|
|
79
80
|
"data-slot": "command-shortcut",
|
|
80
|
-
className:
|
|
81
|
+
className: z("la:ml-auto la:text-xs la:tracking-widest la:text-muted-foreground", e),
|
|
81
82
|
...t
|
|
82
83
|
});
|
|
83
84
|
}
|
|
@@ -85,15 +86,15 @@ function he({ className: e, ...t }) {
|
|
|
85
86
|
//#region src/FilterCombobox.tsx
|
|
86
87
|
function ge({ label: e, placeholder: t, value: n, onChange: r, onSelectSuggestion: i, suggestions: o, limit: s = 8, className: c }) {
|
|
87
88
|
let [l, u] = a(!1), d = _e(o, n, s, !!i), f = d.reduce((e, t) => e.set(t.group, [...e.get(t.group) ?? [], t]), /* @__PURE__ */ new Map()), p = l && d.length > 0;
|
|
88
|
-
return /* @__PURE__ */
|
|
89
|
+
return /* @__PURE__ */ j(ce, {
|
|
89
90
|
label: e,
|
|
90
91
|
shouldFilter: !1,
|
|
91
92
|
loop: !0,
|
|
92
|
-
className:
|
|
93
|
+
className: z("la-combobox la:relative la:overflow-visible la:bg-transparent", c),
|
|
93
94
|
onKeyDown: (e) => {
|
|
94
95
|
e.key === "Escape" && u(!1), e.key === "ArrowDown" && u(!0);
|
|
95
96
|
},
|
|
96
|
-
children: [/* @__PURE__ */
|
|
97
|
+
children: [/* @__PURE__ */ A(le, {
|
|
97
98
|
placeholder: t,
|
|
98
99
|
value: n,
|
|
99
100
|
onValueChange: (e) => {
|
|
@@ -101,21 +102,21 @@ function ge({ label: e, placeholder: t, value: n, onChange: r, onSelectSuggestio
|
|
|
101
102
|
},
|
|
102
103
|
onFocus: () => u(!0),
|
|
103
104
|
onBlur: () => u(!1)
|
|
104
|
-
}), p && /* @__PURE__ */
|
|
105
|
+
}), p && /* @__PURE__ */ A(ue, {
|
|
105
106
|
label: `${e} suggestions`,
|
|
106
107
|
className: "la:absolute la:top-full la:right-0 la:left-0 la:z-20 la:mt-1.5 la:rounded-md la:border la:bg-popover la:text-popover-foreground la:shadow-md",
|
|
107
108
|
onMouseDown: (e) => e.preventDefault(),
|
|
108
|
-
children: [...f].map(([e, t]) => /* @__PURE__ */
|
|
109
|
+
children: [...f].map(([e, t]) => /* @__PURE__ */ A(fe, {
|
|
109
110
|
heading: e,
|
|
110
|
-
children: t.map((t) => /* @__PURE__ */
|
|
111
|
+
children: t.map((t) => /* @__PURE__ */ j(me, {
|
|
111
112
|
value: t.id ?? `${e}:${t.value}`,
|
|
112
113
|
onSelect: () => {
|
|
113
114
|
i ? i(t) : r(t.value), u(!1);
|
|
114
115
|
},
|
|
115
|
-
children: [/* @__PURE__ */
|
|
116
|
+
children: [/* @__PURE__ */ A("span", {
|
|
116
117
|
className: "la:truncate la:font-mono la:text-xs",
|
|
117
118
|
children: t.value
|
|
118
|
-
}), t.hint && /* @__PURE__ */
|
|
119
|
+
}), t.hint && /* @__PURE__ */ A("span", {
|
|
119
120
|
className: "la:ml-auto la:text-xs la:text-muted-foreground",
|
|
120
121
|
children: t.hint
|
|
121
122
|
})]
|
|
@@ -150,144 +151,175 @@ function ve(e) {
|
|
|
150
151
|
return {
|
|
151
152
|
start: n,
|
|
152
153
|
span: r - n,
|
|
153
|
-
|
|
154
|
+
calls: a,
|
|
155
|
+
rows: ye(a)
|
|
154
156
|
};
|
|
155
157
|
}
|
|
156
|
-
function
|
|
158
|
+
function ye(e) {
|
|
159
|
+
let t = /* @__PURE__ */ new Map();
|
|
160
|
+
for (let n of e) {
|
|
161
|
+
let { record: e } = n, r = JSON.stringify([
|
|
162
|
+
e.projectId,
|
|
163
|
+
e.actorName,
|
|
164
|
+
e.actorId,
|
|
165
|
+
e.kind,
|
|
166
|
+
e.operation
|
|
167
|
+
]), i = t.get(r);
|
|
168
|
+
i || (i = {
|
|
169
|
+
key: r,
|
|
170
|
+
record: e,
|
|
171
|
+
calls: []
|
|
172
|
+
}, t.set(r, i)), i.calls.push(n);
|
|
173
|
+
}
|
|
174
|
+
return [...t.values()];
|
|
175
|
+
}
|
|
176
|
+
function B(e) {
|
|
157
177
|
return e >= 6e4 ? `${(e / 6e4).toLocaleString(void 0, { maximumFractionDigits: 2 })} min` : e >= 1e3 ? `${(e / 1e3).toLocaleString(void 0, { maximumFractionDigits: 2 })} s` : `${e.toLocaleString(void 0, { maximumFractionDigits: 1 })} ms`;
|
|
158
178
|
}
|
|
159
|
-
function
|
|
160
|
-
return e === null ? "First in view" : e < 0 ? "Overlapping" : e === 0 ? "No gap" : `${
|
|
179
|
+
function be(e) {
|
|
180
|
+
return e === null ? "First in view" : e < 0 ? "Overlapping" : e === 0 ? "No gap" : `${B(e)} gap`;
|
|
161
181
|
}
|
|
162
182
|
//#endregion
|
|
163
183
|
//#region src/RequestTimeline.tsx
|
|
164
|
-
var
|
|
184
|
+
var xe = [
|
|
165
185
|
0,
|
|
166
186
|
.25,
|
|
167
187
|
.5,
|
|
168
188
|
.75,
|
|
169
189
|
1
|
|
170
190
|
];
|
|
171
|
-
function
|
|
191
|
+
function Se({ records: e, selected: t, onSelect: n }) {
|
|
172
192
|
let { start: r, span: i, rows: a } = ve(e), o = Math.max(1, i);
|
|
173
|
-
return /* @__PURE__ */
|
|
193
|
+
return /* @__PURE__ */ j("div", {
|
|
174
194
|
className: "request-waterfall",
|
|
175
195
|
role: "group",
|
|
176
196
|
"aria-label": "Invocation waterfall",
|
|
177
197
|
children: [
|
|
178
|
-
/* @__PURE__ */
|
|
198
|
+
/* @__PURE__ */ A(Ce, {
|
|
179
199
|
count: e.length,
|
|
180
200
|
span: i
|
|
181
201
|
}),
|
|
182
|
-
/* @__PURE__ */
|
|
202
|
+
/* @__PURE__ */ j("div", {
|
|
183
203
|
className: "request-waterfall-scroll",
|
|
184
204
|
tabIndex: 0,
|
|
185
205
|
"aria-label": "Invocation timeline, scroll for more calls",
|
|
186
|
-
children: [/* @__PURE__ */
|
|
206
|
+
children: [/* @__PURE__ */ j("div", {
|
|
187
207
|
className: "request-waterfall-axis",
|
|
188
208
|
"aria-hidden": "true",
|
|
189
209
|
children: [
|
|
190
|
-
/* @__PURE__ */
|
|
191
|
-
/* @__PURE__ */
|
|
210
|
+
/* @__PURE__ */ A("span", { children: "Operation / instance" }),
|
|
211
|
+
/* @__PURE__ */ A("div", { children: xe.map((e) => /* @__PURE__ */ A("span", {
|
|
192
212
|
style: { left: `${e * 100}%` },
|
|
193
|
-
children:
|
|
213
|
+
children: B(o * e)
|
|
194
214
|
}, e)) }),
|
|
195
|
-
/* @__PURE__ */
|
|
215
|
+
/* @__PURE__ */ A("span", { children: "Calls / total" })
|
|
196
216
|
]
|
|
197
|
-
}), a.map((e) => /* @__PURE__ */
|
|
217
|
+
}), a.map((e) => /* @__PURE__ */ A(we, {
|
|
198
218
|
row: e,
|
|
199
219
|
scale: o,
|
|
200
|
-
selected: t
|
|
220
|
+
selected: t,
|
|
201
221
|
onSelect: n
|
|
202
|
-
}, e.
|
|
222
|
+
}, e.key))]
|
|
203
223
|
}),
|
|
204
|
-
/* @__PURE__ */
|
|
224
|
+
/* @__PURE__ */ j("div", {
|
|
205
225
|
className: "request-waterfall-caption",
|
|
206
|
-
children: [/* @__PURE__ */
|
|
226
|
+
children: [/* @__PURE__ */ j("span", { children: ["Relative to ", /* @__PURE__ */ A("time", {
|
|
207
227
|
dateTime: new Date(r).toISOString(),
|
|
208
228
|
children: new Date(r).toLocaleString([], { hour12: !1 })
|
|
209
|
-
})] }), /* @__PURE__ */
|
|
229
|
+
})] }), /* @__PURE__ */ A("span", { children: "Gaps use preceding calls on the same instance in this view." })]
|
|
210
230
|
})
|
|
211
231
|
]
|
|
212
232
|
});
|
|
213
233
|
}
|
|
214
|
-
function
|
|
215
|
-
return /* @__PURE__ */
|
|
234
|
+
function Ce({ count: e, span: t }) {
|
|
235
|
+
return /* @__PURE__ */ j("div", {
|
|
216
236
|
className: "request-waterfall-heading",
|
|
217
|
-
children: [/* @__PURE__ */
|
|
237
|
+
children: [/* @__PURE__ */ j("div", { children: [/* @__PURE__ */ A("strong", { children: "Invocation waterfall" }), /* @__PURE__ */ j("span", { children: [
|
|
218
238
|
e.toLocaleString(),
|
|
219
239
|
" calls · ",
|
|
220
|
-
|
|
240
|
+
B(t),
|
|
221
241
|
" elapsed"
|
|
222
|
-
] })] }), /* @__PURE__ */
|
|
242
|
+
] })] }), /* @__PURE__ */ j("ul", {
|
|
223
243
|
className: "request-waterfall-legend",
|
|
224
244
|
"aria-label": "Timing legend",
|
|
225
245
|
children: [
|
|
226
|
-
/* @__PURE__ */
|
|
227
|
-
/* @__PURE__ */
|
|
228
|
-
/* @__PURE__ */
|
|
229
|
-
/* @__PURE__ */
|
|
230
|
-
/* @__PURE__ */
|
|
246
|
+
/* @__PURE__ */ j("li", { children: [/* @__PURE__ */ A("i", { className: "request-waterfall-method" }), "Method"] }),
|
|
247
|
+
/* @__PURE__ */ j("li", { children: [/* @__PURE__ */ A("i", { className: "request-waterfall-websocket" }), "WebSocket"] }),
|
|
248
|
+
/* @__PURE__ */ j("li", { children: [/* @__PURE__ */ A("i", { className: "request-waterfall-queue" }), "Queue wait"] }),
|
|
249
|
+
/* @__PURE__ */ j("li", { children: [/* @__PURE__ */ A("i", { className: "request-waterfall-failed" }), "Failed / rejected"] }),
|
|
250
|
+
/* @__PURE__ */ j("li", { children: [/* @__PURE__ */ A("i", { className: "request-waterfall-interrupted" }), "Interrupted / rerouted"] })
|
|
231
251
|
]
|
|
232
252
|
})]
|
|
233
253
|
});
|
|
234
254
|
}
|
|
235
|
-
function
|
|
236
|
-
return /* @__PURE__ */
|
|
237
|
-
type: "button",
|
|
255
|
+
function we({ row: { record: e, calls: t }, scale: n, selected: r, onSelect: i }) {
|
|
256
|
+
return /* @__PURE__ */ j("div", {
|
|
238
257
|
className: "request-waterfall-row",
|
|
239
|
-
|
|
240
|
-
"aria-label":
|
|
241
|
-
"
|
|
242
|
-
title: `${e.actorName} / ${e.actorId}\n${e.operation} · ${e.outcome}\nStart: ${new Date(e.startedAtMs).toLocaleString()} (+${z(t)})\nTotal: ${z(e.durationMs)}\nQueue wait: ${e.queueWaitMs === null ? "Did not begin processing" : z(e.queueWaitMs)}\n${ye(n)}${n === null ? "" : " relative to preceding calls on this instance"}`,
|
|
243
|
-
onClick: (t) => a(e, t.currentTarget),
|
|
258
|
+
role: "group",
|
|
259
|
+
"aria-label": `${e.operation} ${e.kind} calls on ${e.actorName} / ${e.actorId}`,
|
|
260
|
+
"data-state": t.some((e) => e.record === r) ? "selected" : void 0,
|
|
244
261
|
children: [
|
|
245
|
-
/* @__PURE__ */
|
|
262
|
+
/* @__PURE__ */ j("span", {
|
|
246
263
|
className: "request-waterfall-label",
|
|
247
|
-
children: [/* @__PURE__ */
|
|
264
|
+
children: [/* @__PURE__ */ A("strong", { children: e.operation }), /* @__PURE__ */ j("span", { children: [
|
|
248
265
|
e.actorName,
|
|
249
266
|
" / ",
|
|
250
267
|
e.actorId
|
|
251
268
|
] })]
|
|
252
269
|
}),
|
|
253
|
-
/* @__PURE__ */
|
|
270
|
+
/* @__PURE__ */ j("span", {
|
|
254
271
|
className: "request-waterfall-track",
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
width: `${n / r * 100}%`
|
|
266
|
-
}
|
|
267
|
-
}),
|
|
268
|
-
/* @__PURE__ */ j("span", {
|
|
269
|
-
className: `request-waterfall-bar request-waterfall-${e.kind} request-waterfall-${e.outcome}`,
|
|
270
|
-
style: {
|
|
271
|
-
left: `${t / r * 100}%`,
|
|
272
|
-
width: `${e.durationMs / r * 100}%`
|
|
273
|
-
},
|
|
274
|
-
children: e.queueWaitMs !== null && e.queueWaitMs > 0 && /* @__PURE__ */ j("span", {
|
|
275
|
-
className: "request-waterfall-queue",
|
|
276
|
-
style: { width: `${e.queueWaitMs / e.durationMs * 100}%` }
|
|
277
|
-
})
|
|
278
|
-
})
|
|
279
|
-
]
|
|
272
|
+
children: [xe.map((e) => /* @__PURE__ */ A("i", {
|
|
273
|
+
className: "request-waterfall-gridline",
|
|
274
|
+
"aria-hidden": "true",
|
|
275
|
+
style: { left: `${e * 100}%` }
|
|
276
|
+
}, e)), t.map((e) => /* @__PURE__ */ A(Te, {
|
|
277
|
+
call: e,
|
|
278
|
+
scale: n,
|
|
279
|
+
selected: r === e.record,
|
|
280
|
+
onSelect: i
|
|
281
|
+
}, e.record.eventId ?? e.record.sequence))]
|
|
280
282
|
}),
|
|
281
|
-
/* @__PURE__ */
|
|
283
|
+
/* @__PURE__ */ j("span", {
|
|
282
284
|
className: "request-waterfall-timing",
|
|
283
|
-
children: [/* @__PURE__ */ j("strong", { children:
|
|
285
|
+
children: [/* @__PURE__ */ j("strong", { children: [
|
|
286
|
+
t.length.toLocaleString(),
|
|
287
|
+
" ",
|
|
288
|
+
t.length === 1 ? "call" : "calls"
|
|
289
|
+
] }), /* @__PURE__ */ j("span", { children: [B(t.reduce((e, t) => e + t.record.durationMs, 0)), " total"] })]
|
|
284
290
|
})
|
|
285
291
|
]
|
|
286
292
|
});
|
|
287
293
|
}
|
|
294
|
+
function Te({ call: { record: e, offsetMs: t, gapMs: n }, scale: r, selected: i, onSelect: a }) {
|
|
295
|
+
return /* @__PURE__ */ j(k, { children: [n !== null && n > 0 && /* @__PURE__ */ A("span", {
|
|
296
|
+
className: "request-waterfall-gap",
|
|
297
|
+
"aria-hidden": "true",
|
|
298
|
+
style: {
|
|
299
|
+
left: `${(t - n) / r * 100}%`,
|
|
300
|
+
width: `${n / r * 100}%`
|
|
301
|
+
}
|
|
302
|
+
}), /* @__PURE__ */ A("button", {
|
|
303
|
+
type: "button",
|
|
304
|
+
className: `request-waterfall-bar request-waterfall-${e.kind} request-waterfall-${e.outcome}`,
|
|
305
|
+
style: {
|
|
306
|
+
left: `${t / r * 100}%`,
|
|
307
|
+
width: `${e.durationMs / r * 100}%`
|
|
308
|
+
},
|
|
309
|
+
"data-state": i ? "selected" : void 0,
|
|
310
|
+
"aria-label": `Inspect ${e.operation} request on ${e.actorName} / ${e.actorId}, ${e.outcome}, ${B(e.durationMs)}, starts +${B(t)}, ${be(n)}`,
|
|
311
|
+
"aria-haspopup": "dialog",
|
|
312
|
+
title: `${e.actorName} / ${e.actorId}\n${e.operation} · ${e.outcome}\nStart: ${new Date(e.startedAtMs).toLocaleString()} (+${B(t)})\nTotal: ${B(e.durationMs)}\nQueue wait: ${e.queueWaitMs === null ? "Did not begin processing" : B(e.queueWaitMs)}\n${be(n)}${n === null ? "" : " relative to preceding calls on this instance"}`,
|
|
313
|
+
onClick: (t) => a(e, t.currentTarget),
|
|
314
|
+
children: e.queueWaitMs !== null && e.queueWaitMs > 0 && /* @__PURE__ */ A("span", {
|
|
315
|
+
className: "request-waterfall-queue",
|
|
316
|
+
style: { width: `${e.queueWaitMs / e.durationMs * 100}%` }
|
|
317
|
+
})
|
|
318
|
+
})] });
|
|
319
|
+
}
|
|
288
320
|
//#endregion
|
|
289
321
|
//#region src/components/ui/button.tsx
|
|
290
|
-
var
|
|
322
|
+
var Ee = N("la:inline-flex la:shrink-0 la:items-center la:justify-center la:gap-2 la:whitespace-nowrap la:rounded-md la:text-sm la:font-medium la:outline-none la:transition-[background-color,border-color,color,box-shadow,transform] la:duration-150 la:ease-out la:active:translate-y-px la:disabled:pointer-events-none la:disabled:translate-y-0 la:disabled:opacity-45 la:focus-visible:ring-2 la:focus-visible:ring-ring la:focus-visible:ring-offset-2 la:focus-visible:ring-offset-background la:aria-invalid:border-destructive la:aria-invalid:ring-destructive/25 la:[&_svg]:pointer-events-none la:[&_svg]:shrink-0 la:[&_svg:not([class*='size-'])]:size-4", {
|
|
291
323
|
variants: {
|
|
292
324
|
variant: {
|
|
293
325
|
default: "la:bg-primary la:text-primary-foreground la:shadow-[var(--shadow-control)] la:hover:bg-primary/88",
|
|
@@ -311,10 +343,10 @@ var we = P("la:inline-flex la:shrink-0 la:items-center la:justify-center la:gap-
|
|
|
311
343
|
size: "default"
|
|
312
344
|
}
|
|
313
345
|
});
|
|
314
|
-
function
|
|
315
|
-
return /* @__PURE__ */
|
|
346
|
+
function V({ className: e, variant: t, size: n, asChild: r = !1, ...i }) {
|
|
347
|
+
return /* @__PURE__ */ A(r ? M : "button", {
|
|
316
348
|
"data-slot": "button",
|
|
317
|
-
className:
|
|
349
|
+
className: z(Ee({
|
|
318
350
|
variant: t,
|
|
319
351
|
size: n,
|
|
320
352
|
className: e
|
|
@@ -324,59 +356,59 @@ function B({ className: e, variant: t, size: n, asChild: r = !1, ...i }) {
|
|
|
324
356
|
}
|
|
325
357
|
//#endregion
|
|
326
358
|
//#region src/components/ui/calendar.tsx
|
|
327
|
-
function
|
|
328
|
-
let c =
|
|
329
|
-
return /* @__PURE__ */
|
|
359
|
+
function De({ className: e, classNames: t, showOutsideDays: n = !0, captionLayout: r = "label", buttonVariant: i = "ghost", formatters: a, components: o, ...s }) {
|
|
360
|
+
let c = F();
|
|
361
|
+
return /* @__PURE__ */ A(P, {
|
|
330
362
|
showOutsideDays: n,
|
|
331
|
-
className:
|
|
363
|
+
className: z("la:group/calendar la:bg-background la:p-3 la:[--cell-size:--spacing(8)] la:[[data-slot=card-content]_&]:bg-transparent la:[[data-slot=popover-content]_&]:bg-transparent", e),
|
|
332
364
|
captionLayout: r,
|
|
333
365
|
formatters: {
|
|
334
366
|
formatMonthDropdown: (e) => e.toLocaleString("default", { month: "short" }),
|
|
335
367
|
...a
|
|
336
368
|
},
|
|
337
369
|
classNames: {
|
|
338
|
-
root:
|
|
339
|
-
months:
|
|
340
|
-
month:
|
|
341
|
-
nav:
|
|
342
|
-
button_previous:
|
|
343
|
-
button_next:
|
|
344
|
-
month_caption:
|
|
345
|
-
dropdowns:
|
|
346
|
-
dropdown_root:
|
|
347
|
-
dropdown:
|
|
348
|
-
caption_label:
|
|
349
|
-
month_grid:
|
|
350
|
-
weekdays:
|
|
351
|
-
weekday:
|
|
352
|
-
week:
|
|
353
|
-
week_number_header:
|
|
354
|
-
week_number:
|
|
355
|
-
day:
|
|
356
|
-
range_start:
|
|
357
|
-
range_middle:
|
|
358
|
-
range_end:
|
|
359
|
-
today:
|
|
360
|
-
outside:
|
|
361
|
-
disabled:
|
|
362
|
-
hidden:
|
|
370
|
+
root: z("la:w-fit", c.root),
|
|
371
|
+
months: z("la:relative la:flex la:flex-col la:gap-4 la:md:flex-row", c.months),
|
|
372
|
+
month: z("la:flex la:w-full la:flex-col la:gap-4", c.month),
|
|
373
|
+
nav: z("la:absolute la:inset-x-0 la:top-0 la:flex la:w-full la:items-center la:justify-between la:gap-1", c.nav),
|
|
374
|
+
button_previous: z(Ee({ variant: i }), "la:size-(--cell-size) la:p-0 la:select-none la:aria-disabled:opacity-50", c.button_previous),
|
|
375
|
+
button_next: z(Ee({ variant: i }), "la:size-(--cell-size) la:p-0 la:select-none la:aria-disabled:opacity-50", c.button_next),
|
|
376
|
+
month_caption: z("la:flex la:h-(--cell-size) la:w-full la:items-center la:justify-center la:px-(--cell-size)", c.month_caption),
|
|
377
|
+
dropdowns: z("la:flex la:h-(--cell-size) la:w-full la:items-center la:justify-center la:gap-1.5 la:text-sm la:font-medium", c.dropdowns),
|
|
378
|
+
dropdown_root: z("la:relative la:rounded-md la:border la:border-input la:shadow-xs la:has-focus:border-ring la:has-focus:ring-[3px] la:has-focus:ring-ring/50", c.dropdown_root),
|
|
379
|
+
dropdown: z("la:absolute la:inset-0 la:bg-popover la:opacity-0", c.dropdown),
|
|
380
|
+
caption_label: z("la:font-medium la:select-none", r === "label" ? "la:text-sm" : "la:flex la:h-8 la:items-center la:gap-1 la:rounded-md la:pr-1 la:pl-2 la:text-sm la:[&>svg]:size-3.5 la:[&>svg]:text-muted-foreground", c.caption_label),
|
|
381
|
+
month_grid: z("la:w-full la:border-collapse", c.month_grid),
|
|
382
|
+
weekdays: z("la:flex", c.weekdays),
|
|
383
|
+
weekday: z("la:flex-1 la:rounded-md la:text-[0.8rem] la:font-normal la:text-muted-foreground la:select-none", c.weekday),
|
|
384
|
+
week: z("la:mt-2 la:flex la:w-full", c.week),
|
|
385
|
+
week_number_header: z("la:w-(--cell-size) la:select-none", c.week_number_header),
|
|
386
|
+
week_number: z("la:text-[0.8rem] la:text-muted-foreground la:select-none", c.week_number),
|
|
387
|
+
day: z("la:group/day la:relative la:aspect-square la:h-full la:w-full la:p-0 la:text-center la:select-none la:[&:last-child[data-selected=true]_button]:rounded-r-md", s.showWeekNumber ? "la:[&:nth-child(2)[data-selected=true]_button]:rounded-l-md" : "la:[&:first-child[data-selected=true]_button]:rounded-l-md", c.day),
|
|
388
|
+
range_start: z("la:rounded-l-md la:bg-accent", c.range_start),
|
|
389
|
+
range_middle: z("la:rounded-none", c.range_middle),
|
|
390
|
+
range_end: z("la:rounded-r-md la:bg-accent", c.range_end),
|
|
391
|
+
today: z("la:rounded-md la:bg-accent la:text-accent-foreground la:data-[selected=true]:rounded-none", c.today),
|
|
392
|
+
outside: z("la:text-muted-foreground la:aria-selected:text-muted-foreground", c.outside),
|
|
393
|
+
disabled: z("la:text-muted-foreground la:opacity-50", c.disabled),
|
|
394
|
+
hidden: z("la:invisible", c.hidden),
|
|
363
395
|
...t
|
|
364
396
|
},
|
|
365
397
|
components: {
|
|
366
|
-
Root: ({ className: e, rootRef: t, ...n }) => /* @__PURE__ */
|
|
398
|
+
Root: ({ className: e, rootRef: t, ...n }) => /* @__PURE__ */ A("div", {
|
|
367
399
|
"data-slot": "calendar",
|
|
368
400
|
ref: t,
|
|
369
|
-
className:
|
|
401
|
+
className: z(e),
|
|
370
402
|
...n
|
|
371
403
|
}),
|
|
372
|
-
Chevron: ({ className: e, orientation: t, ...n }) =>
|
|
373
|
-
className:
|
|
404
|
+
Chevron: ({ className: e, orientation: t, ...n }) => A(t === "left" ? m : t === "right" ? h : p, {
|
|
405
|
+
className: z("la:size-4", e),
|
|
374
406
|
...n
|
|
375
407
|
}),
|
|
376
|
-
DayButton:
|
|
377
|
-
WeekNumber: ({ children: e, ...t }) => /* @__PURE__ */
|
|
408
|
+
DayButton: Oe,
|
|
409
|
+
WeekNumber: ({ children: e, ...t }) => /* @__PURE__ */ A("td", {
|
|
378
410
|
...t,
|
|
379
|
-
children: /* @__PURE__ */
|
|
411
|
+
children: /* @__PURE__ */ A("div", {
|
|
380
412
|
className: "la:flex la:size-(--cell-size) la:items-center la:justify-center la:text-center",
|
|
381
413
|
children: e
|
|
382
414
|
})
|
|
@@ -386,11 +418,11 @@ function Te({ className: e, classNames: t, showOutsideDays: n = !0, captionLayou
|
|
|
386
418
|
...s
|
|
387
419
|
});
|
|
388
420
|
}
|
|
389
|
-
function
|
|
390
|
-
let a =
|
|
421
|
+
function Oe({ className: t, day: n, modifiers: r, ...i }) {
|
|
422
|
+
let a = F(), o = e.useRef(null);
|
|
391
423
|
return e.useEffect(() => {
|
|
392
424
|
r.focused && o.current?.focus();
|
|
393
|
-
}, [r.focused]), /* @__PURE__ */
|
|
425
|
+
}, [r.focused]), /* @__PURE__ */ A(V, {
|
|
394
426
|
ref: o,
|
|
395
427
|
variant: "ghost",
|
|
396
428
|
size: "icon",
|
|
@@ -399,73 +431,73 @@ function Ee({ className: t, day: n, modifiers: r, ...i }) {
|
|
|
399
431
|
"data-range-start": r.range_start,
|
|
400
432
|
"data-range-end": r.range_end,
|
|
401
433
|
"data-range-middle": r.range_middle,
|
|
402
|
-
className:
|
|
434
|
+
className: z("la:flex la:aspect-square la:size-auto la:w-full la:min-w-(--cell-size) la:flex-col la:gap-1 la:leading-none la:font-normal la:group-data-[focused=true]/day:relative la:group-data-[focused=true]/day:z-10 la:group-data-[focused=true]/day:border-ring la:group-data-[focused=true]/day:ring-[3px] la:group-data-[focused=true]/day:ring-ring/50 la:data-[range-end=true]:rounded-md la:data-[range-end=true]:rounded-r-md la:data-[range-end=true]:bg-primary la:data-[range-end=true]:text-primary-foreground la:data-[range-middle=true]:rounded-none la:data-[range-middle=true]:bg-accent la:data-[range-middle=true]:text-accent-foreground la:data-[range-start=true]:rounded-md la:data-[range-start=true]:rounded-l-md la:data-[range-start=true]:bg-primary la:data-[range-start=true]:text-primary-foreground la:data-[selected-single=true]:bg-primary la:data-[selected-single=true]:text-primary-foreground la:dark:hover:text-accent-foreground la:[&>span]:text-xs la:[&>span]:opacity-70", a.day, t),
|
|
403
435
|
...i
|
|
404
436
|
});
|
|
405
437
|
}
|
|
406
438
|
//#endregion
|
|
407
439
|
//#region src/components/ui/input.tsx
|
|
408
|
-
function
|
|
409
|
-
return /* @__PURE__ */
|
|
440
|
+
function H({ className: e, type: t, ...n }) {
|
|
441
|
+
return /* @__PURE__ */ A("input", {
|
|
410
442
|
type: t,
|
|
411
443
|
"data-slot": "input",
|
|
412
|
-
className:
|
|
444
|
+
className: z("la:flex la:h-9 la:w-full la:min-w-0 la:rounded-md la:border la:border-input la:bg-card la:px-3 la:py-1 la:text-sm la:text-foreground la:outline-none la:transition-colors la:placeholder:text-muted-foreground la:focus-visible:border-ring la:focus-visible:ring-2 la:focus-visible:ring-ring/20 la:disabled:cursor-not-allowed la:disabled:opacity-50 la:max-md:min-h-11", e),
|
|
413
445
|
...n
|
|
414
446
|
});
|
|
415
447
|
}
|
|
416
448
|
//#endregion
|
|
417
449
|
//#region src/components/ui/popover.tsx
|
|
418
|
-
function
|
|
419
|
-
return /* @__PURE__ */
|
|
450
|
+
function ke({ ...e }) {
|
|
451
|
+
return /* @__PURE__ */ A(I.Root, {
|
|
420
452
|
"data-slot": "popover",
|
|
421
453
|
...e
|
|
422
454
|
});
|
|
423
455
|
}
|
|
424
|
-
function
|
|
425
|
-
return /* @__PURE__ */
|
|
456
|
+
function Ae({ ...e }) {
|
|
457
|
+
return /* @__PURE__ */ A(I.Trigger, {
|
|
426
458
|
"data-slot": "popover-trigger",
|
|
427
459
|
...e
|
|
428
460
|
});
|
|
429
461
|
}
|
|
430
|
-
function
|
|
431
|
-
return /* @__PURE__ */
|
|
462
|
+
function je({ className: e, align: t = "center", sideOffset: n = 4, ...r }) {
|
|
463
|
+
return /* @__PURE__ */ A(I.Portal, { children: /* @__PURE__ */ A(I.Content, {
|
|
432
464
|
"data-slot": "popover-content",
|
|
433
465
|
align: t,
|
|
434
466
|
sideOffset: n,
|
|
435
|
-
className:
|
|
467
|
+
className: z("la:z-50 la:w-72 la:origin-(--radix-popover-content-transform-origin) la:rounded-md la:border la:bg-popover la:p-4 la:text-popover-foreground la:shadow-md la:outline-hidden", e),
|
|
436
468
|
...r
|
|
437
469
|
}) });
|
|
438
470
|
}
|
|
439
|
-
function
|
|
440
|
-
return /* @__PURE__ */
|
|
471
|
+
function Me({ ...e }) {
|
|
472
|
+
return /* @__PURE__ */ A(I.Anchor, {
|
|
441
473
|
"data-slot": "popover-anchor",
|
|
442
474
|
...e
|
|
443
475
|
});
|
|
444
476
|
}
|
|
445
|
-
function
|
|
446
|
-
return /* @__PURE__ */
|
|
477
|
+
function Ne({ className: e, ...t }) {
|
|
478
|
+
return /* @__PURE__ */ A("div", {
|
|
447
479
|
"data-slot": "popover-header",
|
|
448
|
-
className:
|
|
480
|
+
className: z("la:flex la:flex-col la:gap-1 la:text-sm", e),
|
|
449
481
|
...t
|
|
450
482
|
});
|
|
451
483
|
}
|
|
452
|
-
function
|
|
453
|
-
return /* @__PURE__ */
|
|
484
|
+
function Pe({ className: e, ...t }) {
|
|
485
|
+
return /* @__PURE__ */ A("div", {
|
|
454
486
|
"data-slot": "popover-title",
|
|
455
|
-
className:
|
|
487
|
+
className: z("la:font-medium", e),
|
|
456
488
|
...t
|
|
457
489
|
});
|
|
458
490
|
}
|
|
459
|
-
function
|
|
460
|
-
return /* @__PURE__ */
|
|
491
|
+
function Fe({ className: e, ...t }) {
|
|
492
|
+
return /* @__PURE__ */ A("p", {
|
|
461
493
|
"data-slot": "popover-description",
|
|
462
|
-
className:
|
|
494
|
+
className: z("la:text-muted-foreground", e),
|
|
463
495
|
...t
|
|
464
496
|
});
|
|
465
497
|
}
|
|
466
498
|
//#endregion
|
|
467
499
|
//#region src/time-range.ts
|
|
468
|
-
var
|
|
500
|
+
var Ie = [
|
|
469
501
|
{
|
|
470
502
|
minutes: 5,
|
|
471
503
|
label: "Last 5 minutes"
|
|
@@ -490,11 +522,11 @@ var Pe = [
|
|
|
490
522
|
minutes: 10080,
|
|
491
523
|
label: "Last 7 days"
|
|
492
524
|
}
|
|
493
|
-
],
|
|
525
|
+
], Le = {
|
|
494
526
|
kind: "relative",
|
|
495
527
|
minutes: 60
|
|
496
528
|
};
|
|
497
|
-
function
|
|
529
|
+
function Re(e, t) {
|
|
498
530
|
switch (e.kind) {
|
|
499
531
|
case "relative": return { fromMs: Math.floor((t - e.minutes * 6e4) / 6e4) * 6e4 };
|
|
500
532
|
case "absolute": return {
|
|
@@ -504,24 +536,24 @@ function Ie(e, t) {
|
|
|
504
536
|
case "all": return {};
|
|
505
537
|
}
|
|
506
538
|
}
|
|
507
|
-
function
|
|
539
|
+
function ze(e) {
|
|
508
540
|
switch (e.kind) {
|
|
509
|
-
case "relative": return
|
|
510
|
-
case "absolute": return `${
|
|
541
|
+
case "relative": return Ie.find((t) => t.minutes === e.minutes)?.label ?? `Last ${e.minutes} minutes`;
|
|
542
|
+
case "absolute": return `${Ve(e.fromMs, e.toMs)} – ${Ve(e.toMs, e.fromMs)}`;
|
|
511
543
|
case "all": return "All retained";
|
|
512
544
|
}
|
|
513
545
|
}
|
|
514
|
-
function
|
|
546
|
+
function U(e) {
|
|
515
547
|
switch (e.kind) {
|
|
516
|
-
case "relative": return `in the ${
|
|
517
|
-
case "absolute": return `between ${
|
|
548
|
+
case "relative": return `in the ${ze(e).toLocaleLowerCase()}`;
|
|
549
|
+
case "absolute": return `between ${ze(e)}`;
|
|
518
550
|
case "all": return "in retained history";
|
|
519
551
|
}
|
|
520
552
|
}
|
|
521
|
-
function
|
|
553
|
+
function Be(e, t) {
|
|
522
554
|
return e.kind === t.kind && (e.kind !== "relative" || e.minutes === t.minutes) && (e.kind !== "absolute" || e.fromMs === t.fromMs && e.toMs === t.toMs);
|
|
523
555
|
}
|
|
524
|
-
function
|
|
556
|
+
function Ve(e, t) {
|
|
525
557
|
let n = new Date(e), r = n.toDateString() === new Date(t).toDateString(), i = n.toLocaleTimeString([], {
|
|
526
558
|
hour: "2-digit",
|
|
527
559
|
minute: "2-digit",
|
|
@@ -534,45 +566,45 @@ function ze(e, t) {
|
|
|
534
566
|
}
|
|
535
567
|
//#endregion
|
|
536
568
|
//#region src/TimeRangePicker.tsx
|
|
537
|
-
function
|
|
538
|
-
let [o, s] = a(!1), [c, l] = a(() =>
|
|
569
|
+
function He({ value: e, onChange: t, allowAll: n = !0, className: r, align: i = "end" }) {
|
|
570
|
+
let [o, s] = a(!1), [c, l] = a(() => We(e)), [d, p] = a(!1), m = (e) => {
|
|
539
571
|
t(e), s(!1);
|
|
540
572
|
};
|
|
541
|
-
return /* @__PURE__ */
|
|
573
|
+
return /* @__PURE__ */ j(ke, {
|
|
542
574
|
open: o,
|
|
543
575
|
onOpenChange: (t) => {
|
|
544
|
-
t && (l(
|
|
576
|
+
t && (l(We(e)), p(!1)), s(t);
|
|
545
577
|
},
|
|
546
|
-
children: [/* @__PURE__ */
|
|
578
|
+
children: [/* @__PURE__ */ A(Ae, {
|
|
547
579
|
asChild: !0,
|
|
548
|
-
children: /* @__PURE__ */
|
|
580
|
+
children: /* @__PURE__ */ j(V, {
|
|
549
581
|
type: "button",
|
|
550
582
|
variant: "outline",
|
|
551
583
|
className: r,
|
|
552
|
-
"aria-label": `Time range: ${
|
|
584
|
+
"aria-label": `Time range: ${ze(e)}`,
|
|
553
585
|
children: [
|
|
554
|
-
/* @__PURE__ */
|
|
555
|
-
/* @__PURE__ */
|
|
586
|
+
/* @__PURE__ */ A(u, { "aria-hidden": "true" }),
|
|
587
|
+
/* @__PURE__ */ A("span", {
|
|
556
588
|
className: "la:truncate la:tabular-nums",
|
|
557
|
-
children:
|
|
589
|
+
children: ze(e)
|
|
558
590
|
}),
|
|
559
|
-
/* @__PURE__ */
|
|
591
|
+
/* @__PURE__ */ A(f, {
|
|
560
592
|
"aria-hidden": "true",
|
|
561
593
|
className: "la:text-muted-foreground"
|
|
562
594
|
})
|
|
563
595
|
]
|
|
564
596
|
})
|
|
565
|
-
}), /* @__PURE__ */
|
|
597
|
+
}), /* @__PURE__ */ j(je, {
|
|
566
598
|
align: i,
|
|
567
599
|
"aria-label": "Time range",
|
|
568
600
|
className: "la:flex la:w-auto la:p-0 la:text-sm",
|
|
569
|
-
children: [/* @__PURE__ */
|
|
601
|
+
children: [/* @__PURE__ */ j("div", {
|
|
570
602
|
className: "la:flex la:flex-col la:gap-0.5 la:border-r la:p-2",
|
|
571
603
|
role: "group",
|
|
572
604
|
"aria-label": "Preset ranges",
|
|
573
|
-
children: [
|
|
605
|
+
children: [Ie.map((t) => /* @__PURE__ */ A(Ue, {
|
|
574
606
|
label: t.label,
|
|
575
|
-
selected:
|
|
607
|
+
selected: Be(e, {
|
|
576
608
|
kind: "relative",
|
|
577
609
|
minutes: t.minutes
|
|
578
610
|
}),
|
|
@@ -580,17 +612,17 @@ function Be({ value: e, onChange: t, allowAll: n = !0, className: r, align: i =
|
|
|
580
612
|
kind: "relative",
|
|
581
613
|
minutes: t.minutes
|
|
582
614
|
})
|
|
583
|
-
}, t.minutes)), n && /* @__PURE__ */
|
|
615
|
+
}, t.minutes)), n && /* @__PURE__ */ A(Ue, {
|
|
584
616
|
label: "All retained",
|
|
585
617
|
selected: e.kind === "all",
|
|
586
618
|
onSelect: () => m({ kind: "all" })
|
|
587
619
|
})]
|
|
588
|
-
}), /* @__PURE__ */
|
|
620
|
+
}), /* @__PURE__ */ j("form", {
|
|
589
621
|
className: "la:flex la:w-[22rem] la:flex-col",
|
|
590
622
|
"aria-label": "Custom range",
|
|
591
623
|
onSubmit: (e) => {
|
|
592
624
|
e.preventDefault();
|
|
593
|
-
let t =
|
|
625
|
+
let t = Ge(c);
|
|
594
626
|
if (!t) {
|
|
595
627
|
p(!0);
|
|
596
628
|
return;
|
|
@@ -598,7 +630,7 @@ function Be({ value: e, onChange: t, allowAll: n = !0, className: r, align: i =
|
|
|
598
630
|
p(!1), m(t);
|
|
599
631
|
},
|
|
600
632
|
children: [
|
|
601
|
-
/* @__PURE__ */
|
|
633
|
+
/* @__PURE__ */ A(De, {
|
|
602
634
|
mode: "range",
|
|
603
635
|
numberOfMonths: 1,
|
|
604
636
|
defaultMonth: c.dates?.to ?? c.dates?.from,
|
|
@@ -609,12 +641,12 @@ function Be({ value: e, onChange: t, allowAll: n = !0, className: r, align: i =
|
|
|
609
641
|
})),
|
|
610
642
|
disabled: { after: /* @__PURE__ */ new Date() }
|
|
611
643
|
}),
|
|
612
|
-
/* @__PURE__ */
|
|
644
|
+
/* @__PURE__ */ j("div", {
|
|
613
645
|
className: "la:flex la:items-end la:gap-2 la:border-t la:px-3 la:py-3",
|
|
614
646
|
children: [
|
|
615
|
-
/* @__PURE__ */
|
|
647
|
+
/* @__PURE__ */ j("label", {
|
|
616
648
|
className: "la:grid la:gap-1 la:text-xs la:text-muted-foreground",
|
|
617
|
-
children: ["From", /* @__PURE__ */
|
|
649
|
+
children: ["From", /* @__PURE__ */ A(H, {
|
|
618
650
|
type: "time",
|
|
619
651
|
name: "from",
|
|
620
652
|
required: !0,
|
|
@@ -627,9 +659,9 @@ function Be({ value: e, onChange: t, allowAll: n = !0, className: r, align: i =
|
|
|
627
659
|
"aria-invalid": d || void 0
|
|
628
660
|
})]
|
|
629
661
|
}),
|
|
630
|
-
/* @__PURE__ */
|
|
662
|
+
/* @__PURE__ */ j("label", {
|
|
631
663
|
className: "la:grid la:gap-1 la:text-xs la:text-muted-foreground",
|
|
632
|
-
children: ["To", /* @__PURE__ */
|
|
664
|
+
children: ["To", /* @__PURE__ */ A(H, {
|
|
633
665
|
type: "time",
|
|
634
666
|
name: "to",
|
|
635
667
|
required: !0,
|
|
@@ -642,7 +674,7 @@ function Be({ value: e, onChange: t, allowAll: n = !0, className: r, align: i =
|
|
|
642
674
|
"aria-invalid": d || void 0
|
|
643
675
|
})]
|
|
644
676
|
}),
|
|
645
|
-
/* @__PURE__ */
|
|
677
|
+
/* @__PURE__ */ A(V, {
|
|
646
678
|
type: "submit",
|
|
647
679
|
variant: "outline",
|
|
648
680
|
size: "sm",
|
|
@@ -652,7 +684,7 @@ function Be({ value: e, onChange: t, allowAll: n = !0, className: r, align: i =
|
|
|
652
684
|
})
|
|
653
685
|
]
|
|
654
686
|
}),
|
|
655
|
-
d && /* @__PURE__ */
|
|
687
|
+
d && /* @__PURE__ */ A("p", {
|
|
656
688
|
className: "la:px-3 la:pb-3 la:text-xs la:text-danger",
|
|
657
689
|
role: "alert",
|
|
658
690
|
children: "From must be before To."
|
|
@@ -662,8 +694,8 @@ function Be({ value: e, onChange: t, allowAll: n = !0, className: r, align: i =
|
|
|
662
694
|
})]
|
|
663
695
|
});
|
|
664
696
|
}
|
|
665
|
-
function
|
|
666
|
-
return /* @__PURE__ */
|
|
697
|
+
function Ue({ label: e, selected: t, onSelect: n }) {
|
|
698
|
+
return /* @__PURE__ */ A(V, {
|
|
667
699
|
type: "button",
|
|
668
700
|
variant: t ? "secondary" : "ghost",
|
|
669
701
|
size: "sm",
|
|
@@ -673,167 +705,216 @@ function Ve({ label: e, selected: t, onSelect: n }) {
|
|
|
673
705
|
children: e
|
|
674
706
|
});
|
|
675
707
|
}
|
|
676
|
-
function
|
|
677
|
-
let t = Date.now(), n =
|
|
708
|
+
function We(e) {
|
|
709
|
+
let t = Date.now(), n = Re(e, t), r = new Date(n.fromMs ?? t - 36e5), i = new Date(n.toMs ?? t);
|
|
678
710
|
return {
|
|
679
711
|
dates: {
|
|
680
|
-
from:
|
|
681
|
-
to:
|
|
712
|
+
from: Ke(r),
|
|
713
|
+
to: Ke(i)
|
|
682
714
|
},
|
|
683
|
-
fromTime:
|
|
684
|
-
toTime:
|
|
715
|
+
fromTime: qe(r),
|
|
716
|
+
toTime: qe(i)
|
|
685
717
|
};
|
|
686
718
|
}
|
|
687
|
-
function
|
|
719
|
+
function Ge(e) {
|
|
688
720
|
let t = e.dates?.from, n = e.dates?.to ?? t;
|
|
689
721
|
if (!t || !n) return null;
|
|
690
|
-
let r =
|
|
722
|
+
let r = Je(t, e.fromTime), i = Je(n, e.toTime);
|
|
691
723
|
return Number.isFinite(r) && Number.isFinite(i) && r < i ? {
|
|
692
724
|
kind: "absolute",
|
|
693
725
|
fromMs: r,
|
|
694
726
|
toMs: i
|
|
695
727
|
} : null;
|
|
696
728
|
}
|
|
697
|
-
function
|
|
729
|
+
function Ke(e) {
|
|
698
730
|
return new Date(e.getFullYear(), e.getMonth(), e.getDate());
|
|
699
731
|
}
|
|
700
|
-
function
|
|
732
|
+
function qe(e) {
|
|
701
733
|
return `${String(e.getHours()).padStart(2, "0")}:${String(e.getMinutes()).padStart(2, "0")}`;
|
|
702
734
|
}
|
|
703
|
-
function
|
|
735
|
+
function Je(e, t) {
|
|
704
736
|
let [n, r] = t.split(":").map(Number);
|
|
705
737
|
return new Date(e.getFullYear(), e.getMonth(), e.getDate(), n ?? 0, r ?? 0).getTime();
|
|
706
738
|
}
|
|
707
739
|
//#endregion
|
|
708
740
|
//#region src/components/ui/badge.tsx
|
|
709
|
-
var
|
|
741
|
+
var Ye = N("la:inline-flex la:items-center la:justify-center la:gap-1.5 la:rounded-md la:border la:px-2 la:py-0.5 la:text-xs la:font-medium la:whitespace-nowrap", {
|
|
710
742
|
variants: { variant: {
|
|
711
743
|
default: "la:border-transparent la:bg-muted la:text-muted-foreground",
|
|
712
744
|
outline: "la:border-border la:text-muted-foreground"
|
|
713
745
|
} },
|
|
714
746
|
defaultVariants: { variant: "default" }
|
|
715
747
|
});
|
|
716
|
-
function
|
|
717
|
-
return /* @__PURE__ */
|
|
748
|
+
function W({ className: e, variant: t, ...n }) {
|
|
749
|
+
return /* @__PURE__ */ A("span", {
|
|
718
750
|
"data-slot": "badge",
|
|
719
|
-
className:
|
|
751
|
+
className: z(Ye({ variant: t }), e),
|
|
720
752
|
...n
|
|
721
753
|
});
|
|
722
754
|
}
|
|
723
755
|
//#endregion
|
|
756
|
+
//#region src/components/ui/drawer.tsx
|
|
757
|
+
function Xe({ ...e }) {
|
|
758
|
+
return /* @__PURE__ */ A(L.Root, {
|
|
759
|
+
"data-slot": "drawer",
|
|
760
|
+
...e
|
|
761
|
+
});
|
|
762
|
+
}
|
|
763
|
+
function Ze({ ...e }) {
|
|
764
|
+
return /* @__PURE__ */ A(L.Trigger, {
|
|
765
|
+
"data-slot": "drawer-trigger",
|
|
766
|
+
...e
|
|
767
|
+
});
|
|
768
|
+
}
|
|
769
|
+
function Qe({ ...e }) {
|
|
770
|
+
return /* @__PURE__ */ A(L.Portal, {
|
|
771
|
+
"data-slot": "drawer-portal",
|
|
772
|
+
...e
|
|
773
|
+
});
|
|
774
|
+
}
|
|
775
|
+
function $e({ ...e }) {
|
|
776
|
+
return /* @__PURE__ */ A(L.Close, {
|
|
777
|
+
"data-slot": "drawer-close",
|
|
778
|
+
...e
|
|
779
|
+
});
|
|
780
|
+
}
|
|
781
|
+
function et({ className: e, ...t }) {
|
|
782
|
+
return /* @__PURE__ */ A(L.Overlay, {
|
|
783
|
+
"data-slot": "drawer-overlay",
|
|
784
|
+
className: z("la:fixed la:inset-0 la:z-50 la:bg-black/50 la:data-[state=closed]:animate-out la:data-[state=closed]:fade-out-0 la:data-[state=open]:animate-in la:data-[state=open]:fade-in-0", e),
|
|
785
|
+
...t
|
|
786
|
+
});
|
|
787
|
+
}
|
|
788
|
+
function tt({ className: e, children: t, container: n, ...r }) {
|
|
789
|
+
return /* @__PURE__ */ j(Qe, {
|
|
790
|
+
container: n,
|
|
791
|
+
children: [/* @__PURE__ */ A(et, {}), /* @__PURE__ */ j(L.Content, {
|
|
792
|
+
"data-slot": "drawer-content",
|
|
793
|
+
className: z("la-observer la:group/drawer-content la:fixed la:z-50 la:flex la:h-auto la:flex-col la:bg-background", "la:data-[vaul-drawer-direction=top]:inset-x-0 la:data-[vaul-drawer-direction=top]:top-0 la:data-[vaul-drawer-direction=top]:mb-24 la:data-[vaul-drawer-direction=top]:max-h-[80vh] la:data-[vaul-drawer-direction=top]:rounded-b-lg la:data-[vaul-drawer-direction=top]:border-b", "la:data-[vaul-drawer-direction=bottom]:inset-x-0 la:data-[vaul-drawer-direction=bottom]:bottom-0 la:data-[vaul-drawer-direction=bottom]:mt-24 la:data-[vaul-drawer-direction=bottom]:max-h-[80vh] la:data-[vaul-drawer-direction=bottom]:rounded-t-lg la:data-[vaul-drawer-direction=bottom]:border-t", "la:data-[vaul-drawer-direction=right]:inset-y-0 la:data-[vaul-drawer-direction=right]:right-0 la:data-[vaul-drawer-direction=right]:w-3/4 la:data-[vaul-drawer-direction=right]:border-l la:data-[vaul-drawer-direction=right]:sm:max-w-sm", "la:data-[vaul-drawer-direction=left]:inset-y-0 la:data-[vaul-drawer-direction=left]:left-0 la:data-[vaul-drawer-direction=left]:w-3/4 la:data-[vaul-drawer-direction=left]:border-r la:data-[vaul-drawer-direction=left]:sm:max-w-sm", e),
|
|
794
|
+
...r,
|
|
795
|
+
children: [/* @__PURE__ */ A("div", { className: "la:mx-auto la:mt-4 la:hidden la:h-2 la:w-[100px] la:shrink-0 la:rounded-full la:bg-muted la:group-data-[vaul-drawer-direction=bottom]/drawer-content:block" }), t]
|
|
796
|
+
})]
|
|
797
|
+
});
|
|
798
|
+
}
|
|
799
|
+
function nt({ className: e, ...t }) {
|
|
800
|
+
return /* @__PURE__ */ A("div", {
|
|
801
|
+
"data-slot": "drawer-header",
|
|
802
|
+
className: z("la:flex la:flex-col la:gap-0.5 la:p-4 la:group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center la:group-data-[vaul-drawer-direction=top]/drawer-content:text-center la:md:gap-1.5 la:md:text-left", e),
|
|
803
|
+
...t
|
|
804
|
+
});
|
|
805
|
+
}
|
|
806
|
+
function rt({ className: e, ...t }) {
|
|
807
|
+
return /* @__PURE__ */ A("div", {
|
|
808
|
+
"data-slot": "drawer-footer",
|
|
809
|
+
className: z("la:mt-auto la:flex la:flex-col la:gap-2 la:p-4", e),
|
|
810
|
+
...t
|
|
811
|
+
});
|
|
812
|
+
}
|
|
813
|
+
function it({ className: e, ...t }) {
|
|
814
|
+
return /* @__PURE__ */ A(L.Title, {
|
|
815
|
+
"data-slot": "drawer-title",
|
|
816
|
+
className: z("la:font-semibold la:text-foreground", e),
|
|
817
|
+
...t
|
|
818
|
+
});
|
|
819
|
+
}
|
|
820
|
+
function at({ className: e, ...t }) {
|
|
821
|
+
return /* @__PURE__ */ A(L.Description, {
|
|
822
|
+
"data-slot": "drawer-description",
|
|
823
|
+
className: z("la:text-sm la:text-muted-foreground", e),
|
|
824
|
+
...t
|
|
825
|
+
});
|
|
826
|
+
}
|
|
827
|
+
//#endregion
|
|
724
828
|
//#region src/components/ui/native-select.tsx
|
|
725
|
-
function
|
|
726
|
-
return /* @__PURE__ */
|
|
829
|
+
function ot({ className: e, size: t = "default", ...n }) {
|
|
830
|
+
return /* @__PURE__ */ j("div", {
|
|
727
831
|
className: "la:group/native-select la:relative la:w-fit la:has-[select:disabled]:opacity-50",
|
|
728
832
|
"data-slot": "native-select-wrapper",
|
|
729
|
-
children: [/* @__PURE__ */
|
|
833
|
+
children: [/* @__PURE__ */ A("select", {
|
|
730
834
|
"data-slot": "native-select",
|
|
731
835
|
"data-size": t,
|
|
732
|
-
className:
|
|
836
|
+
className: z("la:h-9 la:w-full la:min-w-0 la:appearance-none la:rounded-md la:border la:border-input la:bg-transparent la:px-3 la:py-2 la:pr-9 la:text-sm la:shadow-xs la:outline-none la:transition-[color,box-shadow] la:selection:bg-primary la:selection:text-primary-foreground la:disabled:pointer-events-none la:disabled:cursor-not-allowed la:data-[size=sm]:h-8 la:data-[size=sm]:py-1 la:focus-visible:border-ring la:focus-visible:ring-[3px] la:focus-visible:ring-ring/50 la:aria-invalid:border-destructive la:aria-invalid:ring-destructive/20 la:dark:bg-input/30 la:dark:hover:bg-input/50 la:dark:aria-invalid:ring-destructive/40", e),
|
|
733
837
|
...n
|
|
734
|
-
}), /* @__PURE__ */
|
|
838
|
+
}), /* @__PURE__ */ A(p, {
|
|
735
839
|
className: "la:pointer-events-none la:absolute la:top-1/2 la:right-3.5 la:size-4 la:-translate-y-1/2 la:text-muted-foreground la:opacity-50 la:select-none",
|
|
736
840
|
"aria-hidden": "true",
|
|
737
841
|
"data-slot": "native-select-icon"
|
|
738
842
|
})]
|
|
739
843
|
});
|
|
740
844
|
}
|
|
741
|
-
function
|
|
742
|
-
return /* @__PURE__ */
|
|
845
|
+
function G({ className: e, ...t }) {
|
|
846
|
+
return /* @__PURE__ */ A("option", {
|
|
743
847
|
"data-slot": "native-select-option",
|
|
744
|
-
className:
|
|
848
|
+
className: z("la:bg-[Canvas] la:text-[CanvasText]", e),
|
|
745
849
|
...t
|
|
746
850
|
});
|
|
747
851
|
}
|
|
748
852
|
//#endregion
|
|
749
|
-
//#region src/components/ui/sheet.tsx
|
|
750
|
-
var Ye = L.Root, Xe = L.Title, Ze = L.Description;
|
|
751
|
-
function Qe({ className: e, children: t, container: n, ...r }) {
|
|
752
|
-
return /* @__PURE__ */ M(L.Portal, {
|
|
753
|
-
container: n,
|
|
754
|
-
children: [/* @__PURE__ */ j(L.Overlay, { className: "la-sheet-overlay" }), /* @__PURE__ */ M(L.Content, {
|
|
755
|
-
"data-slot": "sheet-content",
|
|
756
|
-
className: R("la-observer la-sheet", e),
|
|
757
|
-
...r,
|
|
758
|
-
children: [t, /* @__PURE__ */ j(L.Close, {
|
|
759
|
-
asChild: !0,
|
|
760
|
-
children: /* @__PURE__ */ j(B, {
|
|
761
|
-
className: "la-sheet-close",
|
|
762
|
-
variant: "ghost",
|
|
763
|
-
size: "icon",
|
|
764
|
-
"aria-label": "Close",
|
|
765
|
-
children: /* @__PURE__ */ j(E, { "aria-hidden": "true" })
|
|
766
|
-
})
|
|
767
|
-
})]
|
|
768
|
-
})]
|
|
769
|
-
});
|
|
770
|
-
}
|
|
771
|
-
//#endregion
|
|
772
853
|
//#region src/components/ui/table.tsx
|
|
773
|
-
function
|
|
774
|
-
return /* @__PURE__ */
|
|
854
|
+
function K({ className: e, containerProps: t, ...n }) {
|
|
855
|
+
return /* @__PURE__ */ A("div", {
|
|
775
856
|
...t,
|
|
776
857
|
"data-slot": "table-container",
|
|
777
|
-
className:
|
|
778
|
-
children: /* @__PURE__ */
|
|
858
|
+
className: z("la:relative la:w-full la:overflow-x-auto", t?.className),
|
|
859
|
+
children: /* @__PURE__ */ A("table", {
|
|
779
860
|
"data-slot": "table",
|
|
780
|
-
className:
|
|
861
|
+
className: z("la:w-full la:caption-bottom la:text-sm la:tabular-nums", e),
|
|
781
862
|
...n
|
|
782
863
|
})
|
|
783
864
|
});
|
|
784
865
|
}
|
|
785
|
-
function
|
|
786
|
-
return /* @__PURE__ */
|
|
866
|
+
function q({ className: e, ...t }) {
|
|
867
|
+
return /* @__PURE__ */ A("thead", {
|
|
787
868
|
"data-slot": "table-header",
|
|
788
|
-
className:
|
|
869
|
+
className: z("la:[&_tr]:border-b", e),
|
|
789
870
|
...t
|
|
790
871
|
});
|
|
791
872
|
}
|
|
792
|
-
function
|
|
793
|
-
return /* @__PURE__ */
|
|
873
|
+
function J({ className: e, ...t }) {
|
|
874
|
+
return /* @__PURE__ */ A("tbody", {
|
|
794
875
|
"data-slot": "table-body",
|
|
795
|
-
className:
|
|
876
|
+
className: z("la:[&_tr:last-child]:border-0", e),
|
|
796
877
|
...t
|
|
797
878
|
});
|
|
798
879
|
}
|
|
799
|
-
function
|
|
800
|
-
return /* @__PURE__ */
|
|
880
|
+
function st({ className: e, ...t }) {
|
|
881
|
+
return /* @__PURE__ */ A("tfoot", {
|
|
801
882
|
"data-slot": "table-footer",
|
|
802
|
-
className:
|
|
883
|
+
className: z("la:bg-muted/50 la:border-t la:font-medium la:[&>tr]:last:border-b-0", e),
|
|
803
884
|
...t
|
|
804
885
|
});
|
|
805
886
|
}
|
|
806
|
-
function
|
|
807
|
-
return /* @__PURE__ */
|
|
887
|
+
function Y({ className: e, ...t }) {
|
|
888
|
+
return /* @__PURE__ */ A("tr", {
|
|
808
889
|
"data-slot": "table-row",
|
|
809
|
-
className:
|
|
890
|
+
className: z("la:border-b la:transition-colors la:duration-150 la:hover:bg-muted/60 la:data-[state=selected]:bg-muted", e),
|
|
810
891
|
...t
|
|
811
892
|
});
|
|
812
893
|
}
|
|
813
|
-
function
|
|
814
|
-
return /* @__PURE__ */
|
|
894
|
+
function X({ className: e, ...t }) {
|
|
895
|
+
return /* @__PURE__ */ A("th", {
|
|
815
896
|
"data-slot": "table-head",
|
|
816
|
-
className:
|
|
897
|
+
className: z("la:h-10 la:whitespace-nowrap la:px-3 la:text-left la:align-middle la:text-xs la:font-medium la:text-muted-foreground la:[&:has([role=checkbox])]:pr-0 la:[&>[role=checkbox]]:translate-y-[2px]", e),
|
|
817
898
|
...t
|
|
818
899
|
});
|
|
819
900
|
}
|
|
820
|
-
function
|
|
821
|
-
return /* @__PURE__ */
|
|
901
|
+
function Z({ className: e, ...t }) {
|
|
902
|
+
return /* @__PURE__ */ A("td", {
|
|
822
903
|
"data-slot": "table-cell",
|
|
823
|
-
className:
|
|
904
|
+
className: z("la:whitespace-nowrap la:px-3 la:py-2.5 la:align-middle la:[&:has([role=checkbox])]:pr-0 la:[&>[role=checkbox]]:translate-y-[2px]", e),
|
|
824
905
|
...t
|
|
825
906
|
});
|
|
826
907
|
}
|
|
827
|
-
function
|
|
828
|
-
return /* @__PURE__ */
|
|
908
|
+
function ct({ className: e, ...t }) {
|
|
909
|
+
return /* @__PURE__ */ A("caption", {
|
|
829
910
|
"data-slot": "table-caption",
|
|
830
|
-
className:
|
|
911
|
+
className: z("la:text-muted-foreground la:mt-4 la:text-sm", e),
|
|
831
912
|
...t
|
|
832
913
|
});
|
|
833
914
|
}
|
|
834
915
|
//#endregion
|
|
835
916
|
//#region src/observer-hooks.ts
|
|
836
|
-
function
|
|
917
|
+
function lt(e) {
|
|
837
918
|
let [n, r] = a(0), [i, o] = a(), [s, c] = a(!0), [l, u] = a(!1);
|
|
838
919
|
return t(() => {
|
|
839
920
|
let t = new AbortController(), n, r = 1e3;
|
|
@@ -866,7 +947,7 @@ function tt(e) {
|
|
|
866
947
|
retry: () => r((e) => e + 1)
|
|
867
948
|
};
|
|
868
949
|
}
|
|
869
|
-
function
|
|
950
|
+
function ut(e, n = !0) {
|
|
870
951
|
let [r, i] = a(), [o, s] = a(!1), [c, l] = a(0);
|
|
871
952
|
return t(() => i(void 0), [e]), t(() => {
|
|
872
953
|
if (!n) return;
|
|
@@ -875,7 +956,7 @@ function nt(e, n = !0) {
|
|
|
875
956
|
try {
|
|
876
957
|
if (!e.watchRequests) throw Error("Request traces unavailable");
|
|
877
958
|
if (await e.watchRequests((e) => {
|
|
878
|
-
r.signal.aborted || (t = e.resumeCursor, i((t) =>
|
|
959
|
+
r.signal.aborted || (t = e.resumeCursor, i((t) => dt(t, e)), s(!1), o = 1e3);
|
|
879
960
|
}, r.signal, t), !r.signal.aborted) throw Error("Request stream disconnected");
|
|
880
961
|
} catch {
|
|
881
962
|
r.signal.aborted || s(!0);
|
|
@@ -896,7 +977,7 @@ function nt(e, n = !0) {
|
|
|
896
977
|
retry: () => l((e) => e + 1)
|
|
897
978
|
};
|
|
898
979
|
}
|
|
899
|
-
function
|
|
980
|
+
function dt(e, t) {
|
|
900
981
|
let n = new Map((e?.epoch === t.epoch && !t.reset ? e.records : []).map((e) => [e.eventId ?? e.sequence, e]));
|
|
901
982
|
for (let e of t.records) n.set(e.eventId ?? e.sequence, e);
|
|
902
983
|
return {
|
|
@@ -905,7 +986,7 @@ function rt(e, t) {
|
|
|
905
986
|
records: [...n.values()].sort((e, t) => t.sequence - e.sequence).slice(0, t.capacity)
|
|
906
987
|
};
|
|
907
988
|
}
|
|
908
|
-
function
|
|
989
|
+
function ft(e, n, r, i = 1e4) {
|
|
909
990
|
let o = r ? JSON.stringify(n) : void 0, [s, c] = a(0), [l, u] = a(), [d, f] = a(!1), [p, m] = a(!1);
|
|
910
991
|
t(() => {
|
|
911
992
|
if (!o) return;
|
|
@@ -948,7 +1029,7 @@ function it(e, n, r, i = 1e4) {
|
|
|
948
1029
|
}
|
|
949
1030
|
//#endregion
|
|
950
1031
|
//#region src/request-history.ts
|
|
951
|
-
function
|
|
1032
|
+
function pt(e, n) {
|
|
952
1033
|
let [r, o] = a(), [s, c] = a(!1), [l, u] = a(!1), d = i(() => {});
|
|
953
1034
|
return t(() => {
|
|
954
1035
|
if (o(void 0), u(!1), c(!1), !n) return;
|
|
@@ -991,78 +1072,78 @@ function at(e, n) {
|
|
|
991
1072
|
}
|
|
992
1073
|
//#endregion
|
|
993
1074
|
//#region src/RequestObserver.tsx
|
|
994
|
-
function
|
|
995
|
-
let [l, u] = a(), [f, p] = a(
|
|
1075
|
+
function mt({ client: e, actor: n, timeRange: o, onTimeRangeChange: s, focus: c }) {
|
|
1076
|
+
let [l, u] = a(), [f, p] = a(Le), m = o ?? f, h = s ?? p, g = pt(e, r(() => l ? {
|
|
996
1077
|
...l,
|
|
997
1078
|
...n,
|
|
998
|
-
...l.requestId || l.connectionId ? {} :
|
|
1079
|
+
...l.requestId || l.connectionId ? {} : Re(m, Date.now())
|
|
999
1080
|
} : void 0, [
|
|
1000
1081
|
l,
|
|
1001
1082
|
n?.actorName,
|
|
1002
1083
|
n?.actorId,
|
|
1003
1084
|
m
|
|
1004
|
-
])), { page: _, failed: v, retry: y } =
|
|
1085
|
+
])), { page: _, failed: v, retry: y } = ut(e), [x, S] = a(), [C, w] = a(), [E, D] = a("waterfall"), O = i(null), M = i(null), N = n ? "h3" : "h1", P = l ? g.page : x ?? _, F = _ ?? g.page, I = (P?.records ?? []).filter((e) => !n || e.actorName === n.actorName && e.actorId === n.actorId);
|
|
1005
1086
|
return t(() => {
|
|
1006
|
-
|
|
1087
|
+
S(void 0), u(void 0);
|
|
1007
1088
|
}, [
|
|
1008
1089
|
e,
|
|
1009
1090
|
n?.actorName,
|
|
1010
1091
|
n?.actorId
|
|
1011
1092
|
]), t(() => {
|
|
1012
1093
|
c && u(c);
|
|
1013
|
-
}, [c]), t(() =>
|
|
1094
|
+
}, [c]), t(() => w(void 0), [
|
|
1014
1095
|
e,
|
|
1015
1096
|
_?.epoch,
|
|
1016
1097
|
l,
|
|
1017
1098
|
n?.actorName,
|
|
1018
1099
|
n?.actorId
|
|
1019
|
-
]), /* @__PURE__ */
|
|
1100
|
+
]), /* @__PURE__ */ j("section", {
|
|
1020
1101
|
ref: O,
|
|
1021
1102
|
className: "la-observer la-requests",
|
|
1022
1103
|
"aria-label": "Request observer",
|
|
1023
1104
|
children: [
|
|
1024
|
-
(l?.requestId || l?.connectionId) && /* @__PURE__ */
|
|
1105
|
+
(l?.requestId || l?.connectionId) && /* @__PURE__ */ j("p", { children: [
|
|
1025
1106
|
"Showing ",
|
|
1026
1107
|
l.requestId ? `request ${l.requestId}` : `connection ${l?.connectionId}`,
|
|
1027
1108
|
" ",
|
|
1028
|
-
/* @__PURE__ */
|
|
1109
|
+
/* @__PURE__ */ A(V, {
|
|
1029
1110
|
variant: "link",
|
|
1030
1111
|
onClick: () => u(void 0),
|
|
1031
1112
|
children: "Clear filter"
|
|
1032
1113
|
})
|
|
1033
1114
|
] }),
|
|
1034
|
-
/* @__PURE__ */
|
|
1115
|
+
/* @__PURE__ */ j("div", {
|
|
1035
1116
|
className: "la-observer-toolbar",
|
|
1036
|
-
children: [/* @__PURE__ */
|
|
1117
|
+
children: [/* @__PURE__ */ j("div", {
|
|
1037
1118
|
className: n ? "la:sr-only" : void 0,
|
|
1038
|
-
children: [/* @__PURE__ */
|
|
1039
|
-
}), /* @__PURE__ */
|
|
1119
|
+
children: [/* @__PURE__ */ A(N, { children: "Requests" }), /* @__PURE__ */ A("p", { children: n ? "Method calls and WebSocket events for this instance." : "Method calls and WebSocket events, with time spent waiting and processing." })]
|
|
1120
|
+
}), /* @__PURE__ */ j("div", {
|
|
1040
1121
|
className: "la-request-actions",
|
|
1041
1122
|
children: [
|
|
1042
|
-
/* @__PURE__ */
|
|
1123
|
+
/* @__PURE__ */ j("div", {
|
|
1043
1124
|
className: "request-view-toggle",
|
|
1044
1125
|
role: "group",
|
|
1045
1126
|
"aria-label": "Request view",
|
|
1046
|
-
children: [/* @__PURE__ */
|
|
1127
|
+
children: [/* @__PURE__ */ j(V, {
|
|
1047
1128
|
variant: E === "waterfall" ? "secondary" : "ghost",
|
|
1048
1129
|
"aria-pressed": E === "waterfall",
|
|
1049
1130
|
onClick: () => D("waterfall"),
|
|
1050
|
-
children: [/* @__PURE__ */
|
|
1051
|
-
}), /* @__PURE__ */
|
|
1131
|
+
children: [/* @__PURE__ */ A(d, { "aria-hidden": "true" }), "Waterfall"]
|
|
1132
|
+
}), /* @__PURE__ */ j(V, {
|
|
1052
1133
|
variant: E === "table" ? "secondary" : "ghost",
|
|
1053
1134
|
"aria-pressed": E === "table",
|
|
1054
1135
|
onClick: () => D("table"),
|
|
1055
|
-
children: [/* @__PURE__ */
|
|
1136
|
+
children: [/* @__PURE__ */ A(ee, { "aria-hidden": "true" }), "Table"]
|
|
1056
1137
|
})]
|
|
1057
1138
|
}),
|
|
1058
|
-
e.listRequests && /* @__PURE__ */
|
|
1139
|
+
e.listRequests && /* @__PURE__ */ j(k, { children: [/* @__PURE__ */ A(V, {
|
|
1059
1140
|
variant: l ? "outline" : "secondary",
|
|
1060
1141
|
"aria-pressed": !l,
|
|
1061
1142
|
onClick: () => {
|
|
1062
|
-
u(void 0),
|
|
1143
|
+
u(void 0), S(void 0);
|
|
1063
1144
|
},
|
|
1064
1145
|
children: "Live"
|
|
1065
|
-
}), /* @__PURE__ */
|
|
1146
|
+
}), /* @__PURE__ */ A(V, {
|
|
1066
1147
|
variant: l ? "secondary" : "outline",
|
|
1067
1148
|
"aria-pressed": !!l,
|
|
1068
1149
|
onClick: () => {
|
|
@@ -1070,20 +1151,20 @@ function ot({ client: e, actor: n, timeRange: o, onTimeRangeChange: s, focus: c
|
|
|
1070
1151
|
},
|
|
1071
1152
|
children: "History"
|
|
1072
1153
|
})] }),
|
|
1073
|
-
!l && /* @__PURE__ */
|
|
1154
|
+
!l && /* @__PURE__ */ j(k, { children: [/* @__PURE__ */ j(V, {
|
|
1074
1155
|
variant: "outline",
|
|
1075
1156
|
disabled: !P,
|
|
1076
|
-
onClick: () =>
|
|
1077
|
-
children: [
|
|
1078
|
-
}), v && /* @__PURE__ */
|
|
1157
|
+
onClick: () => S(x ? void 0 : _),
|
|
1158
|
+
children: [A(x ? te : b, { "aria-hidden": "true" }), x ? "Resume" : "Pause"]
|
|
1159
|
+
}), v && /* @__PURE__ */ j(V, {
|
|
1079
1160
|
variant: "outline",
|
|
1080
1161
|
onClick: y,
|
|
1081
|
-
children: [/* @__PURE__ */
|
|
1162
|
+
children: [/* @__PURE__ */ A(ne, { "aria-hidden": "true" }), "Retry"]
|
|
1082
1163
|
})] })
|
|
1083
1164
|
]
|
|
1084
1165
|
})]
|
|
1085
1166
|
}),
|
|
1086
|
-
l && /* @__PURE__ */
|
|
1167
|
+
l && /* @__PURE__ */ A(ht, {
|
|
1087
1168
|
query: l,
|
|
1088
1169
|
range: m,
|
|
1089
1170
|
onRangeChange: h,
|
|
@@ -1091,105 +1172,105 @@ function ot({ client: e, actor: n, timeRange: o, onTimeRangeChange: s, focus: c
|
|
|
1091
1172
|
onSearch: u,
|
|
1092
1173
|
scoped: !!n
|
|
1093
1174
|
}),
|
|
1094
|
-
l && g.failed && /* @__PURE__ */
|
|
1175
|
+
l && g.failed && /* @__PURE__ */ j("div", {
|
|
1095
1176
|
className: "la-observer-error",
|
|
1096
1177
|
role: "alert",
|
|
1097
1178
|
children: [
|
|
1098
1179
|
"Request history unavailable.",
|
|
1099
1180
|
" ",
|
|
1100
|
-
/* @__PURE__ */
|
|
1181
|
+
/* @__PURE__ */ A(V, {
|
|
1101
1182
|
variant: "outline",
|
|
1102
1183
|
onClick: g.retry,
|
|
1103
1184
|
children: "Retry history"
|
|
1104
1185
|
})
|
|
1105
1186
|
]
|
|
1106
1187
|
}),
|
|
1107
|
-
!l && v && /* @__PURE__ */
|
|
1188
|
+
!l && v && /* @__PURE__ */ j("div", {
|
|
1108
1189
|
className: "la-observer-error",
|
|
1109
1190
|
role: "alert",
|
|
1110
1191
|
children: ["Request stream disconnected. Reconnecting… ", _ ? "Showing the last received requests." : "Check your connection and runtime version."]
|
|
1111
1192
|
}),
|
|
1112
|
-
!!F?.dropped && /* @__PURE__ */
|
|
1193
|
+
!!F?.dropped && /* @__PURE__ */ j("div", {
|
|
1113
1194
|
className: "la-observer-error",
|
|
1114
1195
|
role: "alert",
|
|
1115
1196
|
children: [F.dropped.toLocaleString(), " request traces were not delivered. This history is incomplete."]
|
|
1116
1197
|
}),
|
|
1117
|
-
F?.persistenceFailed && /* @__PURE__ */
|
|
1198
|
+
F?.persistenceFailed && /* @__PURE__ */ A("div", {
|
|
1118
1199
|
className: "la-observer-error",
|
|
1119
1200
|
role: "alert",
|
|
1120
1201
|
children: "Some request events could not be saved. This history may be incomplete."
|
|
1121
1202
|
}),
|
|
1122
|
-
P?.reset && /* @__PURE__ */
|
|
1203
|
+
P?.reset && /* @__PURE__ */ A("div", {
|
|
1123
1204
|
className: "la-observer-error",
|
|
1124
1205
|
role: "alert",
|
|
1125
1206
|
children: "Some older events are no longer retained. Showing available history."
|
|
1126
1207
|
}),
|
|
1127
|
-
E === "waterfall" && I.length > 0 && /* @__PURE__ */
|
|
1208
|
+
E === "waterfall" && I.length > 0 && /* @__PURE__ */ A(Se, {
|
|
1128
1209
|
records: I,
|
|
1129
|
-
selected:
|
|
1210
|
+
selected: C,
|
|
1130
1211
|
onSelect: (e, t) => {
|
|
1131
|
-
|
|
1212
|
+
M.current = t, w(e);
|
|
1132
1213
|
}
|
|
1133
1214
|
}),
|
|
1134
|
-
/* @__PURE__ */
|
|
1215
|
+
/* @__PURE__ */ j("div", {
|
|
1135
1216
|
className: E === "table" || !I.length ? "la-observer-table-frame" : void 0,
|
|
1136
|
-
children: [E === "table" && /* @__PURE__ */
|
|
1217
|
+
children: [E === "table" && /* @__PURE__ */ j(K, {
|
|
1137
1218
|
"aria-label": l ? "Saved requests" : "Recent requests",
|
|
1138
1219
|
className: "la-request-table",
|
|
1139
|
-
children: [/* @__PURE__ */
|
|
1140
|
-
/* @__PURE__ */
|
|
1220
|
+
children: [/* @__PURE__ */ A(q, { children: /* @__PURE__ */ j(Y, { children: [
|
|
1221
|
+
/* @__PURE__ */ A(X, {
|
|
1141
1222
|
scope: "col",
|
|
1142
1223
|
children: "Time"
|
|
1143
1224
|
}),
|
|
1144
|
-
/* @__PURE__ */
|
|
1225
|
+
/* @__PURE__ */ A(X, {
|
|
1145
1226
|
scope: "col",
|
|
1146
1227
|
children: "Request"
|
|
1147
1228
|
}),
|
|
1148
|
-
/* @__PURE__ */
|
|
1229
|
+
/* @__PURE__ */ A(X, {
|
|
1149
1230
|
scope: "col",
|
|
1150
1231
|
children: "Instance"
|
|
1151
1232
|
}),
|
|
1152
|
-
/* @__PURE__ */
|
|
1233
|
+
/* @__PURE__ */ A(X, {
|
|
1153
1234
|
scope: "col",
|
|
1154
1235
|
children: "Transport"
|
|
1155
1236
|
}),
|
|
1156
|
-
/* @__PURE__ */
|
|
1237
|
+
/* @__PURE__ */ A(X, {
|
|
1157
1238
|
scope: "col",
|
|
1158
1239
|
children: "Outcome"
|
|
1159
1240
|
}),
|
|
1160
|
-
/* @__PURE__ */
|
|
1241
|
+
/* @__PURE__ */ A(X, {
|
|
1161
1242
|
scope: "col",
|
|
1162
1243
|
children: "Total"
|
|
1163
1244
|
}),
|
|
1164
|
-
/* @__PURE__ */
|
|
1245
|
+
/* @__PURE__ */ A(X, {
|
|
1165
1246
|
scope: "col",
|
|
1166
1247
|
children: "Queue wait"
|
|
1167
1248
|
}),
|
|
1168
|
-
/* @__PURE__ */
|
|
1249
|
+
/* @__PURE__ */ A(X, {
|
|
1169
1250
|
scope: "col",
|
|
1170
|
-
children: /* @__PURE__ */
|
|
1251
|
+
children: /* @__PURE__ */ A("span", {
|
|
1171
1252
|
className: "la:sr-only",
|
|
1172
1253
|
children: "Details"
|
|
1173
1254
|
})
|
|
1174
1255
|
})
|
|
1175
|
-
] }) }), /* @__PURE__ */
|
|
1256
|
+
] }) }), /* @__PURE__ */ A(J, { children: I.map((e) => /* @__PURE__ */ j(Y, {
|
|
1176
1257
|
className: "la-clickable-row",
|
|
1177
|
-
"data-state":
|
|
1258
|
+
"data-state": C === e ? "selected" : void 0,
|
|
1178
1259
|
onClick: (t) => {
|
|
1179
|
-
|
|
1260
|
+
M.current = t.currentTarget.querySelector("button"), w(e);
|
|
1180
1261
|
},
|
|
1181
1262
|
children: [
|
|
1182
|
-
/* @__PURE__ */
|
|
1263
|
+
/* @__PURE__ */ A(Z, { children: /* @__PURE__ */ A("time", {
|
|
1183
1264
|
dateTime: new Date(e.startedAtMs).toISOString(),
|
|
1184
1265
|
title: new Date(e.startedAtMs).toLocaleString(),
|
|
1185
1266
|
children: l ? new Date(e.startedAtMs).toLocaleString([], { hour12: !1 }) : new Date(e.startedAtMs).toLocaleTimeString([], { hour12: !1 })
|
|
1186
1267
|
}) }),
|
|
1187
|
-
/* @__PURE__ */
|
|
1268
|
+
/* @__PURE__ */ A(Z, { children: /* @__PURE__ */ A("span", {
|
|
1188
1269
|
className: "la-request-operation",
|
|
1189
1270
|
title: e.operation,
|
|
1190
1271
|
children: e.operation
|
|
1191
1272
|
}) }),
|
|
1192
|
-
/* @__PURE__ */
|
|
1273
|
+
/* @__PURE__ */ A(Z, { children: /* @__PURE__ */ j("span", {
|
|
1193
1274
|
className: "la-request-actor",
|
|
1194
1275
|
title: `${e.actorName} / ${e.actorId}`,
|
|
1195
1276
|
children: [
|
|
@@ -1198,18 +1279,18 @@ function ot({ client: e, actor: n, timeRange: o, onTimeRangeChange: s, focus: c
|
|
|
1198
1279
|
e.actorId
|
|
1199
1280
|
]
|
|
1200
1281
|
}) }),
|
|
1201
|
-
/* @__PURE__ */
|
|
1202
|
-
/* @__PURE__ */
|
|
1282
|
+
/* @__PURE__ */ A(Z, { children: e.kind === "method" ? "Method" : "WebSocket" }),
|
|
1283
|
+
/* @__PURE__ */ A(Z, { children: /* @__PURE__ */ A(W, {
|
|
1203
1284
|
variant: "outline",
|
|
1204
1285
|
className: `la-request-outcome-${e.outcome}`,
|
|
1205
1286
|
children: e.outcome[0].toUpperCase() + e.outcome.slice(1)
|
|
1206
1287
|
}) }),
|
|
1207
|
-
/* @__PURE__ */
|
|
1208
|
-
/* @__PURE__ */
|
|
1288
|
+
/* @__PURE__ */ A(Z, { children: B(e.durationMs) }),
|
|
1289
|
+
/* @__PURE__ */ A(Z, { children: e.queueWaitMs === null ? /* @__PURE__ */ A("span", {
|
|
1209
1290
|
title: "Request did not begin processing",
|
|
1210
1291
|
children: "—"
|
|
1211
|
-
}) :
|
|
1212
|
-
/* @__PURE__ */
|
|
1292
|
+
}) : B(e.queueWaitMs) }),
|
|
1293
|
+
/* @__PURE__ */ A(Z, { children: /* @__PURE__ */ A(V, {
|
|
1213
1294
|
variant: "ghost",
|
|
1214
1295
|
size: "sm",
|
|
1215
1296
|
"aria-label": `Inspect ${e.operation} request`,
|
|
@@ -1218,60 +1299,78 @@ function ot({ client: e, actor: n, timeRange: o, onTimeRangeChange: s, focus: c
|
|
|
1218
1299
|
}) })
|
|
1219
1300
|
]
|
|
1220
1301
|
}, e.eventId ?? `${P.epoch}-${e.sequence}`)) })]
|
|
1221
|
-
}), !I.length && /* @__PURE__ */
|
|
1302
|
+
}), !I.length && /* @__PURE__ */ j("div", {
|
|
1222
1303
|
className: "la-request-empty",
|
|
1223
1304
|
role: "status",
|
|
1224
|
-
children: [/* @__PURE__ */
|
|
1305
|
+
children: [/* @__PURE__ */ A("strong", { children: l ? g.loading ? "Loading history…" : g.failed ? "History unavailable" : "No saved requests in this range" : P ? "No requests yet" : v ? "Requests unavailable" : "Connecting to requests…" }), /* @__PURE__ */ A("p", { children: l ? "Try a wider time range or fewer filters. Local history retains the latest 10,000 events." : "Call an actor method or send a WebSocket message to see its timings." })]
|
|
1225
1306
|
})]
|
|
1226
1307
|
}),
|
|
1227
|
-
l && P?.nextCursor && /* @__PURE__ */
|
|
1308
|
+
l && P?.nextCursor && /* @__PURE__ */ A(V, {
|
|
1228
1309
|
className: "la-request-load-older",
|
|
1229
1310
|
variant: "outline",
|
|
1230
1311
|
disabled: g.loading,
|
|
1231
1312
|
onClick: g.loadOlder,
|
|
1232
1313
|
children: g.loading ? "Loading…" : "Load older"
|
|
1233
1314
|
}),
|
|
1234
|
-
/* @__PURE__ */
|
|
1315
|
+
/* @__PURE__ */ j("div", {
|
|
1235
1316
|
className: "la-observer-footnote",
|
|
1236
|
-
children: [/* @__PURE__ */
|
|
1317
|
+
children: [/* @__PURE__ */ j("span", {
|
|
1237
1318
|
className: "la-observer-refresh-status",
|
|
1238
|
-
children: [!l && /* @__PURE__ */
|
|
1239
|
-
}), /* @__PURE__ */
|
|
1319
|
+
children: [!l && /* @__PURE__ */ A("span", { className: `la-observer-dot ${v ? "la-observer-dot-unknown" : "la-observer-dot-live"}` }), l ? "Saved history" : x ? "Display paused · collection continues" : v ? "Reconnecting…" : _ ? "Live updates" : "Connecting…"]
|
|
1320
|
+
}), /* @__PURE__ */ A("span", { children: l ? `${I.length.toLocaleString()} saved requests shown` : n ? `${I.length} matching requests from the latest ${P?.capacity ?? 500} on this control plane.` : `Latest ${P?.capacity ?? 500} requests on this control plane.` })]
|
|
1240
1321
|
}),
|
|
1241
|
-
!l && !!P?.evicted && /* @__PURE__ */
|
|
1322
|
+
!l && !!P?.evicted && /* @__PURE__ */ j("p", {
|
|
1242
1323
|
className: "la-request-note",
|
|
1243
1324
|
children: [P.evicted.toLocaleString(), " older records have left this history window."]
|
|
1244
1325
|
}),
|
|
1245
|
-
/* @__PURE__ */
|
|
1326
|
+
/* @__PURE__ */ A("p", {
|
|
1246
1327
|
className: "la-request-note",
|
|
1247
1328
|
children: "Total includes queue wait, actor processing, and persistence. Queue wait includes the WebSocket message queue. Timings exclude the caller’s network round trip."
|
|
1248
1329
|
}),
|
|
1249
|
-
/* @__PURE__ */
|
|
1250
|
-
|
|
1330
|
+
/* @__PURE__ */ A(Xe, {
|
|
1331
|
+
direction: "right",
|
|
1332
|
+
autoFocus: !0,
|
|
1333
|
+
open: !!C,
|
|
1251
1334
|
onOpenChange: (e) => {
|
|
1252
|
-
e ||
|
|
1335
|
+
e || w(void 0);
|
|
1253
1336
|
},
|
|
1254
|
-
children: /* @__PURE__ */
|
|
1337
|
+
children: /* @__PURE__ */ j(tt, {
|
|
1255
1338
|
container: O.current,
|
|
1339
|
+
className: "la:data-[vaul-drawer-direction=right]:w-full la:data-[vaul-drawer-direction=right]:sm:max-w-[480px]",
|
|
1256
1340
|
onCloseAutoFocus: (e) => {
|
|
1257
|
-
e.preventDefault(),
|
|
1341
|
+
e.preventDefault(), M.current?.focus();
|
|
1258
1342
|
},
|
|
1259
|
-
children: [
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1343
|
+
children: [/* @__PURE__ */ j(nt, {
|
|
1344
|
+
className: "la:relative la:shrink-0 la:gap-2 la:p-6 la:pr-16",
|
|
1345
|
+
children: [
|
|
1346
|
+
/* @__PURE__ */ A(it, { children: "Request details" }),
|
|
1347
|
+
/* @__PURE__ */ A(at, { children: "Full identifiers and timings for this request." }),
|
|
1348
|
+
/* @__PURE__ */ A($e, {
|
|
1349
|
+
asChild: !0,
|
|
1350
|
+
children: /* @__PURE__ */ A(V, {
|
|
1351
|
+
className: "la:absolute la:top-4 la:right-4",
|
|
1352
|
+
variant: "ghost",
|
|
1353
|
+
size: "icon",
|
|
1354
|
+
"aria-label": "Close",
|
|
1355
|
+
children: /* @__PURE__ */ A(T, { "aria-hidden": "true" })
|
|
1356
|
+
})
|
|
1357
|
+
})
|
|
1358
|
+
]
|
|
1359
|
+
}), /* @__PURE__ */ A("div", {
|
|
1360
|
+
className: "la:min-h-0 la:flex-1 la:overflow-y-auto la:px-6 la:pb-6",
|
|
1361
|
+
children: C && /* @__PURE__ */ A(gt, {
|
|
1362
|
+
record: C,
|
|
1363
|
+
timing: ve(I).calls.find((e) => e.record === C)
|
|
1265
1364
|
})
|
|
1266
|
-
]
|
|
1365
|
+
})]
|
|
1267
1366
|
})
|
|
1268
1367
|
})
|
|
1269
1368
|
]
|
|
1270
1369
|
});
|
|
1271
1370
|
}
|
|
1272
|
-
function
|
|
1371
|
+
function ht({ query: e, range: t, onRangeChange: r, loading: i, onSearch: a, scoped: o }) {
|
|
1273
1372
|
let s = n(), c = n();
|
|
1274
|
-
return /* @__PURE__ */
|
|
1373
|
+
return /* @__PURE__ */ j("form", {
|
|
1275
1374
|
className: "la-request-history-filters",
|
|
1276
1375
|
onSubmit: (e) => {
|
|
1277
1376
|
e.preventDefault();
|
|
@@ -1282,20 +1381,20 @@ function st({ query: e, range: t, onRangeChange: r, loading: i, onSearch: a, sco
|
|
|
1282
1381
|
});
|
|
1283
1382
|
},
|
|
1284
1383
|
children: [
|
|
1285
|
-
/* @__PURE__ */
|
|
1384
|
+
/* @__PURE__ */ j("div", {
|
|
1286
1385
|
className: "la-request-history-range",
|
|
1287
|
-
children: [/* @__PURE__ */
|
|
1386
|
+
children: [/* @__PURE__ */ A("span", { children: "Time range" }), /* @__PURE__ */ A(He, {
|
|
1288
1387
|
value: t,
|
|
1289
1388
|
onChange: r,
|
|
1290
1389
|
align: "start"
|
|
1291
1390
|
})]
|
|
1292
1391
|
}),
|
|
1293
|
-
!o && /* @__PURE__ */
|
|
1392
|
+
!o && /* @__PURE__ */ j("div", {
|
|
1294
1393
|
className: "la-request-history-field",
|
|
1295
|
-
children: [/* @__PURE__ */
|
|
1394
|
+
children: [/* @__PURE__ */ A("label", {
|
|
1296
1395
|
htmlFor: s,
|
|
1297
1396
|
children: "Actor ID"
|
|
1298
|
-
}), /* @__PURE__ */
|
|
1397
|
+
}), /* @__PURE__ */ A(H, {
|
|
1299
1398
|
id: s,
|
|
1300
1399
|
name: "actorId",
|
|
1301
1400
|
placeholder: "All actors",
|
|
@@ -1303,17 +1402,17 @@ function st({ query: e, range: t, onRangeChange: r, loading: i, onSearch: a, sco
|
|
|
1303
1402
|
defaultValue: e.actorId
|
|
1304
1403
|
})]
|
|
1305
1404
|
}),
|
|
1306
|
-
/* @__PURE__ */
|
|
1405
|
+
/* @__PURE__ */ j("div", {
|
|
1307
1406
|
className: "la-request-history-field",
|
|
1308
|
-
children: [/* @__PURE__ */
|
|
1407
|
+
children: [/* @__PURE__ */ A("label", {
|
|
1309
1408
|
htmlFor: c,
|
|
1310
1409
|
children: "Outcome"
|
|
1311
|
-
}), /* @__PURE__ */
|
|
1410
|
+
}), /* @__PURE__ */ j(ot, {
|
|
1312
1411
|
id: c,
|
|
1313
1412
|
className: "la-observer-select",
|
|
1314
1413
|
name: "outcome",
|
|
1315
1414
|
defaultValue: e.outcome ?? "",
|
|
1316
|
-
children: [/* @__PURE__ */
|
|
1415
|
+
children: [/* @__PURE__ */ A(G, {
|
|
1317
1416
|
value: "",
|
|
1318
1417
|
children: "All outcomes"
|
|
1319
1418
|
}), [
|
|
@@ -1322,13 +1421,13 @@ function st({ query: e, range: t, onRangeChange: r, loading: i, onSearch: a, sco
|
|
|
1322
1421
|
"rejected",
|
|
1323
1422
|
"rerouted",
|
|
1324
1423
|
"interrupted"
|
|
1325
|
-
].map((e) => /* @__PURE__ */
|
|
1424
|
+
].map((e) => /* @__PURE__ */ A(G, {
|
|
1326
1425
|
value: e,
|
|
1327
1426
|
children: e[0].toUpperCase() + e.slice(1)
|
|
1328
1427
|
}, e))]
|
|
1329
1428
|
})]
|
|
1330
1429
|
}),
|
|
1331
|
-
/* @__PURE__ */
|
|
1430
|
+
/* @__PURE__ */ A(V, {
|
|
1332
1431
|
type: "submit",
|
|
1333
1432
|
variant: "outline",
|
|
1334
1433
|
disabled: i,
|
|
@@ -1337,7 +1436,7 @@ function st({ query: e, range: t, onRangeChange: r, loading: i, onSearch: a, sco
|
|
|
1337
1436
|
]
|
|
1338
1437
|
});
|
|
1339
1438
|
}
|
|
1340
|
-
function
|
|
1439
|
+
function gt({ record: e, timing: t }) {
|
|
1341
1440
|
let n = {
|
|
1342
1441
|
Operation: e.operation,
|
|
1343
1442
|
"Actor class": e.actorName,
|
|
@@ -1346,30 +1445,30 @@ function ct({ record: e, timing: t }) {
|
|
|
1346
1445
|
Time: new Date(e.startedAtMs).toLocaleString(),
|
|
1347
1446
|
Transport: e.kind === "method" ? "Method" : "WebSocket",
|
|
1348
1447
|
Outcome: e.outcome,
|
|
1349
|
-
Total:
|
|
1350
|
-
"Queue wait": e.queueWaitMs === null ? "Did not begin processing" :
|
|
1448
|
+
Total: B(e.durationMs),
|
|
1449
|
+
"Queue wait": e.queueWaitMs === null ? "Did not begin processing" : B(e.queueWaitMs),
|
|
1351
1450
|
...t ? {
|
|
1352
|
-
"Start offset in view":
|
|
1353
|
-
"Gap from preceding calls":
|
|
1451
|
+
"Start offset in view": B(t.offsetMs),
|
|
1452
|
+
"Gap from preceding calls": be(t.gapMs)
|
|
1354
1453
|
} : {},
|
|
1355
1454
|
Host: e.hostId,
|
|
1356
1455
|
...e.connectionId ? { Connection: e.connectionId } : {}
|
|
1357
1456
|
};
|
|
1358
|
-
return /* @__PURE__ */
|
|
1457
|
+
return /* @__PURE__ */ A("dl", {
|
|
1359
1458
|
className: "la-request-details",
|
|
1360
|
-
children: Object.entries(n).map(([e, t]) => /* @__PURE__ */
|
|
1459
|
+
children: Object.entries(n).map(([e, t]) => /* @__PURE__ */ j("div", { children: [/* @__PURE__ */ A("dt", { children: e }), /* @__PURE__ */ A("dd", { children: t })] }, e))
|
|
1361
1460
|
});
|
|
1362
1461
|
}
|
|
1363
1462
|
//#endregion
|
|
1364
1463
|
//#region src/state-diff.ts
|
|
1365
|
-
var
|
|
1366
|
-
function
|
|
1367
|
-
let n =
|
|
1464
|
+
var _t = ie({ arrays: { detectMove: !1 } });
|
|
1465
|
+
function vt(e, t) {
|
|
1466
|
+
let n = _t.diff(e, t);
|
|
1368
1467
|
return n ? ae(n, e) ?? "" : "";
|
|
1369
1468
|
}
|
|
1370
1469
|
//#endregion
|
|
1371
1470
|
//#region src/state-inspection.ts
|
|
1372
|
-
function
|
|
1471
|
+
function yt(e, n, r) {
|
|
1373
1472
|
let [o, s] = a(), [c, l] = a(), [u, d] = a(!1), [f, p] = a(!0), [m, h] = a(0), g = i(() => {});
|
|
1374
1473
|
return t(() => {
|
|
1375
1474
|
let t = new AbortController(), i = !1, a = !1, o, c;
|
|
@@ -1432,22 +1531,22 @@ function dt(e, n, r) {
|
|
|
1432
1531
|
}
|
|
1433
1532
|
//#endregion
|
|
1434
1533
|
//#region src/StateInspector.tsx
|
|
1435
|
-
function
|
|
1436
|
-
let { client: t, actorName: n, actorId: r } = e, i =
|
|
1437
|
-
return /* @__PURE__ */
|
|
1534
|
+
function bt(e) {
|
|
1535
|
+
let { client: t, actorName: n, actorId: r } = e, i = yt(t, n, r), [o, s] = a("state"), [c, l] = a(), [u, d] = a(), [f, p] = a(""), [m, h] = a(0), g = i.current?.snapshot, v = g?.stateVersion ?? 0, y = c ?? v, ee = i.knownVersion > v || v > (i.history?.records[0]?.stateVersion ?? 0);
|
|
1536
|
+
return /* @__PURE__ */ j("section", {
|
|
1438
1537
|
className: "la-state",
|
|
1439
1538
|
"aria-label": "Persisted state",
|
|
1440
1539
|
children: [
|
|
1441
|
-
/* @__PURE__ */
|
|
1540
|
+
/* @__PURE__ */ j("div", {
|
|
1442
1541
|
className: "la-state-heading",
|
|
1443
|
-
children: [/* @__PURE__ */
|
|
1542
|
+
children: [/* @__PURE__ */ j("div", { children: [/* @__PURE__ */ A("h3", { children: "Persisted state" }), /* @__PURE__ */ A("p", { children: "Committed fields and their progression in storage." })] }), /* @__PURE__ */ j("div", {
|
|
1444
1543
|
className: "la-state-actions",
|
|
1445
|
-
children: [g && /* @__PURE__ */
|
|
1544
|
+
children: [g && /* @__PURE__ */ j(V, {
|
|
1446
1545
|
variant: "outline",
|
|
1447
1546
|
size: "sm",
|
|
1448
|
-
onClick: () =>
|
|
1449
|
-
children: [/* @__PURE__ */
|
|
1450
|
-
}), /* @__PURE__ */
|
|
1547
|
+
onClick: () => Tt(g.state, `${n}-${r}-v${v}.json`),
|
|
1548
|
+
children: [/* @__PURE__ */ A(_, { "aria-hidden": "true" }), "Download JSON"]
|
|
1549
|
+
}), /* @__PURE__ */ j(V, {
|
|
1451
1550
|
variant: "outline",
|
|
1452
1551
|
size: "sm",
|
|
1453
1552
|
disabled: i.loading,
|
|
@@ -1455,87 +1554,87 @@ function ft(e) {
|
|
|
1455
1554
|
i.refresh(), h((e) => e + 1);
|
|
1456
1555
|
},
|
|
1457
1556
|
"aria-label": "Refresh state",
|
|
1458
|
-
children: [/* @__PURE__ */
|
|
1557
|
+
children: [/* @__PURE__ */ A(ne, { "aria-hidden": "true" }), "Refresh"]
|
|
1459
1558
|
})]
|
|
1460
1559
|
})]
|
|
1461
1560
|
}),
|
|
1462
|
-
/* @__PURE__ */
|
|
1561
|
+
/* @__PURE__ */ j("div", {
|
|
1463
1562
|
className: "la-state-tabs",
|
|
1464
1563
|
"aria-label": "State views",
|
|
1465
1564
|
children: [
|
|
1466
|
-
/* @__PURE__ */
|
|
1565
|
+
/* @__PURE__ */ A(V, {
|
|
1467
1566
|
variant: o === "state" ? "secondary" : "ghost",
|
|
1468
1567
|
"aria-pressed": o === "state",
|
|
1469
1568
|
onClick: () => s("state"),
|
|
1470
1569
|
children: "State"
|
|
1471
1570
|
}),
|
|
1472
|
-
/* @__PURE__ */
|
|
1571
|
+
/* @__PURE__ */ A(V, {
|
|
1473
1572
|
variant: o === "changes" ? "secondary" : "ghost",
|
|
1474
1573
|
"aria-pressed": o === "changes",
|
|
1475
1574
|
onClick: () => s("changes"),
|
|
1476
1575
|
children: "Changes"
|
|
1477
1576
|
}),
|
|
1478
|
-
g && /* @__PURE__ */
|
|
1577
|
+
g && /* @__PURE__ */ j("span", {
|
|
1479
1578
|
className: "la-state-version",
|
|
1480
1579
|
children: ["Version ", v]
|
|
1481
1580
|
})
|
|
1482
1581
|
]
|
|
1483
1582
|
}),
|
|
1484
|
-
i.failed && /* @__PURE__ */
|
|
1583
|
+
i.failed && /* @__PURE__ */ j("p", {
|
|
1485
1584
|
role: "alert",
|
|
1486
1585
|
children: ["Could not refresh state. Check your connection and use Refresh to retry.", i.current && " Showing the last loaded version."]
|
|
1487
1586
|
}),
|
|
1488
|
-
ee && /* @__PURE__ */
|
|
1587
|
+
ee && /* @__PURE__ */ A("p", {
|
|
1489
1588
|
className: "la-state-notice",
|
|
1490
1589
|
role: "status",
|
|
1491
1590
|
children: "A newer commit is syncing to storage. Retrying automatically…"
|
|
1492
1591
|
}),
|
|
1493
|
-
!i.current && !i.failed && /* @__PURE__ */
|
|
1592
|
+
!i.current && !i.failed && /* @__PURE__ */ A("p", {
|
|
1494
1593
|
role: "status",
|
|
1495
1594
|
children: "Loading persisted state…"
|
|
1496
1595
|
}),
|
|
1497
|
-
i.current && !g && /* @__PURE__ */
|
|
1596
|
+
i.current && !g && /* @__PURE__ */ A("p", {
|
|
1498
1597
|
className: "la-state-empty",
|
|
1499
1598
|
children: "No persisted state yet. Fields appear after the actor commits its first change."
|
|
1500
1599
|
}),
|
|
1501
|
-
o === "state" && g && /* @__PURE__ */
|
|
1502
|
-
/* @__PURE__ */
|
|
1600
|
+
o === "state" && g && /* @__PURE__ */ j(k, { children: [
|
|
1601
|
+
/* @__PURE__ */ A(Ct, {
|
|
1503
1602
|
record: g,
|
|
1504
1603
|
onInspect: e.onInspectRequest
|
|
1505
1604
|
}),
|
|
1506
|
-
/* @__PURE__ */
|
|
1605
|
+
/* @__PURE__ */ A(H, {
|
|
1507
1606
|
"aria-label": "Filter persisted fields",
|
|
1508
1607
|
placeholder: "Filter fields…",
|
|
1509
1608
|
value: f,
|
|
1510
1609
|
onChange: (e) => p(e.target.value)
|
|
1511
1610
|
}),
|
|
1512
|
-
/* @__PURE__ */
|
|
1611
|
+
/* @__PURE__ */ A(xt, {
|
|
1513
1612
|
state: g.state,
|
|
1514
1613
|
query: f,
|
|
1515
1614
|
schema: i.current?.schema ?? null
|
|
1516
1615
|
})
|
|
1517
1616
|
] }),
|
|
1518
|
-
o === "changes" && /* @__PURE__ */
|
|
1617
|
+
o === "changes" && /* @__PURE__ */ j("div", {
|
|
1519
1618
|
className: "la-state-history",
|
|
1520
|
-
children: [/* @__PURE__ */
|
|
1619
|
+
children: [/* @__PURE__ */ j("aside", {
|
|
1521
1620
|
"aria-label": "State versions",
|
|
1522
1621
|
children: [
|
|
1523
|
-
/* @__PURE__ */
|
|
1524
|
-
!i.history?.records.length && /* @__PURE__ */
|
|
1525
|
-
/* @__PURE__ */
|
|
1622
|
+
/* @__PURE__ */ A("h4", { children: "Versions" }),
|
|
1623
|
+
!i.history?.records.length && /* @__PURE__ */ A("p", { children: "No recorded history yet." }),
|
|
1624
|
+
/* @__PURE__ */ A("ol", { children: i.history?.records.map((e) => /* @__PURE__ */ A("li", { children: /* @__PURE__ */ j("button", {
|
|
1526
1625
|
type: "button",
|
|
1527
1626
|
"aria-label": `Version ${e.stateVersion} · ${e.attribution?.operation ?? "Unknown operation"}`,
|
|
1528
1627
|
"aria-pressed": y === e.stateVersion,
|
|
1529
1628
|
onClick: () => {
|
|
1530
1629
|
l(e.stateVersion), d(void 0);
|
|
1531
1630
|
},
|
|
1532
|
-
children: [/* @__PURE__ */
|
|
1631
|
+
children: [/* @__PURE__ */ j("strong", { children: [
|
|
1533
1632
|
"Version ",
|
|
1534
1633
|
e.stateVersion,
|
|
1535
|
-
/* @__PURE__ */
|
|
1536
|
-
] }), /* @__PURE__ */
|
|
1634
|
+
/* @__PURE__ */ A("span", { children: e.attribution?.operation ?? "Unknown operation" })
|
|
1635
|
+
] }), /* @__PURE__ */ A("small", { children: e.attribution ? new Date(e.attribution.committedAtMs).toLocaleTimeString() : "Time unavailable" })]
|
|
1537
1636
|
}) }, e.stateVersion)) }),
|
|
1538
|
-
i.history?.nextBefore && /* @__PURE__ */
|
|
1637
|
+
i.history?.nextBefore && /* @__PURE__ */ A(V, {
|
|
1539
1638
|
variant: "outline",
|
|
1540
1639
|
size: "sm",
|
|
1541
1640
|
disabled: i.loading,
|
|
@@ -1543,118 +1642,118 @@ function ft(e) {
|
|
|
1543
1642
|
children: "Load older versions"
|
|
1544
1643
|
})
|
|
1545
1644
|
]
|
|
1546
|
-
}), /* @__PURE__ */
|
|
1645
|
+
}), /* @__PURE__ */ j("div", {
|
|
1547
1646
|
className: "la-state-comparison",
|
|
1548
|
-
children: [c !== void 0 && v > c && /* @__PURE__ */
|
|
1647
|
+
children: [c !== void 0 && v > c && /* @__PURE__ */ j(V, {
|
|
1549
1648
|
variant: "outline",
|
|
1550
1649
|
size: "sm",
|
|
1551
1650
|
onClick: () => {
|
|
1552
1651
|
l(void 0), d(void 0);
|
|
1553
1652
|
},
|
|
1554
1653
|
children: ["View latest · version ", v]
|
|
1555
|
-
}), !!y && /* @__PURE__ */
|
|
1654
|
+
}), !!y && /* @__PURE__ */ j(k, { children: [/* @__PURE__ */ j("div", {
|
|
1556
1655
|
className: "la-state-compare-heading",
|
|
1557
|
-
children: [/* @__PURE__ */
|
|
1656
|
+
children: [/* @__PURE__ */ j("h4", { children: ["Version ", y] }), /* @__PURE__ */ j(ot, {
|
|
1558
1657
|
"aria-label": "Compare with version",
|
|
1559
1658
|
value: u ?? Math.max(0, y - 1),
|
|
1560
1659
|
onChange: (e) => d(Number(e.target.value)),
|
|
1561
|
-
children: [/* @__PURE__ */
|
|
1660
|
+
children: [/* @__PURE__ */ A(G, {
|
|
1562
1661
|
value: Math.max(0, y - 1),
|
|
1563
1662
|
children: y === 1 ? "Before first commit" : `Previous · version ${y - 1}`
|
|
1564
|
-
}), i.history?.records.filter((e) => e.stateVersion < y - 1).map((e) => /* @__PURE__ */
|
|
1663
|
+
}), i.history?.records.filter((e) => e.stateVersion < y - 1).map((e) => /* @__PURE__ */ j(G, {
|
|
1565
1664
|
value: e.stateVersion,
|
|
1566
1665
|
children: ["Version ", e.stateVersion]
|
|
1567
1666
|
}, e.stateVersion))]
|
|
1568
1667
|
})]
|
|
1569
|
-
}), /* @__PURE__ */
|
|
1668
|
+
}), /* @__PURE__ */ A(wt, {
|
|
1570
1669
|
...e,
|
|
1571
1670
|
version: y,
|
|
1572
1671
|
baseline: u ?? Math.max(0, y - 1)
|
|
1573
1672
|
}, `${n}/${r}/${y}/${u}/${m}`)] })]
|
|
1574
1673
|
})]
|
|
1575
1674
|
}),
|
|
1576
|
-
/* @__PURE__ */
|
|
1675
|
+
/* @__PURE__ */ A("p", {
|
|
1577
1676
|
className: "la-state-footnote",
|
|
1578
1677
|
children: "Values come from actor storage. Request events signal new versions; history follows completed uploads."
|
|
1579
1678
|
})
|
|
1580
1679
|
]
|
|
1581
1680
|
});
|
|
1582
1681
|
}
|
|
1583
|
-
function
|
|
1682
|
+
function xt({ state: e, query: t, schema: n }) {
|
|
1584
1683
|
let r = Object.entries(e).filter(([e]) => e.toLowerCase().includes(t.toLowerCase()));
|
|
1585
|
-
return /* @__PURE__ */
|
|
1684
|
+
return /* @__PURE__ */ j("div", {
|
|
1586
1685
|
className: "la-observer-table-frame",
|
|
1587
|
-
children: [/* @__PURE__ */
|
|
1686
|
+
children: [/* @__PURE__ */ j(K, {
|
|
1588
1687
|
"aria-label": "Persisted fields",
|
|
1589
|
-
children: [/* @__PURE__ */
|
|
1590
|
-
/* @__PURE__ */
|
|
1591
|
-
/* @__PURE__ */
|
|
1592
|
-
/* @__PURE__ */
|
|
1593
|
-
] }) }), /* @__PURE__ */
|
|
1594
|
-
/* @__PURE__ */
|
|
1595
|
-
/* @__PURE__ */
|
|
1688
|
+
children: [/* @__PURE__ */ A(q, { children: /* @__PURE__ */ j(Y, { children: [
|
|
1689
|
+
/* @__PURE__ */ A(X, { children: "Field" }),
|
|
1690
|
+
/* @__PURE__ */ A(X, { children: "Type" }),
|
|
1691
|
+
/* @__PURE__ */ A(X, { children: "Value" })
|
|
1692
|
+
] }) }), /* @__PURE__ */ A(J, { children: r.map(([e, t]) => /* @__PURE__ */ j(Y, { children: [
|
|
1693
|
+
/* @__PURE__ */ A(Z, { children: /* @__PURE__ */ A("code", { children: e }) }),
|
|
1694
|
+
/* @__PURE__ */ j(Z, { children: [/* @__PURE__ */ A("span", {
|
|
1596
1695
|
className: "la-state-type",
|
|
1597
|
-
children:
|
|
1598
|
-
}),
|
|
1696
|
+
children: Et(t)
|
|
1697
|
+
}), Dt(n, e) && /* @__PURE__ */ A("small", {
|
|
1599
1698
|
className: "la-state-schema",
|
|
1600
|
-
children:
|
|
1699
|
+
children: Dt(n, e)
|
|
1601
1700
|
})] }),
|
|
1602
|
-
/* @__PURE__ */
|
|
1701
|
+
/* @__PURE__ */ A(Z, { children: /* @__PURE__ */ A(St, { value: t }) })
|
|
1603
1702
|
] }, e)) })]
|
|
1604
|
-
}), !r.length && /* @__PURE__ */
|
|
1703
|
+
}), !r.length && /* @__PURE__ */ A("p", {
|
|
1605
1704
|
className: "la-state-empty",
|
|
1606
1705
|
children: t ? "No matching fields." : "The persisted state is an empty object."
|
|
1607
1706
|
})]
|
|
1608
1707
|
});
|
|
1609
1708
|
}
|
|
1610
|
-
function
|
|
1709
|
+
function St({ value: e }) {
|
|
1611
1710
|
let t = JSON.stringify(e);
|
|
1612
|
-
return t.length > 1e5 ? /* @__PURE__ */
|
|
1711
|
+
return t.length > 1e5 ? /* @__PURE__ */ j("span", { children: [
|
|
1613
1712
|
"Large value (",
|
|
1614
1713
|
Math.round(t.length / 1024),
|
|
1615
1714
|
" KB). Use Download JSON to inspect it."
|
|
1616
|
-
] }) : typeof e == "object" && e ? /* @__PURE__ */
|
|
1715
|
+
] }) : typeof e == "object" && e ? /* @__PURE__ */ A(re, {
|
|
1617
1716
|
data: e,
|
|
1618
1717
|
shouldExpandNode: (e) => e < 1,
|
|
1619
|
-
style:
|
|
1620
|
-
}) : /* @__PURE__ */
|
|
1621
|
-
className: `la-state-json-${
|
|
1718
|
+
style: Ot
|
|
1719
|
+
}) : /* @__PURE__ */ A("code", {
|
|
1720
|
+
className: `la-state-json-${Et(e)}`,
|
|
1622
1721
|
children: t
|
|
1623
1722
|
});
|
|
1624
1723
|
}
|
|
1625
|
-
function
|
|
1724
|
+
function Ct({ record: e, onInspect: t }) {
|
|
1626
1725
|
let n = e.attribution;
|
|
1627
|
-
return /* @__PURE__ */
|
|
1726
|
+
return /* @__PURE__ */ j("div", {
|
|
1628
1727
|
className: "la-state-attribution",
|
|
1629
1728
|
children: [
|
|
1630
|
-
/* @__PURE__ */
|
|
1631
|
-
/* @__PURE__ */
|
|
1729
|
+
/* @__PURE__ */ j("span", { children: ["Committed by ", /* @__PURE__ */ A("strong", { children: n?.operation ?? "Unknown operation" })] }),
|
|
1730
|
+
/* @__PURE__ */ j("span", { children: [
|
|
1632
1731
|
"Request",
|
|
1633
1732
|
" ",
|
|
1634
|
-
t ? /* @__PURE__ */
|
|
1733
|
+
t ? /* @__PURE__ */ A("button", {
|
|
1635
1734
|
type: "button",
|
|
1636
1735
|
onClick: () => t({ requestId: e.requestId }),
|
|
1637
1736
|
children: e.requestId
|
|
1638
|
-
}) : /* @__PURE__ */
|
|
1737
|
+
}) : /* @__PURE__ */ A("code", { children: e.requestId })
|
|
1639
1738
|
] }),
|
|
1640
|
-
n?.connectionId && /* @__PURE__ */
|
|
1739
|
+
n?.connectionId && /* @__PURE__ */ j("span", { children: [
|
|
1641
1740
|
"Connection",
|
|
1642
1741
|
" ",
|
|
1643
|
-
t ? /* @__PURE__ */
|
|
1742
|
+
t ? /* @__PURE__ */ A("button", {
|
|
1644
1743
|
type: "button",
|
|
1645
1744
|
onClick: () => t({ connectionId: n.connectionId }),
|
|
1646
1745
|
children: n.connectionId
|
|
1647
|
-
}) : /* @__PURE__ */
|
|
1746
|
+
}) : /* @__PURE__ */ A("code", { children: n.connectionId })
|
|
1648
1747
|
] }),
|
|
1649
|
-
n && /* @__PURE__ */
|
|
1748
|
+
n && /* @__PURE__ */ A("time", {
|
|
1650
1749
|
dateTime: new Date(n.committedAtMs).toISOString(),
|
|
1651
1750
|
children: new Date(n.committedAtMs).toLocaleString()
|
|
1652
1751
|
}),
|
|
1653
|
-
n?.interleaved && /* @__PURE__ */
|
|
1752
|
+
n?.interleaved && /* @__PURE__ */ A("p", { children: "Overlapping requests may contribute to this snapshot. This identifies the committing request." })
|
|
1654
1753
|
]
|
|
1655
1754
|
});
|
|
1656
1755
|
}
|
|
1657
|
-
function
|
|
1756
|
+
function wt({ client: e, actorName: n, actorId: r, version: i, baseline: o, onInspectRequest: s }) {
|
|
1658
1757
|
let [c, l] = a(), [u, d] = a(), [f, p] = a();
|
|
1659
1758
|
return t(() => {
|
|
1660
1759
|
let t = new AbortController(), a;
|
|
@@ -1687,7 +1786,7 @@ function gt({ client: e, actorName: n, actorId: r, version: i, baseline: o, onIn
|
|
|
1687
1786
|
after: u.state
|
|
1688
1787
|
})) : l({
|
|
1689
1788
|
after: u,
|
|
1690
|
-
html:
|
|
1789
|
+
html: vt(c.snapshot.state, u.state)
|
|
1691
1790
|
});
|
|
1692
1791
|
} catch (e) {
|
|
1693
1792
|
t.signal.aborted || d(e instanceof Error ? e.message : "Could not load versions.");
|
|
@@ -1702,44 +1801,44 @@ function gt({ client: e, actorName: n, actorId: r, version: i, baseline: o, onIn
|
|
|
1702
1801
|
r,
|
|
1703
1802
|
i,
|
|
1704
1803
|
o
|
|
1705
|
-
]), /* @__PURE__ */
|
|
1706
|
-
/* @__PURE__ */
|
|
1707
|
-
u && /* @__PURE__ */
|
|
1804
|
+
]), /* @__PURE__ */ j(k, { children: [
|
|
1805
|
+
/* @__PURE__ */ A("p", { children: o ? `Comparing version ${o} → ${i}` : "Changes in the first persisted snapshot" }),
|
|
1806
|
+
u && /* @__PURE__ */ A("p", {
|
|
1708
1807
|
role: "alert",
|
|
1709
1808
|
children: u
|
|
1710
1809
|
}),
|
|
1711
|
-
!u && !c && /* @__PURE__ */
|
|
1810
|
+
!u && !c && /* @__PURE__ */ A("p", {
|
|
1712
1811
|
role: "status",
|
|
1713
1812
|
children: "Loading comparison…"
|
|
1714
1813
|
}),
|
|
1715
|
-
f && /* @__PURE__ */
|
|
1814
|
+
f && /* @__PURE__ */ j(V, {
|
|
1716
1815
|
variant: "ghost",
|
|
1717
1816
|
size: "sm",
|
|
1718
|
-
onClick: () =>
|
|
1817
|
+
onClick: () => Tt(f.state, `${n}-${r}-v${i}.json`),
|
|
1719
1818
|
children: ["Download version ", i]
|
|
1720
1819
|
}),
|
|
1721
|
-
c && /* @__PURE__ */
|
|
1820
|
+
c && /* @__PURE__ */ j(k, { children: [/* @__PURE__ */ A(Ct, {
|
|
1722
1821
|
record: c.after,
|
|
1723
1822
|
onInspect: s
|
|
1724
|
-
}), c.html ? /* @__PURE__ */
|
|
1823
|
+
}), c.html ? /* @__PURE__ */ A("div", {
|
|
1725
1824
|
className: "la-state-diff",
|
|
1726
1825
|
"aria-label": "State changes",
|
|
1727
1826
|
dangerouslySetInnerHTML: { __html: c.html }
|
|
1728
|
-
}) : /* @__PURE__ */
|
|
1827
|
+
}) : /* @__PURE__ */ A("p", { children: "No persisted fields changed between these versions." })] })
|
|
1729
1828
|
] });
|
|
1730
1829
|
}
|
|
1731
|
-
function
|
|
1830
|
+
function Tt(e, t) {
|
|
1732
1831
|
let n = URL.createObjectURL(new Blob([JSON.stringify(e, null, 2)], { type: "application/json" })), r = document.createElement("a");
|
|
1733
1832
|
r.href = n, r.download = t, r.click(), setTimeout(() => URL.revokeObjectURL(n), 1e3);
|
|
1734
1833
|
}
|
|
1735
|
-
function
|
|
1834
|
+
function Et(e) {
|
|
1736
1835
|
return e === null ? "null" : Array.isArray(e) ? "array" : typeof e;
|
|
1737
1836
|
}
|
|
1738
|
-
function
|
|
1837
|
+
function Dt(e, t) {
|
|
1739
1838
|
let n = e?.definitions, r = n?.State?.properties?.[t]?.$ref, i = r && n?.[r.split("/").pop().replace(/~1/g, "/").replace(/~0/g, "~")]?.type;
|
|
1740
1839
|
return i ? `Schema: ${Array.isArray(i) ? i.join(" | ") : i}` : void 0;
|
|
1741
1840
|
}
|
|
1742
|
-
var
|
|
1841
|
+
var Ot = {
|
|
1743
1842
|
container: "la-state-json",
|
|
1744
1843
|
basicChildStyle: "la-state-json-child",
|
|
1745
1844
|
label: "la-state-json-label",
|
|
@@ -1758,8 +1857,8 @@ var bt = {
|
|
|
1758
1857
|
};
|
|
1759
1858
|
//#endregion
|
|
1760
1859
|
//#region src/queue-wait-history.ts
|
|
1761
|
-
function
|
|
1762
|
-
let r =
|
|
1860
|
+
function kt(e, t, n) {
|
|
1861
|
+
let r = ft(e, {
|
|
1763
1862
|
...t,
|
|
1764
1863
|
actorName: n
|
|
1765
1864
|
}, e.listQueueWaits);
|
|
@@ -1771,26 +1870,26 @@ function xt(e, t, n) {
|
|
|
1771
1870
|
}
|
|
1772
1871
|
//#endregion
|
|
1773
1872
|
//#region src/queue-wait.ts
|
|
1774
|
-
function
|
|
1775
|
-
if (!Array.isArray(e) || !e.every(
|
|
1873
|
+
function At(e) {
|
|
1874
|
+
if (!Array.isArray(e) || !e.every(jt)) throw Error("Invalid queue wait response");
|
|
1776
1875
|
return e;
|
|
1777
1876
|
}
|
|
1778
|
-
function
|
|
1877
|
+
function jt(e) {
|
|
1779
1878
|
return !!e && typeof e.actorName == "string" && typeof e.actorId == "string" && Number.isSafeInteger(e.admitted) && e.admitted > 0 && [e.averageMs, e.maxMs].every((e) => typeof e == "number" && Number.isFinite(e) && e >= 0) && e.averageMs <= e.maxMs;
|
|
1780
1879
|
}
|
|
1781
|
-
function
|
|
1782
|
-
return
|
|
1880
|
+
function Mt(e) {
|
|
1881
|
+
return It(e, () => "all").get("all") ?? null;
|
|
1783
1882
|
}
|
|
1784
|
-
function
|
|
1785
|
-
return
|
|
1883
|
+
function Nt(e) {
|
|
1884
|
+
return It(e, (e) => e.actorName);
|
|
1786
1885
|
}
|
|
1787
|
-
function
|
|
1788
|
-
return
|
|
1886
|
+
function Pt(e, t) {
|
|
1887
|
+
return It(e.filter((e) => e.actorName === t), (e) => e.actorId);
|
|
1789
1888
|
}
|
|
1790
|
-
function
|
|
1889
|
+
function Ft(e) {
|
|
1791
1890
|
return e === void 0 ? "—" : e >= 1e3 ? `${(e / 1e3).toLocaleString(void 0, { maximumFractionDigits: 2 })} s` : `${e.toLocaleString(void 0, { maximumFractionDigits: 1 })} ms`;
|
|
1792
1891
|
}
|
|
1793
|
-
function
|
|
1892
|
+
function It(e, t) {
|
|
1794
1893
|
let n = /* @__PURE__ */ new Map();
|
|
1795
1894
|
for (let r of e) {
|
|
1796
1895
|
let e = n.get(t(r)) ?? {
|
|
@@ -1808,149 +1907,149 @@ function Ot(e, t) {
|
|
|
1808
1907
|
}
|
|
1809
1908
|
//#endregion
|
|
1810
1909
|
//#region src/ActorObserver.tsx
|
|
1811
|
-
function
|
|
1812
|
-
let { inventory: u, loading: d, failed: f, retry: p } =
|
|
1910
|
+
function Lt({ client: e, className: r = "", initialActorName: o, navigation: s, timeRange: c, onTimeRangeChange: l }) {
|
|
1911
|
+
let { inventory: u, loading: d, failed: f, retry: p } = lt(e), [m, h] = a(Le), _ = c ?? m, v = l ?? h, [y, ee] = a(o), b = s ? s.actorName : y, te = s ? s.onSelectActor : ee, [x, S] = a(), [C, w] = a(""), T = i(null), E = JSON.stringify([b, x]), D = i(JSON.stringify([o, void 0])), O = n(), M = u?.actors.find((e) => e.actorName === b), N = M?.instances.find((e) => e.actorId === x), P = kt(e, Re(_, Date.now()), b), F = P.rows && Nt(P.rows), I = P.rows && b !== void 0 ? Pt(P.rows, b) : void 0, L = P.supported && P.rows ? Mt(P.rows) : void 0;
|
|
1813
1912
|
t(() => {
|
|
1814
|
-
ee(o),
|
|
1913
|
+
ee(o), S(void 0), w("");
|
|
1815
1914
|
}, [e, o]), t(() => {
|
|
1816
|
-
|
|
1817
|
-
}, [
|
|
1915
|
+
D.current !== E && T.current?.focus(), D.current = E;
|
|
1916
|
+
}, [E]);
|
|
1818
1917
|
let re = (e) => {
|
|
1819
|
-
|
|
1918
|
+
S(void 0), te(e);
|
|
1820
1919
|
};
|
|
1821
|
-
return /* @__PURE__ */
|
|
1822
|
-
className: `la-observer ${
|
|
1920
|
+
return /* @__PURE__ */ j("section", {
|
|
1921
|
+
className: `la-observer ${x === void 0 ? "" : "la-observer-instance-page"} ${r}`,
|
|
1823
1922
|
"aria-label": "Actor observer",
|
|
1824
1923
|
children: [
|
|
1825
|
-
b !== void 0 && /* @__PURE__ */
|
|
1924
|
+
b !== void 0 && /* @__PURE__ */ j("nav", {
|
|
1826
1925
|
className: "la-observer-breadcrumb",
|
|
1827
1926
|
"aria-label": "Breadcrumb",
|
|
1828
1927
|
children: [
|
|
1829
|
-
/* @__PURE__ */
|
|
1928
|
+
/* @__PURE__ */ A(V, {
|
|
1830
1929
|
variant: "link",
|
|
1831
1930
|
type: "button",
|
|
1832
1931
|
"aria-label": "Back to actors",
|
|
1833
1932
|
onClick: () => re(void 0),
|
|
1834
1933
|
children: "Actors"
|
|
1835
1934
|
}),
|
|
1836
|
-
/* @__PURE__ */
|
|
1935
|
+
/* @__PURE__ */ A("span", {
|
|
1837
1936
|
"aria-hidden": "true",
|
|
1838
1937
|
children: "/"
|
|
1839
1938
|
}),
|
|
1840
|
-
|
|
1939
|
+
x === void 0 ? /* @__PURE__ */ A("span", {
|
|
1841
1940
|
"aria-current": "page",
|
|
1842
1941
|
children: b
|
|
1843
|
-
}) : /* @__PURE__ */
|
|
1942
|
+
}) : /* @__PURE__ */ A(V, {
|
|
1844
1943
|
variant: "link",
|
|
1845
1944
|
"aria-label": "Back to instances",
|
|
1846
|
-
onClick: () =>
|
|
1945
|
+
onClick: () => S(void 0),
|
|
1847
1946
|
children: b
|
|
1848
1947
|
}),
|
|
1849
|
-
|
|
1948
|
+
x !== void 0 && /* @__PURE__ */ j(k, { children: [/* @__PURE__ */ A("span", {
|
|
1850
1949
|
"aria-hidden": "true",
|
|
1851
1950
|
children: "/"
|
|
1852
|
-
}), /* @__PURE__ */
|
|
1951
|
+
}), /* @__PURE__ */ A("span", {
|
|
1853
1952
|
"aria-current": "page",
|
|
1854
|
-
children:
|
|
1953
|
+
children: x
|
|
1855
1954
|
})] })
|
|
1856
1955
|
]
|
|
1857
1956
|
}),
|
|
1858
|
-
/* @__PURE__ */
|
|
1957
|
+
/* @__PURE__ */ j("div", {
|
|
1859
1958
|
className: "la-observer-toolbar",
|
|
1860
|
-
children: [/* @__PURE__ */
|
|
1959
|
+
children: [/* @__PURE__ */ j("div", { children: [/* @__PURE__ */ j("div", {
|
|
1861
1960
|
className: "la-observer-title",
|
|
1862
|
-
children: [/* @__PURE__ */
|
|
1863
|
-
ref:
|
|
1961
|
+
children: [/* @__PURE__ */ A("h1", {
|
|
1962
|
+
ref: T,
|
|
1864
1963
|
tabIndex: -1,
|
|
1865
|
-
children:
|
|
1866
|
-
}),
|
|
1964
|
+
children: x ?? b ?? "Actors"
|
|
1965
|
+
}), N && /* @__PURE__ */ j(W, {
|
|
1867
1966
|
variant: "outline",
|
|
1868
|
-
className: `la-observer-status-${
|
|
1869
|
-
children: [/* @__PURE__ */
|
|
1967
|
+
className: `la-observer-status-${N.status}`,
|
|
1968
|
+
children: [/* @__PURE__ */ A("span", { className: `la-observer-dot la-observer-dot-${N.status}` }), $t(N.status)]
|
|
1870
1969
|
})]
|
|
1871
|
-
}),
|
|
1970
|
+
}), x === void 0 && /* @__PURE__ */ A("p", { children: b === void 0 ? "Inspect instances, residency, and connections." : "Inspect this actor class’s instances, residency, and connections." })] }), /* @__PURE__ */ j("div", {
|
|
1872
1971
|
className: "la-observer-actions",
|
|
1873
|
-
children: [
|
|
1972
|
+
children: [P.supported && /* @__PURE__ */ A(He, {
|
|
1874
1973
|
value: _,
|
|
1875
1974
|
onChange: v
|
|
1876
|
-
}), /* @__PURE__ */
|
|
1975
|
+
}), /* @__PURE__ */ j(V, {
|
|
1877
1976
|
variant: "outline",
|
|
1878
1977
|
type: "button",
|
|
1879
1978
|
disabled: d,
|
|
1880
1979
|
onClick: p,
|
|
1881
|
-
children: [/* @__PURE__ */
|
|
1980
|
+
children: [/* @__PURE__ */ A(ne, {
|
|
1882
1981
|
"aria-hidden": "true",
|
|
1883
1982
|
className: d ? "la-observer-spin" : void 0
|
|
1884
1983
|
}), d ? "Refreshing…" : f ? "Try again" : "Refresh"]
|
|
1885
1984
|
})]
|
|
1886
1985
|
})]
|
|
1887
1986
|
}),
|
|
1888
|
-
f && /* @__PURE__ */
|
|
1987
|
+
f && /* @__PURE__ */ j("div", {
|
|
1889
1988
|
className: "la-observer-error",
|
|
1890
1989
|
role: "alert",
|
|
1891
|
-
children: [/* @__PURE__ */
|
|
1990
|
+
children: [/* @__PURE__ */ A(g, { "aria-hidden": "true" }), /* @__PURE__ */ A("p", { children: u ? "Could not refresh. These counts may be out of date." : "Could not load actors. Check your connection and access, then try again." })]
|
|
1892
1991
|
}),
|
|
1893
|
-
!u && !f && /* @__PURE__ */
|
|
1894
|
-
u && /* @__PURE__ */
|
|
1992
|
+
!u && !f && /* @__PURE__ */ A(Rt, {}),
|
|
1993
|
+
u && /* @__PURE__ */ j(k, { children: [b === void 0 ? /* @__PURE__ */ j(k, { children: [/* @__PURE__ */ A(zt, {
|
|
1895
1994
|
inventory: u,
|
|
1896
|
-
queueWait:
|
|
1995
|
+
queueWait: P.supported ? L ?? null : void 0,
|
|
1897
1996
|
range: _
|
|
1898
|
-
}), u.actors.length ? /* @__PURE__ */
|
|
1997
|
+
}), u.actors.length ? /* @__PURE__ */ A(Bt, {
|
|
1899
1998
|
inventory: u,
|
|
1900
|
-
query:
|
|
1901
|
-
onQueryChange:
|
|
1999
|
+
query: C,
|
|
2000
|
+
onQueryChange: w,
|
|
1902
2001
|
onSelectActor: re,
|
|
1903
2002
|
onSelectInstance: (e, t) => {
|
|
1904
|
-
|
|
2003
|
+
S(t), te(e);
|
|
1905
2004
|
},
|
|
1906
|
-
waits:
|
|
1907
|
-
}) : /* @__PURE__ */
|
|
2005
|
+
waits: P.supported ? F : void 0
|
|
2006
|
+
}) : /* @__PURE__ */ A(Zt, {
|
|
1908
2007
|
title: "No actors yet",
|
|
1909
2008
|
description: "Deploy your actor classes to see them here. Instance counts appear as actors are used."
|
|
1910
|
-
})] }) :
|
|
1911
|
-
inventory: { actors: [
|
|
2009
|
+
})] }) : M ? /* @__PURE__ */ j(k, { children: [x === void 0 && /* @__PURE__ */ A(zt, {
|
|
2010
|
+
inventory: { actors: [M] },
|
|
1912
2011
|
actorName: b,
|
|
1913
|
-
queueWait:
|
|
2012
|
+
queueWait: P.supported ? L ?? null : void 0,
|
|
1914
2013
|
range: _
|
|
1915
|
-
}), /* @__PURE__ */
|
|
2014
|
+
}), /* @__PURE__ */ A(Ut, {
|
|
1916
2015
|
client: e,
|
|
1917
|
-
id:
|
|
2016
|
+
id: O,
|
|
1918
2017
|
actorName: b,
|
|
1919
|
-
instances:
|
|
1920
|
-
waits:
|
|
2018
|
+
instances: M.instances,
|
|
2019
|
+
waits: P.supported ? I : void 0,
|
|
1921
2020
|
range: _,
|
|
1922
|
-
selectedInstanceId:
|
|
1923
|
-
onSelectInstance:
|
|
1924
|
-
}, b)] }) : /* @__PURE__ */
|
|
2021
|
+
selectedInstanceId: x,
|
|
2022
|
+
onSelectInstance: S
|
|
2023
|
+
}, b)] }) : /* @__PURE__ */ A(Zt, {
|
|
1925
2024
|
title: "Actor class unavailable",
|
|
1926
2025
|
description: "This actor class is no longer in the latest inventory. Return to Actors to see available classes."
|
|
1927
|
-
}), /* @__PURE__ */
|
|
2026
|
+
}), /* @__PURE__ */ j("div", {
|
|
1928
2027
|
className: "la-observer-footnote",
|
|
1929
|
-
children: [/* @__PURE__ */
|
|
2028
|
+
children: [/* @__PURE__ */ j("span", {
|
|
1930
2029
|
className: "la-observer-refresh-status",
|
|
1931
|
-
children: [/* @__PURE__ */
|
|
1932
|
-
}), /* @__PURE__ */
|
|
2030
|
+
children: [/* @__PURE__ */ A("span", { className: `la-observer-dot ${f ? "la-observer-dot-unknown" : e.watchActors ? "la-observer-dot-live" : ""}` }), f ? "Reconnecting…" : e.watchActors ? "Live updates" : "Auto-refresh every 5s"]
|
|
2031
|
+
}), /* @__PURE__ */ A("span", { children: e.watchActors ? "Changes stream from the control plane." : "Counts follow the latest host heartbeat." })]
|
|
1933
2032
|
})] })
|
|
1934
2033
|
]
|
|
1935
2034
|
});
|
|
1936
2035
|
}
|
|
1937
|
-
function
|
|
1938
|
-
return /* @__PURE__ */
|
|
2036
|
+
function Rt() {
|
|
2037
|
+
return /* @__PURE__ */ j("div", {
|
|
1939
2038
|
className: "la-observer-skeleton",
|
|
1940
2039
|
role: "status",
|
|
1941
2040
|
"aria-label": "Loading actors",
|
|
1942
2041
|
children: [
|
|
1943
|
-
/* @__PURE__ */
|
|
2042
|
+
/* @__PURE__ */ A("span", {
|
|
1944
2043
|
className: "la:sr-only",
|
|
1945
2044
|
children: "Loading actors…"
|
|
1946
2045
|
}),
|
|
1947
|
-
/* @__PURE__ */
|
|
1948
|
-
/* @__PURE__ */
|
|
1949
|
-
/* @__PURE__ */
|
|
2046
|
+
/* @__PURE__ */ A("div", {}),
|
|
2047
|
+
/* @__PURE__ */ A("div", {}),
|
|
2048
|
+
/* @__PURE__ */ A("div", {})
|
|
1950
2049
|
]
|
|
1951
2050
|
});
|
|
1952
2051
|
}
|
|
1953
|
-
function
|
|
2052
|
+
function zt({ inventory: e, actorName: t, queueWait: n, range: r }) {
|
|
1954
2053
|
let i = e.actors.reduce((e, t) => ({
|
|
1955
2054
|
live: e.live + t.live,
|
|
1956
2055
|
dormant: e.dormant + t.dormant,
|
|
@@ -1960,61 +2059,61 @@ function jt({ inventory: e, actorName: t, queueWait: n, range: r }) {
|
|
|
1960
2059
|
dormant: 0,
|
|
1961
2060
|
unknown: 0
|
|
1962
2061
|
});
|
|
1963
|
-
return /* @__PURE__ */
|
|
2062
|
+
return /* @__PURE__ */ j("dl", {
|
|
1964
2063
|
className: "la-observer-summary",
|
|
1965
2064
|
children: [
|
|
1966
|
-
/* @__PURE__ */
|
|
1967
|
-
/* @__PURE__ */
|
|
1968
|
-
/* @__PURE__ */
|
|
2065
|
+
/* @__PURE__ */ j("div", { children: [
|
|
2066
|
+
/* @__PURE__ */ A("dt", { children: "Total instances" }),
|
|
2067
|
+
/* @__PURE__ */ A("dd", {
|
|
1969
2068
|
"aria-label": "Total instances",
|
|
1970
2069
|
children: (i.live + i.dormant + i.unknown).toLocaleString()
|
|
1971
2070
|
}),
|
|
1972
|
-
/* @__PURE__ */
|
|
2071
|
+
/* @__PURE__ */ A("p", { children: t === void 0 ? `${e.actors.length} actor ${e.actors.length === 1 ? "type" : "types"}` : "In this actor class" })
|
|
1973
2072
|
] }),
|
|
1974
|
-
/* @__PURE__ */
|
|
1975
|
-
/* @__PURE__ */
|
|
1976
|
-
/* @__PURE__ */
|
|
2073
|
+
/* @__PURE__ */ j("div", { children: [
|
|
2074
|
+
/* @__PURE__ */ j("dt", { children: [/* @__PURE__ */ A("span", { className: "la-observer-dot la-observer-dot-live" }), "Live"] }),
|
|
2075
|
+
/* @__PURE__ */ A("dd", {
|
|
1977
2076
|
"aria-label": "Live instances",
|
|
1978
2077
|
children: i.live.toLocaleString()
|
|
1979
2078
|
}),
|
|
1980
|
-
/* @__PURE__ */
|
|
2079
|
+
/* @__PURE__ */ A("p", { children: "Loaded in memory" })
|
|
1981
2080
|
] }),
|
|
1982
|
-
/* @__PURE__ */
|
|
1983
|
-
/* @__PURE__ */
|
|
1984
|
-
/* @__PURE__ */
|
|
2081
|
+
/* @__PURE__ */ j("div", { children: [
|
|
2082
|
+
/* @__PURE__ */ j("dt", { children: [/* @__PURE__ */ A("span", { className: "la-observer-dot" }), "Dormant"] }),
|
|
2083
|
+
/* @__PURE__ */ A("dd", {
|
|
1985
2084
|
"aria-label": "Dormant instances",
|
|
1986
2085
|
children: i.dormant.toLocaleString()
|
|
1987
2086
|
}),
|
|
1988
|
-
/* @__PURE__ */
|
|
2087
|
+
/* @__PURE__ */ A("p", { children: "Currently unloaded" })
|
|
1989
2088
|
] }),
|
|
1990
|
-
i.unknown > 0 && /* @__PURE__ */
|
|
1991
|
-
/* @__PURE__ */
|
|
1992
|
-
/* @__PURE__ */
|
|
2089
|
+
i.unknown > 0 && /* @__PURE__ */ j("div", { children: [
|
|
2090
|
+
/* @__PURE__ */ j("dt", { children: [/* @__PURE__ */ A("span", { className: "la-observer-dot la-observer-dot-unknown" }), "Unknown"] }),
|
|
2091
|
+
/* @__PURE__ */ A("dd", {
|
|
1993
2092
|
"aria-label": "Unknown instances",
|
|
1994
2093
|
children: i.unknown.toLocaleString()
|
|
1995
2094
|
}),
|
|
1996
|
-
/* @__PURE__ */
|
|
2095
|
+
/* @__PURE__ */ A("p", { children: "Awaiting host report" })
|
|
1997
2096
|
] }),
|
|
1998
|
-
n !== void 0 && /* @__PURE__ */
|
|
2097
|
+
n !== void 0 && /* @__PURE__ */ j("div", {
|
|
1999
2098
|
className: "la-observer-queue-wait",
|
|
2000
2099
|
children: [
|
|
2001
|
-
/* @__PURE__ */
|
|
2002
|
-
/* @__PURE__ */
|
|
2100
|
+
/* @__PURE__ */ A("dt", { children: "Avg queue wait" }),
|
|
2101
|
+
/* @__PURE__ */ A("dd", {
|
|
2003
2102
|
"aria-label": "Average queue wait",
|
|
2004
|
-
children:
|
|
2103
|
+
children: Ft(n?.averageMs)
|
|
2005
2104
|
}),
|
|
2006
|
-
/* @__PURE__ */
|
|
2105
|
+
/* @__PURE__ */ A("p", { children: n ? `Max ${Ft(n.maxMs)} · ${n.admitted.toLocaleString()} admitted ${U(r)}` : `No admitted requests ${U(r)}` })
|
|
2007
2106
|
]
|
|
2008
2107
|
})
|
|
2009
2108
|
]
|
|
2010
2109
|
});
|
|
2011
2110
|
}
|
|
2012
|
-
function
|
|
2013
|
-
let o = e.actors.some((e) => e.unknown > 0), s = e.actors.filter((e) =>
|
|
2014
|
-
return /* @__PURE__ */
|
|
2015
|
-
/* @__PURE__ */
|
|
2111
|
+
function Bt({ inventory: e, query: t, onQueryChange: n, onSelectActor: r, onSelectInstance: i, waits: a }) {
|
|
2112
|
+
let o = e.actors.some((e) => e.unknown > 0), s = e.actors.filter((e) => Ht(e, t)).sort((e, t) => Number(t.live > 0) - Number(e.live > 0)), l = Vt(e);
|
|
2113
|
+
return /* @__PURE__ */ j(k, { children: [
|
|
2114
|
+
/* @__PURE__ */ j("div", {
|
|
2016
2115
|
className: "la-observer-list-toolbar",
|
|
2017
|
-
children: [/* @__PURE__ */
|
|
2116
|
+
children: [/* @__PURE__ */ j("h2", { children: ["Actor names ", /* @__PURE__ */ A(W, { children: e.actors.length })] }), /* @__PURE__ */ A(ge, {
|
|
2018
2117
|
label: "Search actors and instances",
|
|
2019
2118
|
placeholder: "Search actor name or instance ID…",
|
|
2020
2119
|
value: t,
|
|
@@ -2028,80 +2127,80 @@ function Mt({ inventory: e, query: t, onQueryChange: n, onSelectActor: r, onSele
|
|
|
2028
2127
|
className: "la-observer-lookup"
|
|
2029
2128
|
})]
|
|
2030
2129
|
}),
|
|
2031
|
-
/* @__PURE__ */
|
|
2130
|
+
/* @__PURE__ */ A("div", {
|
|
2032
2131
|
className: "la-observer-table-frame",
|
|
2033
|
-
children: s.length ? /* @__PURE__ */
|
|
2132
|
+
children: s.length ? /* @__PURE__ */ j(K, {
|
|
2034
2133
|
"aria-label": "Actor instance counts",
|
|
2035
2134
|
className: "la-observer-table",
|
|
2036
|
-
children: [/* @__PURE__ */
|
|
2037
|
-
/* @__PURE__ */
|
|
2135
|
+
children: [/* @__PURE__ */ A(q, { children: /* @__PURE__ */ j(Y, { children: [
|
|
2136
|
+
/* @__PURE__ */ A(X, {
|
|
2038
2137
|
scope: "col",
|
|
2039
2138
|
children: "Actor"
|
|
2040
2139
|
}),
|
|
2041
|
-
/* @__PURE__ */
|
|
2140
|
+
/* @__PURE__ */ A(X, {
|
|
2042
2141
|
scope: "col",
|
|
2043
2142
|
children: "Live"
|
|
2044
2143
|
}),
|
|
2045
|
-
/* @__PURE__ */
|
|
2144
|
+
/* @__PURE__ */ A(X, {
|
|
2046
2145
|
scope: "col",
|
|
2047
2146
|
children: "Dormant"
|
|
2048
2147
|
}),
|
|
2049
|
-
o && /* @__PURE__ */
|
|
2148
|
+
o && /* @__PURE__ */ A(X, {
|
|
2050
2149
|
scope: "col",
|
|
2051
2150
|
children: "Unknown"
|
|
2052
2151
|
}),
|
|
2053
|
-
/* @__PURE__ */
|
|
2152
|
+
/* @__PURE__ */ A(X, {
|
|
2054
2153
|
scope: "col",
|
|
2055
2154
|
children: "Total"
|
|
2056
2155
|
}),
|
|
2057
|
-
a && /* @__PURE__ */
|
|
2156
|
+
a && /* @__PURE__ */ A(X, {
|
|
2058
2157
|
scope: "col",
|
|
2059
2158
|
className: "la-observer-wait-cell",
|
|
2060
2159
|
children: "Avg queue wait"
|
|
2061
2160
|
})
|
|
2062
|
-
] }) }), /* @__PURE__ */
|
|
2161
|
+
] }) }), /* @__PURE__ */ A(J, { children: s.map((e) => /* @__PURE__ */ j(Y, {
|
|
2063
2162
|
className: "la-clickable-row",
|
|
2064
2163
|
onClick: () => r(e.actorName),
|
|
2065
2164
|
children: [
|
|
2066
|
-
/* @__PURE__ */
|
|
2165
|
+
/* @__PURE__ */ A(Z, {
|
|
2067
2166
|
className: "la-observer-name",
|
|
2068
|
-
children: /* @__PURE__ */
|
|
2167
|
+
children: /* @__PURE__ */ j(V, {
|
|
2069
2168
|
variant: "ghost",
|
|
2070
2169
|
type: "button",
|
|
2071
2170
|
className: "la-observer-actor-button la-observer-class-button",
|
|
2072
|
-
children: [/* @__PURE__ */
|
|
2171
|
+
children: [/* @__PURE__ */ A(c, {
|
|
2073
2172
|
className: "la-observer-type-icon",
|
|
2074
2173
|
"aria-hidden": "true"
|
|
2075
|
-
}), /* @__PURE__ */
|
|
2174
|
+
}), /* @__PURE__ */ A("span", { children: e.actorName })]
|
|
2076
2175
|
})
|
|
2077
2176
|
}),
|
|
2078
|
-
/* @__PURE__ */
|
|
2177
|
+
/* @__PURE__ */ A(Z, { children: /* @__PURE__ */ A("span", {
|
|
2079
2178
|
className: e.live > 0 ? "la-observer-live" : void 0,
|
|
2080
2179
|
children: e.live.toLocaleString()
|
|
2081
2180
|
}) }),
|
|
2082
|
-
/* @__PURE__ */
|
|
2083
|
-
o && /* @__PURE__ */
|
|
2084
|
-
/* @__PURE__ */
|
|
2085
|
-
a && /* @__PURE__ */
|
|
2181
|
+
/* @__PURE__ */ A(Z, { children: e.dormant.toLocaleString() }),
|
|
2182
|
+
o && /* @__PURE__ */ A(Z, { children: e.unknown.toLocaleString() }),
|
|
2183
|
+
/* @__PURE__ */ A(Z, { children: (e.live + e.dormant + e.unknown).toLocaleString() }),
|
|
2184
|
+
a && /* @__PURE__ */ A(Z, {
|
|
2086
2185
|
className: "la-observer-wait-cell",
|
|
2087
|
-
children: /* @__PURE__ */
|
|
2186
|
+
children: /* @__PURE__ */ A(Gt, { stats: a.get(e.actorName) })
|
|
2088
2187
|
})
|
|
2089
2188
|
]
|
|
2090
2189
|
}, e.actorName)) })]
|
|
2091
|
-
}) : /* @__PURE__ */
|
|
2190
|
+
}) : /* @__PURE__ */ A(Zt, {
|
|
2092
2191
|
title: "No matching actors",
|
|
2093
2192
|
description: "Try a different actor name.",
|
|
2094
2193
|
action: "Clear search",
|
|
2095
2194
|
onReset: () => n("")
|
|
2096
2195
|
})
|
|
2097
2196
|
}),
|
|
2098
|
-
o && /* @__PURE__ */
|
|
2197
|
+
o && /* @__PURE__ */ j("p", {
|
|
2099
2198
|
className: "la-observer-unknown",
|
|
2100
|
-
children: [/* @__PURE__ */
|
|
2199
|
+
children: [/* @__PURE__ */ A(g, { "aria-hidden": "true" }), "Some hosts have not reported which instances are loaded. Their counts are shown as unknown."]
|
|
2101
2200
|
})
|
|
2102
2201
|
] });
|
|
2103
2202
|
}
|
|
2104
|
-
function
|
|
2203
|
+
function Vt(e) {
|
|
2105
2204
|
return e.actors.flatMap((e) => [{
|
|
2106
2205
|
id: JSON.stringify({ actorName: e.actorName }),
|
|
2107
2206
|
group: "Actor classes",
|
|
@@ -2115,128 +2214,128 @@ function Nt(e) {
|
|
|
2115
2214
|
group: "Instances",
|
|
2116
2215
|
value: t.actorId,
|
|
2117
2216
|
keywords: [e.actorName],
|
|
2118
|
-
hint: `${e.actorName} · ${
|
|
2217
|
+
hint: `${e.actorName} · ${$t(t.status)} · ${t.connections.length.toLocaleString()} ${t.connections.length === 1 ? "connection" : "connections"}`
|
|
2119
2218
|
}))]);
|
|
2120
2219
|
}
|
|
2121
|
-
function
|
|
2220
|
+
function Ht(e, t) {
|
|
2122
2221
|
let n = t.trim().toLocaleLowerCase().split(/\s+/u).filter(Boolean), r = [e.actorName, ...e.instances.map((e) => e.actorId)].join(" ").toLocaleLowerCase();
|
|
2123
2222
|
return n.every((e) => r.includes(e));
|
|
2124
2223
|
}
|
|
2125
|
-
function
|
|
2126
|
-
let [l, u] = a(""), [d, f] = a("all"), p = r.filter((e) =>
|
|
2224
|
+
function Ut({ client: e, id: t, actorName: n, instances: r, waits: i, range: o, selectedInstanceId: s, onSelectInstance: c }) {
|
|
2225
|
+
let [l, u] = a(""), [d, f] = a("all"), p = r.filter((e) => Qt(e.actorId, l) && (d === "all" || e.status === d));
|
|
2127
2226
|
p.sort((e, t) => Number(t.status === "live") - Number(e.status === "live"));
|
|
2128
2227
|
let m = r.find((e) => e.actorId === s);
|
|
2129
|
-
return s === void 0 ? /* @__PURE__ */
|
|
2228
|
+
return s === void 0 ? /* @__PURE__ */ j("section", {
|
|
2130
2229
|
id: t,
|
|
2131
2230
|
className: "la-observer-instances",
|
|
2132
2231
|
"aria-labelledby": `${t}-heading`,
|
|
2133
|
-
children: [/* @__PURE__ */
|
|
2232
|
+
children: [/* @__PURE__ */ A("div", {
|
|
2134
2233
|
className: "la-observer-instances-heading",
|
|
2135
|
-
children: /* @__PURE__ */
|
|
2234
|
+
children: /* @__PURE__ */ j("div", { children: [/* @__PURE__ */ j("h2", {
|
|
2136
2235
|
id: `${t}-heading`,
|
|
2137
2236
|
children: [
|
|
2138
2237
|
n,
|
|
2139
2238
|
" instances ",
|
|
2140
|
-
/* @__PURE__ */
|
|
2239
|
+
/* @__PURE__ */ A(W, {
|
|
2141
2240
|
"aria-hidden": "true",
|
|
2142
2241
|
children: r.length.toLocaleString()
|
|
2143
2242
|
})
|
|
2144
2243
|
]
|
|
2145
|
-
}), /* @__PURE__ */
|
|
2146
|
-
}), r.length ? /* @__PURE__ */
|
|
2147
|
-
/* @__PURE__ */
|
|
2244
|
+
}), /* @__PURE__ */ A("p", { children: "Select an instance to inspect its persisted state, requests, and WebSocket connections." })] })
|
|
2245
|
+
}), r.length ? /* @__PURE__ */ j(k, { children: [
|
|
2246
|
+
/* @__PURE__ */ j("div", {
|
|
2148
2247
|
className: "la-observer-filters",
|
|
2149
|
-
children: [/* @__PURE__ */
|
|
2248
|
+
children: [/* @__PURE__ */ A(Xt, {
|
|
2150
2249
|
label: "Search instances",
|
|
2151
2250
|
placeholder: "Search instance IDs…",
|
|
2152
2251
|
value: l,
|
|
2153
2252
|
onChange: u
|
|
2154
|
-
}), /* @__PURE__ */
|
|
2253
|
+
}), /* @__PURE__ */ j(ot, {
|
|
2155
2254
|
className: "la-observer-select",
|
|
2156
2255
|
"aria-label": "Instance state",
|
|
2157
2256
|
value: d,
|
|
2158
2257
|
onChange: (e) => f(e.target.value),
|
|
2159
2258
|
children: [
|
|
2160
|
-
/* @__PURE__ */
|
|
2259
|
+
/* @__PURE__ */ A(G, {
|
|
2161
2260
|
value: "all",
|
|
2162
2261
|
children: "All states"
|
|
2163
2262
|
}),
|
|
2164
|
-
/* @__PURE__ */
|
|
2263
|
+
/* @__PURE__ */ A(G, {
|
|
2165
2264
|
value: "live",
|
|
2166
2265
|
children: "Live"
|
|
2167
2266
|
}),
|
|
2168
|
-
/* @__PURE__ */
|
|
2267
|
+
/* @__PURE__ */ A(G, {
|
|
2169
2268
|
value: "dormant",
|
|
2170
2269
|
children: "Dormant"
|
|
2171
2270
|
}),
|
|
2172
|
-
/* @__PURE__ */
|
|
2271
|
+
/* @__PURE__ */ A(G, {
|
|
2173
2272
|
value: "unknown",
|
|
2174
2273
|
children: "Unknown"
|
|
2175
2274
|
})
|
|
2176
2275
|
]
|
|
2177
2276
|
})]
|
|
2178
2277
|
}),
|
|
2179
|
-
/* @__PURE__ */
|
|
2278
|
+
/* @__PURE__ */ A("div", {
|
|
2180
2279
|
className: "la-observer-table-frame",
|
|
2181
|
-
children: p.length ? /* @__PURE__ */
|
|
2280
|
+
children: p.length ? /* @__PURE__ */ j(K, {
|
|
2182
2281
|
"aria-label": `${n} instances`,
|
|
2183
2282
|
className: "la-observer-instance-table",
|
|
2184
|
-
children: [/* @__PURE__ */
|
|
2185
|
-
/* @__PURE__ */
|
|
2283
|
+
children: [/* @__PURE__ */ A(q, { children: /* @__PURE__ */ j(Y, { children: [
|
|
2284
|
+
/* @__PURE__ */ A(X, {
|
|
2186
2285
|
scope: "col",
|
|
2187
2286
|
children: "Instance"
|
|
2188
2287
|
}),
|
|
2189
|
-
/* @__PURE__ */
|
|
2288
|
+
/* @__PURE__ */ A(X, {
|
|
2190
2289
|
scope: "col",
|
|
2191
2290
|
children: "State"
|
|
2192
2291
|
}),
|
|
2193
|
-
/* @__PURE__ */
|
|
2292
|
+
/* @__PURE__ */ A(X, {
|
|
2194
2293
|
scope: "col",
|
|
2195
2294
|
children: "Connections"
|
|
2196
2295
|
}),
|
|
2197
|
-
i && /* @__PURE__ */
|
|
2296
|
+
i && /* @__PURE__ */ A(X, {
|
|
2198
2297
|
scope: "col",
|
|
2199
2298
|
className: "la-observer-wait-cell",
|
|
2200
2299
|
children: "Avg queue wait"
|
|
2201
2300
|
}),
|
|
2202
|
-
/* @__PURE__ */
|
|
2301
|
+
/* @__PURE__ */ A(X, {
|
|
2203
2302
|
scope: "col",
|
|
2204
2303
|
className: "la-observer-waiting-cell",
|
|
2205
2304
|
children: "Waiting"
|
|
2206
2305
|
})
|
|
2207
|
-
] }) }), /* @__PURE__ */
|
|
2306
|
+
] }) }), /* @__PURE__ */ A(J, { children: p.map((e) => /* @__PURE__ */ j(Y, {
|
|
2208
2307
|
className: "la-clickable-row",
|
|
2209
2308
|
onClick: () => c(e.actorId),
|
|
2210
2309
|
children: [
|
|
2211
|
-
/* @__PURE__ */
|
|
2310
|
+
/* @__PURE__ */ A(Z, {
|
|
2212
2311
|
className: "la-observer-instance-id",
|
|
2213
|
-
children: /* @__PURE__ */
|
|
2312
|
+
children: /* @__PURE__ */ A(V, {
|
|
2214
2313
|
variant: "ghost",
|
|
2215
2314
|
type: "button",
|
|
2216
2315
|
className: "la-observer-actor-button",
|
|
2217
|
-
children: /* @__PURE__ */
|
|
2316
|
+
children: /* @__PURE__ */ A("span", { children: e.actorId })
|
|
2218
2317
|
})
|
|
2219
2318
|
}),
|
|
2220
|
-
/* @__PURE__ */
|
|
2319
|
+
/* @__PURE__ */ A(Z, { children: /* @__PURE__ */ j(W, {
|
|
2221
2320
|
variant: "outline",
|
|
2222
2321
|
className: `la-observer-status-${e.status}`,
|
|
2223
|
-
children: [/* @__PURE__ */
|
|
2322
|
+
children: [/* @__PURE__ */ A("span", { className: `la-observer-dot la-observer-dot-${e.status}` }), $t(e.status)]
|
|
2224
2323
|
}) }),
|
|
2225
|
-
/* @__PURE__ */
|
|
2226
|
-
i && /* @__PURE__ */
|
|
2324
|
+
/* @__PURE__ */ A(Z, { children: e.connections.length.toLocaleString() }),
|
|
2325
|
+
i && /* @__PURE__ */ A(Z, {
|
|
2227
2326
|
className: "la-observer-wait-cell",
|
|
2228
|
-
children: /* @__PURE__ */
|
|
2327
|
+
children: /* @__PURE__ */ A(Gt, { stats: i.get(e.actorId) })
|
|
2229
2328
|
}),
|
|
2230
|
-
/* @__PURE__ */
|
|
2329
|
+
/* @__PURE__ */ A(Z, {
|
|
2231
2330
|
className: "la-observer-waiting-cell",
|
|
2232
|
-
children: /* @__PURE__ */
|
|
2331
|
+
children: /* @__PURE__ */ A(Jt, {
|
|
2233
2332
|
waiting: e.waiting,
|
|
2234
2333
|
compact: !0
|
|
2235
2334
|
})
|
|
2236
2335
|
})
|
|
2237
2336
|
]
|
|
2238
2337
|
}, e.actorId)) })]
|
|
2239
|
-
}) : /* @__PURE__ */
|
|
2338
|
+
}) : /* @__PURE__ */ A(Zt, {
|
|
2240
2339
|
title: "No matching instances",
|
|
2241
2340
|
description: "Try another instance ID or state.",
|
|
2242
2341
|
action: "Clear filters",
|
|
@@ -2245,11 +2344,11 @@ function Ft({ client: e, id: t, actorName: n, instances: r, waits: i, range: o,
|
|
|
2245
2344
|
}
|
|
2246
2345
|
})
|
|
2247
2346
|
}),
|
|
2248
|
-
/* @__PURE__ */
|
|
2347
|
+
/* @__PURE__ */ A("p", {
|
|
2249
2348
|
className: "la-observer-connection-note",
|
|
2250
2349
|
children: "Connections are active WebSocket connections, not unique people."
|
|
2251
2350
|
})
|
|
2252
|
-
] }) : /* @__PURE__ */
|
|
2351
|
+
] }) : /* @__PURE__ */ j("p", {
|
|
2253
2352
|
className: "la-observer-instance-empty",
|
|
2254
2353
|
role: "status",
|
|
2255
2354
|
children: [
|
|
@@ -2258,7 +2357,7 @@ function Ft({ client: e, id: t, actorName: n, instances: r, waits: i, range: o,
|
|
|
2258
2357
|
" instances have been created yet."
|
|
2259
2358
|
]
|
|
2260
2359
|
})]
|
|
2261
|
-
}) : /* @__PURE__ */
|
|
2360
|
+
}) : /* @__PURE__ */ A(Wt, {
|
|
2262
2361
|
client: e,
|
|
2263
2362
|
id: t,
|
|
2264
2363
|
actorName: n,
|
|
@@ -2268,52 +2367,52 @@ function Ft({ client: e, id: t, actorName: n, instances: r, waits: i, range: o,
|
|
|
2268
2367
|
range: o
|
|
2269
2368
|
}, s);
|
|
2270
2369
|
}
|
|
2271
|
-
function
|
|
2370
|
+
function Wt({ client: e, id: t, actorName: n, actorId: r, instance: o, waits: s, range: c }) {
|
|
2272
2371
|
let [l, u] = a("requests"), [d, f] = a(), p = i(null), m = !!e.getState && !!e.listStateHistory;
|
|
2273
|
-
return /* @__PURE__ */
|
|
2372
|
+
return /* @__PURE__ */ j("section", {
|
|
2274
2373
|
className: "la-observer-instance-detail",
|
|
2275
2374
|
"aria-label": `${n} / ${r}`,
|
|
2276
2375
|
children: [
|
|
2277
|
-
!o && /* @__PURE__ */
|
|
2376
|
+
!o && /* @__PURE__ */ A("p", {
|
|
2278
2377
|
role: "status",
|
|
2279
2378
|
children: "This instance is no longer in the current inventory. Its retained requests are still available below."
|
|
2280
2379
|
}),
|
|
2281
|
-
/* @__PURE__ */
|
|
2380
|
+
/* @__PURE__ */ j("div", {
|
|
2282
2381
|
className: "la-observer-instance-metrics",
|
|
2283
|
-
children: [s && /* @__PURE__ */
|
|
2382
|
+
children: [s && /* @__PURE__ */ A(Kt, {
|
|
2284
2383
|
stats: s.get(r),
|
|
2285
2384
|
range: c
|
|
2286
|
-
}), o && /* @__PURE__ */
|
|
2385
|
+
}), o && /* @__PURE__ */ A(qt, { waiting: o.waiting })]
|
|
2287
2386
|
}),
|
|
2288
|
-
/* @__PURE__ */
|
|
2387
|
+
/* @__PURE__ */ j("div", {
|
|
2289
2388
|
className: "la-observer-instance-views",
|
|
2290
2389
|
role: "group",
|
|
2291
2390
|
"aria-label": "Instance view",
|
|
2292
2391
|
children: [
|
|
2293
|
-
/* @__PURE__ */
|
|
2392
|
+
/* @__PURE__ */ A(V, {
|
|
2294
2393
|
ref: p,
|
|
2295
2394
|
variant: "ghost",
|
|
2296
2395
|
"aria-pressed": l === "requests",
|
|
2297
2396
|
onClick: () => u("requests"),
|
|
2298
2397
|
children: "Requests"
|
|
2299
2398
|
}),
|
|
2300
|
-
m && /* @__PURE__ */
|
|
2399
|
+
m && /* @__PURE__ */ A(V, {
|
|
2301
2400
|
variant: "ghost",
|
|
2302
2401
|
"aria-pressed": l === "state",
|
|
2303
2402
|
onClick: () => u("state"),
|
|
2304
2403
|
children: "State"
|
|
2305
2404
|
}),
|
|
2306
|
-
o && /* @__PURE__ */
|
|
2405
|
+
o && /* @__PURE__ */ j(V, {
|
|
2307
2406
|
variant: "ghost",
|
|
2308
2407
|
"aria-pressed": l === "websockets",
|
|
2309
2408
|
onClick: () => u("websockets"),
|
|
2310
|
-
children: ["WebSockets ", /* @__PURE__ */
|
|
2409
|
+
children: ["WebSockets ", /* @__PURE__ */ A(W, { children: o.connections.length })]
|
|
2311
2410
|
})
|
|
2312
2411
|
]
|
|
2313
2412
|
}),
|
|
2314
|
-
/* @__PURE__ */
|
|
2413
|
+
/* @__PURE__ */ A("div", {
|
|
2315
2414
|
hidden: l !== "requests",
|
|
2316
|
-
children: e.watchRequests || e.listRequests ? /* @__PURE__ */
|
|
2415
|
+
children: e.watchRequests || e.listRequests ? /* @__PURE__ */ A(mt, {
|
|
2317
2416
|
client: e,
|
|
2318
2417
|
actor: {
|
|
2319
2418
|
actorName: n,
|
|
@@ -2321,11 +2420,11 @@ function It({ client: e, id: t, actorName: n, actorId: r, instance: o, waits: s,
|
|
|
2321
2420
|
},
|
|
2322
2421
|
timeRange: c,
|
|
2323
2422
|
focus: d
|
|
2324
|
-
}) : /* @__PURE__ */
|
|
2423
|
+
}) : /* @__PURE__ */ j("section", { children: [/* @__PURE__ */ A("h3", { children: "Requests" }), /* @__PURE__ */ A("p", { children: "Request timings are unavailable for this connection." })] })
|
|
2325
2424
|
}),
|
|
2326
|
-
/* @__PURE__ */
|
|
2425
|
+
/* @__PURE__ */ A("div", {
|
|
2327
2426
|
hidden: l !== "state",
|
|
2328
|
-
children: m && /* @__PURE__ */
|
|
2427
|
+
children: m && /* @__PURE__ */ A(bt, {
|
|
2329
2428
|
client: e,
|
|
2330
2429
|
actorName: n,
|
|
2331
2430
|
actorId: r,
|
|
@@ -2334,9 +2433,9 @@ function It({ client: e, id: t, actorName: n, actorId: r, instance: o, waits: s,
|
|
|
2334
2433
|
}
|
|
2335
2434
|
})
|
|
2336
2435
|
}),
|
|
2337
|
-
/* @__PURE__ */
|
|
2436
|
+
/* @__PURE__ */ A("div", {
|
|
2338
2437
|
hidden: l !== "websockets",
|
|
2339
|
-
children: o && /* @__PURE__ */
|
|
2438
|
+
children: o && /* @__PURE__ */ A(Yt, {
|
|
2340
2439
|
id: `${t}-connections`,
|
|
2341
2440
|
actorId: r,
|
|
2342
2441
|
connections: o.connections
|
|
@@ -2345,126 +2444,126 @@ function It({ client: e, id: t, actorName: n, actorId: r, instance: o, waits: s,
|
|
|
2345
2444
|
]
|
|
2346
2445
|
});
|
|
2347
2446
|
}
|
|
2348
|
-
function
|
|
2349
|
-
return e ? /* @__PURE__ */
|
|
2447
|
+
function Gt({ stats: e }) {
|
|
2448
|
+
return e ? /* @__PURE__ */ j("span", {
|
|
2350
2449
|
className: "la-observer-wait",
|
|
2351
|
-
title: `Average of ${e.admitted.toLocaleString()} admitted requests in the selected time range; longest wait ${
|
|
2352
|
-
children: [
|
|
2353
|
-
}) : /* @__PURE__ */
|
|
2450
|
+
title: `Average of ${e.admitted.toLocaleString()} admitted requests in the selected time range; longest wait ${Ft(e.maxMs)}`,
|
|
2451
|
+
children: [Ft(e.averageMs), /* @__PURE__ */ j("small", { children: ["max ", Ft(e.maxMs)] })]
|
|
2452
|
+
}) : /* @__PURE__ */ A("span", {
|
|
2354
2453
|
title: "No admitted requests in the selected time range",
|
|
2355
2454
|
children: "—"
|
|
2356
2455
|
});
|
|
2357
2456
|
}
|
|
2358
|
-
function
|
|
2359
|
-
return /* @__PURE__ */
|
|
2457
|
+
function Kt({ stats: e, range: t }) {
|
|
2458
|
+
return /* @__PURE__ */ A("section", {
|
|
2360
2459
|
className: "la-observer-queue-wait-detail",
|
|
2361
2460
|
"aria-label": "Queue wait",
|
|
2362
|
-
title: `Time waiting to enter this actor ${
|
|
2363
|
-
children: e ? /* @__PURE__ */
|
|
2364
|
-
/* @__PURE__ */
|
|
2461
|
+
title: `Time waiting to enter this actor ${U(t)}`,
|
|
2462
|
+
children: e ? /* @__PURE__ */ j("dl", { children: [
|
|
2463
|
+
/* @__PURE__ */ j("div", { children: [/* @__PURE__ */ A("dt", { children: "Avg queue wait" }), /* @__PURE__ */ A("dd", {
|
|
2365
2464
|
"aria-label": "Average queue wait",
|
|
2366
|
-
children:
|
|
2465
|
+
children: Ft(e.averageMs)
|
|
2367
2466
|
})] }),
|
|
2368
|
-
/* @__PURE__ */
|
|
2467
|
+
/* @__PURE__ */ j("div", { children: [/* @__PURE__ */ A("dt", { children: "Max" }), /* @__PURE__ */ A("dd", {
|
|
2369
2468
|
"aria-label": "Longest queue wait",
|
|
2370
|
-
children:
|
|
2469
|
+
children: Ft(e.maxMs)
|
|
2371
2470
|
})] }),
|
|
2372
|
-
/* @__PURE__ */
|
|
2471
|
+
/* @__PURE__ */ j("div", { children: [/* @__PURE__ */ A("dt", { children: "Admitted" }), /* @__PURE__ */ A("dd", {
|
|
2373
2472
|
"aria-label": "Admitted requests",
|
|
2374
2473
|
children: e.admitted.toLocaleString()
|
|
2375
2474
|
})] })
|
|
2376
|
-
] }) : /* @__PURE__ */
|
|
2475
|
+
] }) : /* @__PURE__ */ j("p", { children: [
|
|
2377
2476
|
"No requests admitted ",
|
|
2378
|
-
|
|
2477
|
+
U(t),
|
|
2379
2478
|
"."
|
|
2380
2479
|
] })
|
|
2381
2480
|
});
|
|
2382
2481
|
}
|
|
2383
|
-
function
|
|
2384
|
-
return /* @__PURE__ */
|
|
2482
|
+
function qt({ waiting: e }) {
|
|
2483
|
+
return /* @__PURE__ */ A("section", {
|
|
2385
2484
|
className: "la-observer-waiting",
|
|
2386
2485
|
"aria-label": "Waiting requests",
|
|
2387
|
-
children: e?.length ? /* @__PURE__ */
|
|
2486
|
+
children: e?.length ? /* @__PURE__ */ j(k, { children: [/* @__PURE__ */ j("span", {
|
|
2388
2487
|
className: "la-observer-waiting-label",
|
|
2389
|
-
children: ["Waiting ", /* @__PURE__ */
|
|
2390
|
-
}), /* @__PURE__ */
|
|
2488
|
+
children: ["Waiting ", /* @__PURE__ */ A("strong", { children: e.length })]
|
|
2489
|
+
}), /* @__PURE__ */ A(Jt, { waiting: e })] }) : /* @__PURE__ */ A("p", { children: e == null ? "Queue reporting unavailable" : "No requests waiting." })
|
|
2391
2490
|
});
|
|
2392
2491
|
}
|
|
2393
|
-
function
|
|
2394
|
-
if (e == null) return /* @__PURE__ */
|
|
2492
|
+
function Jt({ waiting: e, compact: t = !1 }) {
|
|
2493
|
+
if (e == null) return /* @__PURE__ */ A("span", {
|
|
2395
2494
|
title: "Queue reporting is unavailable",
|
|
2396
2495
|
children: "Unavailable"
|
|
2397
2496
|
});
|
|
2398
|
-
if (!e.length) return /* @__PURE__ */
|
|
2497
|
+
if (!e.length) return /* @__PURE__ */ A("span", {
|
|
2399
2498
|
className: "la-observer-queue-empty",
|
|
2400
2499
|
children: "None"
|
|
2401
2500
|
});
|
|
2402
2501
|
let n = t ? e.slice(0, 3) : e;
|
|
2403
|
-
return /* @__PURE__ */
|
|
2502
|
+
return /* @__PURE__ */ j("ol", {
|
|
2404
2503
|
className: `la-observer-queue${t ? " la-observer-queue-compact" : ""}`,
|
|
2405
2504
|
"aria-label": `${e.length} waiting requests, next to run first`,
|
|
2406
|
-
children: [n.map((e, n) => /* @__PURE__ */
|
|
2505
|
+
children: [n.map((e, n) => /* @__PURE__ */ A("li", { children: /* @__PURE__ */ j(W, {
|
|
2407
2506
|
variant: "outline",
|
|
2408
2507
|
className: "la-observer-queue-bubble",
|
|
2409
2508
|
title: e.operation,
|
|
2410
|
-
children: [!t && /* @__PURE__ */
|
|
2509
|
+
children: [!t && /* @__PURE__ */ A("span", {
|
|
2411
2510
|
className: "la-observer-queue-position",
|
|
2412
2511
|
children: n + 1
|
|
2413
|
-
}), /* @__PURE__ */
|
|
2512
|
+
}), /* @__PURE__ */ A("span", {
|
|
2414
2513
|
className: "la-observer-queue-operation",
|
|
2415
2514
|
children: e.operation
|
|
2416
2515
|
})]
|
|
2417
|
-
}) }, e.id)), t && e.length > n.length && /* @__PURE__ */
|
|
2516
|
+
}) }, e.id)), t && e.length > n.length && /* @__PURE__ */ A("li", { children: /* @__PURE__ */ j(W, {
|
|
2418
2517
|
"aria-label": `${e.length - n.length} more waiting requests`,
|
|
2419
2518
|
children: ["+", e.length - n.length]
|
|
2420
2519
|
}) })]
|
|
2421
2520
|
});
|
|
2422
2521
|
}
|
|
2423
|
-
function
|
|
2424
|
-
return /* @__PURE__ */
|
|
2522
|
+
function Yt({ id: e, actorId: t, connections: n }) {
|
|
2523
|
+
return /* @__PURE__ */ j("section", {
|
|
2425
2524
|
id: e,
|
|
2426
2525
|
className: "la-observer-connections",
|
|
2427
2526
|
"aria-labelledby": `${e}-heading`,
|
|
2428
|
-
children: [/* @__PURE__ */
|
|
2527
|
+
children: [/* @__PURE__ */ A("div", {
|
|
2429
2528
|
className: "la-observer-instances-heading",
|
|
2430
|
-
children: /* @__PURE__ */
|
|
2529
|
+
children: /* @__PURE__ */ j("div", { children: [/* @__PURE__ */ j("h3", {
|
|
2431
2530
|
id: `${e}-heading`,
|
|
2432
2531
|
children: [
|
|
2433
2532
|
t,
|
|
2434
2533
|
" WebSockets ",
|
|
2435
|
-
/* @__PURE__ */
|
|
2534
|
+
/* @__PURE__ */ A(W, {
|
|
2436
2535
|
"aria-hidden": "true",
|
|
2437
2536
|
children: n.length.toLocaleString()
|
|
2438
2537
|
})
|
|
2439
2538
|
]
|
|
2440
|
-
}), /* @__PURE__ */
|
|
2441
|
-
}), n.length ? /* @__PURE__ */
|
|
2539
|
+
}), /* @__PURE__ */ A("p", { children: `${n.length.toLocaleString()} active ${n.length === 1 ? "connection" : "connections"}` })] })
|
|
2540
|
+
}), n.length ? /* @__PURE__ */ A("div", {
|
|
2442
2541
|
className: "la-observer-table-frame",
|
|
2443
|
-
children: /* @__PURE__ */
|
|
2542
|
+
children: /* @__PURE__ */ j(K, {
|
|
2444
2543
|
"aria-label": `${t} WebSocket connections`,
|
|
2445
2544
|
className: "la-observer-connection-table",
|
|
2446
|
-
children: [/* @__PURE__ */
|
|
2545
|
+
children: [/* @__PURE__ */ A(q, { children: /* @__PURE__ */ j(Y, { children: [/* @__PURE__ */ A(X, {
|
|
2447
2546
|
scope: "col",
|
|
2448
2547
|
children: "Socket"
|
|
2449
|
-
}), /* @__PURE__ */
|
|
2548
|
+
}), /* @__PURE__ */ A(X, {
|
|
2450
2549
|
scope: "col",
|
|
2451
2550
|
children: "Metadata"
|
|
2452
|
-
})] }) }), /* @__PURE__ */
|
|
2551
|
+
})] }) }), /* @__PURE__ */ A(J, { children: n.map((e) => /* @__PURE__ */ j(Y, { children: [/* @__PURE__ */ A(Z, {
|
|
2453
2552
|
className: "la-observer-socket-id",
|
|
2454
2553
|
children: e.id
|
|
2455
|
-
}), /* @__PURE__ */
|
|
2554
|
+
}), /* @__PURE__ */ A(Z, { children: /* @__PURE__ */ A("pre", { children: JSON.stringify(e.metadata, null, 2) }) })] }, e.id)) })]
|
|
2456
2555
|
})
|
|
2457
|
-
}) : /* @__PURE__ */
|
|
2556
|
+
}) : /* @__PURE__ */ j("div", {
|
|
2458
2557
|
className: "la-observer-no-connections",
|
|
2459
2558
|
role: "status",
|
|
2460
|
-
children: [/* @__PURE__ */
|
|
2559
|
+
children: [/* @__PURE__ */ A(w, { "aria-hidden": "true" }), /* @__PURE__ */ A("p", { children: "No active WebSocket connections." })]
|
|
2461
2560
|
})]
|
|
2462
2561
|
});
|
|
2463
2562
|
}
|
|
2464
|
-
function
|
|
2465
|
-
return /* @__PURE__ */
|
|
2563
|
+
function Xt({ label: e, placeholder: t, value: n, onChange: r }) {
|
|
2564
|
+
return /* @__PURE__ */ j("div", {
|
|
2466
2565
|
className: "la-observer-search",
|
|
2467
|
-
children: [/* @__PURE__ */
|
|
2566
|
+
children: [/* @__PURE__ */ A(x, { "aria-hidden": "true" }), /* @__PURE__ */ A(H, {
|
|
2468
2567
|
type: "search",
|
|
2469
2568
|
"aria-label": e,
|
|
2470
2569
|
placeholder: t,
|
|
@@ -2473,14 +2572,14 @@ function Ht({ label: e, placeholder: t, value: n, onChange: r }) {
|
|
|
2473
2572
|
})]
|
|
2474
2573
|
});
|
|
2475
2574
|
}
|
|
2476
|
-
function
|
|
2477
|
-
return /* @__PURE__ */
|
|
2575
|
+
function Zt({ title: e, description: t, action: n, onReset: r }) {
|
|
2576
|
+
return /* @__PURE__ */ j("div", {
|
|
2478
2577
|
className: "la-observer-empty",
|
|
2479
2578
|
children: [
|
|
2480
|
-
/* @__PURE__ */
|
|
2481
|
-
/* @__PURE__ */
|
|
2482
|
-
/* @__PURE__ */
|
|
2483
|
-
n && /* @__PURE__ */
|
|
2579
|
+
/* @__PURE__ */ A(x, { "aria-hidden": "true" }),
|
|
2580
|
+
/* @__PURE__ */ A("h3", { children: e }),
|
|
2581
|
+
/* @__PURE__ */ A("p", { children: t }),
|
|
2582
|
+
n && /* @__PURE__ */ A(V, {
|
|
2484
2583
|
type: "button",
|
|
2485
2584
|
variant: "outline",
|
|
2486
2585
|
onClick: r,
|
|
@@ -2489,26 +2588,26 @@ function Ut({ title: e, description: t, action: n, onReset: r }) {
|
|
|
2489
2588
|
]
|
|
2490
2589
|
});
|
|
2491
2590
|
}
|
|
2492
|
-
function
|
|
2591
|
+
function Qt(e, t) {
|
|
2493
2592
|
return e.toLocaleLowerCase().includes(t.trim().toLocaleLowerCase());
|
|
2494
2593
|
}
|
|
2495
|
-
function
|
|
2594
|
+
function $t(e) {
|
|
2496
2595
|
return e[0].toUpperCase() + e.slice(1);
|
|
2497
2596
|
}
|
|
2498
2597
|
//#endregion
|
|
2499
2598
|
//#region src/overview-data.ts
|
|
2500
|
-
function
|
|
2599
|
+
function en(e) {
|
|
2501
2600
|
let t = e.filter((e) => e.outcome !== "rerouted");
|
|
2502
2601
|
return {
|
|
2503
2602
|
count: e.length,
|
|
2504
2603
|
success: t.length ? 100 * t.filter((e) => e.outcome === "completed").length / t.length : null,
|
|
2505
|
-
p95:
|
|
2604
|
+
p95: an(t.map((e) => e.durationMs))
|
|
2506
2605
|
};
|
|
2507
2606
|
}
|
|
2508
|
-
function
|
|
2607
|
+
function tn(e, t, n) {
|
|
2509
2608
|
return e.filter((e) => e.startedAtMs >= (t.fromMs ?? 0) && e.startedAtMs <= (t.toMs ?? n));
|
|
2510
2609
|
}
|
|
2511
|
-
function
|
|
2610
|
+
function nn(e) {
|
|
2512
2611
|
return e.actors.reduce((e, t) => ({
|
|
2513
2612
|
live: e.live + t.live,
|
|
2514
2613
|
dormant: e.dormant + t.dormant,
|
|
@@ -2521,33 +2620,33 @@ function Jt(e) {
|
|
|
2521
2620
|
connections: 0
|
|
2522
2621
|
});
|
|
2523
2622
|
}
|
|
2524
|
-
function
|
|
2525
|
-
return
|
|
2623
|
+
function rn(e) {
|
|
2624
|
+
return an(e.filter((e) => e.outcome !== "rerouted" && e.queueWaitMs !== null).map((e) => e.queueWaitMs));
|
|
2526
2625
|
}
|
|
2527
|
-
function
|
|
2626
|
+
function an(e) {
|
|
2528
2627
|
return e.length ? e.sort((e, t) => e - t)[Math.ceil(e.length * .95) - 1] : null;
|
|
2529
2628
|
}
|
|
2530
2629
|
//#endregion
|
|
2531
2630
|
//#region src/overview-metrics.ts
|
|
2532
|
-
function
|
|
2631
|
+
function on(e) {
|
|
2533
2632
|
let t = e;
|
|
2534
|
-
if (!t || !
|
|
2633
|
+
if (!t || !sn(t.total) || !Array.isArray(t.classes) || !t.classes.every(sn)) throw Error("Invalid overview metrics response");
|
|
2535
2634
|
return t;
|
|
2536
2635
|
}
|
|
2537
|
-
function
|
|
2636
|
+
function sn(e) {
|
|
2538
2637
|
return !!e && typeof e.actorName == "string" && Number.isSafeInteger(e.count) && e.count >= 0 && [
|
|
2539
2638
|
e.success,
|
|
2540
2639
|
e.p95,
|
|
2541
2640
|
e.queueP95
|
|
2542
2641
|
].every((e) => e === null || typeof e == "number" && Number.isFinite(e) && e >= 0) && (e.success === null || e.success <= 100);
|
|
2543
2642
|
}
|
|
2544
|
-
function
|
|
2643
|
+
function cn(e) {
|
|
2545
2644
|
let t = /* @__PURE__ */ new Map();
|
|
2546
2645
|
for (let n of e) t.set(n.actorName, [...t.get(n.actorName) ?? [], n]);
|
|
2547
2646
|
let n = (e, t) => ({
|
|
2548
2647
|
actorName: e,
|
|
2549
|
-
...
|
|
2550
|
-
queueP95:
|
|
2648
|
+
...en(t),
|
|
2649
|
+
queueP95: rn(t)
|
|
2551
2650
|
});
|
|
2552
2651
|
return {
|
|
2553
2652
|
total: n("", e),
|
|
@@ -2556,47 +2655,47 @@ function $t(e) {
|
|
|
2556
2655
|
}
|
|
2557
2656
|
//#endregion
|
|
2558
2657
|
//#region src/Overview.tsx
|
|
2559
|
-
function
|
|
2560
|
-
let o =
|
|
2658
|
+
function ln({ client: e, onSelectActor: n, timeRange: r, onTimeRangeChange: i }) {
|
|
2659
|
+
let o = lt(e), [s, c] = a(Le), l = r ?? s, u = i ?? c, [d, f] = a(Date.now);
|
|
2561
2660
|
t(() => {
|
|
2562
2661
|
let e = setInterval(() => f(Date.now()), 1e4);
|
|
2563
2662
|
return () => clearInterval(e);
|
|
2564
2663
|
}, []);
|
|
2565
|
-
let p =
|
|
2566
|
-
return /* @__PURE__ */
|
|
2664
|
+
let p = Re(l, d), m = ft(e, p, e.getMetrics), h = ut(e, !m.supported), g = h.page ? cn(tn(h.page.records, p, Math.max(d, Date.now()))) : void 0, _ = m.supported ? m.value : g, v = m.supported ? m.failed : h.failed;
|
|
2665
|
+
return /* @__PURE__ */ j("section", {
|
|
2567
2666
|
className: "la-observer overview",
|
|
2568
2667
|
"aria-label": "Runtime overview",
|
|
2569
2668
|
children: [
|
|
2570
|
-
/* @__PURE__ */
|
|
2669
|
+
/* @__PURE__ */ j("div", {
|
|
2571
2670
|
className: "overview-heading",
|
|
2572
|
-
children: [/* @__PURE__ */
|
|
2671
|
+
children: [/* @__PURE__ */ A("h1", { children: "Durable Actors" }), /* @__PURE__ */ j("div", {
|
|
2573
2672
|
className: "overview-controls",
|
|
2574
2673
|
children: [
|
|
2575
|
-
/* @__PURE__ */
|
|
2674
|
+
/* @__PURE__ */ A("span", {
|
|
2576
2675
|
className: "overview-updated",
|
|
2577
|
-
children: o.failed ? "Inventory reconnecting…" : o.updatedAt ? /* @__PURE__ */
|
|
2676
|
+
children: o.failed ? "Inventory reconnecting…" : o.updatedAt ? /* @__PURE__ */ j(k, { children: ["Last inventory update ", /* @__PURE__ */ A("time", {
|
|
2578
2677
|
dateTime: new Date(o.updatedAt).toISOString(),
|
|
2579
2678
|
children: new Date(o.updatedAt).toLocaleTimeString([], { hour12: !1 })
|
|
2580
2679
|
})] }) : "Connecting…"
|
|
2581
2680
|
}),
|
|
2582
|
-
/* @__PURE__ */
|
|
2681
|
+
/* @__PURE__ */ A(He, {
|
|
2583
2682
|
value: l,
|
|
2584
2683
|
onChange: u,
|
|
2585
2684
|
className: "overview-range"
|
|
2586
2685
|
}),
|
|
2587
|
-
/* @__PURE__ */
|
|
2686
|
+
/* @__PURE__ */ A(V, {
|
|
2588
2687
|
variant: "outline",
|
|
2589
2688
|
size: "icon",
|
|
2590
2689
|
"aria-label": "Refresh overview",
|
|
2591
2690
|
onClick: () => {
|
|
2592
2691
|
o.retry(), m.retry(), h.retry();
|
|
2593
2692
|
},
|
|
2594
|
-
children: /* @__PURE__ */
|
|
2693
|
+
children: /* @__PURE__ */ A(ne, { "aria-hidden": "true" })
|
|
2595
2694
|
})
|
|
2596
2695
|
]
|
|
2597
2696
|
})]
|
|
2598
2697
|
}),
|
|
2599
|
-
o.failed && /* @__PURE__ */
|
|
2698
|
+
o.failed && /* @__PURE__ */ j("p", {
|
|
2600
2699
|
className: "overview-alert",
|
|
2601
2700
|
role: "alert",
|
|
2602
2701
|
children: [
|
|
@@ -2605,7 +2704,7 @@ function en({ client: e, onSelectActor: n, timeRange: r, onTimeRangeChange: i })
|
|
|
2605
2704
|
" Retrying automatically."
|
|
2606
2705
|
]
|
|
2607
2706
|
}),
|
|
2608
|
-
v && /* @__PURE__ */
|
|
2707
|
+
v && /* @__PURE__ */ j("p", {
|
|
2609
2708
|
className: "overview-alert",
|
|
2610
2709
|
role: "alert",
|
|
2611
2710
|
children: [
|
|
@@ -2616,18 +2715,18 @@ function en({ client: e, onSelectActor: n, timeRange: r, onTimeRangeChange: i })
|
|
|
2616
2715
|
"Retrying automatically."
|
|
2617
2716
|
]
|
|
2618
2717
|
}),
|
|
2619
|
-
/* @__PURE__ */
|
|
2718
|
+
/* @__PURE__ */ A(un, {
|
|
2620
2719
|
inventory: o.inventory,
|
|
2621
2720
|
metrics: _,
|
|
2622
2721
|
range: l
|
|
2623
2722
|
}),
|
|
2624
|
-
/* @__PURE__ */
|
|
2723
|
+
/* @__PURE__ */ A(dn, {
|
|
2625
2724
|
inventory: o.inventory,
|
|
2626
2725
|
metrics: _,
|
|
2627
2726
|
failed: o.failed,
|
|
2628
2727
|
onSelectActor: n
|
|
2629
2728
|
}),
|
|
2630
|
-
/* @__PURE__ */
|
|
2729
|
+
/* @__PURE__ */ A(hn, {
|
|
2631
2730
|
page: m.supported ? void 0 : h.page,
|
|
2632
2731
|
range: l,
|
|
2633
2732
|
saved: m.supported
|
|
@@ -2635,133 +2734,133 @@ function en({ client: e, onSelectActor: n, timeRange: r, onTimeRangeChange: i })
|
|
|
2635
2734
|
]
|
|
2636
2735
|
});
|
|
2637
2736
|
}
|
|
2638
|
-
function
|
|
2639
|
-
let r = e ?
|
|
2640
|
-
return /* @__PURE__ */
|
|
2737
|
+
function un({ inventory: e, metrics: t, range: n }) {
|
|
2738
|
+
let r = e ? nn(e) : void 0, i = r ? r.live + r.dormant + r.unknown : void 0, a = t?.total;
|
|
2739
|
+
return /* @__PURE__ */ j("div", {
|
|
2641
2740
|
className: "overview-metrics",
|
|
2642
2741
|
children: [
|
|
2643
|
-
/* @__PURE__ */
|
|
2742
|
+
/* @__PURE__ */ j("section", {
|
|
2644
2743
|
className: "overview-metric",
|
|
2645
2744
|
children: [
|
|
2646
|
-
/* @__PURE__ */
|
|
2647
|
-
/* @__PURE__ */
|
|
2745
|
+
/* @__PURE__ */ A("h2", { children: "Actor instances" }),
|
|
2746
|
+
/* @__PURE__ */ j("div", {
|
|
2648
2747
|
className: "overview-value",
|
|
2649
|
-
children: [/* @__PURE__ */
|
|
2748
|
+
children: [/* @__PURE__ */ A("strong", {
|
|
2650
2749
|
"aria-label": "Actor instances",
|
|
2651
|
-
children:
|
|
2652
|
-
}), /* @__PURE__ */
|
|
2750
|
+
children: Q(i)
|
|
2751
|
+
}), /* @__PURE__ */ A("span", { children: e ? `${e.actors.length} actor ${e.actors.length === 1 ? "class" : "classes"}` : "Waiting for inventory" })]
|
|
2653
2752
|
}),
|
|
2654
|
-
/* @__PURE__ */
|
|
2753
|
+
/* @__PURE__ */ A("div", {
|
|
2655
2754
|
className: "overview-residency",
|
|
2656
2755
|
"aria-hidden": "true",
|
|
2657
|
-
children: r && Object.entries(r).filter(([e]) => e !== "connections").map(([e, t]) => /* @__PURE__ */
|
|
2756
|
+
children: r && Object.entries(r).filter(([e]) => e !== "connections").map(([e, t]) => /* @__PURE__ */ A("span", {
|
|
2658
2757
|
className: `residency-${e}`,
|
|
2659
2758
|
style: { flexGrow: t }
|
|
2660
2759
|
}, e))
|
|
2661
2760
|
}),
|
|
2662
|
-
/* @__PURE__ */
|
|
2761
|
+
/* @__PURE__ */ j("div", {
|
|
2663
2762
|
className: "overview-metric-foot",
|
|
2664
2763
|
children: [
|
|
2665
|
-
/* @__PURE__ */
|
|
2666
|
-
/* @__PURE__ */
|
|
2667
|
-
!!r?.unknown && /* @__PURE__ */
|
|
2764
|
+
/* @__PURE__ */ j("span", { children: [/* @__PURE__ */ A("b", { children: Q(r?.live) }), " live"] }),
|
|
2765
|
+
/* @__PURE__ */ j("span", { children: [/* @__PURE__ */ A("b", { children: Q(r?.dormant) }), " dormant"] }),
|
|
2766
|
+
!!r?.unknown && /* @__PURE__ */ j("span", { children: [/* @__PURE__ */ A("b", { children: Q(r.unknown) }), " unknown"] })
|
|
2668
2767
|
]
|
|
2669
2768
|
})
|
|
2670
2769
|
]
|
|
2671
2770
|
}),
|
|
2672
|
-
/* @__PURE__ */
|
|
2771
|
+
/* @__PURE__ */ j("section", {
|
|
2673
2772
|
className: "overview-metric",
|
|
2674
2773
|
children: [
|
|
2675
|
-
/* @__PURE__ */
|
|
2676
|
-
/* @__PURE__ */
|
|
2774
|
+
/* @__PURE__ */ A("h2", { children: "Requests" }),
|
|
2775
|
+
/* @__PURE__ */ j("div", {
|
|
2677
2776
|
className: "overview-value",
|
|
2678
|
-
children: [/* @__PURE__ */
|
|
2777
|
+
children: [/* @__PURE__ */ A("strong", {
|
|
2679
2778
|
"aria-label": "Retained requests",
|
|
2680
|
-
children:
|
|
2681
|
-
}), /* @__PURE__ */
|
|
2779
|
+
children: Q(a?.count)
|
|
2780
|
+
}), /* @__PURE__ */ A("span", { children: U(n) })]
|
|
2682
2781
|
}),
|
|
2683
|
-
/* @__PURE__ */
|
|
2782
|
+
/* @__PURE__ */ j("div", {
|
|
2684
2783
|
className: "overview-health",
|
|
2685
2784
|
children: [
|
|
2686
|
-
/* @__PURE__ */
|
|
2785
|
+
/* @__PURE__ */ j("span", { children: [/* @__PURE__ */ A(pn, {
|
|
2687
2786
|
value: a?.success,
|
|
2688
2787
|
kind: "success"
|
|
2689
2788
|
}), " success"] }),
|
|
2690
|
-
/* @__PURE__ */
|
|
2789
|
+
/* @__PURE__ */ j("span", { children: [/* @__PURE__ */ A(pn, {
|
|
2691
2790
|
value: a?.p95,
|
|
2692
2791
|
kind: "latency"
|
|
2693
2792
|
}), " p95 latency"] }),
|
|
2694
|
-
/* @__PURE__ */
|
|
2793
|
+
/* @__PURE__ */ j("span", { children: [/* @__PURE__ */ A("b", { children: _n(a?.queueP95) }), " p95 queue wait"] })
|
|
2695
2794
|
]
|
|
2696
2795
|
})
|
|
2697
2796
|
]
|
|
2698
2797
|
}),
|
|
2699
|
-
/* @__PURE__ */
|
|
2798
|
+
/* @__PURE__ */ j("section", {
|
|
2700
2799
|
className: "overview-metric",
|
|
2701
2800
|
children: [
|
|
2702
|
-
/* @__PURE__ */
|
|
2703
|
-
/* @__PURE__ */
|
|
2801
|
+
/* @__PURE__ */ A("h2", { children: "WebSocket connections" }),
|
|
2802
|
+
/* @__PURE__ */ j("div", {
|
|
2704
2803
|
className: "overview-value",
|
|
2705
|
-
children: [/* @__PURE__ */
|
|
2804
|
+
children: [/* @__PURE__ */ A("strong", {
|
|
2706
2805
|
"aria-label": "Open WebSocket connections",
|
|
2707
|
-
children:
|
|
2708
|
-
}), /* @__PURE__ */
|
|
2806
|
+
children: Q(r?.connections)
|
|
2807
|
+
}), /* @__PURE__ */ A("span", { children: "open" })]
|
|
2709
2808
|
}),
|
|
2710
|
-
/* @__PURE__ */
|
|
2809
|
+
/* @__PURE__ */ j("div", {
|
|
2711
2810
|
className: "overview-health",
|
|
2712
|
-
children: [/* @__PURE__ */
|
|
2811
|
+
children: [/* @__PURE__ */ A("span", { children: "Current inventory snapshot" }), /* @__PURE__ */ A("span", { children: "Active sockets" })]
|
|
2713
2812
|
})
|
|
2714
2813
|
]
|
|
2715
2814
|
})
|
|
2716
2815
|
]
|
|
2717
2816
|
});
|
|
2718
2817
|
}
|
|
2719
|
-
function
|
|
2818
|
+
function dn({ inventory: e, metrics: t, failed: n, onSelectActor: r }) {
|
|
2720
2819
|
let [i, o] = a(""), [s, c] = a("all"), l = e?.actors.filter((e) => e.actorName.toLocaleLowerCase().includes(i.trim().toLocaleLowerCase()) && (s === "all" || e[s] > 0)).sort((e, t) => Number(t.live > 0) - Number(e.live > 0)) ?? [];
|
|
2721
|
-
return /* @__PURE__ */
|
|
2820
|
+
return /* @__PURE__ */ j("section", {
|
|
2722
2821
|
"aria-label": "Actor classes",
|
|
2723
|
-
children: [/* @__PURE__ */
|
|
2822
|
+
children: [/* @__PURE__ */ j("div", {
|
|
2724
2823
|
className: "overview-section-heading",
|
|
2725
|
-
children: [/* @__PURE__ */
|
|
2726
|
-
}), /* @__PURE__ */
|
|
2824
|
+
children: [/* @__PURE__ */ j("h2", { children: ["Actor classes ", /* @__PURE__ */ A("span", { children: Q(e?.actors.length) })] }), /* @__PURE__ */ A(mn, {})]
|
|
2825
|
+
}), /* @__PURE__ */ j("div", {
|
|
2727
2826
|
className: "overview-panel",
|
|
2728
2827
|
children: [
|
|
2729
|
-
/* @__PURE__ */
|
|
2828
|
+
/* @__PURE__ */ j("div", {
|
|
2730
2829
|
className: "overview-filterbar",
|
|
2731
|
-
children: [/* @__PURE__ */
|
|
2830
|
+
children: [/* @__PURE__ */ j("div", {
|
|
2732
2831
|
className: "overview-search",
|
|
2733
|
-
children: [/* @__PURE__ */
|
|
2832
|
+
children: [/* @__PURE__ */ A(x, { "aria-hidden": "true" }), /* @__PURE__ */ A(H, {
|
|
2734
2833
|
"aria-label": "Filter actor classes",
|
|
2735
2834
|
placeholder: "Filter actor classes…",
|
|
2736
2835
|
value: i,
|
|
2737
2836
|
onInput: (e) => o(e.currentTarget.value)
|
|
2738
2837
|
})]
|
|
2739
|
-
}), /* @__PURE__ */
|
|
2838
|
+
}), /* @__PURE__ */ j(ot, {
|
|
2740
2839
|
"aria-label": "Filter by residency",
|
|
2741
2840
|
size: "sm",
|
|
2742
2841
|
value: s,
|
|
2743
2842
|
onChange: (e) => c(e.target.value),
|
|
2744
2843
|
children: [
|
|
2745
|
-
/* @__PURE__ */
|
|
2844
|
+
/* @__PURE__ */ A(G, {
|
|
2746
2845
|
value: "all",
|
|
2747
2846
|
children: "All states"
|
|
2748
2847
|
}),
|
|
2749
|
-
/* @__PURE__ */
|
|
2848
|
+
/* @__PURE__ */ A(G, {
|
|
2750
2849
|
value: "live",
|
|
2751
2850
|
children: "Live instances"
|
|
2752
2851
|
}),
|
|
2753
|
-
/* @__PURE__ */
|
|
2852
|
+
/* @__PURE__ */ A(G, {
|
|
2754
2853
|
value: "dormant",
|
|
2755
2854
|
children: "Dormant instances"
|
|
2756
2855
|
}),
|
|
2757
|
-
/* @__PURE__ */
|
|
2856
|
+
/* @__PURE__ */ A(G, {
|
|
2758
2857
|
value: "unknown",
|
|
2759
2858
|
children: "Unknown residency"
|
|
2760
2859
|
})
|
|
2761
2860
|
]
|
|
2762
2861
|
})]
|
|
2763
2862
|
}),
|
|
2764
|
-
/* @__PURE__ */
|
|
2863
|
+
/* @__PURE__ */ j(K, {
|
|
2765
2864
|
className: "overview-table",
|
|
2766
2865
|
"aria-label": "Actor class metrics",
|
|
2767
2866
|
containerProps: {
|
|
@@ -2771,69 +2870,69 @@ function nn({ inventory: e, metrics: t, failed: n, onSelectActor: r }) {
|
|
|
2771
2870
|
tabIndex: 0
|
|
2772
2871
|
},
|
|
2773
2872
|
children: [
|
|
2774
|
-
/* @__PURE__ */
|
|
2775
|
-
/* @__PURE__ */
|
|
2873
|
+
/* @__PURE__ */ j("colgroup", { children: [/* @__PURE__ */ A("col", { className: "overview-class-column" }), /* @__PURE__ */ A("col", { span: 6 })] }),
|
|
2874
|
+
/* @__PURE__ */ j(q, { children: [/* @__PURE__ */ j(Y, {
|
|
2776
2875
|
className: "overview-groups",
|
|
2777
2876
|
children: [
|
|
2778
|
-
/* @__PURE__ */
|
|
2877
|
+
/* @__PURE__ */ A(X, {
|
|
2779
2878
|
scope: "colgroup",
|
|
2780
2879
|
colSpan: 2,
|
|
2781
2880
|
children: "Actors"
|
|
2782
2881
|
}),
|
|
2783
|
-
/* @__PURE__ */
|
|
2882
|
+
/* @__PURE__ */ A(X, {
|
|
2784
2883
|
scope: "colgroup",
|
|
2785
2884
|
colSpan: 4,
|
|
2786
2885
|
children: "Requests"
|
|
2787
2886
|
}),
|
|
2788
|
-
/* @__PURE__ */
|
|
2887
|
+
/* @__PURE__ */ A(X, {
|
|
2789
2888
|
scope: "colgroup",
|
|
2790
2889
|
children: "WebSockets"
|
|
2791
2890
|
})
|
|
2792
2891
|
]
|
|
2793
|
-
}), /* @__PURE__ */
|
|
2794
|
-
/* @__PURE__ */
|
|
2892
|
+
}), /* @__PURE__ */ j(Y, { children: [
|
|
2893
|
+
/* @__PURE__ */ A(X, {
|
|
2795
2894
|
scope: "col",
|
|
2796
2895
|
children: "Class"
|
|
2797
2896
|
}),
|
|
2798
|
-
/* @__PURE__ */
|
|
2897
|
+
/* @__PURE__ */ A(X, {
|
|
2799
2898
|
scope: "col",
|
|
2800
2899
|
children: "Instances"
|
|
2801
2900
|
}),
|
|
2802
|
-
/* @__PURE__ */
|
|
2901
|
+
/* @__PURE__ */ A(X, {
|
|
2803
2902
|
scope: "col",
|
|
2804
2903
|
children: "Total"
|
|
2805
2904
|
}),
|
|
2806
|
-
/* @__PURE__ */
|
|
2905
|
+
/* @__PURE__ */ A(X, {
|
|
2807
2906
|
scope: "col",
|
|
2808
2907
|
children: "Success"
|
|
2809
2908
|
}),
|
|
2810
|
-
/* @__PURE__ */
|
|
2909
|
+
/* @__PURE__ */ A(X, {
|
|
2811
2910
|
scope: "col",
|
|
2812
2911
|
children: "p95 latency"
|
|
2813
2912
|
}),
|
|
2814
|
-
/* @__PURE__ */
|
|
2913
|
+
/* @__PURE__ */ A(X, {
|
|
2815
2914
|
scope: "col",
|
|
2816
2915
|
children: "p95 queue wait"
|
|
2817
2916
|
}),
|
|
2818
|
-
/* @__PURE__ */
|
|
2917
|
+
/* @__PURE__ */ A(X, {
|
|
2819
2918
|
scope: "col",
|
|
2820
2919
|
children: "Connected"
|
|
2821
2920
|
})
|
|
2822
2921
|
] })] }),
|
|
2823
|
-
/* @__PURE__ */
|
|
2922
|
+
/* @__PURE__ */ A(J, { children: l.map((e) => /* @__PURE__ */ A(fn, {
|
|
2824
2923
|
actor: e,
|
|
2825
|
-
metrics: t && (t.classes.find((t) => t.actorName === e.actorName) ??
|
|
2924
|
+
metrics: t && (t.classes.find((t) => t.actorName === e.actorName) ?? gn(e.actorName)),
|
|
2826
2925
|
onSelectActor: r
|
|
2827
2926
|
}, e.actorName)) })
|
|
2828
2927
|
]
|
|
2829
2928
|
}),
|
|
2830
|
-
!l.length && /* @__PURE__ */
|
|
2929
|
+
!l.length && /* @__PURE__ */ j("div", {
|
|
2831
2930
|
className: "overview-empty",
|
|
2832
2931
|
role: "status",
|
|
2833
2932
|
children: [
|
|
2834
|
-
/* @__PURE__ */
|
|
2835
|
-
/* @__PURE__ */
|
|
2836
|
-
!!e?.actors.length && /* @__PURE__ */
|
|
2933
|
+
/* @__PURE__ */ A("strong", { children: e ? e.actors.length ? "No matching actor classes" : "No actors yet" : n ? "Inventory unavailable" : "Loading actor classes…" }),
|
|
2934
|
+
/* @__PURE__ */ A("p", { children: e?.actors.length ? "Try another class name or residency state." : "Actor classes appear after deployment." }),
|
|
2935
|
+
!!e?.actors.length && /* @__PURE__ */ A(V, {
|
|
2837
2936
|
variant: "outline",
|
|
2838
2937
|
onClick: () => {
|
|
2839
2938
|
o(""), c("all");
|
|
@@ -2846,88 +2945,88 @@ function nn({ inventory: e, metrics: t, failed: n, onSelectActor: r }) {
|
|
|
2846
2945
|
})]
|
|
2847
2946
|
});
|
|
2848
2947
|
}
|
|
2849
|
-
function
|
|
2850
|
-
return /* @__PURE__ */
|
|
2948
|
+
function fn({ actor: e, metrics: t, onSelectActor: n }) {
|
|
2949
|
+
return /* @__PURE__ */ j(Y, {
|
|
2851
2950
|
className: "la-clickable-row",
|
|
2852
2951
|
onClick: () => n(e.actorName),
|
|
2853
2952
|
children: [
|
|
2854
|
-
/* @__PURE__ */
|
|
2953
|
+
/* @__PURE__ */ A(Z, { children: /* @__PURE__ */ A(V, {
|
|
2855
2954
|
variant: "ghost",
|
|
2856
2955
|
type: "button",
|
|
2857
2956
|
className: "overview-class-link",
|
|
2858
2957
|
"aria-label": `Inspect ${e.actorName}`,
|
|
2859
|
-
children: /* @__PURE__ */
|
|
2958
|
+
children: /* @__PURE__ */ A("span", {
|
|
2860
2959
|
title: e.actorName,
|
|
2861
2960
|
children: e.actorName
|
|
2862
2961
|
})
|
|
2863
2962
|
}) }),
|
|
2864
|
-
/* @__PURE__ */
|
|
2865
|
-
/* @__PURE__ */
|
|
2866
|
-
/* @__PURE__ */
|
|
2963
|
+
/* @__PURE__ */ A(Z, { children: Q(e.live + e.dormant + e.unknown) }),
|
|
2964
|
+
/* @__PURE__ */ A(Z, { children: Q(t?.count) }),
|
|
2965
|
+
/* @__PURE__ */ A(Z, { children: /* @__PURE__ */ A(pn, {
|
|
2867
2966
|
value: t?.success,
|
|
2868
2967
|
kind: "success"
|
|
2869
2968
|
}) }),
|
|
2870
|
-
/* @__PURE__ */
|
|
2969
|
+
/* @__PURE__ */ A(Z, { children: /* @__PURE__ */ A(pn, {
|
|
2871
2970
|
value: t?.p95,
|
|
2872
2971
|
kind: "latency"
|
|
2873
2972
|
}) }),
|
|
2874
|
-
/* @__PURE__ */
|
|
2875
|
-
/* @__PURE__ */
|
|
2973
|
+
/* @__PURE__ */ A(Z, { children: _n(t?.queueP95) }),
|
|
2974
|
+
/* @__PURE__ */ A(Z, { children: Q(e.instances.reduce((e, t) => e + t.connections.length, 0)) })
|
|
2876
2975
|
]
|
|
2877
2976
|
});
|
|
2878
2977
|
}
|
|
2879
|
-
function
|
|
2880
|
-
if (e == null) return /* @__PURE__ */
|
|
2978
|
+
function pn({ value: e, kind: t }) {
|
|
2979
|
+
if (e == null) return /* @__PURE__ */ A("span", {
|
|
2881
2980
|
title: "No retained execution attempts",
|
|
2882
2981
|
children: "—"
|
|
2883
2982
|
});
|
|
2884
2983
|
let n = t === "success" ? e < 95 ? "bad" : e < 99 ? "warn" : "good" : e > 100 ? "bad" : "good";
|
|
2885
|
-
return /* @__PURE__ */
|
|
2984
|
+
return /* @__PURE__ */ j("span", {
|
|
2886
2985
|
className: `overview-signal signal-${n}`,
|
|
2887
2986
|
title: n === "bad" ? "Critical threshold breached" : n === "warn" ? "Warning threshold breached" : "Within threshold",
|
|
2888
|
-
children: [n !== "good" && /* @__PURE__ */
|
|
2987
|
+
children: [n !== "good" && /* @__PURE__ */ A("span", {
|
|
2889
2988
|
"aria-hidden": "true",
|
|
2890
2989
|
children: n === "warn" ? "!" : "×"
|
|
2891
|
-
}), t === "success" ? `${e.toLocaleString(void 0, { maximumFractionDigits: 2 })}%` :
|
|
2990
|
+
}), t === "success" ? `${e.toLocaleString(void 0, { maximumFractionDigits: 2 })}%` : _n(e)]
|
|
2892
2991
|
});
|
|
2893
2992
|
}
|
|
2894
|
-
function
|
|
2895
|
-
return /* @__PURE__ */
|
|
2993
|
+
function mn() {
|
|
2994
|
+
return /* @__PURE__ */ j("details", {
|
|
2896
2995
|
className: "overview-thresholds",
|
|
2897
|
-
children: [/* @__PURE__ */
|
|
2996
|
+
children: [/* @__PURE__ */ j("summary", { children: [/* @__PURE__ */ j("span", {
|
|
2898
2997
|
className: "threshold-dots",
|
|
2899
2998
|
"aria-hidden": "true",
|
|
2900
2999
|
children: [
|
|
2901
|
-
/* @__PURE__ */
|
|
2902
|
-
/* @__PURE__ */
|
|
2903
|
-
/* @__PURE__ */
|
|
3000
|
+
/* @__PURE__ */ A("i", {}),
|
|
3001
|
+
/* @__PURE__ */ A("i", {}),
|
|
3002
|
+
/* @__PURE__ */ A("i", {})
|
|
2904
3003
|
]
|
|
2905
|
-
}), "Thresholds"] }), /* @__PURE__ */
|
|
2906
|
-
/* @__PURE__ */
|
|
2907
|
-
/* @__PURE__ */
|
|
2908
|
-
/* @__PURE__ */
|
|
2909
|
-
/* @__PURE__ */
|
|
3004
|
+
}), "Thresholds"] }), /* @__PURE__ */ j("div", { children: [
|
|
3005
|
+
/* @__PURE__ */ A("strong", { children: "Display thresholds" }),
|
|
3006
|
+
/* @__PURE__ */ A("p", { children: "Success: warning below 99%; critical below 95%." }),
|
|
3007
|
+
/* @__PURE__ */ A("p", { children: "Latency: critical when p95 exceeds 100 ms." }),
|
|
3008
|
+
/* @__PURE__ */ A("p", { children: "Reroutes are excluded from success and latency. Queue wait has no health threshold." })
|
|
2910
3009
|
] })]
|
|
2911
3010
|
});
|
|
2912
3011
|
}
|
|
2913
|
-
function
|
|
2914
|
-
return /* @__PURE__ */
|
|
3012
|
+
function hn({ page: e, range: t, saved: n }) {
|
|
3013
|
+
return /* @__PURE__ */ j("div", {
|
|
2915
3014
|
className: "overview-data-scope",
|
|
2916
3015
|
children: [
|
|
2917
|
-
/* @__PURE__ */
|
|
2918
|
-
!!e?.dropped && /* @__PURE__ */
|
|
3016
|
+
/* @__PURE__ */ A("p", { children: n ? `Request metrics cover every retained request ${U(t)}${t.kind === "relative" ? " (refreshed every 10 seconds)" : ""}. Inventory counts are current snapshots.` : `Request metrics cover the latest ${e?.capacity ?? 500} retained traces within the selected window. Inventory counts are current snapshots.` }),
|
|
3017
|
+
!!e?.dropped && /* @__PURE__ */ j("p", {
|
|
2919
3018
|
role: "alert",
|
|
2920
|
-
children: [
|
|
3019
|
+
children: [Q(e.dropped), " traces were not delivered. Request metrics are incomplete."]
|
|
2921
3020
|
}),
|
|
2922
|
-
e?.persistenceFailed && /* @__PURE__ */
|
|
3021
|
+
e?.persistenceFailed && /* @__PURE__ */ A("p", {
|
|
2923
3022
|
role: "alert",
|
|
2924
3023
|
children: "Some request events could not be saved. This history may be incomplete."
|
|
2925
3024
|
}),
|
|
2926
|
-
!!e?.evicted && /* @__PURE__ */
|
|
3025
|
+
!!e?.evicted && /* @__PURE__ */ A("p", { children: "Earlier traces have expired; these metrics do not represent the full time window." })
|
|
2927
3026
|
]
|
|
2928
3027
|
});
|
|
2929
3028
|
}
|
|
2930
|
-
function
|
|
3029
|
+
function gn(e) {
|
|
2931
3030
|
return {
|
|
2932
3031
|
actorName: e,
|
|
2933
3032
|
count: 0,
|
|
@@ -2936,26 +3035,26 @@ function cn(e) {
|
|
|
2936
3035
|
queueP95: null
|
|
2937
3036
|
};
|
|
2938
3037
|
}
|
|
2939
|
-
function
|
|
3038
|
+
function Q(e) {
|
|
2940
3039
|
return e === void 0 ? "—" : e.toLocaleString();
|
|
2941
3040
|
}
|
|
2942
|
-
function
|
|
3041
|
+
function _n(e) {
|
|
2943
3042
|
return e == null ? "—" : `${e.toLocaleString(void 0, { maximumFractionDigits: 1 })} ms`;
|
|
2944
3043
|
}
|
|
2945
3044
|
//#endregion
|
|
2946
3045
|
//#region src/socket-sessions.ts
|
|
2947
|
-
function
|
|
2948
|
-
if (!Array.isArray(e) || !e.every((e) => !!e && typeof e == "object" &&
|
|
3046
|
+
function vn(e) {
|
|
3047
|
+
if (!Array.isArray(e) || !e.every((e) => !!e && typeof e == "object" && En(e))) throw Error("Invalid WebSocket session response");
|
|
2949
3048
|
return e;
|
|
2950
3049
|
}
|
|
2951
|
-
function
|
|
3050
|
+
function yn(e, t, n) {
|
|
2952
3051
|
return JSON.stringify([
|
|
2953
3052
|
e,
|
|
2954
3053
|
t,
|
|
2955
3054
|
n
|
|
2956
3055
|
]);
|
|
2957
3056
|
}
|
|
2958
|
-
function
|
|
3057
|
+
function bn(e, t, n = /* @__PURE__ */ new Map()) {
|
|
2959
3058
|
let r = /* @__PURE__ */ new Map();
|
|
2960
3059
|
for (let e of t?.actors ?? []) for (let t of e.instances) for (let n of t.connections) r.set(JSON.stringify([
|
|
2961
3060
|
e.actorName,
|
|
@@ -2982,7 +3081,7 @@ function fn(e, t, n = /* @__PURE__ */ new Map()) {
|
|
|
2982
3081
|
e.connectionId
|
|
2983
3082
|
])));
|
|
2984
3083
|
for (let e of t?.actors ?? []) for (let t of e.instances) for (let r of t.connections) {
|
|
2985
|
-
let o =
|
|
3084
|
+
let o = yn(e.actorName, t.actorId, r.id);
|
|
2986
3085
|
if (a.has(o)) continue;
|
|
2987
3086
|
let s = n.get(o);
|
|
2988
3087
|
i.unshift({
|
|
@@ -3002,7 +3101,7 @@ function fn(e, t, n = /* @__PURE__ */ new Map()) {
|
|
|
3002
3101
|
}
|
|
3003
3102
|
return i;
|
|
3004
3103
|
}
|
|
3005
|
-
function
|
|
3104
|
+
function xn(e, t) {
|
|
3006
3105
|
if (e.openedAtMs === null) return null;
|
|
3007
3106
|
let n = e.status === "closed" ? e.closedAtMs : e.status === "open" ? Math.max(t, e.openedAtMs) : e.lastSeenMs;
|
|
3008
3107
|
return {
|
|
@@ -3010,19 +3109,19 @@ function pn(e, t) {
|
|
|
3010
3109
|
lowerBound: e.status === "lost"
|
|
3011
3110
|
};
|
|
3012
3111
|
}
|
|
3013
|
-
function
|
|
3014
|
-
let n = e.map((e) =>
|
|
3112
|
+
function Sn(e, t) {
|
|
3113
|
+
let n = e.map((e) => xn(e, t)).filter((e) => e !== null && !e.lowerBound), r = e.reduce((e, t) => e + t.messages, 0);
|
|
3015
3114
|
return {
|
|
3016
3115
|
total: e.length,
|
|
3017
3116
|
open: e.filter((e) => e.status === "open").length,
|
|
3018
3117
|
lost: e.filter((e) => e.status === "lost").length,
|
|
3019
|
-
median:
|
|
3020
|
-
p95:
|
|
3118
|
+
median: Tn(n.map((e) => e.ms), .5),
|
|
3119
|
+
p95: Tn(n.map((e) => e.ms), .95),
|
|
3021
3120
|
messages: r,
|
|
3022
3121
|
messagesPerSession: e.length ? r / e.length : null
|
|
3023
3122
|
};
|
|
3024
3123
|
}
|
|
3025
|
-
function
|
|
3124
|
+
function Cn(e) {
|
|
3026
3125
|
if (e < 1e3) return `${e.toLocaleString(void 0, { maximumFractionDigits: 0 })} ms`;
|
|
3027
3126
|
if (e < 6e4) return `${(e / 1e3).toLocaleString(void 0, { maximumFractionDigits: 1 })} s`;
|
|
3028
3127
|
let t = Math.floor(e / 6e4);
|
|
@@ -3030,7 +3129,7 @@ function hn(e) {
|
|
|
3030
3129
|
let n = Math.floor(t / 60);
|
|
3031
3130
|
return n < 24 ? `${n}h ${t % 60}m` : `${Math.floor(n / 24)}d ${n % 24}h`;
|
|
3032
3131
|
}
|
|
3033
|
-
function
|
|
3132
|
+
function wn(e, t = 3) {
|
|
3034
3133
|
if (e == null) return null;
|
|
3035
3134
|
if (typeof e != "object") return String(e);
|
|
3036
3135
|
let n = Array.isArray(e) ? e.map((e, t) => [String(t), e]) : Object.entries(e);
|
|
@@ -3038,10 +3137,10 @@ function gn(e, t = 3) {
|
|
|
3038
3137
|
let r = n.slice(0, t).map(([e, t]) => `${e}: ${typeof t == "string" ? t : JSON.stringify(t)}`);
|
|
3039
3138
|
return n.length > t ? `${r.join(" · ")} · +${n.length - t}` : r.join(" · ");
|
|
3040
3139
|
}
|
|
3041
|
-
function
|
|
3140
|
+
function Tn(e, t) {
|
|
3042
3141
|
return e.length ? e.sort((e, t) => e - t)[Math.max(0, Math.ceil(e.length * t) - 1)] : null;
|
|
3043
3142
|
}
|
|
3044
|
-
function
|
|
3143
|
+
function En(e) {
|
|
3045
3144
|
return typeof e.connectionId == "string" && typeof e.actorName == "string" && typeof e.actorId == "string" && (e.hostId === null || typeof e.hostId == "string") && [
|
|
3046
3145
|
e.openedAtMs,
|
|
3047
3146
|
e.closedAtMs,
|
|
@@ -3050,30 +3149,30 @@ function vn(e) {
|
|
|
3050
3149
|
}
|
|
3051
3150
|
//#endregion
|
|
3052
3151
|
//#region src/SocketTimeline.tsx
|
|
3053
|
-
var
|
|
3152
|
+
var Dn = 18, On = 8, kn = 40, $ = 6e4, An = 60 * $, jn = 24 * An, Mn = [
|
|
3054
3153
|
1e3,
|
|
3055
3154
|
2e3,
|
|
3056
3155
|
5e3,
|
|
3057
3156
|
1e4,
|
|
3058
3157
|
15e3,
|
|
3059
3158
|
3e4,
|
|
3060
|
-
|
|
3061
|
-
2 *
|
|
3062
|
-
5 *
|
|
3063
|
-
10 *
|
|
3064
|
-
15 *
|
|
3065
|
-
30 *
|
|
3066
|
-
|
|
3067
|
-
2 *
|
|
3068
|
-
3 *
|
|
3069
|
-
6 *
|
|
3070
|
-
12 *
|
|
3071
|
-
|
|
3072
|
-
2 *
|
|
3073
|
-
7 *
|
|
3159
|
+
$,
|
|
3160
|
+
2 * $,
|
|
3161
|
+
5 * $,
|
|
3162
|
+
10 * $,
|
|
3163
|
+
15 * $,
|
|
3164
|
+
30 * $,
|
|
3165
|
+
An,
|
|
3166
|
+
2 * An,
|
|
3167
|
+
3 * An,
|
|
3168
|
+
6 * An,
|
|
3169
|
+
12 * An,
|
|
3170
|
+
jn,
|
|
3171
|
+
2 * jn,
|
|
3172
|
+
7 * jn
|
|
3074
3173
|
];
|
|
3075
|
-
function
|
|
3076
|
-
let [s, c] = a(), l =
|
|
3174
|
+
function Nn({ sessions: e, start: t, end: n, endLabel: r = "now", selected: i, onSelect: o }) {
|
|
3175
|
+
let [s, c] = a(), l = In(e, t, n), u = l.slice(0, kn), d = Math.max(1, n - t), f = Bn(t, n), p = Vn(d), m = (e) => `${(Math.min(Math.max(e, t), n) - t) / d * 100}%`, h = (e, t) => {
|
|
3077
3176
|
let n = t.getBoundingClientRect(), r = t.closest(".socket-timeline").getBoundingClientRect(), i = n.top - r.top < 150;
|
|
3078
3177
|
c({
|
|
3079
3178
|
session: e,
|
|
@@ -3082,50 +3181,50 @@ function Tn({ sessions: e, start: t, end: n, endLabel: r = "now", selected: i, o
|
|
|
3082
3181
|
below: i
|
|
3083
3182
|
});
|
|
3084
3183
|
};
|
|
3085
|
-
return /* @__PURE__ */
|
|
3184
|
+
return /* @__PURE__ */ j("div", {
|
|
3086
3185
|
className: "socket-timeline",
|
|
3087
3186
|
role: "group",
|
|
3088
3187
|
"aria-label": "Connection timeline",
|
|
3089
3188
|
onMouseLeave: () => c(void 0),
|
|
3090
3189
|
children: [
|
|
3091
|
-
/* @__PURE__ */
|
|
3190
|
+
/* @__PURE__ */ j("div", {
|
|
3092
3191
|
className: "socket-timeline-axis",
|
|
3093
3192
|
"aria-hidden": "true",
|
|
3094
|
-
children: [/* @__PURE__ */
|
|
3193
|
+
children: [/* @__PURE__ */ A("span", {}), /* @__PURE__ */ j("div", { children: [f.map((e) => /* @__PURE__ */ A("span", {
|
|
3095
3194
|
style: { left: m(e) },
|
|
3096
|
-
children:
|
|
3097
|
-
}, e)), /* @__PURE__ */
|
|
3195
|
+
children: Hn(e, p)
|
|
3196
|
+
}, e)), /* @__PURE__ */ A("span", {
|
|
3098
3197
|
className: "socket-timeline-now",
|
|
3099
3198
|
children: r
|
|
3100
3199
|
})] })]
|
|
3101
3200
|
}),
|
|
3102
|
-
/* @__PURE__ */
|
|
3201
|
+
/* @__PURE__ */ j("div", {
|
|
3103
3202
|
className: "socket-timeline-body",
|
|
3104
3203
|
children: [
|
|
3105
|
-
/* @__PURE__ */
|
|
3204
|
+
/* @__PURE__ */ A("div", {
|
|
3106
3205
|
className: "socket-timeline-grid",
|
|
3107
3206
|
"aria-hidden": "true",
|
|
3108
|
-
children: f.map((e) => /* @__PURE__ */
|
|
3207
|
+
children: f.map((e) => /* @__PURE__ */ A("i", { style: { left: m(e) } }, e))
|
|
3109
3208
|
}),
|
|
3110
|
-
u.map((e) => /* @__PURE__ */
|
|
3209
|
+
u.map((e) => /* @__PURE__ */ j("div", {
|
|
3111
3210
|
className: "socket-timeline-row",
|
|
3112
|
-
children: [/* @__PURE__ */
|
|
3211
|
+
children: [/* @__PURE__ */ j("div", {
|
|
3113
3212
|
className: "socket-timeline-label",
|
|
3114
3213
|
title: `${e.actorName} / ${e.actorId}`,
|
|
3115
|
-
children: [/* @__PURE__ */
|
|
3116
|
-
}), /* @__PURE__ */
|
|
3214
|
+
children: [/* @__PURE__ */ A("span", { children: e.actorName }), /* @__PURE__ */ A("strong", { children: e.actorId })]
|
|
3215
|
+
}), /* @__PURE__ */ A("div", {
|
|
3117
3216
|
className: "socket-timeline-lanes",
|
|
3118
|
-
style: { height: e.rows.length *
|
|
3119
|
-
children: e.rows.flatMap((e, t) => e.map((e) => /* @__PURE__ */
|
|
3217
|
+
style: { height: e.rows.length * Dn + 16 },
|
|
3218
|
+
children: e.rows.flatMap((e, t) => e.map((e) => /* @__PURE__ */ A("button", {
|
|
3120
3219
|
type: "button",
|
|
3121
3220
|
className: `socket-bar socket-bar-${e.session.status}${e.openEnded ? " socket-bar-open-ended" : ""}${e.unknownStart ? " socket-bar-unknown-start" : ""}`,
|
|
3122
3221
|
"data-state": i === e.session ? "selected" : void 0,
|
|
3123
3222
|
style: {
|
|
3124
3223
|
left: m(e.from),
|
|
3125
3224
|
width: `${(e.to - e.from) / d * 100}%`,
|
|
3126
|
-
top:
|
|
3225
|
+
top: On + t * Dn
|
|
3127
3226
|
},
|
|
3128
|
-
"aria-label":
|
|
3227
|
+
"aria-label": Kn(e.session, n),
|
|
3129
3228
|
onClick: (t) => o(e.session, t.currentTarget),
|
|
3130
3229
|
onMouseEnter: (t) => h(e.session, t.currentTarget),
|
|
3131
3230
|
onFocus: (t) => h(e.session, t.currentTarget),
|
|
@@ -3133,62 +3232,62 @@ function Tn({ sessions: e, start: t, end: n, endLabel: r = "now", selected: i, o
|
|
|
3133
3232
|
}, e.session.connectionId)))
|
|
3134
3233
|
})]
|
|
3135
3234
|
}, e.key)),
|
|
3136
|
-
l.length >
|
|
3235
|
+
l.length > kn && /* @__PURE__ */ j("p", {
|
|
3137
3236
|
className: "socket-timeline-more",
|
|
3138
3237
|
children: [
|
|
3139
|
-
(l.length -
|
|
3238
|
+
(l.length - kn).toLocaleString(),
|
|
3140
3239
|
" more ",
|
|
3141
|
-
l.length -
|
|
3240
|
+
l.length - kn === 1 ? "instance is" : "instances are",
|
|
3142
3241
|
" listed in the table below."
|
|
3143
3242
|
]
|
|
3144
3243
|
})
|
|
3145
3244
|
]
|
|
3146
3245
|
}),
|
|
3147
|
-
s && /* @__PURE__ */
|
|
3246
|
+
s && /* @__PURE__ */ j("div", {
|
|
3148
3247
|
role: "tooltip",
|
|
3149
3248
|
className: `socket-tooltip${s.below ? " socket-tooltip-below" : ""}`,
|
|
3150
3249
|
style: {
|
|
3151
3250
|
left: s.left,
|
|
3152
3251
|
top: s.top
|
|
3153
3252
|
},
|
|
3154
|
-
children: [/* @__PURE__ */
|
|
3155
|
-
/* @__PURE__ */
|
|
3156
|
-
/* @__PURE__ */
|
|
3157
|
-
/* @__PURE__ */
|
|
3158
|
-
/* @__PURE__ */
|
|
3253
|
+
children: [/* @__PURE__ */ A(Fn, { metadata: s.session.metadata }), /* @__PURE__ */ j("dl", { children: [
|
|
3254
|
+
/* @__PURE__ */ A("dt", { children: "Connection" }),
|
|
3255
|
+
/* @__PURE__ */ A("dd", { children: Gn(s.session.connectionId) }),
|
|
3256
|
+
/* @__PURE__ */ A("dt", { children: "Instance" }),
|
|
3257
|
+
/* @__PURE__ */ j("dd", { children: [
|
|
3159
3258
|
s.session.actorName,
|
|
3160
3259
|
" / ",
|
|
3161
3260
|
s.session.actorId
|
|
3162
3261
|
] }),
|
|
3163
|
-
/* @__PURE__ */
|
|
3164
|
-
/* @__PURE__ */
|
|
3165
|
-
/* @__PURE__ */
|
|
3166
|
-
/* @__PURE__ */
|
|
3167
|
-
/* @__PURE__ */
|
|
3168
|
-
/* @__PURE__ */
|
|
3169
|
-
/* @__PURE__ */
|
|
3170
|
-
/* @__PURE__ */
|
|
3262
|
+
/* @__PURE__ */ A("dt", { children: "Status" }),
|
|
3263
|
+
/* @__PURE__ */ A("dd", { children: Un(s.session.status) }),
|
|
3264
|
+
/* @__PURE__ */ A("dt", { children: "Opened" }),
|
|
3265
|
+
/* @__PURE__ */ A("dd", { children: s.session.openedAtMs === null ? "Before retained history" : `${s.session.estimatedStart ? "≈ " : ""}${new Date(s.session.openedAtMs).toLocaleTimeString([], { hour12: !1 })}` }),
|
|
3266
|
+
/* @__PURE__ */ A("dt", { children: "Duration" }),
|
|
3267
|
+
/* @__PURE__ */ A("dd", { children: Wn(s.session, n) }),
|
|
3268
|
+
/* @__PURE__ */ A("dt", { children: "Messages" }),
|
|
3269
|
+
/* @__PURE__ */ A("dd", { children: s.session.messages.toLocaleString() })
|
|
3171
3270
|
] })]
|
|
3172
3271
|
})
|
|
3173
3272
|
]
|
|
3174
3273
|
});
|
|
3175
3274
|
}
|
|
3176
|
-
var
|
|
3177
|
-
function
|
|
3275
|
+
var Pn = 4;
|
|
3276
|
+
function Fn({ metadata: e }) {
|
|
3178
3277
|
if (e == null) return null;
|
|
3179
3278
|
let t = typeof e == "object" ? Array.isArray(e) ? e.map((e, t) => [String(t), e]) : Object.entries(e) : [["value", e]];
|
|
3180
|
-
return t.length ? /* @__PURE__ */
|
|
3279
|
+
return t.length ? /* @__PURE__ */ j("dl", {
|
|
3181
3280
|
className: "socket-tooltip-metadata",
|
|
3182
3281
|
"aria-label": "Connection metadata",
|
|
3183
|
-
children: [t.slice(0,
|
|
3282
|
+
children: [t.slice(0, Pn).map(([e, t]) => /* @__PURE__ */ j("div", { children: [/* @__PURE__ */ A("dt", { children: e }), /* @__PURE__ */ A("dd", { children: typeof t == "string" ? t : JSON.stringify(t) })] }, e)), t.length > Pn && /* @__PURE__ */ j("p", { children: [
|
|
3184
3283
|
"+",
|
|
3185
|
-
t.length -
|
|
3284
|
+
t.length - Pn,
|
|
3186
3285
|
" more in details"
|
|
3187
3286
|
] })]
|
|
3188
3287
|
}) : null;
|
|
3189
3288
|
}
|
|
3190
|
-
function
|
|
3191
|
-
let r = /* @__PURE__ */ new Map(), i = e.map((e) =>
|
|
3289
|
+
function In(e, t, n) {
|
|
3290
|
+
let r = /* @__PURE__ */ new Map(), i = e.map((e) => Ln(e, t, n)).filter((e) => e.to > t).sort((e, t) => e.from - t.from || e.to - t.to);
|
|
3192
3291
|
for (let e of i) {
|
|
3193
3292
|
let i = `${e.session.actorName}${e.session.actorId}`, a = r.get(i) ?? {
|
|
3194
3293
|
key: i,
|
|
@@ -3197,64 +3296,87 @@ function On(e, t, n) {
|
|
|
3197
3296
|
rows: []
|
|
3198
3297
|
};
|
|
3199
3298
|
r.set(i, a);
|
|
3200
|
-
let o = a.rows.find((r) => r.at(-1).to +
|
|
3299
|
+
let o = a.rows.find((r) => r.at(-1).to + Rn(t, n) <= e.from);
|
|
3201
3300
|
o ? o.push(e) : a.rows.push([e]);
|
|
3202
3301
|
}
|
|
3203
|
-
return [...r.values()].sort((e, t) =>
|
|
3302
|
+
return [...r.values()].sort((e, t) => zn(t) - zn(e));
|
|
3204
3303
|
}
|
|
3205
|
-
function
|
|
3304
|
+
function Ln(e, t, n) {
|
|
3206
3305
|
let r = e.openedAtMs ?? (e.status === "open" ? t : e.lastSeenMs ?? t), i = e.status === "closed" ? e.closedAtMs : e.status === "open" ? n : e.lastSeenMs ?? r;
|
|
3207
3306
|
return {
|
|
3208
3307
|
session: e,
|
|
3209
3308
|
from: Math.max(t, r),
|
|
3210
|
-
to: Math.max(Math.max(t, r) +
|
|
3309
|
+
to: Math.max(Math.max(t, r) + Rn(t, n), Math.min(n, i)),
|
|
3211
3310
|
openEnded: e.status !== "closed",
|
|
3212
3311
|
unknownStart: e.openedAtMs === null
|
|
3213
3312
|
};
|
|
3214
3313
|
}
|
|
3215
|
-
function
|
|
3314
|
+
function Rn(e, t) {
|
|
3216
3315
|
return Math.max(1, (t - e) / 160);
|
|
3217
3316
|
}
|
|
3218
|
-
function
|
|
3317
|
+
function zn(e) {
|
|
3219
3318
|
return Math.max(...e.rows.flat().map((e) => e.to));
|
|
3220
3319
|
}
|
|
3221
|
-
function
|
|
3222
|
-
let n =
|
|
3320
|
+
function Bn(e, t) {
|
|
3321
|
+
let n = Vn(Math.max(1, t - e)), r = [];
|
|
3223
3322
|
for (let i = Math.floor(e / n) * n + n; i < t - n * .35; i += n) r.push(i);
|
|
3224
3323
|
return r;
|
|
3225
3324
|
}
|
|
3226
|
-
function
|
|
3227
|
-
return
|
|
3325
|
+
function Vn(e) {
|
|
3326
|
+
return Mn.find((t) => e / t <= 9) ?? Mn.at(-1);
|
|
3228
3327
|
}
|
|
3229
|
-
function
|
|
3328
|
+
function Hn(e, t) {
|
|
3230
3329
|
let n = new Date(e);
|
|
3231
|
-
return t >=
|
|
3330
|
+
return t >= jn ? n.toLocaleDateString([], {
|
|
3232
3331
|
month: "short",
|
|
3233
3332
|
day: "numeric"
|
|
3234
|
-
}) : t >=
|
|
3333
|
+
}) : t >= $ ? n.toLocaleTimeString([], {
|
|
3235
3334
|
hour: "2-digit",
|
|
3236
3335
|
minute: "2-digit",
|
|
3237
3336
|
hour12: !1
|
|
3238
3337
|
}) : n.toLocaleTimeString([], { hour12: !1 });
|
|
3239
3338
|
}
|
|
3240
|
-
function
|
|
3339
|
+
function Un(e) {
|
|
3241
3340
|
return e === "open" ? "Open" : e === "closed" ? "Closed" : "Lost";
|
|
3242
3341
|
}
|
|
3243
|
-
function
|
|
3244
|
-
let n =
|
|
3245
|
-
return n ? `${n.lowerBound ? "≥ " : ""}${
|
|
3342
|
+
function Wn(e, t) {
|
|
3343
|
+
let n = xn(e, t);
|
|
3344
|
+
return n ? `${n.lowerBound ? "≥ " : ""}${Cn(n.ms)}` : "Unknown";
|
|
3246
3345
|
}
|
|
3247
|
-
function
|
|
3346
|
+
function Gn(e) {
|
|
3248
3347
|
return e.length > 14 ? `${e.slice(0, 8)}…${e.slice(-4)}` : e;
|
|
3249
3348
|
}
|
|
3250
|
-
function
|
|
3251
|
-
let n =
|
|
3252
|
-
return `${
|
|
3349
|
+
function Kn(e, t) {
|
|
3350
|
+
let n = wn(e.metadata);
|
|
3351
|
+
return `${Un(e.status)} connection ${Gn(e.connectionId)}${n === null ? "" : ` (${n})`} on ${e.actorName} ${e.actorId}, ${Wn(e, t)}`;
|
|
3352
|
+
}
|
|
3353
|
+
//#endregion
|
|
3354
|
+
//#region src/components/ui/sheet.tsx
|
|
3355
|
+
var qn = R.Root, Jn = R.Title, Yn = R.Description;
|
|
3356
|
+
function Xn({ className: e, children: t, container: n, ...r }) {
|
|
3357
|
+
return /* @__PURE__ */ j(R.Portal, {
|
|
3358
|
+
container: n,
|
|
3359
|
+
children: [/* @__PURE__ */ A(R.Overlay, { className: "la-sheet-overlay" }), /* @__PURE__ */ j(R.Content, {
|
|
3360
|
+
"data-slot": "sheet-content",
|
|
3361
|
+
className: z("la-observer la-sheet", e),
|
|
3362
|
+
...r,
|
|
3363
|
+
children: [t, /* @__PURE__ */ A(R.Close, {
|
|
3364
|
+
asChild: !0,
|
|
3365
|
+
children: /* @__PURE__ */ A(V, {
|
|
3366
|
+
className: "la-sheet-close",
|
|
3367
|
+
variant: "ghost",
|
|
3368
|
+
size: "icon",
|
|
3369
|
+
"aria-label": "Close",
|
|
3370
|
+
children: /* @__PURE__ */ A(T, { "aria-hidden": "true" })
|
|
3371
|
+
})
|
|
3372
|
+
})]
|
|
3373
|
+
})]
|
|
3374
|
+
});
|
|
3253
3375
|
}
|
|
3254
3376
|
//#endregion
|
|
3255
3377
|
//#region src/socket-history.ts
|
|
3256
|
-
function
|
|
3257
|
-
let n =
|
|
3378
|
+
function Zn(e, t) {
|
|
3379
|
+
let n = ft(e, t, e.listWebSockets, 5e3);
|
|
3258
3380
|
return {
|
|
3259
3381
|
...n,
|
|
3260
3382
|
rows: n.value,
|
|
@@ -3263,52 +3385,52 @@ function zn(e, t) {
|
|
|
3263
3385
|
}
|
|
3264
3386
|
//#endregion
|
|
3265
3387
|
//#region src/WebSocketObserver.tsx
|
|
3266
|
-
function
|
|
3267
|
-
let { inventory: c, failed: l, retry: u } =
|
|
3388
|
+
function Qn({ client: e, onSelectActor: n, timeRange: o, onTimeRangeChange: s }) {
|
|
3389
|
+
let { inventory: c, failed: l, retry: u } = lt(e), [d, f] = a(Le), p = o ?? d, m = s ?? f, [h, g] = a(Date.now), [_, v] = a(""), [y, ee] = a("all"), [b, te] = a(), x = i(null), S = i(null);
|
|
3268
3390
|
t(() => {
|
|
3269
3391
|
let e = setInterval(() => g(Date.now()), 5e3);
|
|
3270
3392
|
return () => clearInterval(e);
|
|
3271
3393
|
}, []);
|
|
3272
|
-
let
|
|
3273
|
-
|
|
3394
|
+
let C = Re(p, h), w = C.toMs ?? h, T = Zn(e, C), E = rr(c, T.retry), D = r(() => bn(T.rows ?? [], c, E), [
|
|
3395
|
+
T.rows,
|
|
3274
3396
|
c,
|
|
3275
|
-
|
|
3276
|
-
]),
|
|
3277
|
-
return t(() =>
|
|
3278
|
-
ref:
|
|
3397
|
+
E
|
|
3398
|
+
]), O = !!c || l, M = _.trim().toLocaleLowerCase(), N = D.filter((e) => (y === "all" || e.status === y) && (!M || `${e.connectionId} ${e.actorName} ${e.actorId} ${e.hostId ?? ""}`.toLocaleLowerCase().includes(M))).sort((e, t) => Number(t.status === "open") - Number(e.status === "open") || (t.openedAtMs ?? t.lastSeenMs ?? Infinity) - (e.openedAtMs ?? e.lastSeenMs ?? Infinity)), P = Sn(D, h), F = Math.max(0, ...D.filter((e) => e.status !== "open").map((e) => xn(e, h)?.ms ?? 0)) || P.p95, I = nr(N, C.fromMs, w), L = r(() => ir(D, c), [D, c]);
|
|
3399
|
+
return t(() => te(void 0), [e, p]), /* @__PURE__ */ j("section", {
|
|
3400
|
+
ref: x,
|
|
3279
3401
|
className: "la-observer overview websockets",
|
|
3280
3402
|
"aria-label": "WebSocket observer",
|
|
3281
3403
|
children: [
|
|
3282
|
-
/* @__PURE__ */
|
|
3404
|
+
/* @__PURE__ */ j("div", {
|
|
3283
3405
|
className: "overview-heading",
|
|
3284
|
-
children: [/* @__PURE__ */
|
|
3406
|
+
children: [/* @__PURE__ */ j("div", { children: [/* @__PURE__ */ A("h1", { children: "WebSockets" }), /* @__PURE__ */ A("p", { children: O ? `${P.open.toLocaleString()} open now${T.supported ? ` · ${P.total.toLocaleString()} ${P.total === 1 ? "session" : "sessions"} ${U(p)}` : ""}` : "Connecting to inventory…" })] }), /* @__PURE__ */ j("div", {
|
|
3285
3407
|
className: "overview-controls",
|
|
3286
3408
|
children: [
|
|
3287
|
-
/* @__PURE__ */
|
|
3409
|
+
/* @__PURE__ */ A("span", {
|
|
3288
3410
|
className: "overview-updated",
|
|
3289
|
-
children:
|
|
3290
|
-
dateTime: new Date(
|
|
3291
|
-
children: new Date(
|
|
3411
|
+
children: T.failed ? "History reconnecting…" : T.updatedAt ? /* @__PURE__ */ j(k, { children: ["Updated ", /* @__PURE__ */ A("time", {
|
|
3412
|
+
dateTime: new Date(T.updatedAt).toISOString(),
|
|
3413
|
+
children: new Date(T.updatedAt).toLocaleTimeString([], { hour12: !1 })
|
|
3292
3414
|
})] }) : null
|
|
3293
3415
|
}),
|
|
3294
|
-
|
|
3416
|
+
T.supported && /* @__PURE__ */ A(He, {
|
|
3295
3417
|
value: p,
|
|
3296
3418
|
onChange: m,
|
|
3297
3419
|
className: "overview-range"
|
|
3298
3420
|
}),
|
|
3299
|
-
/* @__PURE__ */
|
|
3421
|
+
/* @__PURE__ */ A(V, {
|
|
3300
3422
|
variant: "outline",
|
|
3301
3423
|
size: "icon",
|
|
3302
3424
|
"aria-label": "Refresh connections",
|
|
3303
3425
|
onClick: () => {
|
|
3304
|
-
u(),
|
|
3426
|
+
u(), T.retry();
|
|
3305
3427
|
},
|
|
3306
|
-
children: /* @__PURE__ */
|
|
3428
|
+
children: /* @__PURE__ */ A(ne, { "aria-hidden": "true" })
|
|
3307
3429
|
})
|
|
3308
3430
|
]
|
|
3309
3431
|
})]
|
|
3310
3432
|
}),
|
|
3311
|
-
l && /* @__PURE__ */
|
|
3433
|
+
l && /* @__PURE__ */ j("p", {
|
|
3312
3434
|
role: "alert",
|
|
3313
3435
|
className: "overview-alert",
|
|
3314
3436
|
children: [
|
|
@@ -3318,90 +3440,90 @@ function Bn({ client: e, onSelectActor: n, timeRange: o, onTimeRangeChange: s })
|
|
|
3318
3440
|
" Retrying automatically."
|
|
3319
3441
|
]
|
|
3320
3442
|
}),
|
|
3321
|
-
|
|
3443
|
+
T.failed && /* @__PURE__ */ j("p", {
|
|
3322
3444
|
role: "alert",
|
|
3323
3445
|
className: "overview-alert",
|
|
3324
3446
|
children: [
|
|
3325
3447
|
"Connection history unavailable. ",
|
|
3326
|
-
|
|
3448
|
+
T.rows ? "Showing the last loaded sessions." : "Only currently open connections are shown.",
|
|
3327
3449
|
" Retrying automatically."
|
|
3328
3450
|
]
|
|
3329
3451
|
}),
|
|
3330
|
-
/* @__PURE__ */
|
|
3331
|
-
summary:
|
|
3332
|
-
ready:
|
|
3333
|
-
history:
|
|
3452
|
+
/* @__PURE__ */ A($n, {
|
|
3453
|
+
summary: P,
|
|
3454
|
+
ready: O,
|
|
3455
|
+
history: T.supported && !!T.rows,
|
|
3334
3456
|
range: p
|
|
3335
3457
|
}),
|
|
3336
|
-
/* @__PURE__ */
|
|
3458
|
+
/* @__PURE__ */ j("div", {
|
|
3337
3459
|
className: "socket-filterbar",
|
|
3338
|
-
children: [/* @__PURE__ */
|
|
3460
|
+
children: [/* @__PURE__ */ A(ge, {
|
|
3339
3461
|
label: "Filter connections",
|
|
3340
3462
|
placeholder: "Filter by connection, actor, instance, or host…",
|
|
3341
3463
|
value: _,
|
|
3342
3464
|
onChange: v,
|
|
3343
3465
|
suggestions: L
|
|
3344
|
-
}), /* @__PURE__ */
|
|
3466
|
+
}), /* @__PURE__ */ j(ot, {
|
|
3345
3467
|
"aria-label": "Filter by status",
|
|
3346
3468
|
size: "sm",
|
|
3347
3469
|
value: y,
|
|
3348
3470
|
onChange: (e) => ee(e.target.value),
|
|
3349
3471
|
children: [
|
|
3350
|
-
/* @__PURE__ */
|
|
3472
|
+
/* @__PURE__ */ A(G, {
|
|
3351
3473
|
value: "all",
|
|
3352
3474
|
children: "All statuses"
|
|
3353
3475
|
}),
|
|
3354
|
-
/* @__PURE__ */
|
|
3476
|
+
/* @__PURE__ */ A(G, {
|
|
3355
3477
|
value: "open",
|
|
3356
3478
|
children: "Open"
|
|
3357
3479
|
}),
|
|
3358
|
-
/* @__PURE__ */
|
|
3480
|
+
/* @__PURE__ */ A(G, {
|
|
3359
3481
|
value: "closed",
|
|
3360
3482
|
children: "Closed"
|
|
3361
3483
|
}),
|
|
3362
|
-
/* @__PURE__ */
|
|
3484
|
+
/* @__PURE__ */ A(G, {
|
|
3363
3485
|
value: "lost",
|
|
3364
3486
|
children: "Lost"
|
|
3365
3487
|
})
|
|
3366
3488
|
]
|
|
3367
3489
|
})]
|
|
3368
3490
|
}),
|
|
3369
|
-
|
|
3491
|
+
T.supported && /* @__PURE__ */ j("section", {
|
|
3370
3492
|
className: "overview-panel socket-timeline-panel",
|
|
3371
3493
|
"aria-label": "Connection timeline",
|
|
3372
|
-
children: [/* @__PURE__ */
|
|
3494
|
+
children: [/* @__PURE__ */ j("div", {
|
|
3373
3495
|
className: "socket-panel-heading",
|
|
3374
|
-
children: [/* @__PURE__ */
|
|
3496
|
+
children: [/* @__PURE__ */ j("h2", { children: ["Timeline ", /* @__PURE__ */ A("span", { children: N.length.toLocaleString() })] }), /* @__PURE__ */ j("ul", {
|
|
3375
3497
|
className: "socket-legend",
|
|
3376
3498
|
"aria-label": "Timeline legend",
|
|
3377
3499
|
children: [
|
|
3378
|
-
/* @__PURE__ */
|
|
3379
|
-
/* @__PURE__ */
|
|
3380
|
-
/* @__PURE__ */
|
|
3500
|
+
/* @__PURE__ */ j("li", { children: [/* @__PURE__ */ A("i", { className: "socket-swatch socket-swatch-open" }), " Open"] }),
|
|
3501
|
+
/* @__PURE__ */ j("li", { children: [/* @__PURE__ */ A("i", { className: "socket-swatch socket-swatch-closed" }), " Closed"] }),
|
|
3502
|
+
/* @__PURE__ */ j("li", { children: [/* @__PURE__ */ A("i", { className: "socket-swatch socket-swatch-lost" }), " Lost · no disconnect recorded"] })
|
|
3381
3503
|
]
|
|
3382
3504
|
})]
|
|
3383
|
-
}),
|
|
3384
|
-
sessions:
|
|
3385
|
-
start:
|
|
3386
|
-
end:
|
|
3387
|
-
endLabel:
|
|
3505
|
+
}), N.length ? /* @__PURE__ */ A(Nn, {
|
|
3506
|
+
sessions: N,
|
|
3507
|
+
start: I,
|
|
3508
|
+
end: w,
|
|
3509
|
+
endLabel: C.toMs === void 0 ? "now" : new Date(C.toMs).toLocaleTimeString([], {
|
|
3388
3510
|
hour: "2-digit",
|
|
3389
3511
|
minute: "2-digit",
|
|
3390
3512
|
hour12: !1
|
|
3391
3513
|
}),
|
|
3392
3514
|
selected: b,
|
|
3393
3515
|
onSelect: (e, t) => {
|
|
3394
|
-
|
|
3516
|
+
S.current = t, te(e);
|
|
3395
3517
|
}
|
|
3396
|
-
}) : /* @__PURE__ */
|
|
3518
|
+
}) : /* @__PURE__ */ j("div", {
|
|
3397
3519
|
className: "overview-empty socket-timeline-empty",
|
|
3398
3520
|
role: "status",
|
|
3399
|
-
children: [/* @__PURE__ */
|
|
3521
|
+
children: [/* @__PURE__ */ A("strong", { children: ar(O, T, D.length) }), /* @__PURE__ */ A("p", { children: D.length ? "Try another filter or a wider time window." : "Sessions appear here as clients connect to actors." })]
|
|
3400
3522
|
})]
|
|
3401
3523
|
}),
|
|
3402
|
-
/* @__PURE__ */
|
|
3524
|
+
/* @__PURE__ */ j("div", {
|
|
3403
3525
|
className: "overview-panel",
|
|
3404
|
-
children: [/* @__PURE__ */
|
|
3526
|
+
children: [/* @__PURE__ */ j(K, {
|
|
3405
3527
|
className: "overview-table socket-table",
|
|
3406
3528
|
"aria-label": "WebSocket connections",
|
|
3407
3529
|
containerProps: {
|
|
@@ -3410,59 +3532,59 @@ function Bn({ client: e, onSelectActor: n, timeRange: o, onTimeRangeChange: s })
|
|
|
3410
3532
|
"aria-label": "WebSocket connections",
|
|
3411
3533
|
tabIndex: 0
|
|
3412
3534
|
},
|
|
3413
|
-
children: [/* @__PURE__ */
|
|
3414
|
-
/* @__PURE__ */
|
|
3535
|
+
children: [/* @__PURE__ */ A(q, { children: /* @__PURE__ */ j(Y, { children: [
|
|
3536
|
+
/* @__PURE__ */ A(X, {
|
|
3415
3537
|
scope: "col",
|
|
3416
3538
|
children: "Status"
|
|
3417
3539
|
}),
|
|
3418
|
-
/* @__PURE__ */
|
|
3540
|
+
/* @__PURE__ */ A(X, {
|
|
3419
3541
|
scope: "col",
|
|
3420
3542
|
children: "Connection"
|
|
3421
3543
|
}),
|
|
3422
|
-
/* @__PURE__ */
|
|
3544
|
+
/* @__PURE__ */ A(X, {
|
|
3423
3545
|
scope: "col",
|
|
3424
3546
|
children: "Actor class"
|
|
3425
3547
|
}),
|
|
3426
|
-
/* @__PURE__ */
|
|
3548
|
+
/* @__PURE__ */ A(X, {
|
|
3427
3549
|
scope: "col",
|
|
3428
3550
|
children: "Instance"
|
|
3429
3551
|
}),
|
|
3430
|
-
/* @__PURE__ */
|
|
3552
|
+
/* @__PURE__ */ A(X, {
|
|
3431
3553
|
scope: "col",
|
|
3432
3554
|
children: "Opened"
|
|
3433
3555
|
}),
|
|
3434
|
-
/* @__PURE__ */
|
|
3556
|
+
/* @__PURE__ */ A(X, {
|
|
3435
3557
|
scope: "col",
|
|
3436
3558
|
children: "Duration"
|
|
3437
3559
|
}),
|
|
3438
|
-
/* @__PURE__ */
|
|
3560
|
+
/* @__PURE__ */ A(X, {
|
|
3439
3561
|
scope: "col",
|
|
3440
3562
|
children: "Messages"
|
|
3441
3563
|
}),
|
|
3442
|
-
/* @__PURE__ */
|
|
3564
|
+
/* @__PURE__ */ A(X, {
|
|
3443
3565
|
scope: "col",
|
|
3444
3566
|
children: "Metadata"
|
|
3445
3567
|
})
|
|
3446
|
-
] }) }), /* @__PURE__ */
|
|
3568
|
+
] }) }), /* @__PURE__ */ A(J, { children: N.map((e) => /* @__PURE__ */ A(er, {
|
|
3447
3569
|
session: e,
|
|
3448
3570
|
now: h,
|
|
3449
|
-
longest:
|
|
3571
|
+
longest: F,
|
|
3450
3572
|
selected: b === e,
|
|
3451
3573
|
onSelect: (t) => {
|
|
3452
|
-
|
|
3574
|
+
S.current = t, te(e);
|
|
3453
3575
|
}
|
|
3454
3576
|
}, JSON.stringify([
|
|
3455
3577
|
e.actorName,
|
|
3456
3578
|
e.actorId,
|
|
3457
3579
|
e.connectionId
|
|
3458
3580
|
]))) })]
|
|
3459
|
-
}), !
|
|
3581
|
+
}), !N.length && /* @__PURE__ */ j("div", {
|
|
3460
3582
|
className: "overview-empty",
|
|
3461
3583
|
role: "status",
|
|
3462
3584
|
children: [
|
|
3463
|
-
/* @__PURE__ */
|
|
3464
|
-
/* @__PURE__ */
|
|
3465
|
-
!!
|
|
3585
|
+
/* @__PURE__ */ A("strong", { children: ar(O, T, D.length) }),
|
|
3586
|
+
/* @__PURE__ */ A("p", { children: D.length ? "Try another connection, actor, or status." : "Open an actor WebSocket to see its connection and metadata here." }),
|
|
3587
|
+
!!D.length && /* @__PURE__ */ A(V, {
|
|
3466
3588
|
variant: "outline",
|
|
3467
3589
|
onClick: () => {
|
|
3468
3590
|
v(""), ee("all");
|
|
@@ -3472,24 +3594,24 @@ function Bn({ client: e, onSelectActor: n, timeRange: o, onTimeRangeChange: s })
|
|
|
3472
3594
|
]
|
|
3473
3595
|
})]
|
|
3474
3596
|
}),
|
|
3475
|
-
/* @__PURE__ */
|
|
3597
|
+
/* @__PURE__ */ A("div", {
|
|
3476
3598
|
className: "overview-data-scope",
|
|
3477
|
-
children: /* @__PURE__ */
|
|
3599
|
+
children: /* @__PURE__ */ A("p", { children: T.supported ? `Sessions pair each connection’s onConnect and onDisconnect events from retained request history${T.capped ? "; only the 500 most recent sessions are shown" : ""}. Open connections follow the latest host report. Lost connections have no recorded disconnect and are no longer reported by a host, so their duration is a lower bound.` : "Connections are active WebSockets, not unique people. Counts follow the latest host report." })
|
|
3478
3600
|
}),
|
|
3479
|
-
/* @__PURE__ */
|
|
3601
|
+
/* @__PURE__ */ A(qn, {
|
|
3480
3602
|
open: !!b,
|
|
3481
3603
|
onOpenChange: (e) => {
|
|
3482
|
-
e ||
|
|
3604
|
+
e || te(void 0);
|
|
3483
3605
|
},
|
|
3484
|
-
children: /* @__PURE__ */
|
|
3485
|
-
container:
|
|
3606
|
+
children: /* @__PURE__ */ j(Xn, {
|
|
3607
|
+
container: x.current,
|
|
3486
3608
|
onCloseAutoFocus: (e) => {
|
|
3487
|
-
e.preventDefault(),
|
|
3609
|
+
e.preventDefault(), S.current?.focus();
|
|
3488
3610
|
},
|
|
3489
3611
|
children: [
|
|
3490
|
-
/* @__PURE__ */
|
|
3491
|
-
/* @__PURE__ */
|
|
3492
|
-
b && /* @__PURE__ */
|
|
3612
|
+
/* @__PURE__ */ A(Jn, { children: "Connection details" }),
|
|
3613
|
+
/* @__PURE__ */ A(Yn, { children: "Identifiers, timings, and metadata for this WebSocket." }),
|
|
3614
|
+
b && /* @__PURE__ */ A(tr, {
|
|
3493
3615
|
session: b,
|
|
3494
3616
|
now: h,
|
|
3495
3617
|
onSelectActor: n
|
|
@@ -3500,131 +3622,131 @@ function Bn({ client: e, onSelectActor: n, timeRange: o, onTimeRangeChange: s })
|
|
|
3500
3622
|
]
|
|
3501
3623
|
});
|
|
3502
3624
|
}
|
|
3503
|
-
function
|
|
3504
|
-
return /* @__PURE__ */
|
|
3625
|
+
function $n({ summary: e, ready: t, history: n, range: r }) {
|
|
3626
|
+
return /* @__PURE__ */ j("div", {
|
|
3505
3627
|
className: "overview-metrics socket-metrics",
|
|
3506
3628
|
children: [
|
|
3507
|
-
/* @__PURE__ */
|
|
3629
|
+
/* @__PURE__ */ j("section", {
|
|
3508
3630
|
className: "overview-metric",
|
|
3509
3631
|
children: [
|
|
3510
|
-
/* @__PURE__ */
|
|
3511
|
-
/* @__PURE__ */
|
|
3632
|
+
/* @__PURE__ */ A("h2", { children: "Open now" }),
|
|
3633
|
+
/* @__PURE__ */ j("div", {
|
|
3512
3634
|
className: "overview-value",
|
|
3513
|
-
children: [/* @__PURE__ */
|
|
3635
|
+
children: [/* @__PURE__ */ A("strong", {
|
|
3514
3636
|
"aria-label": "Open WebSocket connections",
|
|
3515
3637
|
children: t ? e.open.toLocaleString() : "—"
|
|
3516
|
-
}), /* @__PURE__ */
|
|
3638
|
+
}), /* @__PURE__ */ A("span", { children: "live connections" })]
|
|
3517
3639
|
}),
|
|
3518
|
-
/* @__PURE__ */
|
|
3640
|
+
/* @__PURE__ */ A("div", {
|
|
3519
3641
|
className: "overview-metric-foot",
|
|
3520
|
-
children: /* @__PURE__ */
|
|
3642
|
+
children: /* @__PURE__ */ A("span", { children: "Latest host report" })
|
|
3521
3643
|
})
|
|
3522
3644
|
]
|
|
3523
3645
|
}),
|
|
3524
|
-
/* @__PURE__ */
|
|
3646
|
+
/* @__PURE__ */ j("section", {
|
|
3525
3647
|
className: "overview-metric",
|
|
3526
3648
|
children: [
|
|
3527
|
-
/* @__PURE__ */
|
|
3528
|
-
/* @__PURE__ */
|
|
3649
|
+
/* @__PURE__ */ A("h2", { children: "Sessions" }),
|
|
3650
|
+
/* @__PURE__ */ j("div", {
|
|
3529
3651
|
className: "overview-value",
|
|
3530
|
-
children: [/* @__PURE__ */
|
|
3652
|
+
children: [/* @__PURE__ */ A("strong", {
|
|
3531
3653
|
"aria-label": "WebSocket sessions",
|
|
3532
3654
|
children: n ? e.total.toLocaleString() : "—"
|
|
3533
|
-
}), /* @__PURE__ */
|
|
3655
|
+
}), /* @__PURE__ */ A("span", { children: r.kind === "absolute" ? ze(r) : U(r) })]
|
|
3534
3656
|
}),
|
|
3535
|
-
/* @__PURE__ */
|
|
3657
|
+
/* @__PURE__ */ j("div", {
|
|
3536
3658
|
className: "overview-metric-foot",
|
|
3537
|
-
children: [/* @__PURE__ */
|
|
3659
|
+
children: [/* @__PURE__ */ j("span", { children: [/* @__PURE__ */ A("b", { children: n ? (e.total - e.open - e.lost).toLocaleString() : "—" }), " closed"] }), /* @__PURE__ */ j("span", { children: [/* @__PURE__ */ A("b", { children: n ? e.lost.toLocaleString() : "—" }), " lost"] })]
|
|
3538
3660
|
})
|
|
3539
3661
|
]
|
|
3540
3662
|
}),
|
|
3541
|
-
/* @__PURE__ */
|
|
3663
|
+
/* @__PURE__ */ j("section", {
|
|
3542
3664
|
className: "overview-metric",
|
|
3543
3665
|
children: [
|
|
3544
|
-
/* @__PURE__ */
|
|
3545
|
-
/* @__PURE__ */
|
|
3666
|
+
/* @__PURE__ */ A("h2", { children: "Session duration" }),
|
|
3667
|
+
/* @__PURE__ */ j("div", {
|
|
3546
3668
|
className: "overview-value",
|
|
3547
|
-
children: [/* @__PURE__ */
|
|
3669
|
+
children: [/* @__PURE__ */ A("strong", {
|
|
3548
3670
|
"aria-label": "Median session duration",
|
|
3549
|
-
children: n && e.median !== null ?
|
|
3550
|
-
}), /* @__PURE__ */
|
|
3671
|
+
children: n && e.median !== null ? Cn(e.median) : "—"
|
|
3672
|
+
}), /* @__PURE__ */ A("span", { children: "median" })]
|
|
3551
3673
|
}),
|
|
3552
|
-
/* @__PURE__ */
|
|
3674
|
+
/* @__PURE__ */ j("div", {
|
|
3553
3675
|
className: "overview-metric-foot",
|
|
3554
|
-
children: [/* @__PURE__ */
|
|
3676
|
+
children: [/* @__PURE__ */ j("span", { children: [/* @__PURE__ */ A("b", { children: n && e.p95 !== null ? Cn(e.p95) : "—" }), " p95"] }), /* @__PURE__ */ A("span", { children: "Open sessions count up to now" })]
|
|
3555
3677
|
})
|
|
3556
3678
|
]
|
|
3557
3679
|
}),
|
|
3558
|
-
/* @__PURE__ */
|
|
3680
|
+
/* @__PURE__ */ j("section", {
|
|
3559
3681
|
className: "overview-metric",
|
|
3560
3682
|
children: [
|
|
3561
|
-
/* @__PURE__ */
|
|
3562
|
-
/* @__PURE__ */
|
|
3683
|
+
/* @__PURE__ */ A("h2", { children: "Messages" }),
|
|
3684
|
+
/* @__PURE__ */ j("div", {
|
|
3563
3685
|
className: "overview-value",
|
|
3564
|
-
children: [/* @__PURE__ */
|
|
3686
|
+
children: [/* @__PURE__ */ A("strong", {
|
|
3565
3687
|
"aria-label": "WebSocket messages",
|
|
3566
3688
|
children: n ? e.messages.toLocaleString() : "—"
|
|
3567
|
-
}), /* @__PURE__ */
|
|
3689
|
+
}), /* @__PURE__ */ A("span", { children: "received" })]
|
|
3568
3690
|
}),
|
|
3569
|
-
/* @__PURE__ */
|
|
3691
|
+
/* @__PURE__ */ A("div", {
|
|
3570
3692
|
className: "overview-metric-foot",
|
|
3571
|
-
children: /* @__PURE__ */
|
|
3693
|
+
children: /* @__PURE__ */ j("span", { children: [/* @__PURE__ */ A("b", { children: n && e.messagesPerSession !== null ? e.messagesPerSession.toLocaleString(void 0, { maximumFractionDigits: 1 }) : "—" }), " per session"] })
|
|
3572
3694
|
})
|
|
3573
3695
|
]
|
|
3574
3696
|
})
|
|
3575
3697
|
]
|
|
3576
3698
|
});
|
|
3577
3699
|
}
|
|
3578
|
-
function
|
|
3579
|
-
let a =
|
|
3580
|
-
return /* @__PURE__ */
|
|
3700
|
+
function er({ session: e, now: t, longest: n, selected: r, onSelect: i }) {
|
|
3701
|
+
let a = xn(e, t), o = a && n ? Math.min(1, a.ms / n) : 0;
|
|
3702
|
+
return /* @__PURE__ */ j(Y, {
|
|
3581
3703
|
className: "la-clickable-row",
|
|
3582
3704
|
"data-state": r ? "selected" : void 0,
|
|
3583
3705
|
onClick: (e) => i(e.currentTarget.querySelector("button") ?? e.currentTarget),
|
|
3584
3706
|
children: [
|
|
3585
|
-
/* @__PURE__ */
|
|
3707
|
+
/* @__PURE__ */ A(Z, { children: /* @__PURE__ */ j("span", {
|
|
3586
3708
|
className: `socket-status socket-status-${e.status}`,
|
|
3587
|
-
children: [/* @__PURE__ */
|
|
3709
|
+
children: [/* @__PURE__ */ A("i", {
|
|
3588
3710
|
className: `socket-swatch socket-swatch-${e.status}`,
|
|
3589
3711
|
"aria-hidden": "true"
|
|
3590
|
-
}),
|
|
3712
|
+
}), Un(e.status)]
|
|
3591
3713
|
}) }),
|
|
3592
|
-
/* @__PURE__ */
|
|
3714
|
+
/* @__PURE__ */ A(Z, { children: /* @__PURE__ */ A("button", {
|
|
3593
3715
|
type: "button",
|
|
3594
3716
|
className: "socket-connection",
|
|
3595
3717
|
title: e.connectionId,
|
|
3596
3718
|
"aria-label": `Inspect connection ${e.connectionId}`,
|
|
3597
|
-
children:
|
|
3719
|
+
children: Gn(e.connectionId)
|
|
3598
3720
|
}) }),
|
|
3599
|
-
/* @__PURE__ */
|
|
3721
|
+
/* @__PURE__ */ A(Z, {
|
|
3600
3722
|
title: e.actorName,
|
|
3601
3723
|
children: e.actorName
|
|
3602
3724
|
}),
|
|
3603
|
-
/* @__PURE__ */
|
|
3725
|
+
/* @__PURE__ */ A(Z, {
|
|
3604
3726
|
title: e.actorId,
|
|
3605
3727
|
children: e.actorId
|
|
3606
3728
|
}),
|
|
3607
|
-
/* @__PURE__ */
|
|
3729
|
+
/* @__PURE__ */ A(Z, { children: e.openedAtMs === null ? /* @__PURE__ */ A("span", {
|
|
3608
3730
|
title: "The connect event is not in retained history",
|
|
3609
3731
|
children: "—"
|
|
3610
|
-
}) : /* @__PURE__ */
|
|
3732
|
+
}) : /* @__PURE__ */ j("time", {
|
|
3611
3733
|
dateTime: new Date(e.openedAtMs).toISOString(),
|
|
3612
3734
|
title: e.estimatedStart ? "Approximate: first reported by the host; the connect event has not been saved yet" : new Date(e.openedAtMs).toLocaleString(),
|
|
3613
3735
|
children: [e.estimatedStart ? "≈ " : "", new Date(e.openedAtMs).toLocaleTimeString([], { hour12: !1 })]
|
|
3614
3736
|
}) }),
|
|
3615
|
-
/* @__PURE__ */
|
|
3737
|
+
/* @__PURE__ */ A(Z, { children: /* @__PURE__ */ j("span", {
|
|
3616
3738
|
className: "socket-duration",
|
|
3617
|
-
children: [/* @__PURE__ */
|
|
3739
|
+
children: [/* @__PURE__ */ A("span", { children: Wn(e, t) }), /* @__PURE__ */ A("i", {
|
|
3618
3740
|
className: `socket-duration-bar socket-duration-${e.status}`,
|
|
3619
3741
|
"aria-hidden": "true",
|
|
3620
|
-
children: /* @__PURE__ */
|
|
3742
|
+
children: /* @__PURE__ */ A("b", { style: { width: `${o * 100}%` } })
|
|
3621
3743
|
})]
|
|
3622
3744
|
}) }),
|
|
3623
|
-
/* @__PURE__ */
|
|
3624
|
-
/* @__PURE__ */
|
|
3745
|
+
/* @__PURE__ */ A(Z, { children: e.messages.toLocaleString() }),
|
|
3746
|
+
/* @__PURE__ */ A(Z, { children: e.metadata === void 0 ? /* @__PURE__ */ A("span", {
|
|
3625
3747
|
title: "No metadata was recorded for this connection",
|
|
3626
3748
|
children: "—"
|
|
3627
|
-
}) : /* @__PURE__ */
|
|
3749
|
+
}) : /* @__PURE__ */ A("code", {
|
|
3628
3750
|
className: "socket-metadata",
|
|
3629
3751
|
title: JSON.stringify(e.metadata),
|
|
3630
3752
|
children: JSON.stringify(e.metadata)
|
|
@@ -3632,46 +3754,46 @@ function Hn({ session: e, now: t, longest: n, selected: r, onSelect: i }) {
|
|
|
3632
3754
|
]
|
|
3633
3755
|
});
|
|
3634
3756
|
}
|
|
3635
|
-
function
|
|
3757
|
+
function tr({ session: e, now: t, onSelectActor: n }) {
|
|
3636
3758
|
let r = {
|
|
3637
|
-
Status: e.status === "lost" ? "Lost — no disconnect recorded" :
|
|
3759
|
+
Status: e.status === "lost" ? "Lost — no disconnect recorded" : Un(e.status),
|
|
3638
3760
|
Connection: e.connectionId,
|
|
3639
3761
|
"Actor class": e.actorName,
|
|
3640
3762
|
"Instance ID": e.actorId,
|
|
3641
3763
|
Opened: e.openedAtMs === null ? "Before retained history" : `${e.estimatedStart ? "≈ " : ""}${new Date(e.openedAtMs).toLocaleString()}`,
|
|
3642
3764
|
...e.closedAtMs === null ? {} : { Closed: new Date(e.closedAtMs).toLocaleString() },
|
|
3643
3765
|
...e.status === "lost" && e.lastSeenMs !== null ? { "Last activity": new Date(e.lastSeenMs).toLocaleString() } : {},
|
|
3644
|
-
Duration:
|
|
3766
|
+
Duration: Wn(e, t),
|
|
3645
3767
|
Messages: e.messages.toLocaleString(),
|
|
3646
3768
|
Failures: e.failures.toLocaleString(),
|
|
3647
3769
|
Host: e.hostId ?? "Unknown"
|
|
3648
3770
|
};
|
|
3649
|
-
return /* @__PURE__ */
|
|
3650
|
-
/* @__PURE__ */
|
|
3771
|
+
return /* @__PURE__ */ j(k, { children: [
|
|
3772
|
+
/* @__PURE__ */ A("dl", {
|
|
3651
3773
|
className: "la-request-details",
|
|
3652
|
-
children: Object.entries(r).map(([e, t]) => /* @__PURE__ */
|
|
3774
|
+
children: Object.entries(r).map(([e, t]) => /* @__PURE__ */ j("div", { children: [/* @__PURE__ */ A("dt", { children: e }), /* @__PURE__ */ A("dd", { children: t })] }, e))
|
|
3653
3775
|
}),
|
|
3654
|
-
e.metadata !== void 0 && /* @__PURE__ */
|
|
3776
|
+
e.metadata !== void 0 && /* @__PURE__ */ j("details", {
|
|
3655
3777
|
className: "socket-metadata-details",
|
|
3656
3778
|
open: !0,
|
|
3657
|
-
children: [/* @__PURE__ */
|
|
3779
|
+
children: [/* @__PURE__ */ A("summary", { children: "Metadata" }), /* @__PURE__ */ A("pre", { children: JSON.stringify(e.metadata, null, 2) })]
|
|
3658
3780
|
}),
|
|
3659
|
-
n && /* @__PURE__ */
|
|
3781
|
+
n && /* @__PURE__ */ j(V, {
|
|
3660
3782
|
variant: "outline",
|
|
3661
3783
|
onClick: () => n(e.actorName),
|
|
3662
3784
|
children: ["Open ", e.actorName]
|
|
3663
3785
|
})
|
|
3664
3786
|
] });
|
|
3665
3787
|
}
|
|
3666
|
-
function
|
|
3788
|
+
function nr(e, t, n) {
|
|
3667
3789
|
let r = Math.min(...e.map((e) => e.openedAtMs ?? e.lastSeenMs ?? n)), i = Number.isFinite(r) ? r - Math.max(5e3, (n - r) * .06) : n - 6e4;
|
|
3668
3790
|
return Math.max(t ?? -Infinity, Math.min(i, n - 1e4));
|
|
3669
3791
|
}
|
|
3670
|
-
function
|
|
3792
|
+
function rr(e, n) {
|
|
3671
3793
|
let [r, o] = a(/* @__PURE__ */ new Map()), s = i(void 0);
|
|
3672
3794
|
return t(() => {
|
|
3673
3795
|
if (!e) return;
|
|
3674
|
-
let t = new Set(e.actors.flatMap((e) => e.instances.flatMap((t) => t.connections.map((n) =>
|
|
3796
|
+
let t = new Set(e.actors.flatMap((e) => e.instances.flatMap((t) => t.connections.map((n) => yn(e.actorName, t.actorId, n.id))))), r = s.current;
|
|
3675
3797
|
if (s.current = t, !r) return;
|
|
3676
3798
|
let i = [...t].filter((e) => !r.has(e)), a = [...r].filter((e) => !t.has(e));
|
|
3677
3799
|
if (i.length || a.length) {
|
|
@@ -3683,7 +3805,7 @@ function Gn(e, n) {
|
|
|
3683
3805
|
}
|
|
3684
3806
|
}, [e]), r;
|
|
3685
3807
|
}
|
|
3686
|
-
function
|
|
3808
|
+
function ir(e, t) {
|
|
3687
3809
|
let n = /* @__PURE__ */ new Map();
|
|
3688
3810
|
for (let e of t?.actors ?? []) n.set(e.actorName, new Set(e.instances.map((e) => e.actorId)));
|
|
3689
3811
|
for (let t of e) {
|
|
@@ -3700,12 +3822,12 @@ function Kn(e, t) {
|
|
|
3700
3822
|
hint: e
|
|
3701
3823
|
})))];
|
|
3702
3824
|
}
|
|
3703
|
-
function
|
|
3825
|
+
function ar(e, t, n) {
|
|
3704
3826
|
return !e && !t.rows ? t.failed ? "Connections unavailable" : "Loading connections…" : n ? "No matching connections" : t.supported ? "No WebSocket sessions" : "No active WebSockets";
|
|
3705
3827
|
}
|
|
3706
3828
|
//#endregion
|
|
3707
3829
|
//#region src/ConsoleApp.tsx
|
|
3708
|
-
var
|
|
3830
|
+
var or = [
|
|
3709
3831
|
{
|
|
3710
3832
|
id: "overview",
|
|
3711
3833
|
label: "Durable Actors",
|
|
@@ -3727,72 +3849,72 @@ var Jn = [
|
|
|
3727
3849
|
icon: l
|
|
3728
3850
|
}
|
|
3729
3851
|
];
|
|
3730
|
-
function
|
|
3731
|
-
let [n, r] = a("overview"), [i, o] = a(), [l, u] = a(
|
|
3852
|
+
function sr({ client: e, toggleTheme: t }) {
|
|
3853
|
+
let [n, r] = a("overview"), [i, o] = a(), [l, u] = a(Le), d = {
|
|
3732
3854
|
timeRange: l,
|
|
3733
3855
|
onTimeRangeChange: u
|
|
3734
3856
|
};
|
|
3735
3857
|
function f(e) {
|
|
3736
3858
|
o(e), r("actors");
|
|
3737
3859
|
}
|
|
3738
|
-
return /* @__PURE__ */
|
|
3860
|
+
return /* @__PURE__ */ j("div", {
|
|
3739
3861
|
className: "console-shell",
|
|
3740
3862
|
children: [
|
|
3741
|
-
/* @__PURE__ */
|
|
3863
|
+
/* @__PURE__ */ A("a", {
|
|
3742
3864
|
className: "skip-link",
|
|
3743
3865
|
href: "#main",
|
|
3744
3866
|
children: "Skip to content"
|
|
3745
3867
|
}),
|
|
3746
|
-
/* @__PURE__ */
|
|
3868
|
+
/* @__PURE__ */ j("aside", {
|
|
3747
3869
|
className: "console-sidebar",
|
|
3748
3870
|
children: [
|
|
3749
|
-
/* @__PURE__ */
|
|
3871
|
+
/* @__PURE__ */ j("div", {
|
|
3750
3872
|
className: "console-brand",
|
|
3751
|
-
children: [/* @__PURE__ */
|
|
3873
|
+
children: [/* @__PURE__ */ A(v, { "aria-hidden": "true" }), /* @__PURE__ */ A("strong", { children: "Terse" })]
|
|
3752
3874
|
}),
|
|
3753
|
-
/* @__PURE__ */
|
|
3875
|
+
/* @__PURE__ */ A("nav", {
|
|
3754
3876
|
"aria-label": "Observability",
|
|
3755
|
-
children:
|
|
3877
|
+
children: or.map((e) => /* @__PURE__ */ j("button", {
|
|
3756
3878
|
type: "button",
|
|
3757
3879
|
"aria-current": n === e.id ? "page" : void 0,
|
|
3758
3880
|
onClick: () => {
|
|
3759
3881
|
o(void 0), r(e.id);
|
|
3760
3882
|
},
|
|
3761
|
-
children: [/* @__PURE__ */
|
|
3883
|
+
children: [/* @__PURE__ */ A(e.icon, { "aria-hidden": "true" }), e.label]
|
|
3762
3884
|
}, e.id))
|
|
3763
3885
|
}),
|
|
3764
|
-
/* @__PURE__ */
|
|
3886
|
+
/* @__PURE__ */ j("div", {
|
|
3765
3887
|
className: "console-sidebar-foot",
|
|
3766
|
-
children: [/* @__PURE__ */
|
|
3888
|
+
children: [/* @__PURE__ */ A(c, { "aria-hidden": "true" }), /* @__PURE__ */ j("span", { children: ["Runtime inspector", /* @__PURE__ */ A("small", { children: "Read-only observability" })] })]
|
|
3767
3889
|
})
|
|
3768
3890
|
]
|
|
3769
3891
|
}),
|
|
3770
|
-
/* @__PURE__ */
|
|
3892
|
+
/* @__PURE__ */ j("div", {
|
|
3771
3893
|
className: "console-workspace",
|
|
3772
|
-
children: [/* @__PURE__ */
|
|
3894
|
+
children: [/* @__PURE__ */ j("header", {
|
|
3773
3895
|
className: "console-topbar",
|
|
3774
|
-
children: [/* @__PURE__ */
|
|
3896
|
+
children: [/* @__PURE__ */ A("button", {
|
|
3775
3897
|
className: "theme-toggle",
|
|
3776
3898
|
type: "button",
|
|
3777
3899
|
onClick: t,
|
|
3778
3900
|
"aria-label": "Toggle color theme",
|
|
3779
|
-
children: /* @__PURE__ */
|
|
3780
|
-
}), /* @__PURE__ */
|
|
3901
|
+
children: /* @__PURE__ */ A(C, { "aria-hidden": "true" })
|
|
3902
|
+
}), /* @__PURE__ */ j("a", {
|
|
3781
3903
|
href: "https://github.com/TerseAI/durable-actors#readme",
|
|
3782
3904
|
target: "_blank",
|
|
3783
3905
|
rel: "noopener noreferrer",
|
|
3784
|
-
children: ["Docs", /* @__PURE__ */
|
|
3906
|
+
children: ["Docs", /* @__PURE__ */ A(s, { "aria-hidden": "true" })]
|
|
3785
3907
|
})]
|
|
3786
|
-
}), /* @__PURE__ */
|
|
3908
|
+
}), /* @__PURE__ */ j("main", {
|
|
3787
3909
|
id: "main",
|
|
3788
3910
|
tabIndex: -1,
|
|
3789
3911
|
children: [
|
|
3790
|
-
n === "overview" && /* @__PURE__ */
|
|
3912
|
+
n === "overview" && /* @__PURE__ */ A(ln, {
|
|
3791
3913
|
client: e,
|
|
3792
3914
|
onSelectActor: f,
|
|
3793
3915
|
...d
|
|
3794
3916
|
}),
|
|
3795
|
-
n === "actors" && /* @__PURE__ */
|
|
3917
|
+
n === "actors" && /* @__PURE__ */ A(Lt, {
|
|
3796
3918
|
client: e,
|
|
3797
3919
|
navigation: {
|
|
3798
3920
|
actorName: i,
|
|
@@ -3800,11 +3922,11 @@ function Yn({ client: e, toggleTheme: t }) {
|
|
|
3800
3922
|
},
|
|
3801
3923
|
...d
|
|
3802
3924
|
}),
|
|
3803
|
-
n === "requests" && /* @__PURE__ */
|
|
3925
|
+
n === "requests" && /* @__PURE__ */ A(mt, {
|
|
3804
3926
|
client: e,
|
|
3805
3927
|
...d
|
|
3806
3928
|
}),
|
|
3807
|
-
n === "websockets" && /* @__PURE__ */
|
|
3929
|
+
n === "websockets" && /* @__PURE__ */ A(Qn, {
|
|
3808
3930
|
client: e,
|
|
3809
3931
|
onSelectActor: f,
|
|
3810
3932
|
...d
|
|
@@ -3817,63 +3939,63 @@ function Yn({ client: e, toggleTheme: t }) {
|
|
|
3817
3939
|
}
|
|
3818
3940
|
//#endregion
|
|
3819
3941
|
//#region src/state-data.ts
|
|
3820
|
-
function
|
|
3821
|
-
if (
|
|
3942
|
+
function cr(e) {
|
|
3943
|
+
if (!fr(e) || !(e.snapshot === null || ur(e.snapshot) && fr(e.snapshot) && fr(e.snapshot.state)) || !(e.schema === null || fr(e.schema))) throw Error("Invalid state response");
|
|
3822
3944
|
return e;
|
|
3823
3945
|
}
|
|
3824
|
-
function
|
|
3825
|
-
if (
|
|
3946
|
+
function lr(e) {
|
|
3947
|
+
if (!fr(e) || !Array.isArray(e.records) || !e.records.every(ur) || !(e.nextBefore === null || dr(e.nextBefore))) throw Error("Invalid state history");
|
|
3826
3948
|
return e;
|
|
3827
3949
|
}
|
|
3828
|
-
function
|
|
3829
|
-
if (
|
|
3950
|
+
function ur(e) {
|
|
3951
|
+
if (!fr(e) || !dr(e.stateVersion) || !dr(e.ownerEpoch) || typeof e.requestId != "string") return !1;
|
|
3830
3952
|
let t = e.attribution;
|
|
3831
|
-
return t === null ||
|
|
3953
|
+
return t === null || fr(t) && typeof t.operation == "string" && (t.connectionId === null || typeof t.connectionId == "string") && typeof t.committedAtMs == "number" && Number.isSafeInteger(t.committedAtMs) && t.committedAtMs >= 0 && typeof t.interleaved == "boolean";
|
|
3832
3954
|
}
|
|
3833
|
-
function
|
|
3955
|
+
function dr(e) {
|
|
3834
3956
|
return typeof e == "number" && Number.isSafeInteger(e) && e > 0;
|
|
3835
3957
|
}
|
|
3836
|
-
function
|
|
3958
|
+
function fr(e) {
|
|
3837
3959
|
return !!e && typeof e == "object" && !Array.isArray(e);
|
|
3838
3960
|
}
|
|
3839
3961
|
//#endregion
|
|
3840
3962
|
//#region src/client.ts
|
|
3841
|
-
var
|
|
3963
|
+
var pr = class {
|
|
3842
3964
|
baseUrl;
|
|
3843
3965
|
request;
|
|
3844
3966
|
constructor(e = "/api/observe", t = globalThis.fetch.bind(globalThis)) {
|
|
3845
3967
|
this.baseUrl = e, this.request = t;
|
|
3846
3968
|
}
|
|
3847
3969
|
async getState(e, t) {
|
|
3848
|
-
return
|
|
3970
|
+
return cr(await this.get(`state${mr(e)}`, t));
|
|
3849
3971
|
}
|
|
3850
3972
|
async listStateHistory(e, t) {
|
|
3851
|
-
return
|
|
3973
|
+
return lr(await this.get(`state/history${mr(e)}`, t));
|
|
3852
3974
|
}
|
|
3853
3975
|
async getMetrics(e, t) {
|
|
3854
|
-
return
|
|
3976
|
+
return on(await this.get(`metrics${mr(e)}`, t));
|
|
3855
3977
|
}
|
|
3856
3978
|
async listQueueWaits(e, t) {
|
|
3857
|
-
return
|
|
3979
|
+
return At(await this.get(`queue-waits${mr(e)}`, t));
|
|
3858
3980
|
}
|
|
3859
3981
|
async listWebSockets(e, t) {
|
|
3860
|
-
return
|
|
3982
|
+
return vn(await this.get(`websockets${mr(e)}`, t));
|
|
3861
3983
|
}
|
|
3862
3984
|
async listActors(e) {
|
|
3863
3985
|
let t = await this.get("actors", e);
|
|
3864
|
-
if (!
|
|
3986
|
+
if (!hr(t)) throw Error("Invalid actor inventory response.");
|
|
3865
3987
|
return t;
|
|
3866
3988
|
}
|
|
3867
3989
|
async watchActors(e, t) {
|
|
3868
|
-
return this.watch("events", "inventory",
|
|
3990
|
+
return this.watch("events", "inventory", hr, e, t);
|
|
3869
3991
|
}
|
|
3870
3992
|
async watchRequests(e, t, n) {
|
|
3871
3993
|
let r = n ? `?${new URLSearchParams({ after: n })}` : "";
|
|
3872
|
-
return this.watch(`requests/events${r}`, "requests",
|
|
3994
|
+
return this.watch(`requests/events${r}`, "requests", vr, e, t);
|
|
3873
3995
|
}
|
|
3874
3996
|
async listRequests(e, t) {
|
|
3875
|
-
let n = await this.get(`requests${
|
|
3876
|
-
if (!
|
|
3997
|
+
let n = await this.get(`requests${mr(e)}`, t);
|
|
3998
|
+
if (!vr(n)) throw Error("Invalid request history response");
|
|
3877
3999
|
return n;
|
|
3878
4000
|
}
|
|
3879
4001
|
async watch(e, t, n, r, i) {
|
|
@@ -3922,29 +4044,29 @@ var er = class {
|
|
|
3922
4044
|
return n.json();
|
|
3923
4045
|
}
|
|
3924
4046
|
};
|
|
3925
|
-
function
|
|
4047
|
+
function mr(e) {
|
|
3926
4048
|
let t = new URLSearchParams();
|
|
3927
4049
|
for (let [n, r] of Object.entries(e)) r !== void 0 && t.set(n, String(r));
|
|
3928
4050
|
return t.size ? `?${t}` : "";
|
|
3929
4051
|
}
|
|
3930
|
-
function
|
|
4052
|
+
function hr(e) {
|
|
3931
4053
|
return !e || typeof e != "object" || !("actors" in e) || !Array.isArray(e.actors) ? !1 : e.actors.every((e) => e && typeof e.actorName == "string" && [
|
|
3932
4054
|
e.live,
|
|
3933
4055
|
e.dormant,
|
|
3934
4056
|
e.unknown
|
|
3935
|
-
].every((e) => Number.isSafeInteger(e) && e >= 0) && Array.isArray(e.instances) && e.instances.every(
|
|
4057
|
+
].every((e) => Number.isSafeInteger(e) && e >= 0) && Array.isArray(e.instances) && e.instances.every(gr));
|
|
3936
4058
|
}
|
|
3937
|
-
function
|
|
4059
|
+
function gr(e) {
|
|
3938
4060
|
return !!e && typeof e == "object" && "actorId" in e && typeof e.actorId == "string" && "status" in e && [
|
|
3939
4061
|
"live",
|
|
3940
4062
|
"dormant",
|
|
3941
4063
|
"unknown"
|
|
3942
|
-
].includes(String(e.status)) && "connections" in e && Array.isArray(e.connections) && e.connections.every(
|
|
4064
|
+
].includes(String(e.status)) && "connections" in e && Array.isArray(e.connections) && e.connections.every(_r) && (!("waiting" in e) || e.waiting == null || Array.isArray(e.waiting) && e.waiting.every((e) => !!e && typeof e == "object" && typeof e.id == "string" && typeof e.operation == "string"));
|
|
3943
4065
|
}
|
|
3944
|
-
function
|
|
4066
|
+
function _r(e) {
|
|
3945
4067
|
return !!e && typeof e == "object" && "id" in e && typeof e.id == "string" && "metadata" in e;
|
|
3946
4068
|
}
|
|
3947
|
-
function
|
|
4069
|
+
function vr(e) {
|
|
3948
4070
|
if (!e || typeof e != "object") return !1;
|
|
3949
4071
|
let t = e;
|
|
3950
4072
|
return typeof t.epoch == "string" && [
|
|
@@ -3952,12 +4074,12 @@ function ar(e) {
|
|
|
3952
4074
|
t.capacity,
|
|
3953
4075
|
t.evicted,
|
|
3954
4076
|
t.dropped
|
|
3955
|
-
].every(
|
|
4077
|
+
].every(yr) && (t.persistenceFailed === void 0 || typeof t.persistenceFailed == "boolean") && (t.nextCursor == null || typeof t.nextCursor == "string") && (t.resumeCursor === void 0 || typeof t.resumeCursor == "string") && (t.reset === void 0 || typeof t.reset == "boolean") && t.capacity > 0 && t.capacity <= 500 && Array.isArray(t.records) && t.records.length <= t.capacity && t.records.every((e) => br(e) && e.sequence <= t.cursor);
|
|
3956
4078
|
}
|
|
3957
|
-
function
|
|
4079
|
+
function yr(e) {
|
|
3958
4080
|
return Number.isSafeInteger(e) && Number(e) >= 0;
|
|
3959
4081
|
}
|
|
3960
|
-
function
|
|
4082
|
+
function br(e) {
|
|
3961
4083
|
if (!e || typeof e != "object") return !1;
|
|
3962
4084
|
let t = e;
|
|
3963
4085
|
return typeof t.projectId == "string" && /^[A-Za-z0-9._-]{1,64}$/u.test(t.projectId) && [
|
|
@@ -3967,7 +4089,7 @@ function sr(e) {
|
|
|
3967
4089
|
t.actorName,
|
|
3968
4090
|
t.actorId,
|
|
3969
4091
|
t.operation
|
|
3970
|
-
].every((e) => typeof e == "string") && (t.eventId === void 0 || typeof t.eventId == "string" && t.eventId.length > 0) &&
|
|
4092
|
+
].every((e) => typeof e == "string") && (t.eventId === void 0 || typeof t.eventId == "string" && t.eventId.length > 0) && yr(t.sequence) && yr(t.startedAtMs) && t.startedAtMs <= 864e13 && ["method", "websocket"].includes(t.kind) && [
|
|
3971
4093
|
"completed",
|
|
3972
4094
|
"failed",
|
|
3973
4095
|
"rejected",
|
|
@@ -3976,4 +4098,4 @@ function sr(e) {
|
|
|
3976
4098
|
].includes(t.outcome) && (t.connectionId === null || typeof t.connectionId == "string") && Number.isFinite(t.durationMs) && t.durationMs >= 0 && (t.queueWaitMs === null || Number.isFinite(t.queueWaitMs) && t.queueWaitMs >= 0 && t.queueWaitMs <= t.durationMs);
|
|
3977
4099
|
}
|
|
3978
4100
|
//#endregion
|
|
3979
|
-
export {
|
|
4101
|
+
export { Lt as ActorObserver, W as Badge, V as Button, De as Calendar, Oe as CalendarDayButton, ce as Command, de as CommandEmpty, fe as CommandGroup, le as CommandInput, me as CommandItem, ue as CommandList, pe as CommandSeparator, he as CommandShortcut, sr as ConsoleApp, Xe as Drawer, $e as DrawerClose, tt as DrawerContent, at as DrawerDescription, rt as DrawerFooter, nt as DrawerHeader, et as DrawerOverlay, Qe as DrawerPortal, it as DrawerTitle, Ze as DrawerTrigger, ge as FilterCombobox, pr as HttpObserverClient, H as Input, ln as Overview, ke as Popover, Me as PopoverAnchor, je as PopoverContent, Fe as PopoverDescription, Ne as PopoverHeader, Pe as PopoverTitle, Ae as PopoverTrigger, mt as RequestObserver, Se as RequestTimeline, qn as Sheet, Xn as SheetContent, Yn as SheetDescription, Jn as SheetTitle, Nn as SocketTimeline, K as Table, J as TableBody, ct as TableCaption, Z as TableCell, st as TableFooter, X as TableHead, q as TableHeader, Y as TableRow, He as TimeRangePicker, Qn as WebSocketObserver, Ye as badgeVariants, Ee as buttonVariants, Le as defaultTimeRange, ze as rangeLabel, Re as resolveRange };
|