@apisurf/wireui 0.1.2 → 0.1.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.
Files changed (51) hide show
  1. package/README.md +42 -26
  2. package/bin/wireui.mjs +1 -1
  3. package/dist/nitro.json +1 -1
  4. package/dist/public/assets/environments-299O-03t.js +1 -0
  5. package/dist/public/assets/feed-B8L4GK9D.js +1 -0
  6. package/dist/public/assets/globals-k1eOASJT.css +1 -0
  7. package/dist/public/assets/history-EqPRzguE.js +1 -0
  8. package/dist/public/assets/index-D3MuiLlr.js +11 -0
  9. package/dist/public/assets/kv-table-Dv6o68aD.js +2 -0
  10. package/dist/public/assets/preload-helper-CIs162tl.js +3 -0
  11. package/dist/public/assets/query-DE41dcUO.js +19 -0
  12. package/dist/public/assets/requests._requestId-DSbe2mSh.js +1 -0
  13. package/dist/public/assets/rolldown-runtime-CbXtAM7H.js +1 -0
  14. package/dist/public/assets/routes-CRl6TZP9.js +1 -0
  15. package/dist/public/assets/runs._runId-BGRrB0cL.js +1 -0
  16. package/dist/public/assets/scoped-DoOxDjHI.js +1 -0
  17. package/dist/public/assets/session-header-wONyPgx_.js +1 -0
  18. package/dist/public/assets/sessions-CqjoUG4A.js +1 -0
  19. package/dist/public/assets/split-Ddiw3mOT.js +1 -0
  20. package/dist/public/assets/tabs-C1EijW_Z.js +2 -0
  21. package/dist/server/_ssr/{api-Dw1Zb_PK.mjs → api-DUem3i24.mjs} +28 -17
  22. package/dist/server/_ssr/environments-BFBtf7iL.mjs +146 -0
  23. package/dist/server/_ssr/feed-BgweoqQ4.mjs +108 -0
  24. package/dist/server/_ssr/history-CbfbTHg9.mjs +195 -0
  25. package/dist/server/_ssr/{kv-table-DQUkoItO.mjs → kv-table-BONnSOLb.mjs} +2 -2
  26. package/dist/server/_ssr/{router-CPcgc_kh.mjs → prefs-iPvYd_Vz.mjs} +246 -1551
  27. package/dist/server/_ssr/{query-D4so9xiY.mjs → query-DBNlR5hk.mjs} +7 -6
  28. package/dist/server/_ssr/{requests._requestId-BFukRwqL.mjs → requests._requestId-DX2svRx4.mjs} +7 -23
  29. package/dist/server/_ssr/router-BpH2DFcQ.mjs +1068 -0
  30. package/dist/server/_ssr/{routes-DaV9vGHn.mjs → routes-DGIQrvhg.mjs} +18 -8
  31. package/dist/server/_ssr/runs._runId-DZ-DQirQ.mjs +850 -0
  32. package/dist/server/_ssr/{scoped-CnQ56K8h.mjs → scoped-CNX8KOhL.mjs} +2 -2
  33. package/dist/server/_ssr/session-header-CH-Pbd1E.mjs +153 -0
  34. package/dist/server/_ssr/{collections-CqidTQpw.mjs → sessions-D3LBcKOI.mjs} +35 -72
  35. package/dist/server/_ssr/{split-DWrMIs7K.mjs → split-qGbYHKc9.mjs} +2 -2
  36. package/dist/server/_ssr/ssr.mjs +10 -14
  37. package/dist/server/_tanstack-start-manifest_v-B2rWFyf7.mjs +79 -0
  38. package/dist/server/index.mjs +100 -51
  39. package/package.json +3 -3
  40. package/dist/public/assets/collections-CLHcfRfi.js +0 -1
  41. package/dist/public/assets/globals-CZiNFGaK.css +0 -1
  42. package/dist/public/assets/index-D5VFd_3H.js +0 -14
  43. package/dist/public/assets/kv-table-oB5gcq0i.js +0 -2
  44. package/dist/public/assets/query-BKAhHNIi.js +0 -19
  45. package/dist/public/assets/requests._requestId-Bu7E2eoI.js +0 -1
  46. package/dist/public/assets/routes-DDY2CfzA.js +0 -1
  47. package/dist/public/assets/runs._runId-CzwtVjYq.js +0 -1
  48. package/dist/public/assets/scoped-DB8raIWx.js +0 -1
  49. package/dist/public/assets/split-Br1RX2I4.js +0 -1
  50. package/dist/server/_ssr/runs._runId-Df_LmPHa.mjs +0 -836
  51. package/dist/server/_tanstack-start-manifest_v-CARKjHfs.mjs +0 -50
@@ -0,0 +1,146 @@
1
+ import { getRouteApi, require_jsx_runtime } from "../_libs/@tanstack/react-router+[...].mjs";
2
+ import { Dot, Empty, IconEnvironments, Pill, css, cx, formatAgo, formatCount, scrollPane, tabKey, table, truncate, useNow, usePrefs, useTab, useUnreadable } from "./prefs-iPvYd_Vz.mjs";
3
+ import { FeedHeader } from "./feed-BgweoqQ4.mjs";
4
+ //#region node_modules/.nitro/vite/services/ssr/assets/environments-BFBtf7iL.js
5
+ var import_jsx_runtime = require_jsx_runtime();
6
+ var root = getRouteApi("__root__");
7
+ function EnvironmentsPage() {
8
+ useTab({
9
+ key: tabKey.environments(),
10
+ title: "Environments",
11
+ icon: "environments"
12
+ });
13
+ const unreadable = useUnreadable();
14
+ const ws = root.useLoaderData();
15
+ const now = useNow(ws.now, 6e4);
16
+ const { prefs, set } = usePrefs();
17
+ if (unreadable) return unreadable;
18
+ const rows = [{
19
+ value: "*",
20
+ name: "All environments",
21
+ runs: ws.envs.reduce((sum, e) => sum + e.run_count, 0),
22
+ scripts: ws.scripts.length,
23
+ failed: ws.envs.reduce((sum, e) => sum + e.failed_run_count, 0),
24
+ last: ws.envs[0]?.last_started_at ?? null
25
+ }, ...ws.envs.map((e) => ({
26
+ value: e.env ?? "",
27
+ name: e.env ?? "No environment",
28
+ runs: e.run_count,
29
+ scripts: e.script_count,
30
+ failed: e.failed_run_count,
31
+ last: e.last_started_at
32
+ }))];
33
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
34
+ className: css({
35
+ display: "flex",
36
+ flexDir: "column",
37
+ h: "full",
38
+ minH: "0"
39
+ }),
40
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(FeedHeader, {
41
+ title: "Environments",
42
+ subtitle: "The --env each run was recorded against. Pick one to scope every page to it."
43
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
44
+ className: scrollPane,
45
+ children: ws.envs.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Empty, {
46
+ title: "No environments",
47
+ icon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(IconEnvironments, { size: 20 }),
48
+ children: [
49
+ "Runs made with ",
50
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("code", { children: "wire execute --env staging" }),
51
+ " are grouped here."
52
+ ]
53
+ }) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("table", {
54
+ className: table,
55
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("tr", { children: [
56
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("th", { children: "Environment" }),
57
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("th", {
58
+ className: "num",
59
+ children: "Runs"
60
+ }),
61
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("th", {
62
+ className: "num",
63
+ children: "Sessions"
64
+ }),
65
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("th", {
66
+ className: "num",
67
+ children: "Threw"
68
+ }),
69
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("th", {
70
+ className: "num",
71
+ children: "Last run"
72
+ })
73
+ ] }) }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("tbody", { children: rows.map((row) => {
74
+ const selected = prefs.env === row.value;
75
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("tr", {
76
+ "data-link": true,
77
+ "aria-selected": selected,
78
+ onClick: () => set("env", row.value),
79
+ children: [
80
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("td", {
81
+ className: css({
82
+ maxW: "0",
83
+ w: "full"
84
+ }),
85
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
86
+ className: css({
87
+ display: "flex",
88
+ alignItems: "center",
89
+ gap: "2",
90
+ minW: "0"
91
+ }),
92
+ children: [
93
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
94
+ className: css({
95
+ display: "inline-flex",
96
+ color: selected ? "accent" : "faint"
97
+ }),
98
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(IconEnvironments, { size: 14 })
99
+ }),
100
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
101
+ className: cx(truncate, css({ fontWeight: "500" })),
102
+ children: row.name
103
+ }),
104
+ selected ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Pill, {
105
+ tone: "info",
106
+ children: "Selected"
107
+ }) : null
108
+ ]
109
+ })
110
+ }),
111
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("td", {
112
+ className: "num",
113
+ children: formatCount(row.runs)
114
+ }),
115
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("td", {
116
+ className: "num",
117
+ children: formatCount(row.scripts)
118
+ }),
119
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("td", {
120
+ className: "num",
121
+ children: row.failed ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
122
+ className: css({
123
+ display: "inline-flex",
124
+ alignItems: "center",
125
+ gap: "1.5",
126
+ color: "bad"
127
+ }),
128
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Dot, { tone: "bad" }), formatCount(row.failed)]
129
+ }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
130
+ className: css({ color: "faint" }),
131
+ children: "0"
132
+ })
133
+ }),
134
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("td", {
135
+ className: cx("num", css({ color: "muted" })),
136
+ children: row.last ? formatAgo(now, row.last) : "—"
137
+ })
138
+ ]
139
+ }, row.value);
140
+ }) })]
141
+ })
142
+ })]
143
+ });
144
+ }
145
+ //#endregion
146
+ export { EnvironmentsPage as component };
@@ -0,0 +1,108 @@
1
+ import { __toESM } from "../_runtime.mjs";
2
+ import { require_jsx_runtime, require_react } from "../_libs/@tanstack/react-router+[...].mjs";
3
+ import { FilterInput, css } from "./prefs-iPvYd_Vz.mjs";
4
+ //#region node_modules/.nitro/vite/services/ssr/assets/feed-BgweoqQ4.js
5
+ var import_react = /* @__PURE__ */ __toESM(require_react());
6
+ var import_jsx_runtime = require_jsx_runtime();
7
+ function FeedHeader({ title, subtitle, children }) {
8
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("header", {
9
+ className: css({
10
+ px: "5",
11
+ pt: "4",
12
+ pb: "3",
13
+ flexShrink: 0
14
+ }),
15
+ children: [
16
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h1", {
17
+ className: css({
18
+ fontSize: "18px",
19
+ fontWeight: "600",
20
+ m: "0"
21
+ }),
22
+ children: title
23
+ }),
24
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", {
25
+ className: css({
26
+ color: "muted",
27
+ fontSize: "12px",
28
+ m: "0",
29
+ mt: "0.5"
30
+ }),
31
+ children: subtitle
32
+ }),
33
+ children ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
34
+ className: css({
35
+ display: "flex",
36
+ alignItems: "center",
37
+ gap: "2",
38
+ flexWrap: "wrap",
39
+ mt: "3"
40
+ }),
41
+ children
42
+ }) : null
43
+ ]
44
+ });
45
+ }
46
+ /** The feed's search box, kept in step with a search param. */
47
+ function FeedSearch({ value, onCommit, placeholder }) {
48
+ const [text, setText] = import_react.useState(value);
49
+ import_react.useEffect(() => setText(value), [value]);
50
+ import_react.useEffect(() => {
51
+ if (text === value) return;
52
+ const timer = window.setTimeout(() => onCommit(text), 180);
53
+ return () => window.clearTimeout(timer);
54
+ }, [
55
+ text,
56
+ value,
57
+ onCommit
58
+ ]);
59
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FilterInput, {
60
+ "data-page-filter": true,
61
+ placeholder,
62
+ shortcut: "/",
63
+ value: text,
64
+ onChange: (e) => setText(e.target.value),
65
+ className: css({
66
+ w: "320px",
67
+ maxW: "full"
68
+ })
69
+ });
70
+ }
71
+ /** A day heading spanning the table, sticking under the column headings. */
72
+ function DayRow({ day, columns }) {
73
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("tr", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("td", {
74
+ colSpan: columns,
75
+ className: css({
76
+ position: "sticky",
77
+ top: "29px",
78
+ bg: "canvas",
79
+ fontSize: "10.5px",
80
+ fontWeight: "600",
81
+ textTransform: "uppercase",
82
+ letterSpacing: "0.06em",
83
+ color: "faint",
84
+ pt: "3",
85
+ pb: "1"
86
+ }),
87
+ children: day
88
+ }) });
89
+ }
90
+ function FeedFooter({ shown, limit }) {
91
+ if (shown < limit) return null;
92
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", {
93
+ className: css({
94
+ color: "faint",
95
+ fontSize: "12px",
96
+ px: "5",
97
+ py: "3",
98
+ m: "0"
99
+ }),
100
+ children: [
101
+ "Showing the newest ",
102
+ limit,
103
+ ". Narrow the filters, or the SQL console reaches the rest."
104
+ ]
105
+ });
106
+ }
107
+ //#endregion
108
+ export { DayRow, FeedFooter, FeedHeader, FeedSearch };
@@ -0,0 +1,195 @@
1
+ import { __toESM } from "../_runtime.mjs";
2
+ import { getRouteApi, require_jsx_runtime, require_react, useNavigate } from "../_libs/@tanstack/react-router+[...].mjs";
3
+ import { Empty, IconHistory, MethodBadge, Segmented, StatusBadge, Toggle, css, cx, formatBytes, formatClock, formatMs, groupByDay, mono, scrollPane, tabKey, table, truncate, useNow, usePrefs, useTab, useUnreadable } from "./prefs-iPvYd_Vz.mjs";
4
+ import { DayRow, FeedFooter, FeedHeader, FeedSearch } from "./feed-BgweoqQ4.mjs";
5
+ import { Route$4, getHistory } from "./router-BpH2DFcQ.mjs";
6
+ import { useEnvScoped } from "./scoped-CNX8KOhL.mjs";
7
+ //#region node_modules/.nitro/vite/services/ssr/assets/history-CbfbTHg9.js
8
+ var import_react = /* @__PURE__ */ __toESM(require_react());
9
+ var import_jsx_runtime = require_jsx_runtime();
10
+ var root = getRouteApi("__root__");
11
+ function HistoryPage() {
12
+ useTab({
13
+ key: tabKey.history(),
14
+ title: "History",
15
+ icon: "history"
16
+ });
17
+ const unreadable = useUnreadable();
18
+ const ws = root.useLoaderData();
19
+ const now = useNow(ws.now, 6e4);
20
+ const { prefs } = usePrefs();
21
+ const search = Route$4.useSearch();
22
+ const { data: rows } = useEnvScoped(Route$4.useLoaderData(), (env) => getHistory({ data: {
23
+ ...search,
24
+ env,
25
+ limit: 500
26
+ } }));
27
+ const navigate = useNavigate({ from: Route$4.fullPath });
28
+ const filter = import_react.useCallback((next) => void navigate({
29
+ search: (s) => ({
30
+ ...s,
31
+ ...next
32
+ }),
33
+ replace: true
34
+ }), [navigate]);
35
+ const commitQ = import_react.useCallback((q) => filter({ q: q || void 0 }), [filter]);
36
+ if (unreadable) return unreadable;
37
+ const kind = search.kind ?? "all";
38
+ const filtered = Boolean(search.q || search.kind || search.failed);
39
+ const envName = prefs.env === "*" ? null : prefs.env === "" ? "No environment" : prefs.env;
40
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
41
+ className: css({
42
+ display: "flex",
43
+ flexDir: "column",
44
+ h: "full",
45
+ minH: "0"
46
+ }),
47
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(FeedHeader, {
48
+ title: "History",
49
+ subtitle: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: ["Every request across every run, newest first.", envName ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
50
+ " ",
51
+ "Scoped to ",
52
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("b", { children: envName }),
53
+ "."
54
+ ] }) : null] }),
55
+ children: [
56
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FeedSearch, {
57
+ value: search.q ?? "",
58
+ onCommit: commitQ,
59
+ placeholder: search.bodies ? "Search URLs and payloads" : "Search URL, method or status"
60
+ }),
61
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Segmented, {
62
+ items: [
63
+ {
64
+ id: "all",
65
+ label: "All"
66
+ },
67
+ {
68
+ id: "http",
69
+ label: "HTTP"
70
+ },
71
+ {
72
+ id: "stream",
73
+ label: "WS/SSE"
74
+ }
75
+ ],
76
+ value: kind,
77
+ onSelect: (next) => filter({ kind: next === "all" ? void 0 : next })
78
+ }),
79
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Toggle, {
80
+ checked: Boolean(search.failed),
81
+ onChange: (on) => filter({ failed: on || void 0 }),
82
+ label: "Failed"
83
+ }),
84
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Toggle, {
85
+ checked: Boolean(search.bodies),
86
+ onChange: (on) => filter({ bodies: on || void 0 }),
87
+ label: "In payloads"
88
+ })
89
+ ]
90
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
91
+ className: scrollPane,
92
+ children: rows.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Empty, {
93
+ title: "No requests",
94
+ icon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(IconHistory, { size: 20 }),
95
+ children: filtered ? "Nothing matches these filters." : "Nothing recorded in this environment yet."
96
+ }) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("table", {
97
+ className: table,
98
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("tr", { children: [
99
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("th", {
100
+ className: "num",
101
+ style: { width: 80 },
102
+ children: "Time"
103
+ }),
104
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("th", { children: "Request" }),
105
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("th", { children: "Status" }),
106
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("th", { children: "Session" }),
107
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("th", {
108
+ className: "num",
109
+ children: "Size"
110
+ }),
111
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("th", {
112
+ className: "num",
113
+ children: "Duration"
114
+ })
115
+ ] }) }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("tbody", { children: groupByDay(rows, now, (row) => row.ts).map((group) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_react.Fragment, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(DayRow, {
116
+ day: group.day,
117
+ columns: 6
118
+ }), group.rows.map((row) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("tr", {
119
+ "data-link": true,
120
+ title: `${row.method} ${row.host}${row.path}${row.query ? `?${row.query}` : ""}`,
121
+ onClick: () => void navigate({
122
+ to: "/requests/$requestId",
123
+ params: { requestId: String(row.id) }
124
+ }),
125
+ children: [
126
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("td", {
127
+ className: cx("num", mono, css({ color: "muted" })),
128
+ children: formatClock(row.ts)
129
+ }),
130
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("td", {
131
+ className: css({
132
+ maxW: "0",
133
+ w: "full"
134
+ }),
135
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
136
+ className: css({
137
+ display: "flex",
138
+ alignItems: "center",
139
+ gap: "2",
140
+ minW: "0"
141
+ }),
142
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(MethodBadge, {
143
+ method: row.method,
144
+ kind: row.kind,
145
+ width: "list"
146
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
147
+ className: cx(truncate, mono),
148
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
149
+ className: css({ color: "faint" }),
150
+ children: row.host
151
+ }), row.path]
152
+ })]
153
+ })
154
+ }),
155
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("td", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(StatusBadge, {
156
+ status: row.status,
157
+ error: row.error_name
158
+ }) }),
159
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("td", {
160
+ className: css({ maxW: "220px" }),
161
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
162
+ className: css({
163
+ display: "flex",
164
+ gap: "1.5",
165
+ minW: "0"
166
+ }),
167
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
168
+ className: truncate,
169
+ title: row.rel,
170
+ children: row.file
171
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
172
+ className: cx(mono, css({ color: "faint" })),
173
+ children: ["#", row.run_id]
174
+ })]
175
+ })
176
+ }),
177
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("td", {
178
+ className: cx("num", mono, css({ color: "muted" })),
179
+ children: formatBytes(row.response_bytes)
180
+ }),
181
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("td", {
182
+ className: cx("num", mono),
183
+ children: formatMs(row.duration_ms)
184
+ })
185
+ ]
186
+ }, row.id))] }, group.day)) })]
187
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FeedFooter, {
188
+ shown: rows.length,
189
+ limit: 500
190
+ })] })
191
+ })]
192
+ });
193
+ }
194
+ //#endregion
195
+ export { HistoryPage as component };
@@ -1,7 +1,7 @@
1
1
  import { __toESM } from "../_runtime.mjs";
2
2
  import { require_jsx_runtime, require_react } from "../_libs/@tanstack/react-router+[...].mjs";
3
- import { Button, Callout, CopyButton, Empty, FilterInput, IconAlert, IconChevronDown, IconChevronRight, IconFile, Segmented, bodyRaw, bodyText, css, cx, faintText, formatBytes, mono, table, truncate } from "./router-CPcgc_kh.mjs";
4
- //#region node_modules/.nitro/vite/services/ssr/assets/kv-table-DQUkoItO.js
3
+ import { Button, Callout, CopyButton, Empty, FilterInput, IconAlert, IconChevronDown, IconChevronRight, IconFile, Segmented, bodyRaw, bodyText, css, cx, faintText, formatBytes, mono, table, truncate } from "./prefs-iPvYd_Vz.mjs";
4
+ //#region node_modules/.nitro/vite/services/ssr/assets/kv-table-BONnSOLb.js
5
5
  var import_react = /* @__PURE__ */ __toESM(require_react());
6
6
  var import_jsx_runtime = require_jsx_runtime();
7
7
  var syn = {