@hot-updater/console 1.0.0-rc.9 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.output/nitro.json +1 -1
- package/.output/public/assets/ConsoleFeatureUnavailable-jB4Loglh.js +1 -0
- package/.output/public/assets/EventDetails-B6yUsyNA.js +1 -0
- package/.output/public/assets/HashValueDisplay-BFX_kY3-.js +1 -0
- package/.output/public/assets/InsightsInfo-BNO0WznZ.js +1 -0
- package/.output/public/assets/InsightsPageHeader-B892oVml.js +1 -0
- package/.output/public/assets/NotFoundPage-DIqCpWa3.js +1 -0
- package/.output/public/assets/alert-dialog-Bbk_4-WJ.js +1 -0
- package/.output/public/assets/api-DCM0wr6O.js +1 -0
- package/.output/public/assets/api-keys-CIO9L_wu.js +1 -0
- package/.output/public/assets/api-keys-DVTL_--f.js +1 -0
- package/.output/public/assets/arrow-left-CnMYpqB7.js +1 -0
- package/.output/public/assets/arrow-up-right-BtffZA6e.js +1 -0
- package/.output/public/assets/chevron-right-BqD5wtFb.js +1 -0
- package/.output/public/assets/clipboard-DS9ucUQL.js +1 -0
- package/.output/public/assets/console-features-api-BH5m_PtQ.js +1 -0
- package/.output/public/assets/dialog-Bqbb7B0N.js +1 -0
- package/.output/public/assets/dist-LxKJB-Vu.js +1 -0
- package/.output/public/assets/empty-CuT2UhFp.js +1 -0
- package/.output/public/assets/field-BBDpjIqu.js +1 -0
- package/.output/public/assets/index-6o51GkFe.js +11 -0
- package/.output/public/assets/input-group-ja_30qaF.js +1 -0
- package/.output/public/assets/insights-CmraDzQh.js +1 -0
- package/.output/public/assets/insights-CxZ2GCYV.js +2 -0
- package/.output/public/assets/insights-api-BigAU9sZ.js +1 -0
- package/.output/public/assets/insights-usage-rpc-DYEhsCKT.js +1 -0
- package/.output/public/assets/insights-vNRCrfnS.js +42 -0
- package/.output/public/assets/insights_.distribution-ChOerfJt.js +1 -0
- package/.output/public/assets/insights_.distribution-D-e4iga8.js +1 -0
- package/.output/public/assets/insights_.distribution-DZtkibX1.js +2 -0
- package/.output/public/assets/installations-BazSJXE0.js +2 -0
- package/.output/public/assets/installations-ClHTqdAO.js +1 -0
- package/.output/public/assets/installations-DpKsBuHi.js +1 -0
- package/.output/public/assets/key-round-wS_SIZ6b.js +1 -0
- package/.output/public/assets/list-CgrYiadM.js +1 -0
- package/.output/public/assets/refresh-cw-BYgoNCco.js +1 -0
- package/.output/public/assets/remote-config-BWwHOkCK.js +1 -0
- package/.output/public/assets/remote-config-Br56BODb.js +6 -0
- package/.output/public/assets/remote-config-CXOi0LRu.js +1 -0
- package/.output/public/assets/routes-B88Erkpk.js +2 -0
- package/.output/public/assets/routes-CfzsAleC.js +1 -0
- package/.output/public/assets/search-DaTDPW25.js +1 -0
- package/.output/public/assets/select-BZZBXMkr.js +1 -0
- package/.output/public/assets/sidebar-DNVyJPfX.js +3 -0
- package/.output/public/assets/smartphone-DpTFgtKf.js +1 -0
- package/.output/public/assets/styles-DTGEAJFv.css +2 -0
- package/.output/public/assets/switch-DZ1TPwx-.js +1 -0
- package/.output/public/assets/table-Gm4qRWwE.js +1 -0
- package/.output/public/assets/tabs-C7FOEjFC.js +1 -0
- package/.output/public/assets/undo-2-CmrHjwFc.js +1 -0
- package/.output/public/assets/useCompositeListItem-9E4pj_CH.js +1 -0
- package/.output/public/assets/valueToPercent-CH8GCHaL.js +1 -0
- package/.output/server/__23tanstack-start-server-fn-resolver-BpRlos5Q.mjs +170 -0
- package/.output/server/_libs/@base-ui/react+[...].mjs +4389 -4207
- package/.output/server/_libs/@tanstack/react-router+[...].mjs +3802 -4022
- package/.output/server/_libs/@tanstack/react-router-ssr-query+[...].mjs +140 -97
- package/.output/server/_libs/lucide-react.mjs +221 -9
- package/.output/server/_libs/next-themes.mjs +1 -1
- package/.output/server/_libs/react-redux+[...].mjs +1 -1
- package/.output/server/_libs/recharts+[...].mjs +483 -901
- package/.output/server/_libs/sonner.mjs +1 -1
- package/.output/server/_libs/tanstack__history.mjs +68 -41
- package/.output/server/_libs/tanstack__query-core.mjs +2010 -309
- package/.output/server/_libs/tanstack__react-query.mjs +448 -21
- package/.output/server/_libs/verkit.mjs +102 -1
- package/.output/server/_ssr/BundleIdDisplay-x94o9rlU.mjs +13 -0
- package/.output/server/_ssr/ConsoleFeatureUnavailable-ldW8v8-q.mjs +58 -0
- package/.output/server/_ssr/EventDetails-Q8kfj9Nr.mjs +344 -0
- package/.output/server/_ssr/{HashValueDisplay-CyMmr0O9.mjs → HashValueDisplay-n1GholGS.mjs} +3 -3
- package/.output/server/_ssr/InsightsInfo-DuJFatQO.mjs +75 -0
- package/.output/server/_ssr/InsightsPageHeader-BSUX3Ye9.mjs +145 -0
- package/.output/server/_ssr/NotFoundPage-DZzOOzS3.mjs +37 -0
- package/.output/server/_ssr/{dialog-CKvQ4VIE.mjs → alert-dialog-C43Doa0I.mjs} +6 -83
- package/.output/server/_ssr/{api-keys-CzZ7Ont4.mjs → api-keys-B4sYm8dM.mjs} +48 -9
- package/.output/server/_ssr/api-keys-CEnM9fqG.mjs +5 -0
- package/.output/server/_ssr/api-keys-rpc-BIFuUgMt.mjs +52 -0
- package/.output/server/_ssr/api-oZjRn9tP.mjs +186 -0
- package/.output/server/_ssr/api-rpc-BNiFRRK8.mjs +240 -0
- package/.output/server/_ssr/{auth-BF8mbAgF.mjs → auth-UP0wXs4i.mjs} +1 -1
- package/.output/server/_ssr/{auth-rpc-DH6Bhwcz.mjs → auth-rpc-DnZqYxyq.mjs} +6 -6
- package/.output/server/_ssr/auth.server-DFpyxRDd.mjs +5374 -0
- package/.output/server/_ssr/bundleActivity-M5gzBFNg.mjs +18 -0
- package/.output/server/_ssr/config-WVX4IxSR.mjs +15 -0
- package/.output/server/_ssr/config.server-DskXCAyI.mjs +35 -0
- package/.output/server/_ssr/console-access-BJfAXknd.mjs +17 -0
- package/.output/server/_ssr/console-features-Oz0q20jJ.mjs +61 -0
- package/.output/server/_ssr/console-features-api-C9kiKvaV.mjs +43 -0
- package/.output/server/_ssr/console-features-rpc-P0GL7Z-R.mjs +19 -0
- package/.output/server/_ssr/{createServerFn-B2hcXoPM.mjs → createMiddleware-Cm6Tn0_Y.mjs} +67 -56
- package/.output/server/_ssr/{createServerRpc-DB29C_5p.mjs → createServerRpc-RLR4H-Fn.mjs} +2 -2
- package/.output/server/_ssr/databaseConfig-C5SkAyUy.mjs +5 -0
- package/.output/server/_ssr/{databaseJsonValue-d6I3nAS4.mjs → databaseJsonValue-Csbuzc9Q.mjs} +28 -5
- package/.output/server/_ssr/databaseRows-CPphvbag.mjs +73 -0
- package/.output/server/_ssr/dialog-BbYDMjdC.mjs +84 -0
- package/.output/server/_ssr/{dist-CyzPaI5v.mjs → dist-CbQbBIw-.mjs} +140 -7
- package/.output/server/_ssr/{downloadBundle-CI7JUKvC.mjs → downloadBundle-CZysjmNW.mjs} +10 -10
- package/.output/server/_ssr/empty-CVLGfxuu.mjs +60 -0
- package/.output/server/_ssr/{empty-plugin-adapters-B5QvGpEl.mjs → empty-plugin-adapters-CPtwX8a7.mjs} +1 -1
- package/.output/server/_ssr/failureReports-DKDhVsXA.mjs +33 -0
- package/.output/server/_ssr/field-asw83X0v.mjs +189 -0
- package/.output/server/_ssr/getBundleChildren-Cv9iz1As.mjs +22 -0
- package/.output/server/_ssr/{input-group-BrGSjz4S.mjs → input-group-CuYJHosb.mjs} +2 -2
- package/.output/server/_ssr/insights-B55FG5fm.mjs +14 -0
- package/.output/server/_ssr/insights-CWnHIFUV.mjs +5 -0
- package/.output/server/_ssr/insights-CpLpedFZ.mjs +2315 -0
- package/.output/server/_ssr/insights-api-sjws23WF.mjs +122 -0
- package/.output/server/_ssr/insights-errors-BjnFUyZj.mjs +34 -0
- package/.output/server/_ssr/insights-failures-rpc-BvbWvqNf.mjs +36 -0
- package/.output/server/_ssr/insights-failures-xaa41Buf.mjs +46 -0
- package/.output/server/_ssr/insights-recovery-BWQhiZaF.mjs +28 -0
- package/.output/server/_ssr/insights-recovery-rpc-GiYXdkaY.mjs +32 -0
- package/.output/server/_ssr/{insights-rpc-DDKmIrpV.mjs → insights-rpc-DP_8Rmz4.mjs} +22 -14
- package/.output/server/_ssr/insights-usage-BpBM0U0c.mjs +29 -0
- package/.output/server/_ssr/insights-usage-rpc-BiolgB8e.mjs +29 -0
- package/.output/server/_ssr/insights-usage-rpc-KStL0zOx.mjs +41 -0
- package/.output/server/_ssr/insightsUsage-CzhVjsc8.mjs +56 -0
- package/.output/server/_ssr/insights_.distribution-CVrnbP3R.mjs +7 -0
- package/.output/server/_ssr/insights_.distribution-D2HaNTAA.mjs +16 -0
- package/.output/server/_ssr/{insights_.distribution-cIsU-kHG.mjs → insights_.distribution-DN9pR422.mjs} +50 -22
- package/.output/server/_ssr/installations-BHmbbnH8.mjs +5 -0
- package/.output/server/_ssr/{installations-C5anhyP0.mjs → installations-BSCmFq8Q.mjs} +279 -367
- package/.output/server/_ssr/installations-DD1g__Nc.mjs +69 -0
- package/.output/server/_ssr/listReleases-BfUBlCHo.mjs +79 -0
- package/.output/server/_ssr/plugins-BaD1slHx.mjs +2086 -0
- package/.output/server/_ssr/release-adoption-005tQRpo.mjs +55 -0
- package/.output/server/_ssr/release-adoption-rpc-BsstqxUp.mjs +41 -0
- package/.output/server/_ssr/releaseAdoption-CtOFkwli.mjs +114 -0
- package/.output/server/_ssr/releaseManagement-DFMUnDF5.mjs +11 -0
- package/.output/server/_ssr/remote-config-C2Ee8lXO.mjs +5 -0
- package/.output/server/_ssr/remote-config-Dv1ccMo-.mjs +17 -0
- package/.output/server/_ssr/remote-config-of0lGQH8.mjs +2648 -0
- package/.output/server/_ssr/remote-config-rpc-BzX31mUS.mjs +115 -0
- package/.output/server/_ssr/rolldown-runtime-rSIU-vHC.mjs +13 -0
- package/.output/server/_ssr/{router-BuanSsRI.mjs → router-D8NuoJ_I.mjs} +107 -134
- package/.output/server/_ssr/{routes-DY-vqU6R.mjs → routes-DgvnFqDy.mjs} +195 -429
- package/.output/server/_ssr/routes-V8sDybGf.mjs +409 -0
- package/.output/server/_ssr/runtime.server-De0QVWc9.mjs +104 -0
- package/.output/server/_ssr/schema-BiAVyEj2.mjs +361 -0
- package/.output/server/_ssr/{select-DD2szs3Y.mjs → select-t3iXRwc9.mjs} +3 -3
- package/.output/server/_ssr/server-h4VxnExB.mjs +8325 -0
- package/.output/server/_ssr/{createSsrRpc-CdlfejmI.mjs → sidebar-DJcErBMo.mjs} +107 -47
- package/.output/server/_ssr/ssr.mjs +1 -1
- package/.output/server/_ssr/start-BfFbHKMK.mjs +4 -0
- package/.output/server/_ssr/switch-E-btwMGt.mjs +43 -0
- package/.output/server/_ssr/{table-CTj6n-4F.mjs → table-37Dd23TN.mjs} +2 -2
- package/.output/server/_ssr/tabs-DEFnTm95.mjs +45 -0
- package/.output/server/_ssr/updateFailures-H6pnnYK4.mjs +40 -0
- package/.output/server/_ssr/{uuidv7-D0QFkPL_.mjs → uuidv7-C88s9jWF.mjs} +2 -2
- package/.output/server/_tanstack-start-manifest_v-55AGsehh.mjs +139 -0
- package/.output/server/index.mjs +309 -211
- package/LICENSE +13 -14
- package/README.md +80 -71
- package/lib/index.d.mts +23 -11
- package/lib/vite-internal.mjs +13 -3
- package/lib/vite.d.mts +2 -0
- package/package.json +14 -14
- package/src/components/AppSidebar.tsx +69 -74
- package/src/components/ConsoleFeatureUnavailable.tsx +80 -0
- package/src/components/NotFoundPage.tsx +7 -7
- package/src/components/features/FeatureSlots.tsx +103 -0
- package/src/components/features/api-keys/apiKeysFeatureUi.tsx +15 -0
- package/src/components/features/bundles/BundleMetadata.tsx +8 -5
- package/src/components/features/bundles/RolloutCohortsDialog.tsx +1 -1
- package/src/components/features/channels/ChannelManagementDialog.tsx +8 -6
- package/src/components/features/insights/AppUsage.tsx +41 -14
- package/src/components/features/insights/BuiltinBundle.tsx +36 -0
- package/src/components/features/insights/ComparedBundlesChart.tsx +310 -0
- package/src/components/features/insights/EstimatedCount.tsx +18 -0
- package/src/components/features/insights/EventDetails.tsx +390 -26
- package/src/components/features/insights/EventHistoryCard.tsx +111 -25
- package/src/components/features/insights/EventHistoryList.tsx +1 -1
- package/src/components/features/insights/FailureReports.tsx +407 -0
- package/src/components/features/insights/InsightsControls.tsx +240 -142
- package/src/components/features/insights/InsightsErrorAlert.tsx +14 -1
- package/src/components/features/insights/InsightsOverview.tsx +601 -403
- package/src/components/features/insights/InsightsPageHeader.tsx +19 -14
- package/src/components/features/insights/InsightsPeriodSelector.tsx +67 -12
- package/src/components/features/insights/InstallationHistoryCard.tsx +65 -10
- package/src/components/features/insights/InstallationMatchesCard.tsx +1 -1
- package/src/components/features/insights/ReleaseActivity.tsx +308 -0
- package/src/components/features/insights/ReportingDevicesSummary.tsx +13 -13
- package/src/components/features/insights/RollbackButton.tsx +118 -0
- package/src/components/features/insights/UpdateFailures.tsx +382 -0
- package/src/components/features/insights/insightsFeatureUi.tsx +35 -0
- package/src/components/features/releases/ReleaseEditorSheet.tsx +27 -13
- package/src/components/features/remote-config/ConditionDialog.tsx +592 -0
- package/src/components/features/remote-config/ConditionsCard.tsx +247 -0
- package/src/components/features/remote-config/ParameterDialog.tsx +426 -0
- package/src/components/features/remote-config/ParametersCard.tsx +254 -0
- package/src/components/features/remote-config/PreviewCard.tsx +284 -0
- package/src/components/features/remote-config/PublishDialog.tsx +325 -0
- package/src/components/features/remote-config/RemoteConfigPage.tsx +353 -0
- package/src/components/features/remote-config/RuleSummary.tsx +21 -0
- package/src/components/features/remote-config/ValueInput.tsx +151 -0
- package/src/components/features/remote-config/VersionsCard.tsx +384 -0
- package/src/components/features/remote-config/remoteConfigFeatureUi.tsx +15 -0
- package/src/components/features/remote-config/useDateTimeText.ts +16 -0
- package/src/components/ui/sidebar.tsx +22 -29
- package/src/index.ts +26 -19
- package/src/lib/api-keys-api.ts +0 -28
- package/src/lib/api-keys-rpc.ts +27 -38
- package/src/lib/api-rpc.ts +125 -288
- package/src/lib/api.ts +15 -134
- package/src/lib/bundle-activity.ts +24 -4
- package/src/lib/console-access.ts +20 -0
- package/src/lib/console-features-api.ts +68 -0
- package/src/lib/console-features-rpc.ts +13 -0
- package/src/lib/console-features.ts +98 -0
- package/src/lib/insights-api.ts +56 -2
- package/src/lib/insights-errors.ts +64 -0
- package/src/lib/insights-failures-rpc.ts +36 -0
- package/src/lib/insights-failures.ts +130 -0
- package/src/lib/insights-recovery-rpc.ts +13 -17
- package/src/lib/insights-recovery.ts +12 -36
- package/src/lib/insights-retention.ts +21 -0
- package/src/lib/insights-rpc.ts +30 -12
- package/src/lib/insights-search.ts +50 -4
- package/src/lib/insights-usage-rpc.ts +15 -9
- package/src/lib/insights-usage.ts +41 -3
- package/src/lib/insights-view.ts +34 -5
- package/src/lib/release-adoption-api.ts +214 -0
- package/src/lib/release-adoption-rpc.ts +49 -0
- package/src/lib/release-adoption.ts +164 -0
- package/src/lib/remote-config-api.ts +119 -0
- package/src/lib/remote-config-draft.ts +666 -0
- package/src/lib/remote-config-rpc.ts +196 -0
- package/src/lib/scroll-restoration.ts +21 -0
- package/src/lib/server/auth.server.ts +13 -5
- package/src/lib/server/bundleActivity.ts +27 -28
- package/src/lib/server/config.server.ts +21 -76
- package/src/lib/server/console-feature-apis.ts +70 -0
- package/src/lib/server/console-runtime.server.ts +82 -38
- package/src/lib/server/downloadBundle.ts +14 -15
- package/src/lib/server/failureReports.ts +50 -0
- package/src/lib/server/getBundleChildren.ts +31 -122
- package/src/lib/server/insightsUsage.ts +52 -113
- package/src/lib/server/listReleases.ts +109 -44
- package/src/lib/server/releaseAdoption.ts +151 -0
- package/src/lib/server/releaseReachability.ts +8 -8
- package/src/lib/server/remoteConfig.ts +75 -0
- package/src/lib/server/runtime.server.ts +120 -31
- package/src/lib/server/updateFailures.ts +66 -0
- package/src/lib/use-dialog-target.ts +27 -0
- package/src/routeTree.gen.ts +44 -44
- package/src/router.tsx +3 -2
- package/src/routes/-installations-search.ts +32 -8
- package/src/routes/-releases-search.ts +76 -29
- package/src/routes/__root.tsx +7 -1
- package/src/routes/api/bundles/$bundleId/download.ts +2 -5
- package/src/routes/api-keys.tsx +5 -2
- package/src/routes/index.tsx +210 -152
- package/src/routes/insights.tsx +91 -23
- package/src/routes/insights_.distribution.tsx +50 -9
- package/src/routes/installations.tsx +97 -40
- package/src/routes/remote-config.tsx +42 -0
- package/src/styles.css +9 -0
- package/src/vite-internal.ts +15 -3
- package/src/vite.ts +2 -0
- package/.output/public/assets/HashValueDisplay-BpTc3Oyg.js +0 -1
- package/.output/public/assets/InsightsPageHeader-DC2eEst8.js +0 -1
- package/.output/public/assets/api-CdUyUqzR.js +0 -42
- package/.output/public/assets/api-keys-64PM9PwW.js +0 -1
- package/.output/public/assets/api-keys-api-BeaJnvY5.js +0 -1
- package/.output/public/assets/arrow-left-04Rh8Zgp.js +0 -1
- package/.output/public/assets/card-CYHs5FZv.js +0 -1
- package/.output/public/assets/chart-no-axes-combined-DwyMsVFW.js +0 -1
- package/.output/public/assets/createServerFn-DU71xucx.js +0 -3
- package/.output/public/assets/dialog-IVMkBRCq.js +0 -1
- package/.output/public/assets/dist-BR4GzeEu.js +0 -1
- package/.output/public/assets/field-B3CYDpjg.js +0 -1
- package/.output/public/assets/index-Cb_D1D6N.js +0 -10
- package/.output/public/assets/info-C3y9HNoU.js +0 -1
- package/.output/public/assets/input-group-nLZylhWF.js +0 -1
- package/.output/public/assets/insights-Bm9v8uO3.js +0 -2
- package/.output/public/assets/insights-DS3iO7Up.js +0 -1
- package/.output/public/assets/insights-search-Byj3g3Mp.js +0 -1
- package/.output/public/assets/insights-usage-rpc-BaGR3lgq.js +0 -1
- package/.output/public/assets/insights_.distribution-B1i6cjlQ.js +0 -1
- package/.output/public/assets/insights_.distribution-C1Wf27eB.js +0 -2
- package/.output/public/assets/installations-CkFW4fV9.js +0 -2
- package/.output/public/assets/installations-DxTaIcHD.js +0 -1
- package/.output/public/assets/lazyRouteComponent-BapzjYnb.js +0 -1
- package/.output/public/assets/list-Dqt53fWZ.js +0 -1
- package/.output/public/assets/loader-circle-CUKfUqow.js +0 -1
- package/.output/public/assets/preload-helper-ClBMtM1g.js +0 -1
- package/.output/public/assets/refresh-cw-CNE_2PnD.js +0 -1
- package/.output/public/assets/routes-Cgtvspjg.js +0 -2
- package/.output/public/assets/routes-O2r2UUN8.js +0 -1
- package/.output/public/assets/shield-check-BFcJ46kz.js +0 -1
- package/.output/public/assets/signing-BgspC-xP.js +0 -1
- package/.output/public/assets/styles-DnrWuBwd.css +0 -2
- package/.output/public/assets/table-BuWQgxJJ.js +0 -1
- package/.output/public/assets/useMutation-CSV9NCUl.js +0 -1
- package/.output/public/assets/useOpenInteractionType-D5kduCTD.js +0 -1
- package/.output/public/assets/valueToPercent-BAtcbSLk.js +0 -1
- package/.output/server/__23tanstack-start-server-fn-resolver-DBRojHaG.mjs +0 -150
- package/.output/server/_ssr/InsightsPageHeader-mtxVuZKK.mjs +0 -64
- package/.output/server/_ssr/api-BfCgYlj5.mjs +0 -332
- package/.output/server/_ssr/api-keys-api-C3oeq01R.mjs +0 -60
- package/.output/server/_ssr/api-keys-rpc-CdPFdGOx.mjs +0 -136
- package/.output/server/_ssr/api-rpc-B2E1ZIG5.mjs +0 -1399
- package/.output/server/_ssr/auth.server-CmicHh0J.mjs +0 -47
- package/.output/server/_ssr/bundle-signing-rpc-Di7-I6fE.mjs +0 -16
- package/.output/server/_ssr/bundle-signing.server-Uqt1OF49.mjs +0 -12
- package/.output/server/_ssr/bundleActivity-pBrPSG01.mjs +0 -28
- package/.output/server/_ssr/card-Bemj0dpY.mjs +0 -108
- package/.output/server/_ssr/config-Dv8qLDZ0.mjs +0 -13
- package/.output/server/_ssr/config.server-B8WsT3s0.mjs +0 -368
- package/.output/server/_ssr/databaseRows-5bCRTxm-.mjs +0 -126
- package/.output/server/_ssr/deleteBundle-8X-jq7Z7.mjs +0 -66
- package/.output/server/_ssr/field-BrQ2u0fT.mjs +0 -74
- package/.output/server/_ssr/getBundleChildren-DoL8l_AS.mjs +0 -50
- package/.output/server/_ssr/insights-BwQ-wF2a.mjs +0 -10
- package/.output/server/_ssr/insights-gr1I_dJU.mjs +0 -938
- package/.output/server/_ssr/insights-recovery-Cv6RSyeR.mjs +0 -21
- package/.output/server/_ssr/insights-recovery-rpc-DOzxfYfv.mjs +0 -37
- package/.output/server/_ssr/insights-search-1czJMZgk.mjs +0 -21
- package/.output/server/_ssr/insights-usage-rpc-4ImOq_0p.mjs +0 -184
- package/.output/server/_ssr/insights-usage-rpc-BUruODjE.mjs +0 -24
- package/.output/server/_ssr/insightsContract-B09K_Px1.mjs +0 -303
- package/.output/server/_ssr/insightsHistory-Ci4rYAgl.mjs +0 -41
- package/.output/server/_ssr/insightsRecovery-CaghWL2t.mjs +0 -113
- package/.output/server/_ssr/insightsUsage-DNIj6jxF.mjs +0 -71
- package/.output/server/_ssr/insights_.distribution-VmHuikRE.mjs +0 -10
- package/.output/server/_ssr/installations-HXMF_kKf.mjs +0 -29
- package/.output/server/_ssr/routes-Dru3IRj0.mjs +0 -37
- package/.output/server/_ssr/runtime.server-CsiKFp_Z.mjs +0 -436
- package/.output/server/_ssr/server-DJm72Kj-.mjs +0 -7468
- package/.output/server/_ssr/signing-H8Lg4lPe.mjs +0 -133
- package/.output/server/_ssr/start-DpViQGnt.mjs +0 -4
- package/.output/server/_tanstack-start-manifest_v-DsFcTLw_.mjs +0 -125
- package/src/components/features/bundles/BundleActivityChart.tsx +0 -97
- package/src/components/features/bundles/BundleInsightsSummary.tsx +0 -126
- package/src/components/features/signing/BundleSigningPage.tsx +0 -139
- package/src/lib/bundle-signing-api.ts +0 -14
- package/src/lib/bundle-signing-rpc.ts +0 -16
- package/src/lib/server/bundle-signing.server.ts +0 -23
- package/src/lib/server/deleteBundle.ts +0 -145
- package/src/lib/server/insightsHistory.ts +0 -52
- package/src/lib/server/insightsRecovery.ts +0 -187
- package/src/routes/signing.tsx +0 -37
|
@@ -1,8 +1,119 @@
|
|
|
1
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/dist-
|
|
2
|
-
var
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
1
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/dist-CbQbBIw-.js
|
|
2
|
+
var LETTER_DASH_NUMBER = "[a-zA-Z0-9-]";
|
|
3
|
+
var NUMERIC_IDENTIFIER = String.raw`0|[1-9]\d*`;
|
|
4
|
+
var NUMERIC_IDENTIFIER_LOOSE = String.raw`\d+`;
|
|
5
|
+
var NON_NUMERIC_IDENTIFIER = String.raw`\d*[a-zA-Z-]${LETTER_DASH_NUMBER}*`;
|
|
6
|
+
var MAIN_VERSION = String.raw`(${NUMERIC_IDENTIFIER})\.(${NUMERIC_IDENTIFIER})\.(${NUMERIC_IDENTIFIER})`;
|
|
7
|
+
var MAIN_VERSION_LOOSE = String.raw`(${NUMERIC_IDENTIFIER_LOOSE})\.(${NUMERIC_IDENTIFIER_LOOSE})\.(${NUMERIC_IDENTIFIER_LOOSE})`;
|
|
8
|
+
var PRERELEASE_IDENTIFIER = `(?:${NON_NUMERIC_IDENTIFIER}|${NUMERIC_IDENTIFIER})`;
|
|
9
|
+
var PRERELEASE_IDENTIFIER_LOOSE = `(?:${NON_NUMERIC_IDENTIFIER}|${NUMERIC_IDENTIFIER_LOOSE})`;
|
|
10
|
+
var PRERELEASE = String.raw`(?:-(${PRERELEASE_IDENTIFIER}(?:\.${PRERELEASE_IDENTIFIER})*))`;
|
|
11
|
+
var PRERELEASE_LOOSE = String.raw`(?:-?(${PRERELEASE_IDENTIFIER_LOOSE}(?:\.${PRERELEASE_IDENTIFIER_LOOSE})*))`;
|
|
12
|
+
var BUILD_IDENTIFIER = `${LETTER_DASH_NUMBER}+`;
|
|
13
|
+
var BUILD = String.raw`(?:\+(${BUILD_IDENTIFIER}(?:\.${BUILD_IDENTIFIER})*))`;
|
|
14
|
+
var FULL_PLAIN = `v?${MAIN_VERSION}${PRERELEASE}?${BUILD}?`;
|
|
15
|
+
var LOOSE_PLAIN = String.raw`[v=\s]*${MAIN_VERSION_LOOSE}${PRERELEASE_LOOSE}?${BUILD}?`;
|
|
16
|
+
var XRANGE_IDENTIFIER = String.raw`${NUMERIC_IDENTIFIER}|x|X|\*`;
|
|
17
|
+
var XRANGE_IDENTIFIER_LOOSE = String.raw`${NUMERIC_IDENTIFIER_LOOSE}|x|X|\*`;
|
|
18
|
+
String.raw`[v=\s]*(${XRANGE_IDENTIFIER})(?:\.(${XRANGE_IDENTIFIER})(?:\.(${XRANGE_IDENTIFIER})(?:${PRERELEASE})?${BUILD}?)?)?`;
|
|
19
|
+
String.raw`[v=\s]*(${XRANGE_IDENTIFIER_LOOSE})(?:\.(${XRANGE_IDENTIFIER_LOOSE})(?:\.(${XRANGE_IDENTIFIER_LOOSE})(?:${PRERELEASE_LOOSE})?${BUILD}?)?)?`;
|
|
20
|
+
String.raw`(?:\^)`;
|
|
21
|
+
var COERCE_PLAIN = String.raw`(^|[^\d])(\d{1,${16}})(?:\.(\d{1,${16}}))?(?:\.(\d{1,${16}}))?`;
|
|
22
|
+
var COERCE = String.raw`${COERCE_PLAIN}(?:$|[^\d])`;
|
|
23
|
+
var COERCE_FULL = String.raw`${COERCE_PLAIN}(?:${PRERELEASE})?(?:${BUILD})?(?:$|[^\d])`;
|
|
24
|
+
function makeSafeRegexSource(source) {
|
|
25
|
+
const replacements = [
|
|
26
|
+
[String.raw`\s`, 1],
|
|
27
|
+
[String.raw`\d`, 256],
|
|
28
|
+
[LETTER_DASH_NUMBER, 250]
|
|
29
|
+
];
|
|
30
|
+
for (const [token, maximum] of replacements) source = source.split(`${token}*`).join(`${token}{0,${maximum}}`).split(`${token}+`).join(`${token}{1,${maximum}}`);
|
|
31
|
+
return source;
|
|
32
|
+
}
|
|
33
|
+
function safeRegex(source, flags) {
|
|
34
|
+
return new RegExp(makeSafeRegexSource(source), flags);
|
|
35
|
+
}
|
|
36
|
+
var FULL = safeRegex(`^${FULL_PLAIN}$`);
|
|
37
|
+
var LOOSE = safeRegex(`^${LOOSE_PLAIN}$`);
|
|
38
|
+
var NUMERIC$1 = /^\d+$/;
|
|
39
|
+
function formatComparableVersion(version) {
|
|
40
|
+
const base = `${version.major}.${version.minor}.${version.patch}`;
|
|
41
|
+
return version.prerelease?.length ? `${base}-${version.prerelease.join(".")}` : base;
|
|
42
|
+
}
|
|
43
|
+
function formatFullVersion(version) {
|
|
44
|
+
const comparable = formatComparableVersion(version);
|
|
45
|
+
return version.build?.length ? `${comparable}+${version.build.join(".")}` : comparable;
|
|
46
|
+
}
|
|
47
|
+
function parse(version, options = {}) {
|
|
48
|
+
if (typeof version !== "string") return version;
|
|
49
|
+
if (version.length > 256) throw new TypeError(`Version exceeds the maximum length of 256 characters`);
|
|
50
|
+
const match = version.trim().match(options.loose ? LOOSE : FULL);
|
|
51
|
+
if (!match) throw new TypeError(`Invalid version syntax: ${version}`);
|
|
52
|
+
const major = Number(match[1]);
|
|
53
|
+
const minor = Number(match[2]);
|
|
54
|
+
const patch = Number(match[3]);
|
|
55
|
+
if (major > Number.MAX_SAFE_INTEGER || major < 0) throw new TypeError(`Invalid major version: ${match[1]}`);
|
|
56
|
+
if (minor > Number.MAX_SAFE_INTEGER || minor < 0) throw new TypeError(`Invalid minor version: ${match[2]}`);
|
|
57
|
+
if (patch > Number.MAX_SAFE_INTEGER || patch < 0) throw new TypeError(`Invalid patch version: ${match[3]}`);
|
|
58
|
+
const prerelease = match[4] ? match[4].split(".").map((identifier) => {
|
|
59
|
+
if (NUMERIC$1.test(identifier)) {
|
|
60
|
+
const numeric = Number(identifier);
|
|
61
|
+
if (numeric >= 0 && numeric < Number.MAX_SAFE_INTEGER) return numeric;
|
|
62
|
+
}
|
|
63
|
+
return identifier;
|
|
64
|
+
}) : void 0;
|
|
65
|
+
return {
|
|
66
|
+
build: match[5]?.split("."),
|
|
67
|
+
major,
|
|
68
|
+
minor,
|
|
69
|
+
patch,
|
|
70
|
+
prerelease
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
function tryParse(version, options = {}) {
|
|
74
|
+
try {
|
|
75
|
+
return parse(version, options);
|
|
76
|
+
} catch {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
var COERCE_EXACT = safeRegex(COERCE);
|
|
81
|
+
var COERCE_FULL_EXACT = safeRegex(COERCE_FULL);
|
|
82
|
+
safeRegex(`^${PRERELEASE}$`);
|
|
83
|
+
safeRegex(`^${PRERELEASE_LOOSE}$`);
|
|
84
|
+
function normalizeFull(version, options = {}) {
|
|
85
|
+
const parsed = tryParse(version, options);
|
|
86
|
+
return parsed ? formatFullVersion(parsed) : null;
|
|
87
|
+
}
|
|
88
|
+
function coerce(value, options = {}) {
|
|
89
|
+
if (typeof value === "object") return value;
|
|
90
|
+
const input = typeof value === "number" ? String(value) : value;
|
|
91
|
+
let match = null;
|
|
92
|
+
if (options.rtl) {
|
|
93
|
+
const expression = safeRegex(options.includePrerelease ? COERCE_FULL : COERCE, "g");
|
|
94
|
+
let next;
|
|
95
|
+
while ((next = expression.exec(input)) && (!match || match.index + match[0].length !== input.length)) {
|
|
96
|
+
if (!match || next.index + next[0].length !== match.index + match[0].length) match = next;
|
|
97
|
+
expression.lastIndex = next.index + next[1].length + next[2].length;
|
|
98
|
+
}
|
|
99
|
+
} else match = (options.includePrerelease ? COERCE_FULL_EXACT : COERCE_EXACT).exec(input);
|
|
100
|
+
if (!match) return null;
|
|
101
|
+
const major = match[2];
|
|
102
|
+
return tryParse(`${major}.${match[3] || "0"}.${match[4] || "0"}${options.includePrerelease && match[5] ? `-${match[5]}` : ""}${options.includePrerelease && match[6] ? `+${match[6]}` : ""}`, options);
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* The form of an app version that the device and the server compare:
|
|
106
|
+
* `major.minor.patch` of the first version in `appVersion`, such as `1.4.0`
|
|
107
|
+
* for `v1.4`, or null when it holds none. Prerelease and build parts are
|
|
108
|
+
* dropped.
|
|
109
|
+
*/
|
|
110
|
+
function canonicalizeAppVersion(appVersion) {
|
|
111
|
+
const version = coerce(appVersion);
|
|
112
|
+
return version ? normalizeFull(version) : null;
|
|
113
|
+
}
|
|
114
|
+
var getManifestStorageUri = (bundle) => bundle.manifestStorageUri;
|
|
115
|
+
var getManifestFileHash = (bundle) => bundle.manifestFileHash;
|
|
116
|
+
var getAssetBaseStorageUri = (bundle) => bundle.assetBaseStorageUri;
|
|
6
117
|
var isBundlePatchArtifact = (value) => {
|
|
7
118
|
if (!value || typeof value !== "object" || Array.isArray(value)) return false;
|
|
8
119
|
const candidate = value;
|
|
@@ -21,13 +132,15 @@ var getBundlePatches = (bundle) => {
|
|
|
21
132
|
return true;
|
|
22
133
|
});
|
|
23
134
|
};
|
|
135
|
+
var getBundlePatch = (bundle, baseBundleId) => {
|
|
136
|
+
return getBundlePatches(bundle).find((patch) => patch.baseBundleId === baseBundleId) ?? null;
|
|
137
|
+
};
|
|
24
138
|
var getPrimaryPatch = (bundle) => {
|
|
25
139
|
return getBundlePatches(bundle)[0] ?? null;
|
|
26
140
|
};
|
|
27
141
|
var getPatchBaseBundleId = (bundle) => getPrimaryPatch(bundle)?.baseBundleId ?? null;
|
|
28
142
|
var getPatchBaseFileHash = (bundle) => getPrimaryPatch(bundle)?.baseFileHash ?? null;
|
|
29
143
|
var getPatchFileHash = (bundle) => getPrimaryPatch(bundle)?.patchFileHash ?? null;
|
|
30
|
-
var getPatchStorageUri = (bundle) => getPrimaryPatch(bundle)?.patchStorageUri ?? null;
|
|
31
144
|
var NUMERIC_COHORT_SIZE = 1e3;
|
|
32
145
|
var DEFAULT_ROLLOUT_COHORT_COUNT = NUMERIC_COHORT_SIZE;
|
|
33
146
|
var INVALID_COHORT_ERROR_MESSAGE = `Invalid cohort. Use 1-1000 or a lowercase slug without spaces, up to 64 characters.`;
|
|
@@ -244,7 +357,27 @@ function createReleaseCatalogScopeKey(input) {
|
|
|
244
357
|
assertCatalogSegment(input.fingerprintHash, "Fingerprint hash");
|
|
245
358
|
return `v1:fingerprint:${input.platform}:${input.channelKey}:${input.fingerprintHash}`;
|
|
246
359
|
}
|
|
360
|
+
function parseReleaseCatalogScopeKey(scopeKey) {
|
|
361
|
+
const segments = scopeKey.split(":");
|
|
362
|
+
const [version, strategy, platform, channelKey] = segments;
|
|
363
|
+
if (version !== "v1" || platform !== "ios" && platform !== "android" || channelKey === void 0) throw new Error("Invalid release catalog scope key");
|
|
364
|
+
const input = strategy === "app-version" && segments.length === 4 ? {
|
|
365
|
+
channelKey,
|
|
366
|
+
platform,
|
|
367
|
+
strategy: "APP_VERSION"
|
|
368
|
+
} : strategy === "fingerprint" && segments.length === 5 && segments[4] !== void 0 ? {
|
|
369
|
+
channelKey,
|
|
370
|
+
fingerprintHash: segments[4],
|
|
371
|
+
platform,
|
|
372
|
+
strategy: "FINGERPRINT"
|
|
373
|
+
} : (() => {
|
|
374
|
+
throw new Error("Invalid release catalog scope key");
|
|
375
|
+
})();
|
|
376
|
+
if (createReleaseCatalogScopeKey(input) !== scopeKey) throw new Error("Release catalog scope key is not canonical");
|
|
377
|
+
return input;
|
|
378
|
+
}
|
|
379
|
+
var NIL_UUID = "00000000-0000-0000-0000-000000000000";
|
|
247
380
|
var UUID_V7_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/;
|
|
248
381
|
var isUUIDv7 = (value) => typeof value === "string" && UUID_V7_PATTERN.test(value);
|
|
249
382
|
//#endregion
|
|
250
|
-
export {
|
|
383
|
+
export { isUUIDv7 as C, parseReleaseCatalogScopeKey as D, normalizeRolloutCohortCount as E, isReleaseEligibleForCohort as S, normalizeCohortValue as T, getPatchBaseBundleId as _, RELEASE_CATALOG_FALLBACK_POLICY as a, getRolledOutNumericCohorts as b, decodeChannelKey as c, getBundlePatch as d, getBundlePatches as f, getNumericCohortValue as g, getNumericCohortRolloutPosition as h, NUMERIC_COHORT_SIZE as i, encodeChannelKey as l, getManifestStorageUri as m, MAX_COMPILED_CATALOG_BYTES as n, canonicalizeAppVersion as o, getManifestFileHash as p, NIL_UUID as r, createReleaseCatalogScopeKey as s, INVALID_COHORT_ERROR_MESSAGE as t, getAssetBaseStorageUri as u, getPatchBaseFileHash as v, isValidCohort as w, isCustomCohort as x, getPatchFileHash as y };
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/downloadBundle-
|
|
2
|
-
var downloadBundle = async (bundleId, {
|
|
3
|
-
const
|
|
4
|
-
if (!
|
|
5
|
-
const storageUri = bundle.
|
|
6
|
-
if (!storageUri) return new Response("Bundle has no storage URI", { status: 404 });
|
|
1
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/downloadBundle-CZysjmNW.js
|
|
2
|
+
var downloadBundle = async (bundleId, { core, storage }) => {
|
|
3
|
+
const detail = await core.getBundle(bundleId);
|
|
4
|
+
if (!detail) return new Response("Bundle not found", { status: 404 });
|
|
5
|
+
const storageUri = detail.bundle.manifest_storage_uri;
|
|
7
6
|
const protocol = new URL(storageUri).protocol.replace(":", "");
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
const storageAdapter = storage.protocol === protocol ? storage : void 0;
|
|
8
|
+
if (storageAdapter?.get !== void 0) {
|
|
9
|
+
const { response } = await storageAdapter.get({ storageUri });
|
|
10
10
|
if (!response) return new Response("Storage object not found", { status: 404 });
|
|
11
11
|
const headers = new Headers(response.headers);
|
|
12
12
|
headers.set("cache-control", "private, no-store");
|
|
13
|
-
headers.set("content-disposition", "attachment");
|
|
13
|
+
headers.set("content-disposition", "attachment; filename=\"manifest.json\"");
|
|
14
14
|
return new Response(response.body, {
|
|
15
15
|
headers,
|
|
16
16
|
status: response.status,
|
|
17
17
|
statusText: response.statusText
|
|
18
18
|
});
|
|
19
19
|
}
|
|
20
|
-
if (protocol !== "http" && protocol !== "https") return new Response(`No storage
|
|
20
|
+
if (protocol !== "http" && protocol !== "https") return new Response(`No storage adapter for protocol: ${protocol}`, { status: 503 });
|
|
21
21
|
return Response.redirect(storageUri, 302);
|
|
22
22
|
};
|
|
23
23
|
//#endregion
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { gt as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
|
|
2
|
+
import { t as cva } from "../_libs/class-variance-authority+clsx.mjs";
|
|
3
|
+
import { k as cn } from "./sidebar-DJcErBMo.mjs";
|
|
4
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/empty-CVLGfxuu.js
|
|
5
|
+
var import_jsx_runtime = require_jsx_runtime();
|
|
6
|
+
function Empty({ className, ...props }) {
|
|
7
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
8
|
+
"data-slot": "empty",
|
|
9
|
+
className: cn("flex w-full min-w-0 flex-1 flex-col items-center justify-center gap-4 rounded-xl border-dashed p-6 text-center text-balance", className),
|
|
10
|
+
...props
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
function EmptyHeader({ className, ...props }) {
|
|
14
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
15
|
+
"data-slot": "empty-header",
|
|
16
|
+
className: cn("flex max-w-sm flex-col items-center gap-1", className),
|
|
17
|
+
...props
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
var emptyMediaVariants = cva("mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0", {
|
|
21
|
+
variants: { variant: {
|
|
22
|
+
default: "bg-transparent",
|
|
23
|
+
icon: "flex size-8 shrink-0 items-center justify-center rounded-md bg-muted text-foreground [&_svg:not([class*='size-'])]:size-4"
|
|
24
|
+
} },
|
|
25
|
+
defaultVariants: { variant: "default" }
|
|
26
|
+
});
|
|
27
|
+
function EmptyMedia({ className, variant = "default", ...props }) {
|
|
28
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
29
|
+
"data-slot": "empty-icon",
|
|
30
|
+
"data-variant": variant,
|
|
31
|
+
className: cn(emptyMediaVariants({
|
|
32
|
+
variant,
|
|
33
|
+
className
|
|
34
|
+
})),
|
|
35
|
+
...props
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
function EmptyTitle({ className, ...props }) {
|
|
39
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
40
|
+
"data-slot": "empty-title",
|
|
41
|
+
className: cn("text-sm font-medium tracking-tight", className),
|
|
42
|
+
...props
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
function EmptyDescription({ className, ...props }) {
|
|
46
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
47
|
+
"data-slot": "empty-description",
|
|
48
|
+
className: cn("text-xs/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary", className),
|
|
49
|
+
...props
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
function EmptyContent({ className, ...props }) {
|
|
53
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
54
|
+
"data-slot": "empty-content",
|
|
55
|
+
className: cn("flex w-full max-w-sm min-w-0 flex-col items-center gap-2 text-xs/relaxed text-balance", className),
|
|
56
|
+
...props
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
//#endregion
|
|
60
|
+
export { EmptyMedia as a, EmptyHeader as i, EmptyContent as n, EmptyTitle as o, EmptyDescription as r, Empty as t };
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { r as recoveryWindows } from "./insights-recovery-BWQhiZaF.mjs";
|
|
2
|
+
import { n as readFailureReportsInput } from "./insights-errors-BjnFUyZj.mjs";
|
|
3
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/failureReports-DKDhVsXA.js
|
|
4
|
+
/** Bounded raw-event reads, with continuation even when a batch finds no failures. */
|
|
5
|
+
async function listFailureReports(reads, input) {
|
|
6
|
+
readFailureReportsInput(input);
|
|
7
|
+
const { rawDays } = await reads.getRetention();
|
|
8
|
+
const duration = Math.min(90 * 864e5, rawDays * 864e5, input.window ? recoveryWindows[input.window].durationMs : Infinity);
|
|
9
|
+
const sinceMs = Math.max(0, input.beforeReceivedAtMs - duration);
|
|
10
|
+
const data = [];
|
|
11
|
+
let cursor = input.cursor;
|
|
12
|
+
let scanned = 0;
|
|
13
|
+
for (let batch = 0; batch < 5; batch += 1) {
|
|
14
|
+
const page = await reads.listEvents({
|
|
15
|
+
sinceMs,
|
|
16
|
+
beforeReceivedAtMs: input.beforeReceivedAtMs,
|
|
17
|
+
limit: 100,
|
|
18
|
+
...cursor === void 0 ? {} : { cursor }
|
|
19
|
+
});
|
|
20
|
+
scanned += page.data.length;
|
|
21
|
+
data.push(...page.data.filter((event) => event.type === "UPDATE_FAILED" && event.platform === input.platform && event.channel === input.channel && (input.releaseId === void 0 || event.failure?.stage !== "check" && event.toReleaseId === input.releaseId)));
|
|
22
|
+
cursor = page.nextCursor ?? void 0;
|
|
23
|
+
if (!cursor || data.length >= 50) break;
|
|
24
|
+
}
|
|
25
|
+
return {
|
|
26
|
+
data,
|
|
27
|
+
scanned,
|
|
28
|
+
sinceMs,
|
|
29
|
+
nextCursor: cursor ?? null
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
//#endregion
|
|
33
|
+
export { listFailureReports };
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { i as __toESM } from "../_runtime.mjs";
|
|
2
|
+
import { _t as require_react, gt as require_jsx_runtime, ht as mergeProps, rt as useRender } from "../_libs/@base-ui/react+[...].mjs";
|
|
3
|
+
import { t as cva } from "../_libs/class-variance-authority+clsx.mjs";
|
|
4
|
+
import { k as cn } from "./sidebar-DJcErBMo.mjs";
|
|
5
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/field-asw83X0v.js
|
|
6
|
+
var import_react = /* @__PURE__ */ __toESM(require_react());
|
|
7
|
+
var import_jsx_runtime = require_jsx_runtime();
|
|
8
|
+
function Card({ className, ...props }) {
|
|
9
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
10
|
+
"data-slot": "card",
|
|
11
|
+
className: cn("rounded-xl border bg-card text-card-foreground shadow", className),
|
|
12
|
+
...props
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
function CardHeader({ className, ...props }) {
|
|
16
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
17
|
+
"data-slot": "card-header",
|
|
18
|
+
className: cn("flex flex-col gap-1.5 p-6", className),
|
|
19
|
+
...props
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
function CardTitle({ className, ...props }) {
|
|
23
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
24
|
+
"data-slot": "card-title",
|
|
25
|
+
className: cn("font-semibold leading-none tracking-tight", className),
|
|
26
|
+
...props
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
function CardDescription({ className, ...props }) {
|
|
30
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
31
|
+
"data-slot": "card-description",
|
|
32
|
+
className: cn("text-sm text-muted-foreground", className),
|
|
33
|
+
...props
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
function CardContent({ className, ...props }) {
|
|
37
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
38
|
+
"data-slot": "card-content",
|
|
39
|
+
className: cn("p-6 pt-0", className),
|
|
40
|
+
...props
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
function CardFooter({ className, ...props }) {
|
|
44
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
45
|
+
"data-slot": "card-footer",
|
|
46
|
+
className: cn("flex items-center p-6 pt-0", className),
|
|
47
|
+
...props
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
var alertVariants = cva("group/alert relative grid w-full gap-0.5 rounded-lg border px-2 py-1.5 text-left text-xs/relaxed has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-1.5 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-3.5", {
|
|
51
|
+
variants: { variant: {
|
|
52
|
+
default: "bg-card text-card-foreground",
|
|
53
|
+
destructive: "bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current"
|
|
54
|
+
} },
|
|
55
|
+
defaultVariants: { variant: "default" }
|
|
56
|
+
});
|
|
57
|
+
function Alert({ className, variant, ...props }) {
|
|
58
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
59
|
+
"data-slot": "alert",
|
|
60
|
+
role: "alert",
|
|
61
|
+
className: cn(alertVariants({ variant }), className),
|
|
62
|
+
...props
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
function AlertTitle({ className, ...props }) {
|
|
66
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
67
|
+
"data-slot": "alert-title",
|
|
68
|
+
className: cn("font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground", className),
|
|
69
|
+
...props
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
function AlertDescription({ className, ...props }) {
|
|
73
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
74
|
+
"data-slot": "alert-description",
|
|
75
|
+
className: cn("text-xs/relaxed text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4", className),
|
|
76
|
+
...props
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
function AlertAction({ className, ...props }) {
|
|
80
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
81
|
+
"data-slot": "alert-action",
|
|
82
|
+
className: cn("absolute top-1.5 right-2", className),
|
|
83
|
+
...props
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
var badgeVariants = cva("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2", {
|
|
87
|
+
variants: { variant: {
|
|
88
|
+
default: "border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",
|
|
89
|
+
secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
90
|
+
success: "border-success/20 bg-success/10 text-success",
|
|
91
|
+
warning: "border-warning/20 bg-warning/10 text-warning",
|
|
92
|
+
destructive: "border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",
|
|
93
|
+
outline: "text-foreground"
|
|
94
|
+
} },
|
|
95
|
+
defaultVariants: { variant: "default" }
|
|
96
|
+
});
|
|
97
|
+
function Badge({ className, variant = "default", render, ...props }) {
|
|
98
|
+
return useRender({
|
|
99
|
+
defaultTagName: "span",
|
|
100
|
+
props: mergeProps({ className: cn(badgeVariants({ variant }), className) }, props),
|
|
101
|
+
render,
|
|
102
|
+
state: {
|
|
103
|
+
slot: "badge",
|
|
104
|
+
variant
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
function Label({ className, htmlFor, ...props }) {
|
|
109
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("label", {
|
|
110
|
+
"data-slot": "label",
|
|
111
|
+
htmlFor,
|
|
112
|
+
className: cn("flex items-center gap-2 text-xs/relaxed leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50", className),
|
|
113
|
+
...props
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
function FieldSet({ className, ...props }) {
|
|
117
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("fieldset", {
|
|
118
|
+
"data-slot": "field-set",
|
|
119
|
+
className: cn("gap-4 has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3 flex flex-col", className),
|
|
120
|
+
...props
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
function FieldLegend({ className, variant = "legend", ...props }) {
|
|
124
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("legend", {
|
|
125
|
+
"data-slot": "field-legend",
|
|
126
|
+
"data-variant": variant,
|
|
127
|
+
className: cn("mb-2 font-medium data-[variant=label]:text-xs/relaxed data-[variant=legend]:text-sm", className),
|
|
128
|
+
...props
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
function FieldGroup({ className, ...props }) {
|
|
132
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
133
|
+
"data-slot": "field-group",
|
|
134
|
+
className: cn("gap-4 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4 group/field-group @container/field-group flex w-full flex-col", className),
|
|
135
|
+
...props
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
var fieldVariants = cva("data-[invalid=true]:text-destructive gap-2 group/field flex w-full", {
|
|
139
|
+
variants: { orientation: {
|
|
140
|
+
vertical: "flex-col [&>*]:w-full [&>.sr-only]:w-auto",
|
|
141
|
+
horizontal: "flex-row items-center [&>[data-slot=field-label]]:flex-auto has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px",
|
|
142
|
+
responsive: "flex-col [&>*]:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto @md/field-group:[&>[data-slot=field-label]]:flex-auto @md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"
|
|
143
|
+
} },
|
|
144
|
+
defaultVariants: { orientation: "vertical" }
|
|
145
|
+
});
|
|
146
|
+
function Field({ className, orientation = "vertical", ...props }) {
|
|
147
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
148
|
+
"data-slot": "field",
|
|
149
|
+
"data-orientation": orientation,
|
|
150
|
+
className: cn(fieldVariants({ orientation }), className),
|
|
151
|
+
...props
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
function FieldLabel({ className, ...props }) {
|
|
155
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Label, {
|
|
156
|
+
"data-slot": "field-label",
|
|
157
|
+
className: cn("has-data-checked:bg-primary/5 dark:has-data-checked:bg-primary/10 gap-2 group-data-[disabled=true]/field:opacity-50 has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border [&>*]:data-[slot=field]:p-2 group/field-label peer/field-label flex w-fit leading-snug", "has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col", className),
|
|
158
|
+
...props
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
function FieldDescription({ className, ...props }) {
|
|
162
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", {
|
|
163
|
+
"data-slot": "field-description",
|
|
164
|
+
className: cn("text-muted-foreground text-left text-xs/relaxed [[data-variant=legend]+&]:-mt-1.5 leading-normal font-normal group-has-[[data-orientation=horizontal]]/field:text-balance", "last:mt-0 nth-last-2:-mt-1", "[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4", className),
|
|
165
|
+
...props
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
function FieldError({ className, children, errors, ...props }) {
|
|
169
|
+
const content = (0, import_react.useMemo)(() => {
|
|
170
|
+
if (children) return children;
|
|
171
|
+
if (!errors?.length) return null;
|
|
172
|
+
const uniqueErrors = [...new Map(errors.map((error) => [error?.message, error])).values()];
|
|
173
|
+
if (uniqueErrors?.length === 1) return uniqueErrors[0]?.message;
|
|
174
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("ul", {
|
|
175
|
+
className: "ml-4 flex list-disc flex-col gap-1",
|
|
176
|
+
children: uniqueErrors.map((error, index) => error?.message && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { children: error.message }, index))
|
|
177
|
+
});
|
|
178
|
+
}, [children, errors]);
|
|
179
|
+
if (!content) return null;
|
|
180
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
181
|
+
role: "alert",
|
|
182
|
+
"data-slot": "field-error",
|
|
183
|
+
className: cn("text-destructive text-xs/relaxed font-normal", className),
|
|
184
|
+
...props,
|
|
185
|
+
children: content
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
//#endregion
|
|
189
|
+
export { FieldLegend as _, Badge as a, CardDescription as c, CardTitle as d, Field as f, FieldLabel as g, FieldGroup as h, AlertTitle as i, CardFooter as l, FieldError as m, AlertAction as n, Card as o, FieldDescription as p, AlertDescription as r, CardContent as s, Alert as t, CardHeader as u, FieldSet as v, Label as y };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { i as rowToBundle } from "./databaseRows-CPphvbag.mjs";
|
|
2
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/getBundleChildren-Cv9iz1As.js
|
|
3
|
+
/** The most children the lineage panel lists; the count comes from the base bundle's counter. */
|
|
4
|
+
var BUNDLE_CHILDREN_LIMIT = 100;
|
|
5
|
+
/**
|
|
6
|
+
* The bundles with a patch from this base, newest first: one read of the
|
|
7
|
+
* patches index, then each child bundle.
|
|
8
|
+
*/
|
|
9
|
+
async function getBundleChildren(core, baseBundleId) {
|
|
10
|
+
const patches = await core.listPatchesFromBase(baseBundleId, {
|
|
11
|
+
order: "desc",
|
|
12
|
+
limit: 100
|
|
13
|
+
});
|
|
14
|
+
return (await Promise.all([...new Set(patches.map(({ bundle_id }) => bundle_id))].map((id) => core.getBundle(id)))).flatMap((detail) => detail === null ? [] : [rowToBundle(detail.bundle, detail.patches)]);
|
|
15
|
+
}
|
|
16
|
+
/** How many bundles patch from each base: each base bundle's reference counter, in one batch read. */
|
|
17
|
+
async function getBundleChildCounts(core, baseBundleIds) {
|
|
18
|
+
const ids = [...new Set(baseBundleIds.filter(Boolean))];
|
|
19
|
+
return ids.length === 0 ? {} : core.countBundleChildren(ids);
|
|
20
|
+
}
|
|
21
|
+
//#endregion
|
|
22
|
+
export { BUNDLE_CHILDREN_LIMIT, getBundleChildCounts, getBundleChildren };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "../_runtime.mjs";
|
|
2
|
-
import {
|
|
2
|
+
import { _t as require_react, gt as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
|
|
3
3
|
import { t as cva } from "../_libs/class-variance-authority+clsx.mjs";
|
|
4
|
-
import {
|
|
4
|
+
import { k as cn, n as Input, t as Button$1 } from "./sidebar-DJcErBMo.mjs";
|
|
5
5
|
require_react();
|
|
6
6
|
var import_jsx_runtime = require_jsx_runtime();
|
|
7
7
|
function Textarea({ className, ...props }) {
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { f as lazyRouteComponent, p as createFileRoute } from "../_libs/@tanstack/react-router+[...].mjs";
|
|
2
|
+
import { r as requireConsoleFeature } from "./console-features-api-C9kiKvaV.mjs";
|
|
3
|
+
import { a as validateInsightsSearch } from "./InsightsInfo-DuJFatQO.mjs";
|
|
4
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/insights-B55FG5fm.js
|
|
5
|
+
var $$splitComponentImporter = () => import("./insights-CpLpedFZ.mjs");
|
|
6
|
+
var $$splitNotFoundComponentImporter = () => import("./insights-CWnHIFUV.mjs");
|
|
7
|
+
var Route = createFileRoute("/insights")({
|
|
8
|
+
beforeLoad: ({ context }) => requireConsoleFeature(context.queryClient, "insightsAnalytics"),
|
|
9
|
+
notFoundComponent: lazyRouteComponent($$splitNotFoundComponentImporter, "notFoundComponent"),
|
|
10
|
+
component: lazyRouteComponent($$splitComponentImporter, "component"),
|
|
11
|
+
validateSearch: validateInsightsSearch
|
|
12
|
+
});
|
|
13
|
+
//#endregion
|
|
14
|
+
export { Route as t };
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { t as ConsoleFeatureUnavailable } from "./ConsoleFeatureUnavailable-ldW8v8-q.mjs";
|
|
2
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/insights-CWnHIFUV.js
|
|
3
|
+
var SplitNotFoundComponent = ConsoleFeatureUnavailable;
|
|
4
|
+
//#endregion
|
|
5
|
+
export { SplitNotFoundComponent as notFoundComponent };
|