@hot-updater/console 1.0.0-rc.38 → 1.0.0-rc.39
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/.output/nitro.json +1 -1
- package/.output/public/assets/EventDetails-BUTZTAVo.js +1 -0
- package/.output/public/assets/{InsightsInfo-D1TJXkbu.js → InsightsInfo-B8i-PPsH.js} +1 -1
- package/.output/public/assets/{index-Do7IxIxX.js → index-YSc3HCcR.js} +2 -2
- package/.output/public/assets/{insights-Kvg4qOr4.js → insights-BT0ER2ff.js} +2 -2
- package/.output/public/assets/{insights--zAfnUe8.js → insights-DPY9akyx.js} +2 -2
- package/.output/public/assets/{insights_.distribution-DvwYKSL9.js → insights_.distribution-NyB0_bbh.js} +2 -2
- package/.output/public/assets/{insights_.distribution-DuPsUTYt.js → insights_.distribution-jH_7sKdg.js} +1 -1
- package/.output/public/assets/installations-C-QP0sM1.js +1 -0
- package/.output/public/assets/{installations-K7RQVwM0.js → installations-yQkxp5fm.js} +2 -2
- package/.output/public/assets/routes-DQWmO9Ow.js +2 -0
- package/.output/public/assets/{routes-B91Tl8_r.js → routes-DuBSi7uM.js} +1 -1
- package/.output/public/assets/styles-Cm2ONGCt.css +2 -0
- package/.output/server/{__23tanstack-start-server-fn-resolver-D2DlC98n.mjs → __23tanstack-start-server-fn-resolver-DNbgEvfb.mjs} +36 -36
- package/.output/server/_ssr/{ConsoleFeatureUnavailable-BvJHPvTO.mjs → ConsoleFeatureUnavailable-BCGWklf8.mjs} +5 -5
- package/.output/server/_ssr/{EventDetails-BdqdvP7j.mjs → EventDetails-vtXoqSGS.mjs} +12 -12
- package/.output/server/_ssr/{InsightsInfo-D4SjtR7c.mjs → InsightsInfo-B0AtaDnr.mjs} +2 -3
- package/.output/server/_ssr/{InsightsPageHeader-Dg-Cq6Jf.mjs → InsightsPageHeader-BryzBlT8.mjs} +4 -4
- package/.output/server/_ssr/{NotFoundPage-DOffKluM.mjs → NotFoundPage-xK1bhpoZ.mjs} +2 -2
- package/.output/server/_ssr/{alert-dialog-Du8xkzuD.mjs → alert-dialog-Cc9d0p8Y.mjs} +1 -1
- package/.output/server/_ssr/{api-Decvp1W8.mjs → api-Bz1UGqdn.mjs} +3 -3
- package/.output/server/_ssr/{api-keys-BiY7F-jF.mjs → api-keys-C2jqeEZ_.mjs} +2 -2
- package/.output/server/_ssr/{api-keys-CrUUPwJo.mjs → api-keys-DnKkFZ3T.mjs} +8 -8
- package/.output/server/_ssr/{api-keys-rpc-w1DRrFJC.mjs → api-keys-rpc-BJ0MKu1e.mjs} +3 -3
- package/.output/server/_ssr/{api-rpc-D6WDEPQe.mjs → api-rpc-B9mAeGyS.mjs} +4 -4
- package/.output/server/_ssr/{auth-rpc-B9zrRwAV.mjs → auth-rpc-Bs4tYGIg.mjs} +4 -4
- package/.output/server/_ssr/{auth.server-9C1lwD6v.mjs → auth.server-CcTNWmd4.mjs} +2 -2
- package/.output/server/_ssr/{card-B1W5pz7e.mjs → card-GK-VihZc.mjs} +1 -1
- package/.output/server/_ssr/{config.server-BTWqL8Wu.mjs → config.server-DaeqzKiu.mjs} +3 -3
- package/.output/server/_ssr/{console-access-BNNn78dH.mjs → console-access-CSVqeikY.mjs} +2 -2
- package/.output/server/_ssr/{console-features-api-DxLlMYo-.mjs → console-features-api-CuukSjL8.mjs} +3 -3
- package/.output/server/_ssr/{console-features-rpc-BhpBG3ta.mjs → console-features-rpc-Dxv_D020.mjs} +3 -3
- package/.output/server/_ssr/{dialog-9dEOexEP.mjs → dialog-Vjm_bDw9.mjs} +1 -1
- package/.output/server/_ssr/{empty-DnRjzUgx.mjs → empty-DeVHKygf.mjs} +2 -2
- package/.output/server/_ssr/{field-DagHXRGq.mjs → field-CcbQSAiS.mjs} +2 -2
- package/.output/server/_ssr/{input-group-Bj2GzsE2.mjs → input-group-D7oZhqZP.mjs} +1 -1
- package/.output/server/_ssr/{insights-BHmN81oc.mjs → insights-C2_kuG7Z.mjs} +2 -2
- package/.output/server/_ssr/{insights-DB8_0FVe.mjs → insights-CdkhyQHH.mjs} +5 -5
- package/.output/server/_ssr/{insights-Ik6mWQuS.mjs → insights-DFBjq_u1.mjs} +145 -119
- package/.output/server/_ssr/{insights-api-DpEr71pS.mjs → insights-api-CBBcHIUP.mjs} +3 -3
- package/.output/server/_ssr/{insights-failures-rpc-Dt4sB0wL.mjs → insights-failures-rpc-CTf5QF7O.mjs} +4 -4
- package/.output/server/_ssr/{insights-recovery-rpc-C7t2Y320.mjs → insights-recovery-rpc-CPKwBt4V.mjs} +3 -3
- package/.output/server/_ssr/{insights-rpc-DR8PTO5q.mjs → insights-rpc-DjhnYd2B.mjs} +3 -3
- package/.output/server/_ssr/{insights-usage-rpc-BQVYKfc6.mjs → insights-usage-rpc-CLHRgGDT.mjs} +3 -3
- package/.output/server/_ssr/{insights-usage-rpc-COsslYcz.mjs → insights-usage-rpc-CLyldyrz.mjs} +3 -3
- package/.output/server/_ssr/{insights_.distribution-C10X8OIZ.mjs → insights_.distribution-Buu3dsat.mjs} +11 -11
- package/.output/server/_ssr/{insights_.distribution-CRnqnKSB.mjs → insights_.distribution-DXCwHGBj.mjs} +5 -5
- package/.output/server/_ssr/{insights_.distribution-BZx_7Fuo.mjs → insights_.distribution-WDmsXtQl.mjs} +2 -2
- package/.output/server/_ssr/{installations-C4ayn5mQ.mjs → installations-BiZY4zjE.mjs} +12 -12
- package/.output/server/_ssr/{installations-BfxRnXMz.mjs → installations-Dfe3WTAY.mjs} +2 -2
- package/.output/server/_ssr/{installations-DDPzSsM4.mjs → installations-sR2BlZxi.mjs} +4 -4
- package/.output/server/_ssr/{release-adoption-RBqFLBpk.mjs → release-adoption-NO2DVJwF.mjs} +8 -8
- package/.output/server/_ssr/{release-adoption-rpc-BNhI5B2O.mjs → release-adoption-rpc-DVhlhHRR.mjs} +7 -7
- package/.output/server/_ssr/{releaseAdoption-CzeDAkz7.mjs → releaseAdoption-CwFUzIZA.mjs} +13 -6
- package/.output/server/_ssr/{router-Cp0V7wgq.mjs → router-HumF5rJs.mjs} +13 -13
- package/.output/server/_ssr/{routes--Ok7gExb.mjs → routes-CN0fvuLB.mjs} +9 -9
- package/.output/server/_ssr/{routes-Bs4bcThx.mjs → routes-kDK03EWa.mjs} +11 -11
- package/.output/server/_ssr/{select-CPqwJtfU.mjs → select-ycdfR07Y.mjs} +1 -1
- package/.output/server/_ssr/{server-CPmnhW4G.mjs → server-CyAnx61_.mjs} +3 -3
- package/.output/server/_ssr/{sidebar-BSczcwfL.mjs → sidebar-B2SHpuig.mjs} +2 -2
- package/.output/server/_ssr/ssr.mjs +1 -1
- package/.output/server/_ssr/{table-B6Y2_B90.mjs → table-COXYXU49.mjs} +1 -1
- package/.output/server/{_tanstack-start-manifest_v-Do3ixTyo.mjs → _tanstack-start-manifest_v-DcB4oGQp.mjs} +24 -24
- package/.output/server/index.mjs +117 -117
- package/package.json +7 -7
- package/src/components/features/insights/ComparedBundlesChart.tsx +108 -61
- package/src/components/features/insights/EventDetails.tsx +6 -7
- package/src/components/features/insights/InsightsOverview.tsx +90 -71
- package/src/components/features/insights/InstallationHistoryCard.tsx +1 -1
- package/src/components/features/insights/ReleaseActivity.tsx +2 -3
- package/src/lib/insights-search.ts +0 -6
- package/src/lib/insights-view.ts +0 -7
- package/src/lib/release-adoption-api.ts +6 -3
- package/src/lib/release-adoption.ts +18 -15
- package/src/lib/server/releaseAdoption.ts +29 -20
- package/src/routes/insights.tsx +0 -9
- package/src/routes/installations.tsx +1 -1
- package/.output/public/assets/EventDetails-DxKEfM63.js +0 -1
- package/.output/public/assets/installations-DMKfJhu2.js +0 -1
- package/.output/public/assets/routes-B2VVPV8z.js +0 -2
- package/.output/public/assets/styles-C0s3e1IX.css +0 -2
|
@@ -2,32 +2,32 @@ import { i as __toESM } from "../_runtime.mjs";
|
|
|
2
2
|
import { u as createServerFn } from "./createMiddleware-BdBf_ezN.mjs";
|
|
3
3
|
import { C as ScrollAreaRoot, S as ScrollAreaViewport, _ as ComboboxInput$1, b as ScrollAreaThumb, c as ComboboxItemIndicator, d as ComboboxItem$1, f as ComboboxPopup, g as ComboboxClear$1, h as ComboboxList$1, ht as require_react, l as ComboboxRoot, m as ComboboxPortal, mt as require_jsx_runtime, p as ComboboxPositioner, u as ComboboxEmpty$1, v as ComboboxTrigger$1, x as ScrollAreaScrollbar, y as ScrollAreaCorner } from "../_libs/@base-ui/react+[...].mjs";
|
|
4
4
|
import { A as Copy, C as List, H as ArrowUpRight, I as ChevronRight, R as ChevronDown, U as ArrowRight, f as RotateCw, m as RefreshCw, n as Undo2, p as RotateCcw, r as TriangleAlert, t as X, z as Check } from "../_libs/lucide-react.mjs";
|
|
5
|
-
import { A as createSsrRpc, C as Skeleton, O as buttonVariants, a as SheetContent, c as SheetTitle, i as Sheet, k as cn, l as SheetTrigger, n as Input, o as SheetDescription, r as Separator$1, s as SheetHeader, t as Button$1 } from "./sidebar-
|
|
6
|
-
import { t as consoleAccess } from "./console-access-
|
|
5
|
+
import { A as createSsrRpc, C as Skeleton, O as buttonVariants, a as SheetContent, c as SheetTitle, i as Sheet, k as cn, l as SheetTrigger, n as Input, o as SheetDescription, r as Separator$1, s as SheetHeader, t as Button$1 } from "./sidebar-B2SHpuig.mjs";
|
|
6
|
+
import { t as consoleAccess } from "./console-access-CSVqeikY.mjs";
|
|
7
7
|
import { h as Link } from "../_libs/@tanstack/react-router+[...].mjs";
|
|
8
8
|
import { a as useQueries, i as useQuery, s as useQueryClient } from "../_libs/tanstack__react-query.mjs";
|
|
9
|
-
import { a as EmptyTitle, i as EmptyHeader, n as EmptyContent, r as EmptyDescription, t as Empty } from "./empty-
|
|
10
|
-
import { a as CardHeader, i as CardFooter, n as CardContent, o as CardTitle, r as CardDescription, t as Card } from "./card-
|
|
11
|
-
import { a as Badge, i as AlertTitle, l as FieldGroup, o as Field, r as AlertDescription, t as Alert, u as FieldLabel } from "./field-
|
|
12
|
-
import { a as AlertDialogDescription, i as AlertDialogContent, l as AlertDialogTitle, n as AlertDialogAction, o as AlertDialogFooter, r as AlertDialogCancel, s as AlertDialogHeader, t as AlertDialog$1 } from "./alert-dialog-
|
|
13
|
-
import { a as TableHeader, i as TableHead, n as TableBody, o as TableRow, r as TableCell, t as Table } from "./table-
|
|
9
|
+
import { a as EmptyTitle, i as EmptyHeader, n as EmptyContent, r as EmptyDescription, t as Empty } from "./empty-DeVHKygf.mjs";
|
|
10
|
+
import { a as CardHeader, i as CardFooter, n as CardContent, o as CardTitle, r as CardDescription, t as Card } from "./card-GK-VihZc.mjs";
|
|
11
|
+
import { a as Badge, i as AlertTitle, l as FieldGroup, o as Field, r as AlertDescription, t as Alert, u as FieldLabel } from "./field-CcbQSAiS.mjs";
|
|
12
|
+
import { a as AlertDialogDescription, i as AlertDialogContent, l as AlertDialogTitle, n as AlertDialogAction, o as AlertDialogFooter, r as AlertDialogCancel, s as AlertDialogHeader, t as AlertDialog$1 } from "./alert-dialog-Cc9d0p8Y.mjs";
|
|
13
|
+
import { a as TableHeader, i as TableHead, n as TableBody, o as TableRow, r as TableCell, t as Table } from "./table-COXYXU49.mjs";
|
|
14
14
|
import { n as toast } from "../_libs/sonner.mjs";
|
|
15
15
|
import { r as recoveryWindows, t as insightsPeriodEnd } from "./insights-recovery-Dpk6Mfb9.mjs";
|
|
16
16
|
import { a as failureReasonLabel, c as patchFallbackRate, i as failureRate, o as failureStageLabel, r as failureDetailParts, s as formatRate, t as checkFailureRate } from "./insights-failures-BZaGNNij.mjs";
|
|
17
17
|
import { t as groupFailureReports } from "./insights-errors-F-7hOApm.mjs";
|
|
18
18
|
import { n as usageMetrics } from "./insights-usage-CLUWjUFz.mjs";
|
|
19
|
-
import { a as readBundleEventsInput, i as readAdoptionReleasesInput, n as crashRateOf, o as recommendsRollback, r as readAdoptionReleaseInput, t as CRASH_RATE_THRESHOLD } from "./release-adoption-
|
|
20
|
-
import { i as useFailureReportsQuery, l as useInsightsRetention, r as keepsTwelveMonths, t as DEFAULT_INSIGHTS_RETENTION, u as useUpdateFailuresQuery } from "./insights-api-
|
|
21
|
-
import { r as comparedBundleIds, t as InsightsInfo } from "./InsightsInfo-
|
|
22
|
-
import { t as Route } from "./insights-
|
|
23
|
-
import { a as SelectGroup, c as SelectValue, i as SelectContent, n as PlatformIcon, o as SelectItem, r as Select$1, s as SelectTrigger, t as BundleIdDisplay } from "./select-
|
|
24
|
-
import { i as useChannelsQuery, l as usePreflightReleaseMutation, m as useUpdateReleaseMutation } from "./api-
|
|
25
|
-
import { a as InputGroupInput, i as InputGroupButton, n as InputGroup, r as InputGroupAddon } from "./input-group-
|
|
26
|
-
import { n as getAppUsageReportRpc, t as Progress$1 } from "./insights-usage-rpc-
|
|
27
|
-
import { c as TabsList, i as InsightsPeriodSelector, l as TabsTrigger, n as InsightsErrorAlert, o as Tabs$1, r as InsightsPageHeader, s as TabsContent, u as UsagePeriodSelector } from "./InsightsPageHeader-
|
|
28
|
-
import { i as HttpResponseBody, n as EventTimestamp, o as useInsightsTimeFormat, t as EventBundleTransition } from "./EventDetails-
|
|
19
|
+
import { a as readBundleEventsInput, i as readAdoptionReleasesInput, n as crashRateOf, o as recommendsRollback, r as readAdoptionReleaseInput, t as CRASH_RATE_THRESHOLD } from "./release-adoption-NO2DVJwF.mjs";
|
|
20
|
+
import { i as useFailureReportsQuery, l as useInsightsRetention, r as keepsTwelveMonths, t as DEFAULT_INSIGHTS_RETENTION, u as useUpdateFailuresQuery } from "./insights-api-CBBcHIUP.mjs";
|
|
21
|
+
import { r as comparedBundleIds, t as InsightsInfo } from "./InsightsInfo-B0AtaDnr.mjs";
|
|
22
|
+
import { t as Route } from "./insights-CdkhyQHH.mjs";
|
|
23
|
+
import { a as SelectGroup, c as SelectValue, i as SelectContent, n as PlatformIcon, o as SelectItem, r as Select$1, s as SelectTrigger, t as BundleIdDisplay } from "./select-ycdfR07Y.mjs";
|
|
24
|
+
import { i as useChannelsQuery, l as usePreflightReleaseMutation, m as useUpdateReleaseMutation } from "./api-Bz1UGqdn.mjs";
|
|
25
|
+
import { a as InputGroupInput, i as InputGroupButton, n as InputGroup, r as InputGroupAddon } from "./input-group-D7oZhqZP.mjs";
|
|
26
|
+
import { n as getAppUsageReportRpc, t as Progress$1 } from "./insights-usage-rpc-CLyldyrz.mjs";
|
|
27
|
+
import { c as TabsList, i as InsightsPeriodSelector, l as TabsTrigger, n as InsightsErrorAlert, o as Tabs$1, r as InsightsPageHeader, s as TabsContent, u as UsagePeriodSelector } from "./InsightsPageHeader-BryzBlT8.mjs";
|
|
28
|
+
import { i as HttpResponseBody, n as EventTimestamp, o as useInsightsTimeFormat, t as EventBundleTransition } from "./EventDetails-vtXoqSGS.mjs";
|
|
29
29
|
import { a as CartesianGrid, i as Line, l as ResponsiveContainer, n as YAxis, o as ReferenceLine, r as XAxis, s as Tooltip, t as LineChart } from "../_libs/recharts+[...].mjs";
|
|
30
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/insights-
|
|
30
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/insights-DFBjq_u1.js
|
|
31
31
|
var import_react = /* @__PURE__ */ __toESM(require_react());
|
|
32
32
|
var import_jsx_runtime = require_jsx_runtime();
|
|
33
33
|
var THEMES = {
|
|
@@ -1136,16 +1136,18 @@ function useSeriesColors(releaseIds) {
|
|
|
1136
1136
|
var spanOf = (startMs, endMs) => dates.format(startMs) === dates.format(endMs) ? `${times.format(startMs)}–${clock.format(endMs)} UTC` : `${times.format(startMs)} – ${times.format(endMs)} UTC`;
|
|
1137
1137
|
/**
|
|
1138
1138
|
* One row per interval of the period, at the interval's end, with each
|
|
1139
|
-
* bundle's count as `b<index
|
|
1140
|
-
*
|
|
1139
|
+
* bundle's count as `b<index>` and its dashed count, when it has one, as
|
|
1140
|
+
* `d<index>`: none before the interval it was deployed in, and none while
|
|
1141
|
+
* its counts load.
|
|
1141
1142
|
*/
|
|
1142
1143
|
var curveOf = (period, lines) => Array.from({ length: Math.round(period.durationMs / period.intervalMs) }, (_, interval) => {
|
|
1143
1144
|
const startMs = period.startMs + interval * period.intervalMs;
|
|
1144
1145
|
const endMs = startMs + period.intervalMs;
|
|
1146
|
+
const countOf = (release, points) => points === void 0 || endMs <= release.deployedAtMs ? null : points.find((point) => point.startMs === startMs)?.events ?? 0;
|
|
1145
1147
|
return Object.fromEntries([
|
|
1146
1148
|
["startMs", startMs],
|
|
1147
1149
|
["endMs", endMs],
|
|
1148
|
-
...lines.
|
|
1150
|
+
...lines.flatMap((line, index) => [[`b${index}`, countOf(line.release, line.points)], ..."dashed" in line ? [[`d${index}`, countOf(line.release, line.dashed)]] : []])
|
|
1149
1151
|
]);
|
|
1150
1152
|
});
|
|
1151
1153
|
/**
|
|
@@ -1160,25 +1162,47 @@ var ticksOf = (period) => {
|
|
|
1160
1162
|
return ticks;
|
|
1161
1163
|
};
|
|
1162
1164
|
/**
|
|
1163
|
-
* Each bundle's
|
|
1164
|
-
* deployment marked
|
|
1165
|
-
*
|
|
1165
|
+
* Each bundle's counts per interval of the period on one timeline, with its
|
|
1166
|
+
* deployment marked: a solid line, and a dashed one in its hue when the
|
|
1167
|
+
* bundle has a second count. A count sits at the end of its interval, so a
|
|
1168
|
+
* line starts after its deployment, with the interval it was deployed in.
|
|
1166
1169
|
*/
|
|
1167
|
-
function ComparedBundlesChart({ period, lines, colorOf, active, label }) {
|
|
1170
|
+
function ComparedBundlesChart({ period, lines, colorOf, active, label, names }) {
|
|
1168
1171
|
const measuredAtMs = Math.max(0, ...lines.map((line) => line.measuredAtMs ?? 0));
|
|
1169
1172
|
const curve = curveOf(period, lines);
|
|
1170
1173
|
const ticks = ticksOf(period);
|
|
1171
1174
|
const tick = (value) => period.intervalMs === HOUR$1 ? times.format(value) : dates.format(value);
|
|
1175
|
+
const labelOf = (release, name) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
|
|
1176
|
+
className: "flex items-center gap-1.5 whitespace-nowrap",
|
|
1177
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(BundleIdDisplay, {
|
|
1178
|
+
bundleId: release.releaseId,
|
|
1179
|
+
className: "whitespace-nowrap"
|
|
1180
|
+
}), name ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
1181
|
+
className: "text-muted-foreground",
|
|
1182
|
+
children: name
|
|
1183
|
+
}) : null]
|
|
1184
|
+
});
|
|
1185
|
+
const config = Object.fromEntries(lines.flatMap((line, index) => [[`b${index}`, {
|
|
1186
|
+
label: labelOf(line.release, names?.solid),
|
|
1187
|
+
color: colorOf(line.release.releaseId)
|
|
1188
|
+
}], ..."dashed" in line ? [[`d${index}`, {
|
|
1189
|
+
label: labelOf(line.release, names?.dashed),
|
|
1190
|
+
color: colorOf(line.release.releaseId)
|
|
1191
|
+
}]] : []]));
|
|
1192
|
+
const isolated = (key, color, hollow) => ({ cx, cy, index: at }) => {
|
|
1193
|
+
return curve[at]?.[key] == null || cx == null || cy == null || curve[at - 1]?.[key] != null || curve[at + 1]?.[key] != null ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("g", {}, `${key}-${at}`) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("circle", {
|
|
1194
|
+
cx,
|
|
1195
|
+
cy,
|
|
1196
|
+
r: 4,
|
|
1197
|
+
fill: hollow ? "var(--background)" : color,
|
|
1198
|
+
stroke: color,
|
|
1199
|
+
strokeWidth: hollow ? 2 : 0
|
|
1200
|
+
}, `${key}-${at}`);
|
|
1201
|
+
};
|
|
1172
1202
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ChartContainer, {
|
|
1173
1203
|
"aria-label": label,
|
|
1174
1204
|
className: "h-64 w-full aspect-auto",
|
|
1175
|
-
config
|
|
1176
|
-
label: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(BundleIdDisplay, {
|
|
1177
|
-
bundleId: release.releaseId,
|
|
1178
|
-
className: "whitespace-nowrap"
|
|
1179
|
-
}),
|
|
1180
|
-
color: colorOf(release.releaseId)
|
|
1181
|
-
}])),
|
|
1205
|
+
config,
|
|
1182
1206
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(LineChart, {
|
|
1183
1207
|
accessibilityLayer: true,
|
|
1184
1208
|
data: curve,
|
|
@@ -1214,25 +1238,21 @@ function ComparedBundlesChart({ period, lines, colorOf, active, label }) {
|
|
|
1214
1238
|
strokeOpacity: .5,
|
|
1215
1239
|
ifOverflow: "extendDomain"
|
|
1216
1240
|
}, `deployed-${release.releaseId}`) : null),
|
|
1217
|
-
lines.
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
activeDot: { r: 4 },
|
|
1233
|
-
connectNulls: false,
|
|
1234
|
-
isAnimationActive: false
|
|
1235
|
-
}, release.releaseId))
|
|
1241
|
+
lines.flatMap((line, index) => [..."dashed" in line ? ["d"] : [], "b"].map((kind) => {
|
|
1242
|
+
const { releaseId } = line.release;
|
|
1243
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Line, {
|
|
1244
|
+
dataKey: `${kind}${index}`,
|
|
1245
|
+
type: "linear",
|
|
1246
|
+
stroke: `var(--color-${kind}${index})`,
|
|
1247
|
+
strokeDasharray: kind === "d" ? "6 4" : void 0,
|
|
1248
|
+
strokeWidth: active === releaseId ? 3 : 2,
|
|
1249
|
+
strokeOpacity: active === null || active === releaseId ? 1 : .25,
|
|
1250
|
+
dot: isolated(`${kind}${index}`, colorOf(releaseId), kind === "d"),
|
|
1251
|
+
activeDot: { r: 4 },
|
|
1252
|
+
connectNulls: false,
|
|
1253
|
+
isAnimationActive: false
|
|
1254
|
+
}, `${kind}-${releaseId}`);
|
|
1255
|
+
}))
|
|
1236
1256
|
]
|
|
1237
1257
|
})
|
|
1238
1258
|
});
|
|
@@ -1325,25 +1345,32 @@ var crashesOf = ({ release, launched, recovered }) => launched === void 0 || rec
|
|
|
1325
1345
|
...crashRateOf(launched.total, recovered.total),
|
|
1326
1346
|
recommended: recommendsRollback(release, launched.total, recovered.total)
|
|
1327
1347
|
};
|
|
1328
|
-
/**
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1348
|
+
/** A line sample for the legend: solid or dashed, in the text color. */
|
|
1349
|
+
function LineSample({ dashed }) {
|
|
1350
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", {
|
|
1351
|
+
"aria-hidden": "true",
|
|
1352
|
+
className: "h-3 w-6 shrink-0",
|
|
1353
|
+
viewBox: "0 0 24 12",
|
|
1354
|
+
preserveAspectRatio: "none",
|
|
1355
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("line", {
|
|
1356
|
+
x1: "0",
|
|
1357
|
+
y1: "6",
|
|
1358
|
+
x2: "24",
|
|
1359
|
+
y2: "6",
|
|
1360
|
+
stroke: "currentColor",
|
|
1361
|
+
strokeWidth: "2",
|
|
1362
|
+
strokeDasharray: dashed ? "6 4" : void 0
|
|
1363
|
+
})
|
|
1338
1364
|
});
|
|
1339
|
-
}
|
|
1365
|
+
}
|
|
1340
1366
|
/**
|
|
1341
1367
|
* Release health: how the newest bundles fare after their deployment, on
|
|
1342
|
-
* one timeline. Adoption shows installations
|
|
1343
|
-
*
|
|
1344
|
-
*
|
|
1368
|
+
* one timeline, per interval. Adoption shows installations downloading each
|
|
1369
|
+
* bundle (dashed) and launching it (solid), so the gap is the restarts still
|
|
1370
|
+
* to come; Crashes shows them crashing back from it, and offers a rollback
|
|
1371
|
+
* when a bundle crashes for too many of them.
|
|
1345
1372
|
*/
|
|
1346
|
-
function InsightsOverview({ input, chart, onChartChange,
|
|
1373
|
+
function InsightsOverview({ input, chart, onChartChange, health, onReleasesChange, onWindowChange }) {
|
|
1347
1374
|
const [active, setActive] = (0, import_react.useState)(null);
|
|
1348
1375
|
const { period, candidates, releases } = health;
|
|
1349
1376
|
const ids = (releases ?? []).map(({ release }) => release.releaseId);
|
|
@@ -1365,8 +1392,7 @@ function InsightsOverview({ input, chart, onChartChange, total = "interval", onT
|
|
|
1365
1392
|
]
|
|
1366
1393
|
});
|
|
1367
1394
|
const seriesOf = (bundle) => chart === "adoption" ? bundle.launched : bundle.recovered;
|
|
1368
|
-
const
|
|
1369
|
-
const loaded = (releases ?? []).filter((bundle) => seriesOf(bundle) !== void 0);
|
|
1395
|
+
const loaded = (releases ?? []).filter((bundle) => seriesOf(bundle) !== void 0 && (chart !== "adoption" || bundle.downloaded !== void 0));
|
|
1370
1396
|
const failed = (releases ?? []).find(({ error }) => error !== null)?.error ?? null;
|
|
1371
1397
|
const flagged = (releases ?? []).flatMap((bundle) => {
|
|
1372
1398
|
const crashes = crashesOf(bundle);
|
|
@@ -1380,42 +1406,33 @@ function InsightsOverview({ input, chart, onChartChange, total = "interval", onT
|
|
|
1380
1406
|
onReleasesChange(rest.length === 0 ? void 0 : rest);
|
|
1381
1407
|
};
|
|
1382
1408
|
const heading = chart === "adoption" ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
1383
|
-
className: "flex flex-
|
|
1409
|
+
className: "flex flex-col gap-1",
|
|
1384
1410
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
1385
|
-
className: "flex
|
|
1386
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.
|
|
1387
|
-
|
|
1388
|
-
children:
|
|
1389
|
-
label: "About adoption",
|
|
1390
|
-
children: "Installations that reported running each bundle, once each: at its apply report, or at its first report on the bundle when the apply report never arrived. One that comes back counts again."
|
|
1391
|
-
})]
|
|
1392
|
-
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", {
|
|
1393
|
-
className: "text-xs text-muted-foreground",
|
|
1394
|
-
children: [
|
|
1395
|
-
cumulative ? "Running total" : cadenceOf(period.intervalMs),
|
|
1396
|
-
" · last",
|
|
1397
|
-
" ",
|
|
1398
|
-
lengthOf(period.durationMs),
|
|
1399
|
-
" · UTC"
|
|
1400
|
-
]
|
|
1411
|
+
className: "flex items-center gap-1 text-sm font-medium",
|
|
1412
|
+
children: ["Installations downloading and launching each bundle", /* @__PURE__ */ (0, import_jsx_runtime.jsx)(InsightsInfo, {
|
|
1413
|
+
label: "About adoption",
|
|
1414
|
+
children: "Dashed: installations that downloaded the bundle. Solid: installations that launched it. After a forced update the two lines meet."
|
|
1401
1415
|
})]
|
|
1402
|
-
}),
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
"
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
className: "
|
|
1415
|
-
children: "
|
|
1416
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
1417
|
+
className: "flex flex-wrap items-center gap-x-4 gap-y-1 text-xs text-muted-foreground",
|
|
1418
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", { children: [
|
|
1419
|
+
cadenceOf(period.intervalMs),
|
|
1420
|
+
" · last ",
|
|
1421
|
+
lengthOf(period.durationMs),
|
|
1422
|
+
" ",
|
|
1423
|
+
"· UTC"
|
|
1424
|
+
] }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("ul", {
|
|
1425
|
+
"aria-label": "Line styles",
|
|
1426
|
+
className: "flex items-center gap-3",
|
|
1427
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("li", {
|
|
1428
|
+
className: "flex items-center gap-1.5",
|
|
1429
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(LineSample, { dashed: true }), "Downloaded"]
|
|
1430
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("li", {
|
|
1431
|
+
className: "flex items-center gap-1.5",
|
|
1432
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(LineSample, {}), "Launched"]
|
|
1416
1433
|
})]
|
|
1417
|
-
})
|
|
1418
|
-
})
|
|
1434
|
+
})]
|
|
1435
|
+
})]
|
|
1419
1436
|
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
1420
1437
|
className: "flex flex-col gap-1",
|
|
1421
1438
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
@@ -1423,7 +1440,8 @@ function InsightsOverview({ input, chart, onChartChange, total = "interval", onT
|
|
|
1423
1440
|
children: ["Crashes after each deployment", /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(InsightsInfo, {
|
|
1424
1441
|
label: "About crashes",
|
|
1425
1442
|
children: [
|
|
1426
|
-
"
|
|
1443
|
+
"Installations that crashed on a bundle and rolled back. Crash rate = crashed ÷ (launched + crashed). A rollback is suggested at",
|
|
1444
|
+
" ",
|
|
1427
1445
|
percent(CRASH_RATE_THRESHOLD),
|
|
1428
1446
|
" once ",
|
|
1429
1447
|
20,
|
|
@@ -1460,13 +1478,13 @@ function InsightsOverview({ input, chart, onChartChange, total = "interval", onT
|
|
|
1460
1478
|
"aria-label": "Loading release health",
|
|
1461
1479
|
className: "h-64"
|
|
1462
1480
|
});
|
|
1463
|
-
if (loaded.every((bundle) => seriesOf(bundle).total === 0)) return chart === "adoption" ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Empty, {
|
|
1481
|
+
if (loaded.every((bundle) => seriesOf(bundle).total === 0 && (chart !== "adoption" || bundle.downloaded.total === 0))) return chart === "adoption" ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Empty, {
|
|
1464
1482
|
className: "min-h-48",
|
|
1465
1483
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(EmptyHeader, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(EmptyTitle, { children: [
|
|
1466
|
-
"No installation launched these bundles in the last",
|
|
1484
|
+
"No installation downloaded or launched these bundles in the last",
|
|
1467
1485
|
" ",
|
|
1468
1486
|
lengthOf(period.durationMs)
|
|
1469
|
-
] }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(EmptyDescription, { children: wider ? "Choose a longer period, or refresh after apps
|
|
1487
|
+
] }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(EmptyDescription, { children: wider ? "Choose a longer period, or refresh after apps download them." : "Refresh after apps download them." })] }), wider ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(EmptyContent, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Button$1, {
|
|
1470
1488
|
variant: "outline",
|
|
1471
1489
|
size: "sm",
|
|
1472
1490
|
onClick: () => onWindowChange(wider),
|
|
@@ -1480,12 +1498,17 @@ function InsightsOverview({ input, chart, onChartChange, total = "interval", onT
|
|
|
1480
1498
|
period,
|
|
1481
1499
|
lines: releases.map((bundle) => ({
|
|
1482
1500
|
release: bundle.release,
|
|
1483
|
-
points:
|
|
1501
|
+
points: seriesOf(bundle)?.points,
|
|
1502
|
+
...chart === "adoption" ? { dashed: bundle.downloaded?.points } : {},
|
|
1484
1503
|
measuredAtMs: seriesOf(bundle)?.measuredAtMs
|
|
1485
1504
|
})),
|
|
1486
1505
|
colorOf,
|
|
1487
1506
|
active,
|
|
1488
|
-
|
|
1507
|
+
names: chart === "adoption" ? {
|
|
1508
|
+
solid: "Launched",
|
|
1509
|
+
dashed: "Downloaded"
|
|
1510
|
+
} : { solid: "Crashed" },
|
|
1511
|
+
label: chart === "adoption" ? "Installations downloading (dashed) and launching (solid) each bundle per interval" : "Crashes of each bundle per interval"
|
|
1489
1512
|
});
|
|
1490
1513
|
})();
|
|
1491
1514
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("section", {
|
|
@@ -1605,12 +1628,15 @@ function InsightsOverview({ input, chart, onChartChange, total = "interval", onT
|
|
|
1605
1628
|
"aria-label": "Compared bundles",
|
|
1606
1629
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableHeader, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(TableRow, { children: [
|
|
1607
1630
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableHead, { children: "Bundle" }),
|
|
1608
|
-
chart === "adoption" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableHead, {
|
|
1631
|
+
chart === "adoption" ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableHead, {
|
|
1632
|
+
className: "text-right",
|
|
1633
|
+
children: "Downloaded"
|
|
1634
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableHead, {
|
|
1609
1635
|
className: "text-right",
|
|
1610
1636
|
children: "Launched"
|
|
1611
|
-
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableHead, {
|
|
1637
|
+
})] }) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableHead, {
|
|
1612
1638
|
className: "text-right",
|
|
1613
|
-
children: "
|
|
1639
|
+
children: "Crashed"
|
|
1614
1640
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableHead, {
|
|
1615
1641
|
className: "text-right",
|
|
1616
1642
|
children: "Crash rate"
|
|
@@ -1672,10 +1698,13 @@ function InsightsOverview({ input, chart, onChartChange, total = "interval", onT
|
|
|
1672
1698
|
})]
|
|
1673
1699
|
})
|
|
1674
1700
|
}),
|
|
1675
|
-
chart === "adoption" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableCell, {
|
|
1701
|
+
chart === "adoption" ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableCell, {
|
|
1702
|
+
className: "text-right whitespace-nowrap tabular-nums",
|
|
1703
|
+
children: bundle.downloaded?.total.toLocaleString() ?? "—"
|
|
1704
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableCell, {
|
|
1676
1705
|
className: "text-right font-medium whitespace-nowrap tabular-nums",
|
|
1677
1706
|
children: bundle.launched?.total.toLocaleString() ?? "—"
|
|
1678
|
-
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableCell, {
|
|
1707
|
+
})] }) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TableCell, {
|
|
1679
1708
|
className: "text-right whitespace-nowrap tabular-nums",
|
|
1680
1709
|
children: crashes === void 0 ? "—" : crashes.crashes === 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
1681
1710
|
className: "text-muted-foreground",
|
|
@@ -2022,7 +2051,7 @@ var getAdoptionReleaseRpc = createServerFn({ method: "GET" }).middleware([consol
|
|
|
2022
2051
|
var getBundleEventsRpc = createServerFn({ method: "GET" }).middleware([consoleAccess]).validator(readBundleEventsInput).handler(createSsrRpc("bfcca2365dfef4d071bdcddf97538a2637482c77bb747969dbdcd6769ca98416"));
|
|
2023
2052
|
/** What each Release health chart reads per bundle. */
|
|
2024
2053
|
var READS = {
|
|
2025
|
-
adoption: ["LAUNCHED"],
|
|
2054
|
+
adoption: ["DOWNLOADED", "LAUNCHED"],
|
|
2026
2055
|
crashes: ["LAUNCHED", "RECOVERED"]
|
|
2027
2056
|
};
|
|
2028
2057
|
/**
|
|
@@ -2128,13 +2157,15 @@ function useReleaseHealth({ platform, channel, window, releaseIds, focusReleaseI
|
|
|
2128
2157
|
},
|
|
2129
2158
|
candidates,
|
|
2130
2159
|
releases: releases?.map((release) => {
|
|
2160
|
+
const downloaded = seriesOf(release.bundleId, "DOWNLOADED");
|
|
2131
2161
|
const launched = seriesOf(release.bundleId, "LAUNCHED");
|
|
2132
2162
|
const recovered = seriesOf(release.bundleId, "RECOVERED");
|
|
2133
2163
|
return {
|
|
2134
2164
|
release,
|
|
2165
|
+
downloaded: downloaded?.data,
|
|
2135
2166
|
launched: launched?.data,
|
|
2136
2167
|
recovered: recovered?.data,
|
|
2137
|
-
error: launched?.error ?? recovered?.error ?? null
|
|
2168
|
+
error: downloaded?.error ?? launched?.error ?? recovered?.error ?? null
|
|
2138
2169
|
};
|
|
2139
2170
|
}),
|
|
2140
2171
|
isDefault: releaseIds === void 0,
|
|
@@ -2244,11 +2275,6 @@ function InsightsPage() {
|
|
|
2244
2275
|
...search,
|
|
2245
2276
|
healthChart
|
|
2246
2277
|
} }),
|
|
2247
|
-
total: search.adoptionTotal ?? "interval",
|
|
2248
|
-
onTotalChange: (total) => void navigate({ search: {
|
|
2249
|
-
...search,
|
|
2250
|
-
adoptionTotal: total === "cumulative" ? total : void 0
|
|
2251
|
-
} }),
|
|
2252
2278
|
health,
|
|
2253
2279
|
onReleasesChange: (ids) => void navigate({ search: {
|
|
2254
2280
|
...search,
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { u as createServerFn } from "./createMiddleware-BdBf_ezN.mjs";
|
|
2
|
-
import { A as createSsrRpc } from "./sidebar-
|
|
3
|
-
import { t as consoleAccess } from "./console-access-
|
|
2
|
+
import { A as createSsrRpc } from "./sidebar-B2SHpuig.mjs";
|
|
3
|
+
import { t as consoleAccess } from "./console-access-CSVqeikY.mjs";
|
|
4
4
|
import { i as useQuery, t as useInfiniteQuery } from "../_libs/tanstack__react-query.mjs";
|
|
5
5
|
import { l as readUpdateFailuresInput } from "./insights-failures-BZaGNNij.mjs";
|
|
6
6
|
import { n as readFailureReportsInput } from "./insights-errors-F-7hOApm.mjs";
|
|
7
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/insights-api-
|
|
7
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/insights-api-CBBcHIUP.js
|
|
8
8
|
var getUpdateFailuresRpc = createServerFn({ method: "GET" }).middleware([consoleAccess]).validator(readUpdateFailuresInput).handler(createSsrRpc("0d1dacdd1e5ee6b100e5c142fb9af03602b6f2c6fe6af79312b36c223d7f8f97"));
|
|
9
9
|
var listFailureReportsRpc = createServerFn({ method: "GET" }).middleware([consoleAccess]).validator(readFailureReportsInput).handler(createSsrRpc("b4388826a9b515fb4d2113270aa8ded1c50ba13d7f07ac2b268c41396e87d0a3"));
|
|
10
10
|
/** `insights()`'s defaults, for a server that does not report its periods. */
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { u as createServerFn } from "./createMiddleware-BdBf_ezN.mjs";
|
|
2
|
-
import { t as consoleAccess } from "./console-access-
|
|
2
|
+
import { t as consoleAccess } from "./console-access-CSVqeikY.mjs";
|
|
3
3
|
import { t as createServerRpc } from "./createServerRpc-B_y2lrwA.mjs";
|
|
4
4
|
import { l as readUpdateFailuresInput } from "./insights-failures-BZaGNNij.mjs";
|
|
5
5
|
import { n as readFailureReportsInput } from "./insights-errors-F-7hOApm.mjs";
|
|
6
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/insights-failures-rpc-
|
|
6
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/insights-failures-rpc-CTf5QF7O.js
|
|
7
7
|
var getUpdateFailuresRpc_createServerFn_handler = createServerRpc({
|
|
8
8
|
id: "0d1dacdd1e5ee6b100e5c142fb9af03602b6f2c6fe6af79312b36c223d7f8f97",
|
|
9
9
|
name: "getUpdateFailuresRpc",
|
|
@@ -11,7 +11,7 @@ var getUpdateFailuresRpc_createServerFn_handler = createServerRpc({
|
|
|
11
11
|
}, (opts) => getUpdateFailuresRpc.__executeServer(opts));
|
|
12
12
|
var getUpdateFailuresRpc = createServerFn({ method: "GET" }).middleware([consoleAccess]).validator(readUpdateFailuresInput).handler(getUpdateFailuresRpc_createServerFn_handler, async ({ data }) => {
|
|
13
13
|
const [{ prepareConfig }, { getUpdateFailuresReport }, { requireFeature }] = await Promise.all([
|
|
14
|
-
import("./config.server-
|
|
14
|
+
import("./config.server-DaeqzKiu.mjs"),
|
|
15
15
|
import("./updateFailures-BP-A8Ppr.mjs"),
|
|
16
16
|
import("./runtime.server-C1SVch_-.mjs")
|
|
17
17
|
]);
|
|
@@ -25,7 +25,7 @@ var listFailureReportsRpc_createServerFn_handler = createServerRpc({
|
|
|
25
25
|
}, (opts) => listFailureReportsRpc.__executeServer(opts));
|
|
26
26
|
var listFailureReportsRpc = createServerFn({ method: "GET" }).middleware([consoleAccess]).validator(readFailureReportsInput).handler(listFailureReportsRpc_createServerFn_handler, async ({ data }) => {
|
|
27
27
|
const [{ prepareConfig }, { listFailureReports }, { requireFeature }] = await Promise.all([
|
|
28
|
-
import("./config.server-
|
|
28
|
+
import("./config.server-DaeqzKiu.mjs"),
|
|
29
29
|
import("./failureReports-CRYHdQBQ.mjs"),
|
|
30
30
|
import("./runtime.server-C1SVch_-.mjs")
|
|
31
31
|
]);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { u as createServerFn } from "./createMiddleware-BdBf_ezN.mjs";
|
|
2
|
-
import { t as consoleAccess } from "./console-access-
|
|
2
|
+
import { t as consoleAccess } from "./console-access-CSVqeikY.mjs";
|
|
3
3
|
import { t as createServerRpc } from "./createServerRpc-B_y2lrwA.mjs";
|
|
4
4
|
import { n as readRecoveryInput } from "./insights-recovery-Dpk6Mfb9.mjs";
|
|
5
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/insights-recovery-rpc-
|
|
5
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/insights-recovery-rpc-CPKwBt4V.js
|
|
6
6
|
function readBundleActivityInput(inputs) {
|
|
7
7
|
if (!Array.isArray(inputs) || inputs.length > 20) throw new Error("Choose up to 20 bundles.");
|
|
8
8
|
return inputs.map((input) => {
|
|
@@ -21,7 +21,7 @@ var getBundleActivityRpc_createServerFn_handler = createServerRpc({
|
|
|
21
21
|
}, (opts) => getBundleActivityRpc.__executeServer(opts));
|
|
22
22
|
var getBundleActivityRpc = createServerFn({ method: "GET" }).middleware([consoleAccess]).validator(readBundleActivityInput).handler(getBundleActivityRpc_createServerFn_handler, async ({ data }) => {
|
|
23
23
|
const [{ prepareConfig }, { getBundleActivity }, { requireFeature }] = await Promise.all([
|
|
24
|
-
import("./config.server-
|
|
24
|
+
import("./config.server-DaeqzKiu.mjs"),
|
|
25
25
|
import("./bundleActivity-BXSJbaQY.mjs"),
|
|
26
26
|
import("./runtime.server-C1SVch_-.mjs")
|
|
27
27
|
]);
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { u as createServerFn } from "./createMiddleware-BdBf_ezN.mjs";
|
|
2
|
-
import { t as consoleAccess } from "./console-access-
|
|
2
|
+
import { t as consoleAccess } from "./console-access-CSVqeikY.mjs";
|
|
3
3
|
import { t as createServerRpc } from "./createServerRpc-B_y2lrwA.mjs";
|
|
4
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/insights-rpc-
|
|
4
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/insights-rpc-DjhnYd2B.js
|
|
5
5
|
/** The Insights reads, once the console's access check and the feature guard pass. */
|
|
6
6
|
var insightsReads = async () => {
|
|
7
|
-
const [{ prepareConfig }, { requireFeature }] = await Promise.all([import("./config.server-
|
|
7
|
+
const [{ prepareConfig }, { requireFeature }] = await Promise.all([import("./config.server-DaeqzKiu.mjs"), import("./runtime.server-C1SVch_-.mjs")]);
|
|
8
8
|
const { runtime } = await prepareConfig();
|
|
9
9
|
return requireFeature(runtime, "insights");
|
|
10
10
|
};
|
package/.output/server/_ssr/{insights-usage-rpc-BQVYKfc6.mjs → insights-usage-rpc-CLHRgGDT.mjs}
RENAMED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { u as createServerFn } from "./createMiddleware-BdBf_ezN.mjs";
|
|
2
|
-
import { t as consoleAccess } from "./console-access-
|
|
2
|
+
import { t as consoleAccess } from "./console-access-CSVqeikY.mjs";
|
|
3
3
|
import { t as createServerRpc } from "./createServerRpc-B_y2lrwA.mjs";
|
|
4
4
|
import { t as readAppUsageInput } from "./insights-usage-CLUWjUFz.mjs";
|
|
5
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/insights-usage-rpc-
|
|
5
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/insights-usage-rpc-CLHRgGDT.js
|
|
6
6
|
var getAppUsageReportRpc_createServerFn_handler = createServerRpc({
|
|
7
7
|
id: "8a98cd9c178e4a54185d62c25a95f09d3d59850c43d3f5baa1563e1614ad942e",
|
|
8
8
|
name: "getAppUsageReportRpc",
|
|
@@ -18,7 +18,7 @@ var getAppUsageReportRpc = createServerFn({ method: "GET" }).middleware([console
|
|
|
18
18
|
};
|
|
19
19
|
}).handler(getAppUsageReportRpc_createServerFn_handler, async ({ data }) => {
|
|
20
20
|
const [{ prepareConfig }, { getAppUsageReport }, { requireFeature }] = await Promise.all([
|
|
21
|
-
import("./config.server-
|
|
21
|
+
import("./config.server-DaeqzKiu.mjs"),
|
|
22
22
|
import("./insightsUsage-9X2sp3ja.mjs"),
|
|
23
23
|
import("./runtime.server-C1SVch_-.mjs")
|
|
24
24
|
]);
|
package/.output/server/_ssr/{insights-usage-rpc-COsslYcz.mjs → insights-usage-rpc-CLyldyrz.mjs}
RENAMED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { u as createServerFn } from "./createMiddleware-BdBf_ezN.mjs";
|
|
2
2
|
import { A as ProgressRoot, O as ProgressIndicator$1, k as ProgressTrack$1, mt as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
|
|
3
|
-
import { A as createSsrRpc, k as cn } from "./sidebar-
|
|
4
|
-
import { t as consoleAccess } from "./console-access-
|
|
3
|
+
import { A as createSsrRpc, k as cn } from "./sidebar-B2SHpuig.mjs";
|
|
4
|
+
import { t as consoleAccess } from "./console-access-CSVqeikY.mjs";
|
|
5
5
|
import { t as readAppUsageInput } from "./insights-usage-CLUWjUFz.mjs";
|
|
6
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/insights-usage-rpc-
|
|
6
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/insights-usage-rpc-CLyldyrz.js
|
|
7
7
|
var import_jsx_runtime = require_jsx_runtime();
|
|
8
8
|
function Progress$1({ className, children, value, ...props }) {
|
|
9
9
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(ProgressRoot, {
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { mt as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
|
|
2
2
|
import { G as ArrowLeft, H as ArrowUpRight, f as RotateCw } from "../_libs/lucide-react.mjs";
|
|
3
|
-
import { C as Skeleton, O as buttonVariants, t as Button$1 } from "./sidebar-
|
|
3
|
+
import { C as Skeleton, O as buttonVariants, t as Button$1 } from "./sidebar-B2SHpuig.mjs";
|
|
4
4
|
import { h as Link } from "../_libs/@tanstack/react-router+[...].mjs";
|
|
5
5
|
import { i as useQuery } from "../_libs/tanstack__react-query.mjs";
|
|
6
|
-
import { a as EmptyTitle, i as EmptyHeader, r as EmptyDescription, t as Empty } from "./empty-
|
|
7
|
-
import { a as CardHeader, i as CardFooter, n as CardContent, o as CardTitle, t as Card } from "./card-
|
|
8
|
-
import { a as Badge, i as AlertTitle, o as Field, r as AlertDescription, t as Alert, u as FieldLabel } from "./field-
|
|
9
|
-
import { l as useInsightsRetention, r as keepsTwelveMonths } from "./insights-api-
|
|
10
|
-
import { a as validateInsightsSearch, t as InsightsInfo } from "./InsightsInfo-
|
|
11
|
-
import { a as SelectGroup, c as SelectValue, i as SelectContent, n as PlatformIcon, o as SelectItem, r as Select$1, s as SelectTrigger, t as BundleIdDisplay } from "./select-
|
|
12
|
-
import { n as getAppUsageReportRpc, t as Progress$1 } from "./insights-usage-rpc-
|
|
13
|
-
import { n as InsightsErrorAlert, r as InsightsPageHeader, t as BuiltinBundleBadge, u as UsagePeriodSelector } from "./InsightsPageHeader-
|
|
14
|
-
import { t as Route } from "./insights_.distribution-
|
|
15
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/insights_.distribution-
|
|
6
|
+
import { a as EmptyTitle, i as EmptyHeader, r as EmptyDescription, t as Empty } from "./empty-DeVHKygf.mjs";
|
|
7
|
+
import { a as CardHeader, i as CardFooter, n as CardContent, o as CardTitle, t as Card } from "./card-GK-VihZc.mjs";
|
|
8
|
+
import { a as Badge, i as AlertTitle, o as Field, r as AlertDescription, t as Alert, u as FieldLabel } from "./field-CcbQSAiS.mjs";
|
|
9
|
+
import { l as useInsightsRetention, r as keepsTwelveMonths } from "./insights-api-CBBcHIUP.mjs";
|
|
10
|
+
import { a as validateInsightsSearch, t as InsightsInfo } from "./InsightsInfo-B0AtaDnr.mjs";
|
|
11
|
+
import { a as SelectGroup, c as SelectValue, i as SelectContent, n as PlatformIcon, o as SelectItem, r as Select$1, s as SelectTrigger, t as BundleIdDisplay } from "./select-ycdfR07Y.mjs";
|
|
12
|
+
import { n as getAppUsageReportRpc, t as Progress$1 } from "./insights-usage-rpc-CLyldyrz.mjs";
|
|
13
|
+
import { n as InsightsErrorAlert, r as InsightsPageHeader, t as BuiltinBundleBadge, u as UsagePeriodSelector } from "./InsightsPageHeader-BryzBlT8.mjs";
|
|
14
|
+
import { t as Route } from "./insights_.distribution-DXCwHGBj.mjs";
|
|
15
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/insights_.distribution-Buu3dsat.js
|
|
16
16
|
var import_jsx_runtime = require_jsx_runtime();
|
|
17
17
|
var PAGE_SIZE = 20;
|
|
18
18
|
var dates = new Intl.DateTimeFormat("en", {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { f as lazyRouteComponent, p as createFileRoute } from "../_libs/@tanstack/react-router+[...].mjs";
|
|
2
|
-
import { r as requireConsoleFeature } from "./console-features-api-
|
|
3
|
-
import { i as validateDistributionSearch } from "./InsightsInfo-
|
|
4
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/insights_.distribution-
|
|
5
|
-
var $$splitComponentImporter = () => import("./insights_.distribution-
|
|
6
|
-
var $$splitNotFoundComponentImporter = () => import("./insights_.distribution-
|
|
2
|
+
import { r as requireConsoleFeature } from "./console-features-api-CuukSjL8.mjs";
|
|
3
|
+
import { i as validateDistributionSearch } from "./InsightsInfo-B0AtaDnr.mjs";
|
|
4
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/insights_.distribution-DXCwHGBj.js
|
|
5
|
+
var $$splitComponentImporter = () => import("./insights_.distribution-Buu3dsat.mjs");
|
|
6
|
+
var $$splitNotFoundComponentImporter = () => import("./insights_.distribution-WDmsXtQl.mjs");
|
|
7
7
|
/** How a distribution row's bundle reads aloud. */
|
|
8
8
|
/** The bundle an app version's native build shipped, by its ID. */
|
|
9
9
|
var Route = createFileRoute("/insights_/distribution")({
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { t as ConsoleFeatureUnavailable } from "./ConsoleFeatureUnavailable-
|
|
2
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/insights_.distribution-
|
|
1
|
+
import { t as ConsoleFeatureUnavailable } from "./ConsoleFeatureUnavailable-BCGWklf8.mjs";
|
|
2
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/insights_.distribution-WDmsXtQl.js
|
|
3
3
|
/** How a distribution row's bundle reads aloud. */
|
|
4
4
|
/** The bundle an app version's native build shipped, by its ID. */
|
|
5
5
|
var SplitNotFoundComponent = ConsoleFeatureUnavailable;
|