@hot-updater/console 0.36.7 → 1.0.0-rc.1
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/BundleIdDisplay-D4ErdU5_.js +1 -0
- package/.output/public/assets/InsightsCapabilityContext-B42VqvP6.js +1 -0
- package/.output/public/assets/api-keys-api-DGVTTvTJ.js +1 -0
- package/.output/public/assets/api-keys-z16OZIP4.js +1 -0
- package/.output/public/assets/badge-Br_KDO0J.js +1 -0
- package/.output/public/assets/card-DzuEXvyJ.js +1 -0
- package/.output/public/assets/chart-no-axes-combined-FaYMGmQS.js +1 -0
- package/.output/public/assets/createServerFn-gM2-LFBy.js +3 -0
- package/.output/public/assets/dialog-BeAENgez.js +1 -0
- package/.output/public/assets/dist-Bssh_cv0.js +1 -0
- package/.output/public/assets/field-Buq148-A.js +1 -0
- package/.output/public/assets/index-uOpQAIC4.js +10 -0
- package/.output/public/assets/input-group-B3p5UpyW.js +1 -0
- package/.output/public/assets/insights-DJTr7Ozn.js +1 -0
- package/.output/public/assets/insights-api-DVMOoRMS.js +1 -0
- package/.output/public/assets/installations-BY64iIAK.js +2 -0
- package/.output/public/assets/installations-D5v9i3AL.js +1 -0
- package/.output/public/assets/lazyRouteComponent-DKYu5cZJ.js +1 -0
- package/.output/public/assets/preload-helper-CQ36nxok.js +1 -0
- package/.output/public/assets/refresh-cw-BkbfZ62O.js +1 -0
- package/.output/public/assets/routes-BuoI5-Cr.js +2 -0
- package/.output/public/assets/routes-C8fvgETO.js +1 -0
- package/.output/public/assets/search-qsIDvS2I.js +1 -0
- package/.output/public/assets/shield-check-DE_hVuHu.js +1 -0
- package/.output/public/assets/signing-mJD88Y4C.js +1 -0
- package/.output/public/assets/styles-BZIG7t42.css +2 -0
- package/.output/public/assets/table-RamFEclP.js +1 -0
- package/.output/public/assets/useCompositeListItem-ChzDqdpc.js +42 -0
- package/.output/public/assets/useMutation-JsGVjQMY.js +1 -0
- package/.output/public/assets/useOpenInteractionType-Dwfy-SpA.js +1 -0
- package/.output/server/__23tanstack-start-server-fn-resolver-Dftxlm2E.mjs +146 -0
- package/.output/server/_libs/@base-ui/react+[...].mjs +16124 -0
- package/.output/server/_libs/@reduxjs/toolkit+[...].mjs +1554 -0
- package/.output/server/_libs/@tanstack/react-router+[...].mjs +41 -10
- package/.output/server/_libs/@tanstack/react-router-ssr-query+[...].mjs +132 -0
- package/.output/server/_libs/d3-array.mjs +231 -0
- package/.output/server/_libs/d3-color.mjs +330 -0
- package/.output/server/_libs/d3-format.mjs +252 -0
- package/.output/server/_libs/d3-interpolate.mjs +207 -0
- package/.output/server/_libs/d3-path.mjs +77 -0
- package/.output/server/_libs/d3-scale+[...].mjs +1907 -0
- package/.output/server/_libs/d3-shape.mjs +818 -0
- package/.output/server/_libs/decimal.js-light.mjs +884 -0
- package/.output/server/_libs/es-toolkit.mjs +1134 -0
- package/.output/server/_libs/eventemitter3.mjs +236 -0
- package/.output/server/_libs/immer.mjs +532 -0
- package/.output/server/_libs/lucide-react.mjs +141 -13
- package/.output/server/_libs/next-themes.mjs +2 -2
- package/.output/server/_libs/react-redux+[...].mjs +205 -0
- package/.output/server/_libs/recharts+[...].mjs +14117 -0
- package/.output/server/_libs/sonner.mjs +2 -2
- package/.output/server/_libs/tanstack__query-core.mjs +114 -1
- package/.output/server/_libs/tanstack__react-query.mjs +3 -4
- package/.output/server/_runtime.mjs +10 -1
- package/.output/server/_ssr/BundleActivityChart-CWcdPuUn.mjs +288 -0
- package/.output/server/_ssr/BundleIdDisplay-BEvB3MvA.mjs +13 -0
- package/.output/server/_ssr/InsightsCapabilityContext-Cx8fjm2s.mjs +15 -0
- package/.output/server/_ssr/api-keys-CpBqHpuC.mjs +300 -0
- package/.output/server/_ssr/api-keys-api-Czkp57UV.mjs +60 -0
- package/.output/server/_ssr/api-keys-rpc-BTtMDSoR.mjs +136 -0
- package/.output/server/_ssr/api-rpc-BEX8ISai.mjs +1468 -0
- package/.output/server/_ssr/auth-BF8mbAgF.mjs +21 -0
- package/.output/server/_ssr/auth-rpc-BFMEC-TT.mjs +24 -0
- package/.output/server/_ssr/auth.server-DW71WzsD.mjs +47 -0
- package/.output/server/_ssr/badge-CpWXQwyF.mjs +26 -0
- package/.output/server/_ssr/bundle-signing-rpc-BbCFUQSu.mjs +16 -0
- package/.output/server/_ssr/bundle-signing.server-C4NW5mWx.mjs +12 -0
- package/.output/server/_ssr/card-Bsc8mRis.mjs +86 -0
- package/.output/server/_ssr/config-Dv8qLDZ0.mjs +13 -0
- package/.output/server/_ssr/config.server-DQYEr_5X.mjs +361 -0
- package/.output/server/_ssr/{createServerFn-DzU0k62V.mjs → createServerFn-B2hcXoPM.mjs} +1 -1
- package/.output/server/_ssr/createServerRpc-DB29C_5p.mjs +12 -0
- package/.output/server/_ssr/{sidebar-Cv_H0_Jv.mjs → createSsrRpc-DhfrxEjg.mjs} +68 -50
- package/.output/server/_ssr/databaseRows-QlCYLi0H.mjs +166 -0
- package/.output/server/_ssr/deleteBundle-Cu_XOMt0.mjs +66 -0
- package/.output/server/_ssr/dialog-C0vKUp8R.mjs +170 -0
- package/.output/server/_ssr/dist-BVSLTpoP.mjs +250 -0
- package/.output/server/_ssr/downloadBundle-CNnYxYO2.mjs +24 -0
- package/.output/server/_ssr/{empty-plugin-adapters-B4HCzgmM.mjs → empty-plugin-adapters-B5QvGpEl.mjs} +1 -1
- package/.output/server/_ssr/field-DASCh-5d.mjs +74 -0
- package/.output/server/_ssr/{getBundleChildren-CVtSiH5t.mjs → getBundleChildren-BcRMFoDF.mjs} +10 -18
- package/.output/server/_ssr/input-group-etIsBUqv.mjs +288 -0
- package/.output/server/_ssr/insights-api-C1F7UreR.mjs +71 -0
- package/.output/server/_ssr/insights-input-9fEJF-ZG.mjs +96 -0
- package/.output/server/_ssr/insights-rpc-C-8R6kED.mjs +155 -0
- package/.output/server/_ssr/insights-ygT_aIfo.mjs +858 -0
- package/.output/server/_ssr/installations-DqRT1QTd.mjs +535 -0
- package/.output/server/_ssr/installations-K8TCYTYh.mjs +19 -0
- package/.output/server/_ssr/router-BxBEvtF1.mjs +513 -0
- package/.output/server/_ssr/routes-BC7rn-tf.mjs +37 -0
- package/.output/server/_ssr/routes-CM5KAwpB.mjs +2285 -0
- package/.output/server/_ssr/runtime.server-la7TRAH_.mjs +527 -0
- package/.output/server/_ssr/server-CpzW--lT.mjs +7468 -0
- package/.output/server/_ssr/signing-jk4HANnl.mjs +134 -0
- package/.output/server/_ssr/ssr.mjs +4 -5740
- package/.output/server/_ssr/start-DpViQGnt.mjs +4 -0
- package/.output/server/_ssr/table-CU58HeI7.mjs +53 -0
- package/.output/server/_ssr/uuidv7-CaKuKXrV.mjs +31 -0
- package/.output/server/_tanstack-start-manifest_v-Mz9MmSlD.mjs +103 -0
- package/.output/server/index.mjs +229 -47
- package/README.md +29 -8
- package/lib/index.d.mts +35 -0
- package/lib/index.mjs +4 -0
- package/lib/vite-internal.mjs +127 -0
- package/lib/vite.d.mts +10 -0
- package/lib/vite.mjs +5 -0
- package/package.json +51 -29
- package/public/apple-touch-icon.png +0 -0
- package/public/favicon-16x16.png +0 -0
- package/public/favicon-32x32.png +0 -0
- package/public/favicon.ico +0 -0
- package/public/logo.svg +1 -0
- package/public/manifest.json +30 -0
- package/public/robots.txt +3 -0
- package/src/components/AppSidebar.tsx +159 -0
- package/src/components/BundleIdDisplay.tsx +18 -0
- package/src/components/ChannelBadge.tsx +31 -0
- package/src/components/ConsoleAccessPage.tsx +122 -0
- package/src/components/EnabledStatusIcon.tsx +54 -0
- package/src/components/HashValueDisplay.tsx +85 -0
- package/src/components/HotUpdaterLogo.tsx +30 -0
- package/src/components/NotFoundPage.tsx +33 -0
- package/src/components/PlatformIcon.tsx +39 -0
- package/src/components/RolloutPercentageBadge.tsx +28 -0
- package/src/components/ThemeProvider.tsx +116 -0
- package/src/components/TimestampDisplay.tsx +41 -0
- package/src/components/features/api-keys/ApiKeysPage.tsx +377 -0
- package/src/components/features/bundles/BundleActivityChart.tsx +193 -0
- package/src/components/features/bundles/BundleChildrenPanel.tsx +201 -0
- package/src/components/features/bundles/BundleInsightsSummary.tsx +123 -0
- package/src/components/features/bundles/BundleMetadata.tsx +136 -0
- package/src/components/features/bundles/RolloutCohortsDialog.tsx +201 -0
- package/src/components/features/channels/ChannelManagementDialog.tsx +228 -0
- package/src/components/features/insights/ActivityChart.tsx +150 -0
- package/src/components/features/insights/BundleDistribution.tsx +133 -0
- package/src/components/features/insights/BundleSelector.tsx +114 -0
- package/src/components/features/insights/InsightsCapabilityContext.tsx +24 -0
- package/src/components/features/insights/InsightsControls.tsx +115 -0
- package/src/components/features/insights/InsightsErrorAlert.tsx +21 -0
- package/src/components/features/insights/InsightsOverview.tsx +208 -0
- package/src/components/features/insights/InstallationHistoryCard.tsx +248 -0
- package/src/components/features/insights/InstallationMatchesCard.tsx +132 -0
- package/src/components/features/insights/InstallationPageHeader.tsx +138 -0
- package/src/components/features/insights/InstallationPagination.tsx +48 -0
- package/src/components/features/insights/InstallationSearch.tsx +230 -0
- package/src/components/features/insights/UpdateOutcomes.tsx +147 -0
- package/src/components/features/releases/ReleaseEditorSheet.tsx +879 -0
- package/src/components/features/releases/ReleaseStateBadge.tsx +20 -0
- package/src/components/features/signing/BundleSigningPage.tsx +139 -0
- package/src/components/ui/alert-dialog.tsx +185 -0
- package/src/components/ui/alert.tsx +76 -0
- package/src/components/ui/badge.tsx +49 -0
- package/src/components/ui/button.tsx +58 -0
- package/src/components/ui/card.tsx +89 -0
- package/src/components/ui/chart.tsx +371 -0
- package/src/components/ui/combobox.tsx +303 -0
- package/src/components/ui/dialog.tsx +156 -0
- package/src/components/ui/dropdown-menu.tsx +270 -0
- package/src/components/ui/field.tsx +235 -0
- package/src/components/ui/input-group.tsx +147 -0
- package/src/components/ui/input.tsx +19 -0
- package/src/components/ui/label.tsx +25 -0
- package/src/components/ui/progress.tsx +84 -0
- package/src/components/ui/select.tsx +205 -0
- package/src/components/ui/separator.tsx +23 -0
- package/src/components/ui/sheet.tsx +132 -0
- package/src/components/ui/sidebar.tsx +779 -0
- package/src/components/ui/skeleton.tsx +13 -0
- package/src/components/ui/slider.tsx +56 -0
- package/src/components/ui/sonner.tsx +45 -0
- package/src/components/ui/switch.tsx +25 -0
- package/src/components/ui/table.tsx +114 -0
- package/src/components/ui/textarea.tsx +18 -0
- package/src/components/ui/toggle-group.tsx +89 -0
- package/src/components/ui/toggle.tsx +43 -0
- package/src/components/ui/tooltip.tsx +66 -0
- package/src/hooks/use-mobile.ts +30 -0
- package/src/index.ts +47 -0
- package/src/lib/api-keys-api.ts +69 -0
- package/src/lib/api-keys-rpc.ts +87 -0
- package/src/lib/api-rpc.ts +478 -0
- package/src/lib/api.ts +444 -0
- package/src/lib/auth-rpc.ts +16 -0
- package/src/lib/bundle-signing-api.ts +14 -0
- package/src/lib/bundle-signing-rpc.ts +16 -0
- package/src/lib/constants.ts +1 -0
- package/src/lib/git.ts +51 -0
- package/src/lib/insights-api.ts +144 -0
- package/src/lib/insights-error.ts +19 -0
- package/src/lib/insights-input.ts +187 -0
- package/src/lib/insights-overview.ts +170 -0
- package/src/lib/insights-rpc.ts +218 -0
- package/src/lib/server/auth.server.ts +43 -0
- package/src/lib/server/bundle-signing.server.ts +23 -0
- package/src/lib/server/config.server.ts +109 -0
- package/src/lib/server/console-runtime.server.ts +61 -0
- package/src/lib/server/deleteBundle.ts +145 -0
- package/src/lib/server/downloadBundle.ts +46 -0
- package/src/lib/server/getBundleChildren.ts +130 -0
- package/src/lib/server/listReleases.ts +61 -0
- package/src/lib/server/releaseActivity.ts +27 -0
- package/src/lib/server/releaseReachability.ts +95 -0
- package/src/lib/server/runtime.server.ts +172 -0
- package/src/lib/utils.ts +9 -0
- package/src/logo.svg +1 -0
- package/src/routeTree.gen.ts +199 -0
- package/src/router.tsx +21 -0
- package/src/routes/-installations-search.ts +19 -0
- package/src/routes/-releases-search.ts +74 -0
- package/src/routes/__root.tsx +174 -0
- package/src/routes/api/auth/$.ts +19 -0
- package/src/routes/api/bundles/$bundleId/download.ts +17 -0
- package/src/routes/api-keys.tsx +37 -0
- package/src/routes/index.tsx +982 -0
- package/src/routes/insights.tsx +139 -0
- package/src/routes/installations.tsx +194 -0
- package/src/routes/signing.tsx +37 -0
- package/src/styles.css +152 -0
- package/src/virtual-modules.d.ts +21 -0
- package/src/vite-env.d.ts +1 -0
- package/src/vite-internal.ts +195 -0
- package/src/vite.ts +12 -0
- package/.output/public/assets/dist-DJX53faP.js +0 -3
- package/.output/public/assets/index-Iylis5kY.js +0 -10
- package/.output/public/assets/routes-HT21hs0C.js +0 -54
- package/.output/public/assets/styles-C0Re4quB.css +0 -2
- package/.output/server/__23tanstack-start-server-fn-resolver-CgwgZ0-i.mjs +0 -66
- package/.output/server/_libs/@floating-ui/core+[...].mjs +0 -698
- package/.output/server/_libs/@floating-ui/dom+[...].mjs +0 -644
- package/.output/server/_libs/@floating-ui/react-dom+[...].mjs +0 -839
- package/.output/server/_libs/@radix-ui/react-alert-dialog+[...].mjs +0 -2138
- package/.output/server/_libs/@radix-ui/react-popper+[...].mjs +0 -308
- package/.output/server/_libs/@radix-ui/react-select+[...].mjs +0 -1038
- package/.output/server/_libs/@tanstack/devtools-event-client+[...].mjs +0 -196
- package/.output/server/_libs/@tanstack/form-core+[...].mjs +0 -3228
- package/.output/server/_libs/@tanstack/react-form+[...].mjs +0 -430
- package/.output/server/_libs/@tanstack/react-table+[...].mjs +0 -2382
- package/.output/server/_libs/radix-ui__number.mjs +0 -6
- package/.output/server/_libs/radix-ui__primitive.mjs +0 -9
- package/.output/server/_libs/radix-ui__react-arrow.mjs +0 -23
- package/.output/server/_libs/radix-ui__react-collection.mjs +0 -78
- package/.output/server/_libs/radix-ui__react-direction.mjs +0 -13
- package/.output/server/_libs/radix-ui__react-label.mjs +0 -22
- package/.output/server/_libs/radix-ui__react-separator.mjs +0 -30
- package/.output/server/_libs/radix-ui__react-slider.mjs +0 -510
- package/.output/server/_libs/radix-ui__react-switch.mjs +0 -157
- package/.output/server/_libs/radix-ui__react-tooltip.mjs +0 -493
- package/.output/server/_ssr/api-rpc-BIbDUKSz.mjs +0 -292
- package/.output/server/_ssr/config.server-BSS366KT.mjs +0 -41
- package/.output/server/_ssr/deleteBundle-BgbZTtpW.mjs +0 -141
- package/.output/server/_ssr/dist-KboydRVk.mjs +0 -120
- package/.output/server/_ssr/router-C3hqEy3k.mjs +0 -307
- package/.output/server/_ssr/routes-B0lQvvlC.mjs +0 -3048
- package/.output/server/_ssr/start-02sLteYG.mjs +0 -4
- package/.output/server/_ssr/storageProfile-FVkjPoGb.mjs +0 -9
- package/.output/server/_tanstack-start-manifest_v-Bpx52WOU.mjs +0 -20
- package/.output/server/node_modules/tslib/modules/index.js +0 -70
- package/.output/server/node_modules/tslib/modules/package.json +0 -3
- package/.output/server/node_modules/tslib/package.json +0 -47
- package/.output/server/node_modules/tslib/tslib.js +0 -484
- package/.output/server/package.json +0 -9
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { i as __toESM } from "../_runtime.mjs";
|
|
2
|
+
import { $ as require_react_dom, at as require_react } from "./@base-ui/react+[...].mjs";
|
|
3
3
|
//#region ../../node_modules/.pnpm/sonner@2.0.7_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/sonner/dist/index.mjs
|
|
4
4
|
var import_react = /* @__PURE__ */ __toESM(require_react(), 1);
|
|
5
5
|
var import_react_dom = /* @__PURE__ */ __toESM(require_react_dom(), 1);
|
|
@@ -305,6 +305,119 @@ function pendingThenable() {
|
|
|
305
305
|
};
|
|
306
306
|
return thenable;
|
|
307
307
|
}
|
|
308
|
+
function tryResolveSync(promise) {
|
|
309
|
+
let data;
|
|
310
|
+
promise.then((result) => {
|
|
311
|
+
data = result;
|
|
312
|
+
return result;
|
|
313
|
+
}, noop)?.catch(noop);
|
|
314
|
+
if (data !== void 0) return { data };
|
|
315
|
+
}
|
|
316
|
+
//#endregion
|
|
317
|
+
//#region ../../node_modules/.pnpm/@tanstack+query-core@5.101.0/node_modules/@tanstack/query-core/build/modern/hydration.js
|
|
318
|
+
function defaultTransformerFn(data) {
|
|
319
|
+
return data;
|
|
320
|
+
}
|
|
321
|
+
function dehydrateMutation(mutation) {
|
|
322
|
+
return {
|
|
323
|
+
mutationKey: mutation.options.mutationKey,
|
|
324
|
+
state: mutation.state,
|
|
325
|
+
...mutation.options.scope && { scope: mutation.options.scope },
|
|
326
|
+
...mutation.meta && { meta: mutation.meta }
|
|
327
|
+
};
|
|
328
|
+
}
|
|
329
|
+
function dehydrateQuery(query, serializeData, shouldRedactErrors) {
|
|
330
|
+
const dehydratePromise = () => {
|
|
331
|
+
const promise = query.promise?.then(serializeData).catch((error) => {
|
|
332
|
+
if (!shouldRedactErrors(error)) return Promise.reject(error);
|
|
333
|
+
return Promise.reject(/* @__PURE__ */ new Error("redacted"));
|
|
334
|
+
});
|
|
335
|
+
promise?.catch(noop);
|
|
336
|
+
return promise;
|
|
337
|
+
};
|
|
338
|
+
return {
|
|
339
|
+
dehydratedAt: Date.now(),
|
|
340
|
+
state: {
|
|
341
|
+
...query.state,
|
|
342
|
+
...query.state.data !== void 0 && { data: serializeData(query.state.data) }
|
|
343
|
+
},
|
|
344
|
+
queryKey: query.queryKey,
|
|
345
|
+
queryHash: query.queryHash,
|
|
346
|
+
...query.state.status === "pending" && { promise: dehydratePromise() },
|
|
347
|
+
...query.meta && { meta: query.meta },
|
|
348
|
+
...query.queryType && { queryType: query.queryType }
|
|
349
|
+
};
|
|
350
|
+
}
|
|
351
|
+
function defaultShouldDehydrateMutation(mutation) {
|
|
352
|
+
return mutation.state.isPaused;
|
|
353
|
+
}
|
|
354
|
+
function defaultShouldDehydrateQuery(query) {
|
|
355
|
+
return query.state.status === "success";
|
|
356
|
+
}
|
|
357
|
+
function defaultShouldRedactErrors(_) {
|
|
358
|
+
return true;
|
|
359
|
+
}
|
|
360
|
+
function dehydrate(client, options = {}) {
|
|
361
|
+
const filterMutation = options.shouldDehydrateMutation ?? client.getDefaultOptions().dehydrate?.shouldDehydrateMutation ?? defaultShouldDehydrateMutation;
|
|
362
|
+
const mutations = client.getMutationCache().getAll().flatMap((mutation) => filterMutation(mutation) ? [dehydrateMutation(mutation)] : []);
|
|
363
|
+
const filterQuery = options.shouldDehydrateQuery ?? client.getDefaultOptions().dehydrate?.shouldDehydrateQuery ?? defaultShouldDehydrateQuery;
|
|
364
|
+
const shouldRedactErrors = options.shouldRedactErrors ?? client.getDefaultOptions().dehydrate?.shouldRedactErrors ?? defaultShouldRedactErrors;
|
|
365
|
+
const serializeData = options.serializeData ?? client.getDefaultOptions().dehydrate?.serializeData ?? defaultTransformerFn;
|
|
366
|
+
return {
|
|
367
|
+
mutations,
|
|
368
|
+
queries: client.getQueryCache().getAll().flatMap((query) => filterQuery(query) ? [dehydrateQuery(query, serializeData, shouldRedactErrors)] : [])
|
|
369
|
+
};
|
|
370
|
+
}
|
|
371
|
+
function hydrate(client, dehydratedState, options) {
|
|
372
|
+
if (typeof dehydratedState !== "object" || dehydratedState === null) return;
|
|
373
|
+
const mutationCache = client.getMutationCache();
|
|
374
|
+
const queryCache = client.getQueryCache();
|
|
375
|
+
const deserializeData = options?.defaultOptions?.deserializeData ?? client.getDefaultOptions().hydrate?.deserializeData ?? defaultTransformerFn;
|
|
376
|
+
const mutations = dehydratedState.mutations || [];
|
|
377
|
+
const queries = dehydratedState.queries || [];
|
|
378
|
+
mutations.forEach(({ state, ...mutationOptions }) => {
|
|
379
|
+
mutationCache.build(client, {
|
|
380
|
+
...client.getDefaultOptions().hydrate?.mutations,
|
|
381
|
+
...options?.defaultOptions?.mutations,
|
|
382
|
+
...mutationOptions
|
|
383
|
+
}, state);
|
|
384
|
+
});
|
|
385
|
+
queries.forEach(({ queryKey, state, queryHash, meta, promise, dehydratedAt, queryType }) => {
|
|
386
|
+
const syncData = promise ? tryResolveSync(promise) : void 0;
|
|
387
|
+
const rawData = state.data === void 0 ? syncData?.data : state.data;
|
|
388
|
+
const data = rawData === void 0 ? rawData : deserializeData(rawData);
|
|
389
|
+
let query = queryCache.get(queryHash);
|
|
390
|
+
const existingQueryIsPending = query?.state.status === "pending";
|
|
391
|
+
const existingQueryIsFetching = query?.state.fetchStatus === "fetching";
|
|
392
|
+
if (query) {
|
|
393
|
+
const hasNewerSyncData = syncData && dehydratedAt !== void 0 && dehydratedAt > query.state.dataUpdatedAt;
|
|
394
|
+
if (state.dataUpdatedAt > query.state.dataUpdatedAt || hasNewerSyncData) {
|
|
395
|
+
const { fetchStatus: _ignored, ...serializedState } = state;
|
|
396
|
+
query.setState({
|
|
397
|
+
...serializedState,
|
|
398
|
+
data,
|
|
399
|
+
...state.status === "pending" && data !== void 0 && {
|
|
400
|
+
status: "success",
|
|
401
|
+
...!existingQueryIsFetching && { fetchStatus: "idle" }
|
|
402
|
+
}
|
|
403
|
+
});
|
|
404
|
+
}
|
|
405
|
+
} else query = queryCache.build(client, {
|
|
406
|
+
...client.getDefaultOptions().hydrate?.queries,
|
|
407
|
+
...options?.defaultOptions?.queries,
|
|
408
|
+
queryKey,
|
|
409
|
+
queryHash,
|
|
410
|
+
meta,
|
|
411
|
+
_type: queryType
|
|
412
|
+
}, {
|
|
413
|
+
...state,
|
|
414
|
+
data,
|
|
415
|
+
fetchStatus: "idle",
|
|
416
|
+
status: state.status === "pending" && data !== void 0 ? "success" : state.status
|
|
417
|
+
});
|
|
418
|
+
if (promise && !syncData && !existingQueryIsPending && !existingQueryIsFetching && (dehydratedAt === void 0 || dehydratedAt > query.state.dataUpdatedAt)) query.fetch(void 0, { initialPromise: Promise.resolve(promise).then(deserializeData) }).catch(noop);
|
|
419
|
+
});
|
|
420
|
+
}
|
|
308
421
|
//#endregion
|
|
309
422
|
//#region ../../node_modules/.pnpm/@tanstack+query-core@5.101.0/node_modules/@tanstack/query-core/build/modern/notifyManager.js
|
|
310
423
|
var defaultScheduler = systemSetTimeoutZero;
|
|
@@ -2096,4 +2209,4 @@ var QueryClient = class {
|
|
|
2096
2209
|
}
|
|
2097
2210
|
};
|
|
2098
2211
|
//#endregion
|
|
2099
|
-
export {
|
|
2212
|
+
export { dehydrate as a, noop as c, notifyManager as i, shouldThrowError as l, MutationObserver as n, hydrate as o, QueryObserver as r, environmentManager as s, QueryClient as t };
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { a as environmentManager, i as notifyManager, n as MutationObserver, o as noop, r as QueryObserver, s as shouldThrowError } from "./tanstack__query-core.mjs";
|
|
1
|
+
import { i as __toESM } from "../_runtime.mjs";
|
|
2
|
+
import { at as require_react, it as require_jsx_runtime } from "./@base-ui/react+[...].mjs";
|
|
3
|
+
import { c as noop, i as notifyManager, l as shouldThrowError, n as MutationObserver, r as QueryObserver, s as environmentManager } from "./tanstack__query-core.mjs";
|
|
5
4
|
//#region ../../node_modules/.pnpm/@tanstack+react-query@5.101.0_react@19.2.6/node_modules/@tanstack/react-query/build/modern/QueryClientProvider.js
|
|
6
5
|
var import_react = /* @__PURE__ */ __toESM(require_react(), 1);
|
|
7
6
|
var import_jsx_runtime = require_jsx_runtime();
|
|
@@ -7,6 +7,15 @@ var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
|
7
7
|
var __getProtoOf = Object.getPrototypeOf;
|
|
8
8
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
9
|
var __commonJSMin = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
|
|
10
|
+
var __exportAll = (all, no_symbols) => {
|
|
11
|
+
let target = {};
|
|
12
|
+
for (var name in all) __defProp(target, name, {
|
|
13
|
+
get: all[name],
|
|
14
|
+
enumerable: true
|
|
15
|
+
});
|
|
16
|
+
if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
|
|
17
|
+
return target;
|
|
18
|
+
};
|
|
10
19
|
var __copyProps = (to, from, except, desc) => {
|
|
11
20
|
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
12
21
|
key = keys[i];
|
|
@@ -23,4 +32,4 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
23
32
|
}) : target, mod));
|
|
24
33
|
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
25
34
|
//#endregion
|
|
26
|
-
export {
|
|
35
|
+
export { __toESM as i, __exportAll as n, __require as r, __commonJSMin as t };
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
import { i as __toESM } from "../_runtime.mjs";
|
|
2
|
+
import { at as require_react, it as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
|
|
3
|
+
import { n as TriangleAlert } from "../_libs/lucide-react.mjs";
|
|
4
|
+
import { C as cn } from "./createSsrRpc-DhfrxEjg.mjs";
|
|
5
|
+
import { i as AlertTitle, r as AlertDescription, t as Alert } from "./card-Bsc8mRis.mjs";
|
|
6
|
+
import { a as CartesianGrid, c as ResponsiveContainer, i as Area, n as YAxis, o as Tooltip, r as XAxis, t as AreaChart } from "../_libs/recharts+[...].mjs";
|
|
7
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/BundleActivityChart-CWcdPuUn.js
|
|
8
|
+
var import_react = /* @__PURE__ */ __toESM(require_react());
|
|
9
|
+
var import_jsx_runtime = require_jsx_runtime();
|
|
10
|
+
var getInsightsErrorCopy = (error, fallbackTitle) => {
|
|
11
|
+
const match = /^Bundle event scan exceeded (\d+) rows\.$/.exec(error.message);
|
|
12
|
+
if (!match) return {
|
|
13
|
+
title: fallbackTitle,
|
|
14
|
+
description: error.message
|
|
15
|
+
};
|
|
16
|
+
return {
|
|
17
|
+
title: "Insights report limit reached",
|
|
18
|
+
description: `This query matched more than ${Number(match[1]).toLocaleString()} reports. Narrow the query and try again.`
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
function InsightsErrorAlert({ error, fallbackTitle }) {
|
|
22
|
+
const copy = getInsightsErrorCopy(error, fallbackTitle);
|
|
23
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Alert, {
|
|
24
|
+
variant: "destructive",
|
|
25
|
+
children: [
|
|
26
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(TriangleAlert, { "aria-hidden": "true" }),
|
|
27
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(AlertTitle, { children: copy.title }),
|
|
28
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(AlertDescription, { children: copy.description })
|
|
29
|
+
]
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
var THEMES = {
|
|
33
|
+
light: "",
|
|
34
|
+
dark: ".dark"
|
|
35
|
+
};
|
|
36
|
+
var INITIAL_DIMENSION = {
|
|
37
|
+
width: 320,
|
|
38
|
+
height: 200
|
|
39
|
+
};
|
|
40
|
+
var ChartContext = import_react.createContext(null);
|
|
41
|
+
function useChart() {
|
|
42
|
+
const context = import_react.useContext(ChartContext);
|
|
43
|
+
if (!context) throw new Error("useChart must be used within a <ChartContainer />");
|
|
44
|
+
return context;
|
|
45
|
+
}
|
|
46
|
+
function ChartContainer({ id, className, children, config, initialDimension = INITIAL_DIMENSION, ...props }) {
|
|
47
|
+
const uniqueId = import_react.useId();
|
|
48
|
+
const chartId = `chart-${id ?? uniqueId.replace(/:/g, "")}`;
|
|
49
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ChartContext.Provider, {
|
|
50
|
+
value: { config },
|
|
51
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
52
|
+
"data-slot": "chart",
|
|
53
|
+
"data-chart": chartId,
|
|
54
|
+
className: cn("flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden", className),
|
|
55
|
+
...props,
|
|
56
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(ChartStyle, {
|
|
57
|
+
id: chartId,
|
|
58
|
+
config
|
|
59
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ResponsiveContainer, {
|
|
60
|
+
initialDimension,
|
|
61
|
+
children
|
|
62
|
+
})]
|
|
63
|
+
})
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
var ChartStyle = ({ id, config }) => {
|
|
67
|
+
const colorConfig = Object.entries(config).filter(([, config]) => config.theme ?? config.color);
|
|
68
|
+
if (!colorConfig.length) return null;
|
|
69
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("style", { dangerouslySetInnerHTML: { __html: Object.entries(THEMES).map(([theme, prefix]) => `
|
|
70
|
+
${prefix} [data-chart=${id}] {
|
|
71
|
+
${colorConfig.map(([key, itemConfig]) => {
|
|
72
|
+
const color = itemConfig.theme?.[theme] ?? itemConfig.color;
|
|
73
|
+
return color ? ` --color-${key}: ${color};` : null;
|
|
74
|
+
}).join("\n")}
|
|
75
|
+
}
|
|
76
|
+
`).join("\n") } });
|
|
77
|
+
};
|
|
78
|
+
var ChartTooltip = Tooltip;
|
|
79
|
+
function ChartTooltipContent({ active, payload, className, indicator = "dot", hideLabel = false, hideIndicator = false, label, labelFormatter, labelClassName, formatter, color, nameKey, labelKey }) {
|
|
80
|
+
const { config } = useChart();
|
|
81
|
+
const tooltipLabel = import_react.useMemo(() => {
|
|
82
|
+
if (hideLabel || !payload?.length) return null;
|
|
83
|
+
const [item] = payload;
|
|
84
|
+
const itemConfig = getPayloadConfigFromPayload(config, item, `${labelKey ?? item?.dataKey ?? item?.name ?? "value"}`);
|
|
85
|
+
const value = !labelKey && typeof label === "string" ? config[label]?.label ?? label : itemConfig?.label;
|
|
86
|
+
if (labelFormatter) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
87
|
+
className: cn("font-medium", labelClassName),
|
|
88
|
+
children: labelFormatter(value, payload)
|
|
89
|
+
});
|
|
90
|
+
if (!value) return null;
|
|
91
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
92
|
+
className: cn("font-medium", labelClassName),
|
|
93
|
+
children: value
|
|
94
|
+
});
|
|
95
|
+
}, [
|
|
96
|
+
label,
|
|
97
|
+
labelFormatter,
|
|
98
|
+
payload,
|
|
99
|
+
hideLabel,
|
|
100
|
+
labelClassName,
|
|
101
|
+
config,
|
|
102
|
+
labelKey
|
|
103
|
+
]);
|
|
104
|
+
if (!active || !payload?.length) return null;
|
|
105
|
+
const nestLabel = payload.length === 1 && indicator !== "dot";
|
|
106
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
107
|
+
className: cn("grid min-w-32 items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs/relaxed shadow-xl", className),
|
|
108
|
+
children: [!nestLabel ? tooltipLabel : null, /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
109
|
+
className: "grid gap-1.5",
|
|
110
|
+
children: payload.filter((item) => item.type !== "none").map((item, index) => {
|
|
111
|
+
const itemConfig = getPayloadConfigFromPayload(config, item, `${nameKey ?? item.name ?? item.dataKey ?? "value"}`);
|
|
112
|
+
const indicatorColor = color ?? item.payload?.fill ?? item.color;
|
|
113
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
114
|
+
className: cn("flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground", indicator === "dot" && "items-center"),
|
|
115
|
+
children: formatter && item?.value !== void 0 && item.name ? formatter(item.value, item.name, item, index, item.payload) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [itemConfig?.icon ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(itemConfig.icon, {}) : !hideIndicator && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
116
|
+
className: cn("shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)", {
|
|
117
|
+
"h-2.5 w-2.5": indicator === "dot",
|
|
118
|
+
"w-1": indicator === "line",
|
|
119
|
+
"w-0 border-[1.5px] border-dashed bg-transparent": indicator === "dashed",
|
|
120
|
+
"my-0.5": nestLabel && indicator === "dashed"
|
|
121
|
+
}),
|
|
122
|
+
style: {
|
|
123
|
+
"--color-bg": indicatorColor,
|
|
124
|
+
"--color-border": indicatorColor
|
|
125
|
+
}
|
|
126
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
127
|
+
className: cn("flex flex-1 justify-between gap-2 leading-none", nestLabel ? "items-end" : "items-center"),
|
|
128
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
129
|
+
className: "grid gap-1.5",
|
|
130
|
+
children: [nestLabel ? tooltipLabel : null, /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
131
|
+
className: "text-muted-foreground",
|
|
132
|
+
children: itemConfig?.label ?? item.name
|
|
133
|
+
})]
|
|
134
|
+
}), item.value != null && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
135
|
+
className: "font-mono font-medium text-foreground tabular-nums",
|
|
136
|
+
children: typeof item.value === "number" ? item.value.toLocaleString() : String(item.value)
|
|
137
|
+
})]
|
|
138
|
+
})] })
|
|
139
|
+
}, index);
|
|
140
|
+
})
|
|
141
|
+
})]
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
function getPayloadConfigFromPayload(config, payload, key) {
|
|
145
|
+
if (typeof payload !== "object" || payload === null) return;
|
|
146
|
+
const payloadPayload = "payload" in payload && typeof payload.payload === "object" && payload.payload !== null ? payload.payload : void 0;
|
|
147
|
+
let configLabelKey = key;
|
|
148
|
+
if (key in payload && typeof payload[key] === "string") configLabelKey = payload[key];
|
|
149
|
+
else if (payloadPayload && key in payloadPayload && typeof payloadPayload[key] === "string") configLabelKey = payloadPayload[key];
|
|
150
|
+
return configLabelKey in config ? config[configLabelKey] : config[key];
|
|
151
|
+
}
|
|
152
|
+
var chartConfig = {
|
|
153
|
+
installed: {
|
|
154
|
+
label: "Applied",
|
|
155
|
+
color: "var(--chart-2)"
|
|
156
|
+
},
|
|
157
|
+
recovered: {
|
|
158
|
+
label: "Recovered",
|
|
159
|
+
color: "var(--muted-foreground)"
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
var dateFormatter = new Intl.DateTimeFormat("en", {
|
|
163
|
+
day: "numeric",
|
|
164
|
+
month: "short",
|
|
165
|
+
timeZone: "UTC"
|
|
166
|
+
});
|
|
167
|
+
var hourFormatter = new Intl.DateTimeFormat("en", {
|
|
168
|
+
day: "numeric",
|
|
169
|
+
hour: "numeric",
|
|
170
|
+
month: "short",
|
|
171
|
+
timeZone: "UTC"
|
|
172
|
+
});
|
|
173
|
+
var windowLabels = {
|
|
174
|
+
"24h": "24 hours",
|
|
175
|
+
"7d": "7 days",
|
|
176
|
+
"30d": "30 days"
|
|
177
|
+
};
|
|
178
|
+
var mergeActivitySeries = (installed, recovered) => {
|
|
179
|
+
const installedByBucket = new Map(installed.map((point) => [point.bucketStartMs, point.value]));
|
|
180
|
+
const recoveredByBucket = new Map(recovered.map((point) => [point.bucketStartMs, point.value]));
|
|
181
|
+
return [...new Set([...installedByBucket.keys(), ...recoveredByBucket.keys()])].sort((left, right) => left - right).map((bucketStartMs) => ({
|
|
182
|
+
bucketStartMs,
|
|
183
|
+
installed: installedByBucket.get(bucketStartMs) ?? 0,
|
|
184
|
+
recovered: recoveredByBucket.get(bucketStartMs) ?? 0
|
|
185
|
+
}));
|
|
186
|
+
};
|
|
187
|
+
var formatBucket = (value, window) => (window === "24h" ? hourFormatter : dateFormatter).format(new Date(value));
|
|
188
|
+
function BundleActivityChart({ installed, recovered, window }) {
|
|
189
|
+
const captionId = (0, import_react.useId)();
|
|
190
|
+
const chartData = mergeActivitySeries(installed, recovered);
|
|
191
|
+
if (!chartData.some((point) => point.installed > 0 || point.recovered > 0)) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
192
|
+
className: "flex h-16 items-center justify-center border-t px-4 pt-3 text-center text-xs text-muted-foreground sm:h-20 sm:pt-4",
|
|
193
|
+
children: "No device activity in the last 30 days."
|
|
194
|
+
});
|
|
195
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
196
|
+
className: "border-t pt-3 sm:pt-4",
|
|
197
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(ChartContainer, {
|
|
198
|
+
"aria-describedby": captionId,
|
|
199
|
+
"aria-label": `Bundle movement over ${windowLabels[window]}`,
|
|
200
|
+
className: "h-24 w-full aspect-auto sm:h-32",
|
|
201
|
+
config: chartConfig,
|
|
202
|
+
role: "img",
|
|
203
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(AreaChart, {
|
|
204
|
+
accessibilityLayer: true,
|
|
205
|
+
data: chartData,
|
|
206
|
+
margin: {
|
|
207
|
+
left: -16,
|
|
208
|
+
right: 4,
|
|
209
|
+
top: 4
|
|
210
|
+
},
|
|
211
|
+
children: [
|
|
212
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(CartesianGrid, { vertical: false }),
|
|
213
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(XAxis, {
|
|
214
|
+
axisLine: false,
|
|
215
|
+
dataKey: "bucketStartMs",
|
|
216
|
+
minTickGap: 28,
|
|
217
|
+
tickFormatter: (value) => formatBucket(value, window),
|
|
218
|
+
tickLine: false
|
|
219
|
+
}),
|
|
220
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(YAxis, {
|
|
221
|
+
allowDecimals: false,
|
|
222
|
+
axisLine: false,
|
|
223
|
+
tickLine: false,
|
|
224
|
+
width: 32
|
|
225
|
+
}),
|
|
226
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(ChartTooltip, { content: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ChartTooltipContent, { labelFormatter: (_, payload) => {
|
|
227
|
+
const bucket = payload[0]?.payload.bucketStartMs;
|
|
228
|
+
return typeof bucket === "number" ? formatBucket(bucket, window) : "";
|
|
229
|
+
} }) }),
|
|
230
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Area, {
|
|
231
|
+
dataKey: "installed",
|
|
232
|
+
fill: "var(--color-installed)",
|
|
233
|
+
fillOpacity: .12,
|
|
234
|
+
isAnimationActive: false,
|
|
235
|
+
stroke: "var(--color-installed)",
|
|
236
|
+
strokeWidth: 2,
|
|
237
|
+
type: "monotone"
|
|
238
|
+
}),
|
|
239
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Area, {
|
|
240
|
+
dataKey: "recovered",
|
|
241
|
+
fill: "var(--color-recovered)",
|
|
242
|
+
fillOpacity: .04,
|
|
243
|
+
isAnimationActive: false,
|
|
244
|
+
stroke: "var(--color-recovered)",
|
|
245
|
+
strokeWidth: 1.5,
|
|
246
|
+
type: "monotone"
|
|
247
|
+
})
|
|
248
|
+
]
|
|
249
|
+
})
|
|
250
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
251
|
+
className: "sr-only",
|
|
252
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("table", { children: [
|
|
253
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("caption", {
|
|
254
|
+
id: captionId,
|
|
255
|
+
children: [
|
|
256
|
+
"Distinct bundle movement in each bucket over ",
|
|
257
|
+
windowLabels[window],
|
|
258
|
+
". Times are shown in UTC."
|
|
259
|
+
]
|
|
260
|
+
}),
|
|
261
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("thead", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("tr", { children: [
|
|
262
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("th", {
|
|
263
|
+
scope: "col",
|
|
264
|
+
children: "Date"
|
|
265
|
+
}),
|
|
266
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("th", {
|
|
267
|
+
scope: "col",
|
|
268
|
+
children: "Applied"
|
|
269
|
+
}),
|
|
270
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("th", {
|
|
271
|
+
scope: "col",
|
|
272
|
+
children: "Recovered"
|
|
273
|
+
})
|
|
274
|
+
] }) }),
|
|
275
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("tbody", { children: chartData.map((point) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("tr", { children: [
|
|
276
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("th", {
|
|
277
|
+
scope: "row",
|
|
278
|
+
children: formatBucket(point.bucketStartMs, window)
|
|
279
|
+
}),
|
|
280
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("td", { children: point.installed }),
|
|
281
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("td", { children: point.recovered })
|
|
282
|
+
] }, point.bucketStartMs)) })
|
|
283
|
+
] })
|
|
284
|
+
})]
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
//#endregion
|
|
288
|
+
export { InsightsErrorAlert as a, ChartTooltipContent as i, ChartContainer as n, ChartTooltip as r, BundleActivityChart as t };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { it as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
|
|
2
|
+
import { C as cn } from "./createSsrRpc-DhfrxEjg.mjs";
|
|
3
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/BundleIdDisplay-BEvB3MvA.js
|
|
4
|
+
var import_jsx_runtime = require_jsx_runtime();
|
|
5
|
+
function BundleIdDisplay({ bundleId, className }) {
|
|
6
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
7
|
+
translate: "no",
|
|
8
|
+
className: cn("break-all font-mono text-xs tabular-nums", className),
|
|
9
|
+
children: bundleId
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
//#endregion
|
|
13
|
+
export { BundleIdDisplay as t };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { i as __toESM } from "../_runtime.mjs";
|
|
2
|
+
import { at as require_react, it as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
|
|
3
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/InsightsCapabilityContext-Cx8fjm2s.js
|
|
4
|
+
var import_react = /* @__PURE__ */ __toESM(require_react());
|
|
5
|
+
var import_jsx_runtime = require_jsx_runtime();
|
|
6
|
+
var InsightsCapabilityContext = (0, import_react.createContext)({ status: "unresolved" });
|
|
7
|
+
function InsightsCapabilityProvider({ children, value }) {
|
|
8
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(InsightsCapabilityContext.Provider, {
|
|
9
|
+
value,
|
|
10
|
+
children
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
var useInsightsCapability = () => (0, import_react.useContext)(InsightsCapabilityContext);
|
|
14
|
+
//#endregion
|
|
15
|
+
export { useInsightsCapability as n, InsightsCapabilityProvider as t };
|