@hot-updater/console 1.1.4 → 1.2.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/-native-builds-search-C-TGpFAm.js +1 -0
- package/.output/public/assets/{ConsoleFeatureUnavailable-C0KfsKWL.js → ConsoleFeatureUnavailable-CUtcXuY2.js} +1 -1
- package/.output/public/assets/EventDetails-Dl2RvPAk.js +1 -0
- package/.output/public/assets/HashValueDisplay-6lNRxDJX.js +1 -0
- package/.output/public/assets/InsightsPageHeader-DHhqY3DT.js +1 -0
- package/.output/public/assets/NotFoundPage-DZ3DxyRA.js +1 -0
- package/.output/public/assets/PlatformIcon-BBWQlWm9.js +1 -0
- package/.output/public/assets/RolloutPercentageBadge-Cxogpi8F.js +1 -0
- package/.output/public/assets/StoreSubmission-JpngSvHS.js +1 -0
- package/.output/public/assets/alert-dialog-BqYScr9y.js +1 -0
- package/.output/public/assets/api-P2g8dCNg.js +1 -0
- package/.output/public/assets/api-keys-DWQC2q6y.js +1 -0
- package/.output/public/assets/api-keys-FueRkF9q.js +1 -0
- package/.output/public/assets/arrow-left-g9cKqXuC.js +1 -0
- package/.output/public/assets/arrow-right-CNII8TYn.js +1 -0
- package/.output/public/assets/arrow-up-right-DK8Zdg40.js +1 -0
- package/.output/public/assets/badge-DWFcDWho.js +1 -0
- package/.output/public/assets/check-CXVR3s3X.js +1 -0
- package/.output/public/assets/chevron-right-BoUXo82O.js +1 -0
- package/.output/public/assets/circle-off-C7Muo0ss.js +1 -0
- package/.output/public/assets/{clipboard-DTkrlIMn.js → clipboard-DQbOcrL7.js} +1 -1
- package/.output/public/assets/console-features-api-DEXSwFtc.js +1 -0
- package/.output/public/assets/copy-DsuLj3oj.js +1 -0
- package/.output/public/assets/dialog-CNUPxNxH.js +1 -0
- package/.output/public/assets/{dist-dDj-R6uh.js → dist-CPlO6ko9.js} +1 -1
- package/.output/public/assets/download-Cf24LBde.js +1 -0
- package/.output/public/assets/{empty-Bf4DanOL.js → empty-B3Uwdd6k.js} +1 -1
- package/.output/public/assets/{field-GxF9SyUo.js → field-D-2-mnNh.js} +1 -1
- package/.output/public/assets/history-DqHlgSuV.js +1 -0
- package/.output/public/assets/index-BWU6owTG.js +10 -0
- package/.output/public/assets/{input-group-B4nrqIh0.js → input-group-D3OUBk4n.js} +1 -1
- package/.output/public/assets/insights-B-0odqpt.js +42 -0
- package/.output/public/assets/insights-BSVGfxSL.js +1 -0
- package/.output/public/assets/insights-NK5B6ReS.js +2 -0
- package/.output/public/assets/insights-api-BVCXJsoV.js +1 -0
- package/.output/public/assets/insights-search-DghCbEnk.js +1 -0
- package/.output/public/assets/insights-usage-rpc-CKQH0pUS.js +1 -0
- package/.output/public/assets/insights_.distribution-CJvgwcVZ.js +2 -0
- package/.output/public/assets/insights_.distribution-DblZM0mO.js +1 -0
- package/.output/public/assets/insights_.distribution-dvk6vYDM.js +1 -0
- package/.output/public/assets/installations-B674P5Z5.js +2 -0
- package/.output/public/assets/installations-BWxczZ2t.js +1 -0
- package/.output/public/assets/installations-Dv4kWQYz.js +1 -0
- package/.output/public/assets/{key-round-B4fI1psK.js → key-round-DwNKkHhy.js} +1 -1
- package/.output/public/assets/link-DTEyW70e.js +2 -0
- package/.output/public/assets/{list-Dtj7TtzV.js → list--NIee1FZ.js} +1 -1
- package/.output/public/assets/native-builds-BOC71grI.js +1 -0
- package/.output/public/assets/native-builds-BswZazmc.js +1 -0
- package/.output/public/assets/native-builds-c4BpOLAe.js +2 -0
- package/.output/public/assets/native-builds_._buildId-D_Spjl10.js +1 -0
- package/.output/public/assets/native-builds_._buildId-DtoXD8rz.js +2 -0
- package/.output/public/assets/plus-BReVKct-.js +1 -0
- package/.output/public/assets/preload-helper-B44EvKhG.js +1 -0
- package/.output/public/assets/{refresh-cw-DjIKjmrS.js → refresh-cw-B9HHjLej.js} +1 -1
- package/.output/public/assets/relativeTime-YQt84dYr.js +1 -0
- package/.output/public/assets/remote-config-B7ujqhLa.js +6 -0
- package/.output/public/assets/remote-config-WjpozBG5.js +1 -0
- package/.output/public/assets/remote-config-gXeH6PBW.js +1 -0
- package/.output/public/assets/rotate-cw-Cv2aVbYr.js +1 -0
- package/.output/public/assets/routes-BDdBIxYS.js +1 -0
- package/.output/public/assets/routes-CCD33Azv.js +2 -0
- package/.output/public/assets/search-BCel4Oy6.js +1 -0
- package/.output/public/assets/select-CBIU0_M1.js +1 -0
- package/.output/public/assets/{sidebar-BqX460IW.js → sidebar-Di9SN47G.js} +1 -1
- package/.output/public/assets/smartphone-CMaSy_ir.js +1 -0
- package/.output/public/assets/styles-Ccxthuz1.css +2 -0
- package/.output/public/assets/switch-BpdiHL_t.js +1 -0
- package/.output/public/assets/{table-ek1DmRHq.js → table-Bpy3SvSo.js} +1 -1
- package/.output/public/assets/{tabs-CgEH_fMT.js → tabs-Xmt7tZeG.js} +1 -1
- package/.output/public/assets/{undo-2-DxXx9Zvr.js → undo-2-CUX96_BG.js} +1 -1
- package/.output/public/assets/useCompositeListItem-JmyDfo3-.js +1 -0
- package/.output/public/assets/useInfiniteQuery-DX4WpBRG.js +1 -0
- package/.output/public/assets/useMutation-DbYw7boA.js +1 -0
- package/.output/public/assets/uuidv7-zXMtwR9Q.js +1 -0
- package/.output/public/assets/{valueToPercent-B44vDssN.js → valueToPercent-BLwGy_xK.js} +1 -1
- package/.output/server/{__23tanstack-start-server-fn-resolver-KpQ5Z_24.mjs → __23tanstack-start-server-fn-resolver-CygMPYHZ.mjs} +64 -40
- package/.output/server/_chunks/ssr-renderer.mjs +2 -2
- package/.output/server/_libs/@tanstack/react-router+[...].mjs +1 -1
- package/.output/server/_libs/@tanstack/react-router-ssr-query+[...].mjs +1 -1
- package/.output/server/_libs/lucide-react.mjs +88 -1
- package/.output/server/_libs/uqr.mjs +858 -0
- package/.output/server/_ssr/-native-builds-search-CwNcoXf4.mjs +37 -0
- package/.output/server/_ssr/{BundleIdDisplay-CjSnY65J.mjs → BundleIdDisplay-DOPz4pUS.mjs} +2 -2
- package/.output/server/_ssr/{ConsoleFeatureUnavailable-CHxn9f-w.mjs → ConsoleFeatureUnavailable-Xb1JKqcc.mjs} +7 -7
- package/.output/server/_ssr/{EventDetails-l6dF54zp.mjs → EventDetails-D7MejFCN.mjs} +8 -8
- package/.output/server/_ssr/{HashValueDisplay-Zs7ABoOi.mjs → HashValueDisplay-Dd-wu5rY.mjs} +2 -2
- package/.output/server/_ssr/{InsightsPageHeader-ZlAlDxQy.mjs → InsightsPageHeader-CWf1n4Vt.mjs} +13 -11
- package/.output/server/_ssr/{NotFoundPage-u28ndvp1.mjs → NotFoundPage-C5rFdUpg.mjs} +2 -2
- package/.output/server/_ssr/PlatformIcon-CFLiTjh1.mjs +29 -0
- package/.output/server/_ssr/RolloutPercentageBadge-g0Bhfl3M.mjs +21 -0
- package/.output/server/_ssr/StoreSubmission-JZ2Zltak.mjs +139 -0
- package/.output/server/_ssr/{alert-dialog-B8AqlJwo.mjs → alert-dialog-CvNvTvIJ.mjs} +1 -1
- package/.output/server/_ssr/{api-C_0B7NXM.mjs → api-0vtwA5vY.mjs} +126 -7
- package/.output/server/_ssr/{api-keys-pRNvn2-9.mjs → api-keys-D5dyA4D1.mjs} +10 -10
- package/.output/server/_ssr/{api-keys-rpc-wecWs0nA.mjs → api-keys-rpc-BOIUHhDi.mjs} +5 -5
- package/.output/server/_ssr/{api-keys-CLH38u9B.mjs → api-keys-yFlQDwQF.mjs} +2 -2
- package/.output/server/_ssr/{api-rpc-DWN8eOHS.mjs → api-rpc-COeFOpYi.mjs} +79 -12
- package/.output/server/_ssr/{auth-UP0wXs4i.mjs → auth-Z-wLddzh.mjs} +1 -1
- package/.output/server/_ssr/{auth-rpc-CLRArbIl.mjs → auth-rpc-D1ss2GUI.mjs} +6 -6
- package/.output/server/_ssr/{auth.server-DR9zc0EU.mjs → auth.server-DYS1OJ6P.mjs} +771 -641
- package/.output/server/_ssr/{badge-BpT7r-ng.mjs → badge-CEdVRgyl.mjs} +1 -1
- package/.output/server/_ssr/{bundleActivity-0qFIcvqt.mjs → bundleActivity-MLrjNJCT.mjs} +1 -1
- package/.output/server/_ssr/{config-WVX4IxSR.mjs → config-CjIBFhJX.mjs} +1 -1
- package/.output/server/_ssr/config.server-NnMFjMFX.mjs +43 -0
- package/.output/server/_ssr/{console-access-aUpQs49I.mjs → console-access-33BNlH97.mjs} +3 -3
- package/.output/server/_ssr/{console-features-4xAGfZHw.mjs → console-features-BTV-XuhQ.mjs} +1 -1
- package/.output/server/_ssr/{console-features-api-DSSgCV3v.mjs → console-features-api-v1fSycue.mjs} +6 -6
- package/.output/server/_ssr/{console-features-rpc-D6kMlR2A.mjs → console-features-rpc-C7XNVqm0.mjs} +5 -5
- package/.output/server/_ssr/createCsrfMiddleware-BwHbC8n-.mjs +159 -0
- package/.output/server/_ssr/createMiddleware-C3ACsfuG.mjs +24 -0
- package/.output/server/_ssr/{createMiddleware-B1iPez7u.mjs → createServerFn-AQvBMBjJ.mjs} +2 -23
- package/.output/server/_ssr/{createServerRpc-BaDJLGBx.mjs → createServerRpc-BVvRVOz5.mjs} +2 -2
- package/.output/server/_ssr/{databaseConfig-C5SkAyUy.mjs → databaseConfig-B_Bg7qS5.mjs} +1 -1
- package/.output/server/_ssr/{databaseJsonValue-Csbuzc9Q.mjs → databaseJsonValue-kS7cvEtz.mjs} +1 -1
- package/.output/server/_ssr/{databaseRows-CPphvbag.mjs → databaseRows-B6H8Cmgq.mjs} +3 -3
- package/.output/server/_ssr/{dialog-B4ALf7NJ.mjs → dialog-C8CS8RMt.mjs} +1 -1
- package/.output/server/_ssr/{dist-CbQbBIw-.mjs → dist-TEpM_UAD.mjs} +125 -125
- package/.output/server/_ssr/{downloadBundle-94jPBGSO.mjs → downloadBundle-DCmr7vsj.mjs} +1 -1
- package/.output/server/_ssr/{empty-Bh1FEeYF.mjs → empty-CkdEAvCY.mjs} +2 -2
- package/.output/server/_ssr/{empty-plugin-adapters-CpCHi1TV.mjs → empty-plugin-adapters-zrZ0xs6n.mjs} +1 -1
- package/.output/server/_ssr/{failureReports-Bh22wois.mjs → failureReports-Cn_zU9S8.mjs} +3 -3
- package/.output/server/_ssr/{field-HKCaPH3e.mjs → field-CW08sZXd.mjs} +2 -2
- package/.output/server/_ssr/{getBundleChildren-DfxB2K8D.mjs → getBundleChildren-rtkEEJw5.mjs} +2 -2
- package/.output/server/_ssr/git-CTA8Aqr0.mjs +56 -0
- package/.output/server/_ssr/{input-group-xm3LzDuq.mjs → input-group-D-TpFPuG.mjs} +1 -1
- package/.output/server/_ssr/{insights-BKZpJ_K4.mjs → insights-CMyzPs8l.mjs} +28 -27
- package/.output/server/_ssr/{insights-CCyTACIw.mjs → insights-CYeBl8N9.mjs} +5 -5
- package/.output/server/_ssr/{insights-CNqWQLJR.mjs → insights-DAi9KknT.mjs} +2 -2
- package/.output/server/_ssr/{insights-api-DtRFz5X3.mjs → insights-api-BFARQ5ct.mjs} +6 -6
- package/.output/server/_ssr/{insights-errors-Iy-lBaM7.mjs → insights-errors-7BCwFybo.mjs} +2 -2
- package/.output/server/_ssr/{insights-failures-BJN3RfLu.mjs → insights-failures-B9VPkzZE.mjs} +2 -2
- package/.output/server/_ssr/{insights-failures-rpc-DLZ91uOG.mjs → insights-failures-rpc-Q4WNNJkU.mjs} +12 -12
- package/.output/server/_ssr/{insights-recovery-BUuQdlA3.mjs → insights-recovery-BtXVU3ro.mjs} +1 -1
- package/.output/server/_ssr/{insights-recovery-rpc-BQHUhPi7.mjs → insights-recovery-rpc-CY5RYJKa.mjs} +8 -8
- package/.output/server/_ssr/{insights-rpc-C6Vukyn7.mjs → insights-rpc-BO7_evvs.mjs} +5 -5
- package/.output/server/_ssr/{insights-search-CBYoxT7v.mjs → insights-search-DKfxgHD3.mjs} +5 -5
- package/.output/server/_ssr/{insights-usage-CHqvtehH.mjs → insights-usage-DiGnuxW8.mjs} +1 -1
- package/.output/server/_ssr/{insights-usage-rpc-BJ7a-xco.mjs → insights-usage-rpc-B4czku50.mjs} +8 -8
- package/.output/server/_ssr/{insights-usage-rpc-C-lNUIsD.mjs → insights-usage-rpc-CUCTFska.mjs} +5 -5
- package/.output/server/_ssr/{insightsUsage-COUG-_-U.mjs → insightsUsage-ClAmoUz8.mjs} +3 -3
- package/.output/server/_ssr/{insights_.distribution-DmLW8I8a.mjs → insights_.distribution-BDeUhZGj.mjs} +2 -2
- package/.output/server/_ssr/{insights_.distribution-CTwilMPm.mjs → insights_.distribution-BRrbZN1X.mjs} +5 -5
- package/.output/server/_ssr/{insights_.distribution-DztDyrBj.mjs → insights_.distribution-C2MXpzKd.mjs} +15 -14
- package/.output/server/_ssr/{installations-Bct7ag5y.mjs → installations-BVk7okiY.mjs} +4 -4
- package/.output/server/_ssr/{installations-B6MK5iA8.mjs → installations-BjLMgBoH.mjs} +2 -2
- package/.output/server/_ssr/{installations-_N4PtYFl.mjs → installations-DxGZEC5G.mjs} +12 -12
- package/.output/server/_ssr/{listReleases-BfUBlCHo.mjs → listReleases-D_GY00SQ.mjs} +1 -1
- package/.output/server/_ssr/native-builds-CSCgFB21.mjs +10 -0
- package/.output/server/_ssr/native-builds-CdlyAldW.mjs +569 -0
- package/.output/server/_ssr/native-builds-DhXL5zf_.mjs +137 -0
- package/.output/server/_ssr/native-builds_._buildId-CMp1h8dT.mjs +10 -0
- package/.output/server/_ssr/native-builds_._buildId-GHpGaYyE.mjs +813 -0
- package/.output/server/_ssr/nativeBuildQr-84cnFQPX.mjs +59 -0
- package/.output/server/_ssr/nativeBuilds-B_7BPjt_.mjs +133 -0
- package/.output/server/_ssr/{plugins-BaD1slHx.mjs → plugins-RIryUNWj.mjs} +6 -5
- package/.output/server/_ssr/qr-code-C7kNRIDX.mjs +22 -0
- package/.output/server/_ssr/{release-adoption-DuYJTGuX.mjs → release-adoption-DoAtNPED.mjs} +2 -2
- package/.output/server/_ssr/{release-adoption-rpc-CHl7G_Zy.mjs → release-adoption-rpc-BJXZvtoQ.mjs} +10 -10
- package/.output/server/_ssr/{releaseAdoption-B39cpvfo.mjs → releaseAdoption-a2byXMfz.mjs} +4 -4
- package/.output/server/_ssr/releaseCatalogCompiler-DLcean2k.mjs +364 -0
- package/.output/server/_ssr/{releaseManagement-DFMUnDF5.mjs → releaseManagement-DHUux2az.mjs} +1 -1
- package/.output/server/_ssr/{releaseReachability-bFsuElSS.mjs → releaseReachability-DZOK_dH-.mjs} +2 -2
- package/.output/server/_ssr/{remote-config-Mj05qVYZ.mjs → remote-config-DjsEl270.mjs} +20 -19
- package/.output/server/_ssr/{remote-config-10-obSZ0.mjs → remote-config-DlyyohL2.mjs} +2 -2
- package/.output/server/_ssr/{remote-config-Dj1eTYi4.mjs → remote-config-XdYuByHz.mjs} +2 -2
- package/.output/server/_ssr/{remote-config-rpc-lteqDSLn.mjs → remote-config-rpc-GMLPb-90.mjs} +6 -6
- package/.output/server/_ssr/request-guard-CPdRBuGW.mjs +108 -0
- package/.output/server/_ssr/{router-Dr4jjjhx.mjs → router-vpxd56RW.mjs} +317 -71
- package/.output/server/_ssr/{routes-BZbrY_qw.mjs → routes-DyEM4b3x.mjs} +14 -14
- package/.output/server/_ssr/{routes-B5KrCDwk.mjs → routes-dQe3XhiS.mjs} +99 -81
- package/.output/server/_ssr/{runtime.server-DsHqVqTr.mjs → runtime.server-BdMY1blX.mjs} +4 -4
- package/.output/server/_ssr/schema-ChlRtZIo.mjs +23 -0
- package/.output/server/_ssr/schema-migration-rpc-BfGzEK_o.mjs +65 -0
- package/.output/server/_ssr/{select-BtdGNSmp.mjs → select-DM1uwtk9.mjs} +3 -27
- package/.output/server/_ssr/{server-BxaHSwHh.mjs → server-BUUKNSPI.mjs} +7 -161
- package/.output/server/_ssr/{sidebar-CVsgosaD.mjs → sidebar-DB2YQlok.mjs} +4 -4
- package/.output/server/_ssr/ssr.mjs +1 -1
- package/.output/server/_ssr/start-BvDsQehg.mjs +49 -0
- package/.output/server/_ssr/{switch-BmARgkUP.mjs → switch-DLD58zLy.mjs} +2 -2
- package/.output/server/_ssr/{table-M5P3YUfY.mjs → table-P4TnAZhl.mjs} +1 -1
- package/.output/server/_ssr/{tabs-CrmfOlJj.mjs → tabs-B7ZeLicF.mjs} +2 -2
- package/.output/server/_ssr/{updateFailures-z1IQy_4q.mjs → updateFailures-n-tGv90S.mjs} +3 -3
- package/.output/server/_ssr/{uuidv7-C88s9jWF.mjs → uuidv7-BIF4nb_q.mjs} +2 -2
- package/.output/server/_ssr/{schema-BiAVyEj2.mjs → version-CQ98ZBpL-CWSkTT9J.mjs} +2 -22
- package/.output/server/_tanstack-start-manifest_v-C-KC63Zq.mjs +184 -0
- package/.output/server/index.mjs +432 -271
- package/lib/vite-internal.mjs +32 -1
- package/package.json +8 -7
- package/src/components/AppSidebar.tsx +12 -1
- package/src/components/ConsoleAccessPage.tsx +49 -3
- package/src/components/QrCode.tsx +35 -0
- package/src/components/SchemaMigrationRequired.tsx +139 -0
- package/src/components/features/insights/BuiltinBundle.tsx +5 -3
- package/src/components/features/native-builds/BuiltInBundleCard.tsx +163 -0
- package/src/components/features/native-builds/CommitLink.tsx +30 -0
- package/src/components/features/native-builds/CopyableText.tsx +48 -0
- package/src/components/features/native-builds/ImportBuild.tsx +91 -0
- package/src/components/features/native-builds/InstallCard.tsx +205 -0
- package/src/components/features/native-builds/NativeBuildDetailPage.tsx +175 -0
- package/src/components/features/native-builds/NativeBuildsPage.tsx +151 -0
- package/src/components/features/native-builds/NativeBuildsTable.tsx +426 -0
- package/src/components/features/native-builds/PatchesCard.tsx +222 -0
- package/src/components/features/native-builds/ReleaseNativeBuildLink.tsx +101 -0
- package/src/components/features/native-builds/ServedNowCard.tsx +214 -0
- package/src/components/features/native-builds/ShortHash.tsx +41 -0
- package/src/components/features/native-builds/StoreSubmission.tsx +73 -0
- package/src/components/features/releases/ReleaseEditorSheet.tsx +8 -0
- package/src/lib/api-rpc.ts +98 -0
- package/src/lib/api.ts +120 -0
- package/src/lib/native-builds.ts +162 -0
- package/src/lib/qr-code.ts +16 -0
- package/src/lib/schema-migration-api.ts +54 -0
- package/src/lib/schema-migration-rpc.ts +26 -0
- package/src/lib/schema-migration.ts +101 -0
- package/src/lib/server/config.server.ts +23 -14
- package/src/lib/server/console-runtime.server.ts +4 -6
- package/src/lib/server/local-console.ts +164 -0
- package/src/lib/server/nativeBuildQr.ts +73 -0
- package/src/lib/server/nativeBuilds.ts +288 -0
- package/src/lib/shell.ts +9 -0
- package/src/routeTree.gen.ts +88 -1
- package/src/router.tsx +11 -1
- package/src/routes/-native-builds-search.ts +51 -0
- package/src/routes/[_]hot-updater/native-builds/qr.ts +14 -0
- package/src/routes/__root.tsx +11 -1
- package/src/routes/api/native-builds/$buildId/download.ts +50 -0
- package/src/routes/native-builds.tsx +21 -0
- package/src/routes/native-builds_.$buildId.tsx +23 -0
- package/src/start.ts +33 -0
- package/src/virtual-modules.d.ts +18 -0
- package/src/vite-internal.ts +57 -1
- package/.output/public/assets/EventDetails-gbD_fCqc.js +0 -1
- package/.output/public/assets/HashValueDisplay-BGkDPaYi.js +0 -1
- package/.output/public/assets/InsightsPageHeader-BRw8XkJW.js +0 -1
- package/.output/public/assets/NotFoundPage-Cei6W2lm.js +0 -1
- package/.output/public/assets/alert-dialog-BtVg50WQ.js +0 -1
- package/.output/public/assets/api-DoicFJfd.js +0 -1
- package/.output/public/assets/api-keys-D81VHHNM.js +0 -1
- package/.output/public/assets/api-keys-Dia6i8K1.js +0 -1
- package/.output/public/assets/arrow-left-DsivSewE.js +0 -1
- package/.output/public/assets/arrow-up-right-B5aM0F7f.js +0 -1
- package/.output/public/assets/badge-Bqf3UDee.js +0 -1
- package/.output/public/assets/circle-off-BsbZQtsF.js +0 -1
- package/.output/public/assets/console-features-api-DPE4C06Y.js +0 -2
- package/.output/public/assets/dialog-CGKPxz3n.js +0 -1
- package/.output/public/assets/index-DrkdiRIn.js +0 -10
- package/.output/public/assets/insights-C-5t8wh2.js +0 -2
- package/.output/public/assets/insights-D_ngQdiz.js +0 -1
- package/.output/public/assets/insights-KigRBDgC.js +0 -42
- package/.output/public/assets/insights-api-1ZjVu3Sb.js +0 -1
- package/.output/public/assets/insights-search-aT8BVCci.js +0 -1
- package/.output/public/assets/insights-usage-rpc-DqTiXI1_.js +0 -1
- package/.output/public/assets/insights_.distribution-Bzl6RFBR.js +0 -2
- package/.output/public/assets/insights_.distribution-Cthgttqb.js +0 -1
- package/.output/public/assets/insights_.distribution-D2c2v1bu.js +0 -1
- package/.output/public/assets/installations-2Nx8Htf-.js +0 -1
- package/.output/public/assets/installations-BskJ1xQr.js +0 -2
- package/.output/public/assets/installations-K2iJ_r0h.js +0 -1
- package/.output/public/assets/remote-config-D9X3NiwV.js +0 -6
- package/.output/public/assets/remote-config-DzOOiBIO.js +0 -1
- package/.output/public/assets/remote-config-ikg7kak0.js +0 -1
- package/.output/public/assets/routes-9rb9P5Y7.js +0 -2
- package/.output/public/assets/routes-P7683vKQ.js +0 -1
- package/.output/public/assets/search-DuI1FBpg.js +0 -1
- package/.output/public/assets/select-M3H2gxCc.js +0 -1
- package/.output/public/assets/smartphone-CtsHuiIC.js +0 -1
- package/.output/public/assets/styles-CpiW_YdW.css +0 -2
- package/.output/public/assets/switch-By_vfm8I.js +0 -1
- package/.output/public/assets/useCompositeListItem-B-UkrDlu.js +0 -1
- package/.output/server/_ssr/config.server-DTdsG47T.mjs +0 -35
- package/.output/server/_ssr/start-B6ECIE_7.mjs +0 -4
- package/.output/server/_tanstack-start-manifest_v-_BY9hYTm.mjs +0 -136
|
@@ -1,21 +1,26 @@
|
|
|
1
1
|
import { i as __toESM } from "../_runtime.mjs";
|
|
2
|
-
import {
|
|
2
|
+
import { l as createServerFn } from "./createServerFn-AQvBMBjJ.mjs";
|
|
3
|
+
import { t as consoleAccess } from "./console-access-33BNlH97.mjs";
|
|
3
4
|
import { bt as require_react, yt as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
|
|
4
|
-
import {
|
|
5
|
-
import { A as createSsrRpc, E as TooltipProvider, M as useSidebar, _ as SidebarInset, b as SidebarMenuItem, d as SidebarContent, f as SidebarFooter, g as SidebarHeader, h as SidebarGroupLabel, m as SidebarGroupContent, p as SidebarGroup, t as Button$1, u as Sidebar, v as SidebarMenu, x as SidebarProvider, y as SidebarMenuButton } from "./sidebar-
|
|
6
|
-
import {
|
|
5
|
+
import { A as Info, C as OctagonX, D as LoaderCircle, E as LogOut, M as HardDrive, V as Copy, W as CircleCheck, c as Sun, h as RotateCw, i as TriangleAlert, tt as ArrowUpRight, w as Moon, x as Package } from "../_libs/lucide-react.mjs";
|
|
6
|
+
import { A as createSsrRpc, E as TooltipProvider, M as useSidebar, O as buttonVariants, S as SidebarTrigger, _ as SidebarInset, b as SidebarMenuItem, d as SidebarContent, f as SidebarFooter, g as SidebarHeader, h as SidebarGroupLabel, m as SidebarGroupContent, p as SidebarGroup, t as Button$1, u as Sidebar, v as SidebarMenu, x as SidebarProvider, y as SidebarMenuButton } from "./sidebar-DB2YQlok.mjs";
|
|
7
|
+
import { i as useQuery, r as queryOptions, s as useQueryClient } from "../_libs/tanstack__react-query.mjs";
|
|
7
8
|
import { t as QueryClient } from "../_libs/tanstack__query-core.mjs";
|
|
8
|
-
import { r as requireConsoleFeature, t as consoleFeaturesQueryOptions } from "./console-features-api-DSSgCV3v.mjs";
|
|
9
|
-
import { t as NotFoundPage } from "./NotFoundPage-u28ndvp1.mjs";
|
|
10
9
|
import { n as toast, t as Toaster } from "../_libs/sonner.mjs";
|
|
11
|
-
import {
|
|
12
|
-
import { t as
|
|
13
|
-
import {
|
|
14
|
-
import { n as
|
|
15
|
-
import {
|
|
10
|
+
import { a as HeadContent, d as Outlet, f as lazyRouteComponent, h as Link, i as Scripts, m as createRootRouteWithContext, p as createFileRoute, s as useRouterState, u as createRouter } from "../_libs/@tanstack/react-router+[...].mjs";
|
|
11
|
+
import { r as requireConsoleFeature, t as consoleFeaturesQueryOptions } from "./console-features-api-v1fSycue.mjs";
|
|
12
|
+
import { t as NotFoundPage } from "./NotFoundPage-C5rFdUpg.mjs";
|
|
13
|
+
import { i as EmptyHeader, n as EmptyContent, o as EmptyTitle, r as EmptyDescription, t as Empty } from "./empty-CkdEAvCY.mjs";
|
|
14
|
+
import { t as Route$6 } from "./insights-CYeBl8N9.mjs";
|
|
15
|
+
import { t as Route$7 } from "./insights_.distribution-BRrbZN1X.mjs";
|
|
16
|
+
import { n as Route$8 } from "./installations-BVk7okiY.mjs";
|
|
17
|
+
import { t as Route$9 } from "./native-builds-CSCgFB21.mjs";
|
|
18
|
+
import { t as Route$10 } from "./native-builds_._buildId-CMp1h8dT.mjs";
|
|
19
|
+
import { n as Route$11 } from "./remote-config-DjsEl270.mjs";
|
|
20
|
+
import { n as Route$12, o as useFeatureUi } from "./routes-DyEM4b3x.mjs";
|
|
16
21
|
import { t as setupRouterSsrQueryIntegration } from "../_libs/@tanstack/react-router-ssr-query+[...].mjs";
|
|
17
22
|
import { t as z } from "../_libs/next-themes.mjs";
|
|
18
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/router-
|
|
23
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/router-vpxd56RW.js
|
|
19
24
|
var import_react = /* @__PURE__ */ __toESM(require_react());
|
|
20
25
|
var import_jsx_runtime = require_jsx_runtime();
|
|
21
26
|
function HotUpdaterLogo({ className }) {
|
|
@@ -119,33 +124,46 @@ function AppSidebar({ canSignOut = false }) {
|
|
|
119
124
|
const featureUi = useFeatureUi();
|
|
120
125
|
const { theme, setTheme } = useTheme$1();
|
|
121
126
|
const currentPath = useRouterState().location.pathname;
|
|
122
|
-
const navigation = [
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
127
|
+
const navigation = [
|
|
128
|
+
{
|
|
129
|
+
label: "Bundles",
|
|
130
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Package, {}),
|
|
131
|
+
active: currentPath === "/",
|
|
132
|
+
link: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Link, {
|
|
133
|
+
to: "/",
|
|
134
|
+
onClick: closeMobileSidebar,
|
|
135
|
+
search: {
|
|
136
|
+
afterReleaseId: void 0,
|
|
137
|
+
beforeReleaseId: void 0,
|
|
138
|
+
channelId: void 0,
|
|
139
|
+
enabled: void 0,
|
|
140
|
+
releaseId: void 0,
|
|
141
|
+
platform: void 0,
|
|
142
|
+
bundleId: void 0,
|
|
143
|
+
scopeKey: void 0
|
|
144
|
+
}
|
|
145
|
+
})
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
label: "Native builds",
|
|
149
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(HardDrive, {}),
|
|
150
|
+
active: currentPath === "/native-builds" || currentPath.startsWith("/native-builds/"),
|
|
151
|
+
link: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Link, {
|
|
152
|
+
to: "/native-builds",
|
|
153
|
+
onClick: closeMobileSidebar,
|
|
154
|
+
search: {}
|
|
155
|
+
})
|
|
156
|
+
},
|
|
157
|
+
...featureUi.flatMap(({ features, label, navigation }) => navigation === void 0 ? [] : [{
|
|
158
|
+
label,
|
|
159
|
+
icon: navigation.icon,
|
|
160
|
+
active: navigation.paths.includes(currentPath),
|
|
161
|
+
link: navigation.link({
|
|
162
|
+
features,
|
|
163
|
+
onClick: closeMobileSidebar
|
|
164
|
+
})
|
|
165
|
+
}])
|
|
166
|
+
];
|
|
149
167
|
const signOut = async () => {
|
|
150
168
|
setSigningOut(true);
|
|
151
169
|
try {
|
|
@@ -220,9 +238,36 @@ var providerLabel = {
|
|
|
220
238
|
github: "GitHub",
|
|
221
239
|
google: "Google"
|
|
222
240
|
};
|
|
241
|
+
/** A path on this console, or the root for anything that could leave it. */
|
|
242
|
+
var consolePath = (target) => target.startsWith("/") && !/^\/[/\\]/.test(target) ? target : "/";
|
|
243
|
+
/**
|
|
244
|
+
* Where sign-in returns to: the page that asked for it, as a path on this
|
|
245
|
+
* console, so a link to a build lands on that build. A page a route sent
|
|
246
|
+
* here names its own target in `returnTo`, relative to the page, as the
|
|
247
|
+
* native build download does: sign-in returns there instead, when it is on
|
|
248
|
+
* this console's origin. Anything that could leave the console, such as
|
|
249
|
+
* `//host` or `/\host`, returns to the page, or to the root.
|
|
250
|
+
*/
|
|
251
|
+
var signInCallbackURL = (location) => {
|
|
252
|
+
const page = consolePath(`${location.pathname}${location.search}`);
|
|
253
|
+
const returnTo = new URLSearchParams(location.search).get("returnTo");
|
|
254
|
+
if (returnTo === null) return page;
|
|
255
|
+
try {
|
|
256
|
+
const target = new URL(returnTo, location.href);
|
|
257
|
+
return target.origin === new URL(location.href).origin ? consolePath(`${target.pathname}${target.search}`) : page;
|
|
258
|
+
} catch {
|
|
259
|
+
return page;
|
|
260
|
+
}
|
|
261
|
+
};
|
|
262
|
+
/** Whether sign-in returns to a native build's download. */
|
|
263
|
+
var returnsToDownload = (callbackURL) => /\/api\/native-builds\/[^/]+\/download$/.test(callbackURL);
|
|
223
264
|
function ConsoleAccessPage({ access, providers }) {
|
|
224
265
|
const [pendingProvider, setPendingProvider] = (0, import_react.useState)(null);
|
|
225
266
|
const [signingOut, setSigningOut] = (0, import_react.useState)(false);
|
|
267
|
+
const [downloadAfterSignIn, setDownloadAfterSignIn] = (0, import_react.useState)(false);
|
|
268
|
+
(0, import_react.useEffect)(() => {
|
|
269
|
+
setDownloadAfterSignIn(returnsToDownload(signInCallbackURL(window.location)));
|
|
270
|
+
}, []);
|
|
226
271
|
const [error, setError] = (0, import_react.useState)(null);
|
|
227
272
|
const signIn = async (provider) => {
|
|
228
273
|
setPendingProvider(provider);
|
|
@@ -230,7 +275,7 @@ function ConsoleAccessPage({ access, providers }) {
|
|
|
230
275
|
try {
|
|
231
276
|
const response = await fetch("/api/auth/sign-in/social", {
|
|
232
277
|
body: JSON.stringify({
|
|
233
|
-
callbackURL:
|
|
278
|
+
callbackURL: signInCallbackURL(window.location),
|
|
234
279
|
provider
|
|
235
280
|
}),
|
|
236
281
|
headers: { "content-type": "application/json" },
|
|
@@ -271,7 +316,7 @@ function ConsoleAccessPage({ access, providers }) {
|
|
|
271
316
|
children: "Hot Updater Console"
|
|
272
317
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", {
|
|
273
318
|
className: "text-muted-foreground text-sm",
|
|
274
|
-
children: "Sign in to manage OTA bundles."
|
|
319
|
+
children: downloadAfterSignIn ? "Sign in to download the build. It starts once you're in." : "Sign in to manage OTA bundles."
|
|
275
320
|
})] })]
|
|
276
321
|
}),
|
|
277
322
|
access.status === "forbidden" ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
@@ -317,6 +362,112 @@ function ConsoleAccessPage({ access, providers }) {
|
|
|
317
362
|
})
|
|
318
363
|
});
|
|
319
364
|
}
|
|
365
|
+
var DOCTOR_COMMAND = "npx hot-updater doctor";
|
|
366
|
+
var DOCTOR_GUIDE_URL = "https://hot-updater.dev/docs/guides/doctor";
|
|
367
|
+
/**
|
|
368
|
+
* What the console shows instead of a page while the schema fence refuses
|
|
369
|
+
* its database: the settings a migration writes, and doctor, which names the
|
|
370
|
+
* command that runs it. Every page reads through the fence, so one notice
|
|
371
|
+
* stands for all.
|
|
372
|
+
*/
|
|
373
|
+
function SchemaMigrationRequired({ status, onRetry }) {
|
|
374
|
+
const [checking, setChecking] = (0, import_react.useState)(false);
|
|
375
|
+
const command = DOCTOR_COMMAND;
|
|
376
|
+
const configFile = /* @__PURE__ */ (0, import_jsx_runtime.jsx)("code", {
|
|
377
|
+
className: "font-mono whitespace-nowrap",
|
|
378
|
+
children: "hot-updater.config.ts"
|
|
379
|
+
});
|
|
380
|
+
const copyCommand = async () => {
|
|
381
|
+
try {
|
|
382
|
+
await navigator.clipboard.writeText(command);
|
|
383
|
+
toast.success("Command copied");
|
|
384
|
+
} catch {
|
|
385
|
+
toast.error("Could not copy the command");
|
|
386
|
+
}
|
|
387
|
+
};
|
|
388
|
+
const checkAgain = async () => {
|
|
389
|
+
setChecking(true);
|
|
390
|
+
try {
|
|
391
|
+
await onRetry();
|
|
392
|
+
} finally {
|
|
393
|
+
setChecking(false);
|
|
394
|
+
}
|
|
395
|
+
};
|
|
396
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
397
|
+
className: "flex h-svh min-h-0 flex-col",
|
|
398
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("header", {
|
|
399
|
+
className: "sticky top-0 z-10 flex shrink-0 items-center gap-3 border-b bg-background px-3 py-3 sm:min-h-12 sm:bg-card/70 sm:px-4 sm:backdrop-blur-sm",
|
|
400
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(SidebarTrigger, { className: "-ml-1" }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h1", {
|
|
401
|
+
className: "text-sm font-medium",
|
|
402
|
+
children: "Database migration"
|
|
403
|
+
})]
|
|
404
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
405
|
+
className: "flex min-h-0 min-w-0 flex-1 overflow-y-auto bg-muted/5 p-3 sm:p-6",
|
|
406
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Empty, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(EmptyHeader, { children: status.migratable ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(EmptyTitle, { children: "The database needs a migration" }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(EmptyDescription, { children: [
|
|
407
|
+
"Its schema is older than this console's, so the console stops before reading it. Run this where ",
|
|
408
|
+
configFile,
|
|
409
|
+
" names the database: it names the command that migrates it. Then check again."
|
|
410
|
+
] })] }) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(EmptyTitle, { children: "The database's schema doesn't match" }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(EmptyDescription, { children: [
|
|
411
|
+
"A newer Hot Updater migrated it, or it uses a layout this console can't migrate, so the console stops before reading it. Run this where ",
|
|
412
|
+
configFile,
|
|
413
|
+
" names the database to see what it needs."
|
|
414
|
+
] })] }) }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(EmptyContent, { children: [
|
|
415
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
416
|
+
className: "flex w-full items-center gap-2 rounded-md border bg-muted/40 py-1 pr-1 pl-3",
|
|
417
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("code", {
|
|
418
|
+
className: "min-w-0 flex-1 overflow-x-auto text-left font-mono text-xs whitespace-nowrap",
|
|
419
|
+
children: command
|
|
420
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button$1, {
|
|
421
|
+
"aria-label": "Copy command",
|
|
422
|
+
onClick: copyCommand,
|
|
423
|
+
size: "icon-sm",
|
|
424
|
+
variant: "ghost",
|
|
425
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Copy, { "aria-hidden": "true" })
|
|
426
|
+
})]
|
|
427
|
+
}),
|
|
428
|
+
status.settings.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("ul", {
|
|
429
|
+
className: "w-full space-y-1 text-left text-xs text-muted-foreground",
|
|
430
|
+
children: status.settings.map(({ key, expected, found }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("li", {
|
|
431
|
+
className: "flex justify-between gap-3",
|
|
432
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("code", {
|
|
433
|
+
className: "font-mono",
|
|
434
|
+
children: key
|
|
435
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
|
|
436
|
+
className: "tabular-nums",
|
|
437
|
+
children: [
|
|
438
|
+
found ?? "missing",
|
|
439
|
+
" → ",
|
|
440
|
+
expected
|
|
441
|
+
]
|
|
442
|
+
})]
|
|
443
|
+
}, key))
|
|
444
|
+
}) : null,
|
|
445
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
446
|
+
className: "flex flex-wrap justify-center gap-2",
|
|
447
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Button$1, {
|
|
448
|
+
disabled: checking,
|
|
449
|
+
onClick: checkAgain,
|
|
450
|
+
variant: "outline",
|
|
451
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(RotateCw, {
|
|
452
|
+
"aria-hidden": "true",
|
|
453
|
+
className: checking ? "motion-safe:animate-spin" : void 0,
|
|
454
|
+
"data-icon": "inline-start"
|
|
455
|
+
}), checking ? "Checking…" : "Check again"]
|
|
456
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("a", {
|
|
457
|
+
className: buttonVariants({ variant: "ghost" }),
|
|
458
|
+
href: DOCTOR_GUIDE_URL,
|
|
459
|
+
rel: "noreferrer",
|
|
460
|
+
target: "_blank",
|
|
461
|
+
children: ["Doctor guide", /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ArrowUpRight, {
|
|
462
|
+
"aria-hidden": "true",
|
|
463
|
+
"data-icon": "inline-end"
|
|
464
|
+
})]
|
|
465
|
+
})]
|
|
466
|
+
})
|
|
467
|
+
] })] })
|
|
468
|
+
})]
|
|
469
|
+
});
|
|
470
|
+
}
|
|
320
471
|
var Toaster$1 = ({ ...props }) => {
|
|
321
472
|
const { theme = "system" } = z();
|
|
322
473
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Toaster, {
|
|
@@ -341,8 +492,47 @@ var Toaster$1 = ({ ...props }) => {
|
|
|
341
492
|
};
|
|
342
493
|
var getConsoleAccessRpc = createServerFn({ method: "GET" }).handler(createSsrRpc("c504696e68ba764b48c48aa8a40275938640941e473cf9cfdd7b2322d99f9d13"));
|
|
343
494
|
var getConsoleAuthProvidersRpc = createServerFn({ method: "GET" }).handler(createSsrRpc("fa8c48f0489d97c62b9b68fd0caf0a61b15bad25a42b3866ec36264b4b30bb74"));
|
|
344
|
-
|
|
345
|
-
|
|
495
|
+
/**
|
|
496
|
+
* Whether the schema fence refuses the console's database, and what it
|
|
497
|
+
* found: one read through core, which the console makes only after a page's
|
|
498
|
+
* read failed. Null when the read passes or fails for another reason, which
|
|
499
|
+
* the page reports itself.
|
|
500
|
+
*/
|
|
501
|
+
var getSchemaMigrationRpc = createServerFn({ method: "GET" }).middleware([consoleAccess]).handler(createSsrRpc("28ea8c9bdbeb67f80c776990bb5bcb5c990f5129520631f241faf074d90fea02"));
|
|
502
|
+
var schemaMigrationQueryKey = ["schema-migration"];
|
|
503
|
+
var schemaMigrationQueryOptions = () => queryOptions({
|
|
504
|
+
queryKey: schemaMigrationQueryKey,
|
|
505
|
+
queryFn: () => getSchemaMigrationRpc(),
|
|
506
|
+
retry: false
|
|
507
|
+
});
|
|
508
|
+
var isSchemaQuery = (queryKey) => queryKey[0] === schemaMigrationQueryKey[0];
|
|
509
|
+
/**
|
|
510
|
+
* The schema fence's refusal of the console's database, asked for once any
|
|
511
|
+
* page's read fails, so a healthy console reads nothing more. `retry` asks
|
|
512
|
+
* again, and once the fence passes, reads the failed pages again.
|
|
513
|
+
*/
|
|
514
|
+
var useSchemaMigration = () => {
|
|
515
|
+
const queryClient = useQueryClient();
|
|
516
|
+
const cache = queryClient.getQueryCache();
|
|
517
|
+
const failing = (0, import_react.useSyncExternalStore)((onChange) => cache.subscribe(onChange), () => cache.getAll().some(({ queryKey, state }) => !isSchemaQuery(queryKey) && state.fetchFailureCount > 0), () => false);
|
|
518
|
+
const { data } = useQuery({
|
|
519
|
+
...schemaMigrationQueryOptions(),
|
|
520
|
+
enabled: failing
|
|
521
|
+
});
|
|
522
|
+
const retry = (0, import_react.useCallback)(async () => {
|
|
523
|
+
if (await queryClient.fetchQuery({
|
|
524
|
+
...schemaMigrationQueryOptions(),
|
|
525
|
+
staleTime: 0
|
|
526
|
+
}) !== null) return;
|
|
527
|
+
await queryClient.resetQueries({ predicate: ({ queryKey, state }) => !isSchemaQuery(queryKey) && (state.fetchFailureCount > 0 || state.status === "error") });
|
|
528
|
+
}, [queryClient]);
|
|
529
|
+
return {
|
|
530
|
+
status: data ?? null,
|
|
531
|
+
retry
|
|
532
|
+
};
|
|
533
|
+
};
|
|
534
|
+
var styles_default = "/assets/styles-Ccxthuz1.css";
|
|
535
|
+
var Route$5 = createRootRouteWithContext()({
|
|
346
536
|
head: () => ({
|
|
347
537
|
meta: [
|
|
348
538
|
{ charSet: "utf-8" },
|
|
@@ -400,7 +590,7 @@ function RootDocument({ children }) {
|
|
|
400
590
|
});
|
|
401
591
|
}
|
|
402
592
|
function RootLayout() {
|
|
403
|
-
const { access, providers } = Route$
|
|
593
|
+
const { access, providers } = Route$5.useLoaderData();
|
|
404
594
|
if (access.status !== "authorized") return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ConsoleAccessPage, {
|
|
405
595
|
access,
|
|
406
596
|
providers
|
|
@@ -408,79 +598,135 @@ function RootLayout() {
|
|
|
408
598
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AuthorizedConsole, { canSignOut: providers.length > 0 });
|
|
409
599
|
}
|
|
410
600
|
function AuthorizedConsole({ canSignOut }) {
|
|
601
|
+
const schema = useSchemaMigration();
|
|
411
602
|
(0, import_react.useEffect)(() => {}, []);
|
|
412
603
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(SidebarProvider, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(AppSidebar, { canSignOut }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SidebarInset, {
|
|
413
604
|
className: "min-h-0 min-w-0 overflow-hidden",
|
|
414
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
605
|
+
children: schema.status ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SchemaMigrationRequired, {
|
|
606
|
+
status: schema.status,
|
|
607
|
+
onRetry: schema.retry
|
|
608
|
+
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Outlet, {})
|
|
415
609
|
})] });
|
|
416
610
|
}
|
|
417
|
-
var $$splitComponentImporter = () => import("./api-keys-
|
|
418
|
-
var $$splitNotFoundComponentImporter = () => import("./api-keys-
|
|
419
|
-
var Route$
|
|
611
|
+
var $$splitComponentImporter = () => import("./api-keys-D5dyA4D1.mjs");
|
|
612
|
+
var $$splitNotFoundComponentImporter = () => import("./api-keys-yFlQDwQF.mjs");
|
|
613
|
+
var Route$4 = createFileRoute("/api-keys")({
|
|
420
614
|
beforeLoad: ({ context }) => requireConsoleFeature(context.queryClient, "apiKeys"),
|
|
421
615
|
notFoundComponent: lazyRouteComponent($$splitNotFoundComponentImporter, "notFoundComponent"),
|
|
422
616
|
component: lazyRouteComponent($$splitComponentImporter, "component")
|
|
423
617
|
});
|
|
618
|
+
var handle = async ({ request }) => {
|
|
619
|
+
const { serveNativeBuildQr } = await import("./nativeBuildQr-84cnFQPX.mjs");
|
|
620
|
+
return serveNativeBuildQr(request);
|
|
621
|
+
};
|
|
622
|
+
var Route$3 = createFileRoute("/_hot-updater/native-builds/qr")({ server: { handlers: { ANY: handle } } });
|
|
424
623
|
var handleAuthRequest = async ({ request }) => {
|
|
425
|
-
const { handleConsoleAuth } = await import("./auth.server-
|
|
624
|
+
const { handleConsoleAuth } = await import("./auth.server-DYS1OJ6P.mjs");
|
|
426
625
|
return handleConsoleAuth(request);
|
|
427
626
|
};
|
|
428
|
-
var Route$
|
|
627
|
+
var Route$2 = createFileRoute("/api/auth/$")({ server: { handlers: {
|
|
429
628
|
GET: handleAuthRequest,
|
|
430
629
|
POST: handleAuthRequest
|
|
431
630
|
} } });
|
|
432
|
-
var Route = createFileRoute("/api/bundles/$bundleId/download")({ server: { handlers: { GET: async ({ params, request }) => {
|
|
433
|
-
const { prepareConfig } = await import("./config.server-
|
|
434
|
-
const { downloadBundle } = await import("./downloadBundle-
|
|
631
|
+
var Route$1 = createFileRoute("/api/bundles/$bundleId/download")({ server: { handlers: { GET: async ({ params, request }) => {
|
|
632
|
+
const { prepareConfig } = await import("./config.server-NnMFjMFX.mjs");
|
|
633
|
+
const { downloadBundle } = await import("./downloadBundle-DCmr7vsj.mjs");
|
|
435
634
|
const { core, storage } = await prepareConfig(request);
|
|
436
635
|
return downloadBundle(params.bundleId, {
|
|
437
636
|
core,
|
|
438
637
|
storage
|
|
439
638
|
});
|
|
440
639
|
} } } });
|
|
640
|
+
/**
|
|
641
|
+
* Whether a request is a browser opening the URL as a page, as a phone does
|
|
642
|
+
* after scanning a QR code, rather than a script fetching it.
|
|
643
|
+
*/
|
|
644
|
+
var isNavigation = (request) => request.headers.get("sec-fetch-mode") === "navigate" || (request.headers.get("accept") ?? "").includes("text/html");
|
|
645
|
+
var Route = createFileRoute("/api/native-builds/$buildId/download")({ server: { handlers: { GET: async ({ params, request }) => {
|
|
646
|
+
const { prepareConfig } = await import("./config.server-NnMFjMFX.mjs");
|
|
647
|
+
const { downloadNativeBuild } = await import("./nativeBuilds-B_7BPjt_.mjs");
|
|
648
|
+
let deps;
|
|
649
|
+
try {
|
|
650
|
+
deps = await prepareConfig(request);
|
|
651
|
+
} catch (error) {
|
|
652
|
+
if (error instanceof Response && error.status === 401 && isNavigation(request)) {
|
|
653
|
+
const buildId = encodeURIComponent(params.buildId);
|
|
654
|
+
const returnTo = encodeURIComponent(`../api/native-builds/${buildId}/download`);
|
|
655
|
+
return new Response(null, {
|
|
656
|
+
headers: {
|
|
657
|
+
"cache-control": "no-store",
|
|
658
|
+
location: `../../../native-builds/${buildId}?returnTo=${returnTo}`
|
|
659
|
+
},
|
|
660
|
+
status: 302
|
|
661
|
+
});
|
|
662
|
+
}
|
|
663
|
+
throw error;
|
|
664
|
+
}
|
|
665
|
+
return downloadNativeBuild(params.buildId, deps);
|
|
666
|
+
} } } });
|
|
441
667
|
var rootRouteChildren = {
|
|
442
|
-
IndexRoute: Route$
|
|
668
|
+
IndexRoute: Route$12.update({
|
|
443
669
|
id: "/",
|
|
444
670
|
path: "/",
|
|
445
|
-
getParentRoute: () => Route$
|
|
671
|
+
getParentRoute: () => Route$5
|
|
446
672
|
}),
|
|
447
|
-
ApiKeysRoute: Route$
|
|
673
|
+
ApiKeysRoute: Route$4.update({
|
|
448
674
|
id: "/api-keys",
|
|
449
675
|
path: "/api-keys",
|
|
450
|
-
getParentRoute: () => Route$
|
|
676
|
+
getParentRoute: () => Route$5
|
|
451
677
|
}),
|
|
452
|
-
InsightsRoute: Route$
|
|
678
|
+
InsightsRoute: Route$6.update({
|
|
453
679
|
id: "/insights",
|
|
454
680
|
path: "/insights",
|
|
455
|
-
getParentRoute: () => Route$
|
|
681
|
+
getParentRoute: () => Route$5
|
|
456
682
|
}),
|
|
457
|
-
InstallationsRoute: Route$
|
|
683
|
+
InstallationsRoute: Route$8.update({
|
|
458
684
|
id: "/installations",
|
|
459
685
|
path: "/installations",
|
|
460
|
-
getParentRoute: () => Route$
|
|
686
|
+
getParentRoute: () => Route$5
|
|
687
|
+
}),
|
|
688
|
+
NativeBuildsRoute: Route$9.update({
|
|
689
|
+
id: "/native-builds",
|
|
690
|
+
path: "/native-builds",
|
|
691
|
+
getParentRoute: () => Route$5
|
|
461
692
|
}),
|
|
462
|
-
RemoteConfigRoute: Route$
|
|
693
|
+
RemoteConfigRoute: Route$11.update({
|
|
463
694
|
id: "/remote-config",
|
|
464
695
|
path: "/remote-config",
|
|
465
|
-
getParentRoute: () => Route$
|
|
696
|
+
getParentRoute: () => Route$5
|
|
466
697
|
}),
|
|
467
|
-
InsightsDistributionRoute: Route$
|
|
698
|
+
InsightsDistributionRoute: Route$7.update({
|
|
468
699
|
id: "/insights_/distribution",
|
|
469
700
|
path: "/insights/distribution",
|
|
470
|
-
getParentRoute: () => Route$
|
|
701
|
+
getParentRoute: () => Route$5
|
|
702
|
+
}),
|
|
703
|
+
NativeBuildsBuildIdRoute: Route$10.update({
|
|
704
|
+
id: "/native-builds_/$buildId",
|
|
705
|
+
path: "/native-builds/$buildId",
|
|
706
|
+
getParentRoute: () => Route$5
|
|
471
707
|
}),
|
|
472
|
-
|
|
708
|
+
HotUpdaterNativeBuildsQrRoute: Route$3.update({
|
|
709
|
+
id: "/_hot-updater/native-builds/qr",
|
|
710
|
+
path: "/_hot-updater/native-builds/qr",
|
|
711
|
+
getParentRoute: () => Route$5
|
|
712
|
+
}),
|
|
713
|
+
ApiAuthSplatRoute: Route$2.update({
|
|
473
714
|
id: "/api/auth/$",
|
|
474
715
|
path: "/api/auth/$",
|
|
475
|
-
getParentRoute: () => Route$
|
|
716
|
+
getParentRoute: () => Route$5
|
|
476
717
|
}),
|
|
477
|
-
ApiBundlesBundleIdDownloadRoute: Route.update({
|
|
718
|
+
ApiBundlesBundleIdDownloadRoute: Route$1.update({
|
|
478
719
|
id: "/api/bundles/$bundleId/download",
|
|
479
720
|
path: "/api/bundles/$bundleId/download",
|
|
480
|
-
getParentRoute: () => Route$
|
|
721
|
+
getParentRoute: () => Route$5
|
|
722
|
+
}),
|
|
723
|
+
ApiNativeBuildsBuildIdDownloadRoute: Route.update({
|
|
724
|
+
id: "/api/native-builds/$buildId/download",
|
|
725
|
+
path: "/api/native-builds/$buildId/download",
|
|
726
|
+
getParentRoute: () => Route$5
|
|
481
727
|
})
|
|
482
728
|
};
|
|
483
|
-
var routeTree = Route$
|
|
729
|
+
var routeTree = Route$5._addFileChildren(rootRouteChildren)._addFileTypes();
|
|
484
730
|
/** A location's scroll-restoration key: its route's own, else its history entry's. */
|
|
485
731
|
var routeScrollRestorationKey = (router, location) => {
|
|
486
732
|
const [, , foundRoute] = router.getMatchedRoutes(location.pathname);
|
|
@@ -488,7 +734,7 @@ var routeScrollRestorationKey = (router, location) => {
|
|
|
488
734
|
return routeKey?.(location) ?? location.state.__TSR_key;
|
|
489
735
|
};
|
|
490
736
|
var getRouter = () => {
|
|
491
|
-
const queryClient = new QueryClient();
|
|
737
|
+
const queryClient = new QueryClient({ defaultOptions: { queries: { retry: (failures) => failures < 3 && !queryClient.getQueryData(schemaMigrationQueryKey) } } });
|
|
492
738
|
const router = createRouter({
|
|
493
739
|
routeTree,
|
|
494
740
|
context: { queryClient },
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { l as createServerFn } from "./createServerFn-AQvBMBjJ.mjs";
|
|
2
|
+
import { t as consoleAccess } from "./console-access-33BNlH97.mjs";
|
|
3
3
|
import { yt as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
|
|
4
|
-
import {
|
|
5
|
-
import { A as createSsrRpc, C as Skeleton, O as buttonVariants, k as cn, r as Separator$1 } from "./sidebar-
|
|
6
|
-
import {
|
|
7
|
-
import { f as lazyRouteComponent, h as Link, p as createFileRoute } from "../_libs/@tanstack/react-router+[...].mjs";
|
|
4
|
+
import { Q as ChartLine, Z as ChartNoAxesCombined, d as SlidersHorizontal, k as KeyRound } from "../_libs/lucide-react.mjs";
|
|
5
|
+
import { A as createSsrRpc, C as Skeleton, O as buttonVariants, k as cn, r as Separator$1 } from "./sidebar-DB2YQlok.mjs";
|
|
6
|
+
import { d as CardTitle, l as CardFooter, o as Card, s as CardContent, u as CardHeader } from "./badge-CEdVRgyl.mjs";
|
|
8
7
|
import { i as useQuery } from "../_libs/tanstack__react-query.mjs";
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
|
|
8
|
+
import { n as consoleFeatures } from "./console-features-BTV-XuhQ.mjs";
|
|
9
|
+
import { f as lazyRouteComponent, h as Link, p as createFileRoute } from "../_libs/@tanstack/react-router+[...].mjs";
|
|
10
|
+
import { a as useConsoleFeatures, i as useConsoleFeature } from "./console-features-api-v1fSycue.mjs";
|
|
11
|
+
import { n as readRecoveryInput } from "./insights-recovery-BtXVU3ro.mjs";
|
|
12
|
+
import { i as failureRate, s as formatRate } from "./insights-failures-B9VPkzZE.mjs";
|
|
13
|
+
import { n as InfoTooltip, r as adoptionWindow } from "./insights-search-DKfxgHD3.mjs";
|
|
14
|
+
import { u as useUpdateFailuresQuery } from "./insights-api-BFARQ5ct.mjs";
|
|
15
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/routes-DyEM4b3x.js
|
|
16
16
|
var import_jsx_runtime = require_jsx_runtime();
|
|
17
17
|
/** What API key management adds: its navigation item. */
|
|
18
18
|
var apiKeysFeatureUi = { apiKeys: { navigation: {
|
|
@@ -396,7 +396,7 @@ function updateReleaseFilters(current, filters) {
|
|
|
396
396
|
scopeKey: next.scopeKey
|
|
397
397
|
});
|
|
398
398
|
}
|
|
399
|
-
var $$splitComponentImporter = () => import("./routes-
|
|
399
|
+
var $$splitComponentImporter = () => import("./routes-dQe3XhiS.mjs");
|
|
400
400
|
/**
|
|
401
401
|
* Opens a bundle from a click anywhere on its row or card, except on a
|
|
402
402
|
* control inside it, which keeps its own action.
|