@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.
Files changed (341) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/assets/ConsoleFeatureUnavailable-jB4Loglh.js +1 -0
  3. package/.output/public/assets/EventDetails-B6yUsyNA.js +1 -0
  4. package/.output/public/assets/HashValueDisplay-BFX_kY3-.js +1 -0
  5. package/.output/public/assets/InsightsInfo-BNO0WznZ.js +1 -0
  6. package/.output/public/assets/InsightsPageHeader-B892oVml.js +1 -0
  7. package/.output/public/assets/NotFoundPage-DIqCpWa3.js +1 -0
  8. package/.output/public/assets/alert-dialog-Bbk_4-WJ.js +1 -0
  9. package/.output/public/assets/api-DCM0wr6O.js +1 -0
  10. package/.output/public/assets/api-keys-CIO9L_wu.js +1 -0
  11. package/.output/public/assets/api-keys-DVTL_--f.js +1 -0
  12. package/.output/public/assets/arrow-left-CnMYpqB7.js +1 -0
  13. package/.output/public/assets/arrow-up-right-BtffZA6e.js +1 -0
  14. package/.output/public/assets/chevron-right-BqD5wtFb.js +1 -0
  15. package/.output/public/assets/clipboard-DS9ucUQL.js +1 -0
  16. package/.output/public/assets/console-features-api-BH5m_PtQ.js +1 -0
  17. package/.output/public/assets/dialog-Bqbb7B0N.js +1 -0
  18. package/.output/public/assets/dist-LxKJB-Vu.js +1 -0
  19. package/.output/public/assets/empty-CuT2UhFp.js +1 -0
  20. package/.output/public/assets/field-BBDpjIqu.js +1 -0
  21. package/.output/public/assets/index-6o51GkFe.js +11 -0
  22. package/.output/public/assets/input-group-ja_30qaF.js +1 -0
  23. package/.output/public/assets/insights-CmraDzQh.js +1 -0
  24. package/.output/public/assets/insights-CxZ2GCYV.js +2 -0
  25. package/.output/public/assets/insights-api-BigAU9sZ.js +1 -0
  26. package/.output/public/assets/insights-usage-rpc-DYEhsCKT.js +1 -0
  27. package/.output/public/assets/insights-vNRCrfnS.js +42 -0
  28. package/.output/public/assets/insights_.distribution-ChOerfJt.js +1 -0
  29. package/.output/public/assets/insights_.distribution-D-e4iga8.js +1 -0
  30. package/.output/public/assets/insights_.distribution-DZtkibX1.js +2 -0
  31. package/.output/public/assets/installations-BazSJXE0.js +2 -0
  32. package/.output/public/assets/installations-ClHTqdAO.js +1 -0
  33. package/.output/public/assets/installations-DpKsBuHi.js +1 -0
  34. package/.output/public/assets/key-round-wS_SIZ6b.js +1 -0
  35. package/.output/public/assets/list-CgrYiadM.js +1 -0
  36. package/.output/public/assets/refresh-cw-BYgoNCco.js +1 -0
  37. package/.output/public/assets/remote-config-BWwHOkCK.js +1 -0
  38. package/.output/public/assets/remote-config-Br56BODb.js +6 -0
  39. package/.output/public/assets/remote-config-CXOi0LRu.js +1 -0
  40. package/.output/public/assets/routes-B88Erkpk.js +2 -0
  41. package/.output/public/assets/routes-CfzsAleC.js +1 -0
  42. package/.output/public/assets/search-DaTDPW25.js +1 -0
  43. package/.output/public/assets/select-BZZBXMkr.js +1 -0
  44. package/.output/public/assets/sidebar-DNVyJPfX.js +3 -0
  45. package/.output/public/assets/smartphone-DpTFgtKf.js +1 -0
  46. package/.output/public/assets/styles-DTGEAJFv.css +2 -0
  47. package/.output/public/assets/switch-DZ1TPwx-.js +1 -0
  48. package/.output/public/assets/table-Gm4qRWwE.js +1 -0
  49. package/.output/public/assets/tabs-C7FOEjFC.js +1 -0
  50. package/.output/public/assets/undo-2-CmrHjwFc.js +1 -0
  51. package/.output/public/assets/useCompositeListItem-9E4pj_CH.js +1 -0
  52. package/.output/public/assets/valueToPercent-CH8GCHaL.js +1 -0
  53. package/.output/server/__23tanstack-start-server-fn-resolver-BpRlos5Q.mjs +170 -0
  54. package/.output/server/_libs/@base-ui/react+[...].mjs +4389 -4207
  55. package/.output/server/_libs/@tanstack/react-router+[...].mjs +3802 -4022
  56. package/.output/server/_libs/@tanstack/react-router-ssr-query+[...].mjs +140 -97
  57. package/.output/server/_libs/lucide-react.mjs +221 -9
  58. package/.output/server/_libs/next-themes.mjs +1 -1
  59. package/.output/server/_libs/react-redux+[...].mjs +1 -1
  60. package/.output/server/_libs/recharts+[...].mjs +483 -901
  61. package/.output/server/_libs/sonner.mjs +1 -1
  62. package/.output/server/_libs/tanstack__history.mjs +68 -41
  63. package/.output/server/_libs/tanstack__query-core.mjs +2010 -309
  64. package/.output/server/_libs/tanstack__react-query.mjs +448 -21
  65. package/.output/server/_libs/verkit.mjs +102 -1
  66. package/.output/server/_ssr/BundleIdDisplay-x94o9rlU.mjs +13 -0
  67. package/.output/server/_ssr/ConsoleFeatureUnavailable-ldW8v8-q.mjs +58 -0
  68. package/.output/server/_ssr/EventDetails-Q8kfj9Nr.mjs +344 -0
  69. package/.output/server/_ssr/{HashValueDisplay-CyMmr0O9.mjs → HashValueDisplay-n1GholGS.mjs} +3 -3
  70. package/.output/server/_ssr/InsightsInfo-DuJFatQO.mjs +75 -0
  71. package/.output/server/_ssr/InsightsPageHeader-BSUX3Ye9.mjs +145 -0
  72. package/.output/server/_ssr/NotFoundPage-DZzOOzS3.mjs +37 -0
  73. package/.output/server/_ssr/{dialog-CKvQ4VIE.mjs → alert-dialog-C43Doa0I.mjs} +6 -83
  74. package/.output/server/_ssr/{api-keys-CzZ7Ont4.mjs → api-keys-B4sYm8dM.mjs} +48 -9
  75. package/.output/server/_ssr/api-keys-CEnM9fqG.mjs +5 -0
  76. package/.output/server/_ssr/api-keys-rpc-BIFuUgMt.mjs +52 -0
  77. package/.output/server/_ssr/api-oZjRn9tP.mjs +186 -0
  78. package/.output/server/_ssr/api-rpc-BNiFRRK8.mjs +240 -0
  79. package/.output/server/_ssr/{auth-BF8mbAgF.mjs → auth-UP0wXs4i.mjs} +1 -1
  80. package/.output/server/_ssr/{auth-rpc-DH6Bhwcz.mjs → auth-rpc-DnZqYxyq.mjs} +6 -6
  81. package/.output/server/_ssr/auth.server-DFpyxRDd.mjs +5374 -0
  82. package/.output/server/_ssr/bundleActivity-M5gzBFNg.mjs +18 -0
  83. package/.output/server/_ssr/config-WVX4IxSR.mjs +15 -0
  84. package/.output/server/_ssr/config.server-DskXCAyI.mjs +35 -0
  85. package/.output/server/_ssr/console-access-BJfAXknd.mjs +17 -0
  86. package/.output/server/_ssr/console-features-Oz0q20jJ.mjs +61 -0
  87. package/.output/server/_ssr/console-features-api-C9kiKvaV.mjs +43 -0
  88. package/.output/server/_ssr/console-features-rpc-P0GL7Z-R.mjs +19 -0
  89. package/.output/server/_ssr/{createServerFn-B2hcXoPM.mjs → createMiddleware-Cm6Tn0_Y.mjs} +67 -56
  90. package/.output/server/_ssr/{createServerRpc-DB29C_5p.mjs → createServerRpc-RLR4H-Fn.mjs} +2 -2
  91. package/.output/server/_ssr/databaseConfig-C5SkAyUy.mjs +5 -0
  92. package/.output/server/_ssr/{databaseJsonValue-d6I3nAS4.mjs → databaseJsonValue-Csbuzc9Q.mjs} +28 -5
  93. package/.output/server/_ssr/databaseRows-CPphvbag.mjs +73 -0
  94. package/.output/server/_ssr/dialog-BbYDMjdC.mjs +84 -0
  95. package/.output/server/_ssr/{dist-CyzPaI5v.mjs → dist-CbQbBIw-.mjs} +140 -7
  96. package/.output/server/_ssr/{downloadBundle-CI7JUKvC.mjs → downloadBundle-CZysjmNW.mjs} +10 -10
  97. package/.output/server/_ssr/empty-CVLGfxuu.mjs +60 -0
  98. package/.output/server/_ssr/{empty-plugin-adapters-B5QvGpEl.mjs → empty-plugin-adapters-CPtwX8a7.mjs} +1 -1
  99. package/.output/server/_ssr/failureReports-DKDhVsXA.mjs +33 -0
  100. package/.output/server/_ssr/field-asw83X0v.mjs +189 -0
  101. package/.output/server/_ssr/getBundleChildren-Cv9iz1As.mjs +22 -0
  102. package/.output/server/_ssr/{input-group-BrGSjz4S.mjs → input-group-CuYJHosb.mjs} +2 -2
  103. package/.output/server/_ssr/insights-B55FG5fm.mjs +14 -0
  104. package/.output/server/_ssr/insights-CWnHIFUV.mjs +5 -0
  105. package/.output/server/_ssr/insights-CpLpedFZ.mjs +2315 -0
  106. package/.output/server/_ssr/insights-api-sjws23WF.mjs +122 -0
  107. package/.output/server/_ssr/insights-errors-BjnFUyZj.mjs +34 -0
  108. package/.output/server/_ssr/insights-failures-rpc-BvbWvqNf.mjs +36 -0
  109. package/.output/server/_ssr/insights-failures-xaa41Buf.mjs +46 -0
  110. package/.output/server/_ssr/insights-recovery-BWQhiZaF.mjs +28 -0
  111. package/.output/server/_ssr/insights-recovery-rpc-GiYXdkaY.mjs +32 -0
  112. package/.output/server/_ssr/{insights-rpc-DDKmIrpV.mjs → insights-rpc-DP_8Rmz4.mjs} +22 -14
  113. package/.output/server/_ssr/insights-usage-BpBM0U0c.mjs +29 -0
  114. package/.output/server/_ssr/insights-usage-rpc-BiolgB8e.mjs +29 -0
  115. package/.output/server/_ssr/insights-usage-rpc-KStL0zOx.mjs +41 -0
  116. package/.output/server/_ssr/insightsUsage-CzhVjsc8.mjs +56 -0
  117. package/.output/server/_ssr/insights_.distribution-CVrnbP3R.mjs +7 -0
  118. package/.output/server/_ssr/insights_.distribution-D2HaNTAA.mjs +16 -0
  119. package/.output/server/_ssr/{insights_.distribution-cIsU-kHG.mjs → insights_.distribution-DN9pR422.mjs} +50 -22
  120. package/.output/server/_ssr/installations-BHmbbnH8.mjs +5 -0
  121. package/.output/server/_ssr/{installations-C5anhyP0.mjs → installations-BSCmFq8Q.mjs} +279 -367
  122. package/.output/server/_ssr/installations-DD1g__Nc.mjs +69 -0
  123. package/.output/server/_ssr/listReleases-BfUBlCHo.mjs +79 -0
  124. package/.output/server/_ssr/plugins-BaD1slHx.mjs +2086 -0
  125. package/.output/server/_ssr/release-adoption-005tQRpo.mjs +55 -0
  126. package/.output/server/_ssr/release-adoption-rpc-BsstqxUp.mjs +41 -0
  127. package/.output/server/_ssr/releaseAdoption-CtOFkwli.mjs +114 -0
  128. package/.output/server/_ssr/releaseManagement-DFMUnDF5.mjs +11 -0
  129. package/.output/server/_ssr/remote-config-C2Ee8lXO.mjs +5 -0
  130. package/.output/server/_ssr/remote-config-Dv1ccMo-.mjs +17 -0
  131. package/.output/server/_ssr/remote-config-of0lGQH8.mjs +2648 -0
  132. package/.output/server/_ssr/remote-config-rpc-BzX31mUS.mjs +115 -0
  133. package/.output/server/_ssr/rolldown-runtime-rSIU-vHC.mjs +13 -0
  134. package/.output/server/_ssr/{router-BuanSsRI.mjs → router-D8NuoJ_I.mjs} +107 -134
  135. package/.output/server/_ssr/{routes-DY-vqU6R.mjs → routes-DgvnFqDy.mjs} +195 -429
  136. package/.output/server/_ssr/routes-V8sDybGf.mjs +409 -0
  137. package/.output/server/_ssr/runtime.server-De0QVWc9.mjs +104 -0
  138. package/.output/server/_ssr/schema-BiAVyEj2.mjs +361 -0
  139. package/.output/server/_ssr/{select-DD2szs3Y.mjs → select-t3iXRwc9.mjs} +3 -3
  140. package/.output/server/_ssr/server-h4VxnExB.mjs +8325 -0
  141. package/.output/server/_ssr/{createSsrRpc-CdlfejmI.mjs → sidebar-DJcErBMo.mjs} +107 -47
  142. package/.output/server/_ssr/ssr.mjs +1 -1
  143. package/.output/server/_ssr/start-BfFbHKMK.mjs +4 -0
  144. package/.output/server/_ssr/switch-E-btwMGt.mjs +43 -0
  145. package/.output/server/_ssr/{table-CTj6n-4F.mjs → table-37Dd23TN.mjs} +2 -2
  146. package/.output/server/_ssr/tabs-DEFnTm95.mjs +45 -0
  147. package/.output/server/_ssr/updateFailures-H6pnnYK4.mjs +40 -0
  148. package/.output/server/_ssr/{uuidv7-D0QFkPL_.mjs → uuidv7-C88s9jWF.mjs} +2 -2
  149. package/.output/server/_tanstack-start-manifest_v-55AGsehh.mjs +139 -0
  150. package/.output/server/index.mjs +309 -211
  151. package/LICENSE +13 -14
  152. package/README.md +80 -71
  153. package/lib/index.d.mts +23 -11
  154. package/lib/vite-internal.mjs +13 -3
  155. package/lib/vite.d.mts +2 -0
  156. package/package.json +14 -14
  157. package/src/components/AppSidebar.tsx +69 -74
  158. package/src/components/ConsoleFeatureUnavailable.tsx +80 -0
  159. package/src/components/NotFoundPage.tsx +7 -7
  160. package/src/components/features/FeatureSlots.tsx +103 -0
  161. package/src/components/features/api-keys/apiKeysFeatureUi.tsx +15 -0
  162. package/src/components/features/bundles/BundleMetadata.tsx +8 -5
  163. package/src/components/features/bundles/RolloutCohortsDialog.tsx +1 -1
  164. package/src/components/features/channels/ChannelManagementDialog.tsx +8 -6
  165. package/src/components/features/insights/AppUsage.tsx +41 -14
  166. package/src/components/features/insights/BuiltinBundle.tsx +36 -0
  167. package/src/components/features/insights/ComparedBundlesChart.tsx +310 -0
  168. package/src/components/features/insights/EstimatedCount.tsx +18 -0
  169. package/src/components/features/insights/EventDetails.tsx +390 -26
  170. package/src/components/features/insights/EventHistoryCard.tsx +111 -25
  171. package/src/components/features/insights/EventHistoryList.tsx +1 -1
  172. package/src/components/features/insights/FailureReports.tsx +407 -0
  173. package/src/components/features/insights/InsightsControls.tsx +240 -142
  174. package/src/components/features/insights/InsightsErrorAlert.tsx +14 -1
  175. package/src/components/features/insights/InsightsOverview.tsx +601 -403
  176. package/src/components/features/insights/InsightsPageHeader.tsx +19 -14
  177. package/src/components/features/insights/InsightsPeriodSelector.tsx +67 -12
  178. package/src/components/features/insights/InstallationHistoryCard.tsx +65 -10
  179. package/src/components/features/insights/InstallationMatchesCard.tsx +1 -1
  180. package/src/components/features/insights/ReleaseActivity.tsx +308 -0
  181. package/src/components/features/insights/ReportingDevicesSummary.tsx +13 -13
  182. package/src/components/features/insights/RollbackButton.tsx +118 -0
  183. package/src/components/features/insights/UpdateFailures.tsx +382 -0
  184. package/src/components/features/insights/insightsFeatureUi.tsx +35 -0
  185. package/src/components/features/releases/ReleaseEditorSheet.tsx +27 -13
  186. package/src/components/features/remote-config/ConditionDialog.tsx +592 -0
  187. package/src/components/features/remote-config/ConditionsCard.tsx +247 -0
  188. package/src/components/features/remote-config/ParameterDialog.tsx +426 -0
  189. package/src/components/features/remote-config/ParametersCard.tsx +254 -0
  190. package/src/components/features/remote-config/PreviewCard.tsx +284 -0
  191. package/src/components/features/remote-config/PublishDialog.tsx +325 -0
  192. package/src/components/features/remote-config/RemoteConfigPage.tsx +353 -0
  193. package/src/components/features/remote-config/RuleSummary.tsx +21 -0
  194. package/src/components/features/remote-config/ValueInput.tsx +151 -0
  195. package/src/components/features/remote-config/VersionsCard.tsx +384 -0
  196. package/src/components/features/remote-config/remoteConfigFeatureUi.tsx +15 -0
  197. package/src/components/features/remote-config/useDateTimeText.ts +16 -0
  198. package/src/components/ui/sidebar.tsx +22 -29
  199. package/src/index.ts +26 -19
  200. package/src/lib/api-keys-api.ts +0 -28
  201. package/src/lib/api-keys-rpc.ts +27 -38
  202. package/src/lib/api-rpc.ts +125 -288
  203. package/src/lib/api.ts +15 -134
  204. package/src/lib/bundle-activity.ts +24 -4
  205. package/src/lib/console-access.ts +20 -0
  206. package/src/lib/console-features-api.ts +68 -0
  207. package/src/lib/console-features-rpc.ts +13 -0
  208. package/src/lib/console-features.ts +98 -0
  209. package/src/lib/insights-api.ts +56 -2
  210. package/src/lib/insights-errors.ts +64 -0
  211. package/src/lib/insights-failures-rpc.ts +36 -0
  212. package/src/lib/insights-failures.ts +130 -0
  213. package/src/lib/insights-recovery-rpc.ts +13 -17
  214. package/src/lib/insights-recovery.ts +12 -36
  215. package/src/lib/insights-retention.ts +21 -0
  216. package/src/lib/insights-rpc.ts +30 -12
  217. package/src/lib/insights-search.ts +50 -4
  218. package/src/lib/insights-usage-rpc.ts +15 -9
  219. package/src/lib/insights-usage.ts +41 -3
  220. package/src/lib/insights-view.ts +34 -5
  221. package/src/lib/release-adoption-api.ts +214 -0
  222. package/src/lib/release-adoption-rpc.ts +49 -0
  223. package/src/lib/release-adoption.ts +164 -0
  224. package/src/lib/remote-config-api.ts +119 -0
  225. package/src/lib/remote-config-draft.ts +666 -0
  226. package/src/lib/remote-config-rpc.ts +196 -0
  227. package/src/lib/scroll-restoration.ts +21 -0
  228. package/src/lib/server/auth.server.ts +13 -5
  229. package/src/lib/server/bundleActivity.ts +27 -28
  230. package/src/lib/server/config.server.ts +21 -76
  231. package/src/lib/server/console-feature-apis.ts +70 -0
  232. package/src/lib/server/console-runtime.server.ts +82 -38
  233. package/src/lib/server/downloadBundle.ts +14 -15
  234. package/src/lib/server/failureReports.ts +50 -0
  235. package/src/lib/server/getBundleChildren.ts +31 -122
  236. package/src/lib/server/insightsUsage.ts +52 -113
  237. package/src/lib/server/listReleases.ts +109 -44
  238. package/src/lib/server/releaseAdoption.ts +151 -0
  239. package/src/lib/server/releaseReachability.ts +8 -8
  240. package/src/lib/server/remoteConfig.ts +75 -0
  241. package/src/lib/server/runtime.server.ts +120 -31
  242. package/src/lib/server/updateFailures.ts +66 -0
  243. package/src/lib/use-dialog-target.ts +27 -0
  244. package/src/routeTree.gen.ts +44 -44
  245. package/src/router.tsx +3 -2
  246. package/src/routes/-installations-search.ts +32 -8
  247. package/src/routes/-releases-search.ts +76 -29
  248. package/src/routes/__root.tsx +7 -1
  249. package/src/routes/api/bundles/$bundleId/download.ts +2 -5
  250. package/src/routes/api-keys.tsx +5 -2
  251. package/src/routes/index.tsx +210 -152
  252. package/src/routes/insights.tsx +91 -23
  253. package/src/routes/insights_.distribution.tsx +50 -9
  254. package/src/routes/installations.tsx +97 -40
  255. package/src/routes/remote-config.tsx +42 -0
  256. package/src/styles.css +9 -0
  257. package/src/vite-internal.ts +15 -3
  258. package/src/vite.ts +2 -0
  259. package/.output/public/assets/HashValueDisplay-BpTc3Oyg.js +0 -1
  260. package/.output/public/assets/InsightsPageHeader-DC2eEst8.js +0 -1
  261. package/.output/public/assets/api-CdUyUqzR.js +0 -42
  262. package/.output/public/assets/api-keys-64PM9PwW.js +0 -1
  263. package/.output/public/assets/api-keys-api-BeaJnvY5.js +0 -1
  264. package/.output/public/assets/arrow-left-04Rh8Zgp.js +0 -1
  265. package/.output/public/assets/card-CYHs5FZv.js +0 -1
  266. package/.output/public/assets/chart-no-axes-combined-DwyMsVFW.js +0 -1
  267. package/.output/public/assets/createServerFn-DU71xucx.js +0 -3
  268. package/.output/public/assets/dialog-IVMkBRCq.js +0 -1
  269. package/.output/public/assets/dist-BR4GzeEu.js +0 -1
  270. package/.output/public/assets/field-B3CYDpjg.js +0 -1
  271. package/.output/public/assets/index-Cb_D1D6N.js +0 -10
  272. package/.output/public/assets/info-C3y9HNoU.js +0 -1
  273. package/.output/public/assets/input-group-nLZylhWF.js +0 -1
  274. package/.output/public/assets/insights-Bm9v8uO3.js +0 -2
  275. package/.output/public/assets/insights-DS3iO7Up.js +0 -1
  276. package/.output/public/assets/insights-search-Byj3g3Mp.js +0 -1
  277. package/.output/public/assets/insights-usage-rpc-BaGR3lgq.js +0 -1
  278. package/.output/public/assets/insights_.distribution-B1i6cjlQ.js +0 -1
  279. package/.output/public/assets/insights_.distribution-C1Wf27eB.js +0 -2
  280. package/.output/public/assets/installations-CkFW4fV9.js +0 -2
  281. package/.output/public/assets/installations-DxTaIcHD.js +0 -1
  282. package/.output/public/assets/lazyRouteComponent-BapzjYnb.js +0 -1
  283. package/.output/public/assets/list-Dqt53fWZ.js +0 -1
  284. package/.output/public/assets/loader-circle-CUKfUqow.js +0 -1
  285. package/.output/public/assets/preload-helper-ClBMtM1g.js +0 -1
  286. package/.output/public/assets/refresh-cw-CNE_2PnD.js +0 -1
  287. package/.output/public/assets/routes-Cgtvspjg.js +0 -2
  288. package/.output/public/assets/routes-O2r2UUN8.js +0 -1
  289. package/.output/public/assets/shield-check-BFcJ46kz.js +0 -1
  290. package/.output/public/assets/signing-BgspC-xP.js +0 -1
  291. package/.output/public/assets/styles-DnrWuBwd.css +0 -2
  292. package/.output/public/assets/table-BuWQgxJJ.js +0 -1
  293. package/.output/public/assets/useMutation-CSV9NCUl.js +0 -1
  294. package/.output/public/assets/useOpenInteractionType-D5kduCTD.js +0 -1
  295. package/.output/public/assets/valueToPercent-BAtcbSLk.js +0 -1
  296. package/.output/server/__23tanstack-start-server-fn-resolver-DBRojHaG.mjs +0 -150
  297. package/.output/server/_ssr/InsightsPageHeader-mtxVuZKK.mjs +0 -64
  298. package/.output/server/_ssr/api-BfCgYlj5.mjs +0 -332
  299. package/.output/server/_ssr/api-keys-api-C3oeq01R.mjs +0 -60
  300. package/.output/server/_ssr/api-keys-rpc-CdPFdGOx.mjs +0 -136
  301. package/.output/server/_ssr/api-rpc-B2E1ZIG5.mjs +0 -1399
  302. package/.output/server/_ssr/auth.server-CmicHh0J.mjs +0 -47
  303. package/.output/server/_ssr/bundle-signing-rpc-Di7-I6fE.mjs +0 -16
  304. package/.output/server/_ssr/bundle-signing.server-Uqt1OF49.mjs +0 -12
  305. package/.output/server/_ssr/bundleActivity-pBrPSG01.mjs +0 -28
  306. package/.output/server/_ssr/card-Bemj0dpY.mjs +0 -108
  307. package/.output/server/_ssr/config-Dv8qLDZ0.mjs +0 -13
  308. package/.output/server/_ssr/config.server-B8WsT3s0.mjs +0 -368
  309. package/.output/server/_ssr/databaseRows-5bCRTxm-.mjs +0 -126
  310. package/.output/server/_ssr/deleteBundle-8X-jq7Z7.mjs +0 -66
  311. package/.output/server/_ssr/field-BrQ2u0fT.mjs +0 -74
  312. package/.output/server/_ssr/getBundleChildren-DoL8l_AS.mjs +0 -50
  313. package/.output/server/_ssr/insights-BwQ-wF2a.mjs +0 -10
  314. package/.output/server/_ssr/insights-gr1I_dJU.mjs +0 -938
  315. package/.output/server/_ssr/insights-recovery-Cv6RSyeR.mjs +0 -21
  316. package/.output/server/_ssr/insights-recovery-rpc-DOzxfYfv.mjs +0 -37
  317. package/.output/server/_ssr/insights-search-1czJMZgk.mjs +0 -21
  318. package/.output/server/_ssr/insights-usage-rpc-4ImOq_0p.mjs +0 -184
  319. package/.output/server/_ssr/insights-usage-rpc-BUruODjE.mjs +0 -24
  320. package/.output/server/_ssr/insightsContract-B09K_Px1.mjs +0 -303
  321. package/.output/server/_ssr/insightsHistory-Ci4rYAgl.mjs +0 -41
  322. package/.output/server/_ssr/insightsRecovery-CaghWL2t.mjs +0 -113
  323. package/.output/server/_ssr/insightsUsage-DNIj6jxF.mjs +0 -71
  324. package/.output/server/_ssr/insights_.distribution-VmHuikRE.mjs +0 -10
  325. package/.output/server/_ssr/installations-HXMF_kKf.mjs +0 -29
  326. package/.output/server/_ssr/routes-Dru3IRj0.mjs +0 -37
  327. package/.output/server/_ssr/runtime.server-CsiKFp_Z.mjs +0 -436
  328. package/.output/server/_ssr/server-DJm72Kj-.mjs +0 -7468
  329. package/.output/server/_ssr/signing-H8Lg4lPe.mjs +0 -133
  330. package/.output/server/_ssr/start-DpViQGnt.mjs +0 -4
  331. package/.output/server/_tanstack-start-manifest_v-DsFcTLw_.mjs +0 -125
  332. package/src/components/features/bundles/BundleActivityChart.tsx +0 -97
  333. package/src/components/features/bundles/BundleInsightsSummary.tsx +0 -126
  334. package/src/components/features/signing/BundleSigningPage.tsx +0 -139
  335. package/src/lib/bundle-signing-api.ts +0 -14
  336. package/src/lib/bundle-signing-rpc.ts +0 -16
  337. package/src/lib/server/bundle-signing.server.ts +0 -23
  338. package/src/lib/server/deleteBundle.ts +0 -145
  339. package/src/lib/server/insightsHistory.ts +0 -52
  340. package/src/lib/server/insightsRecovery.ts +0 -187
  341. package/src/routes/signing.tsx +0 -37
@@ -0,0 +1,115 @@
1
+ import { u as createServerFn } from "./createMiddleware-Cm6Tn0_Y.mjs";
2
+ import { t as consoleAccess } from "./console-access-BJfAXknd.mjs";
3
+ import { t as createServerRpc } from "./createServerRpc-RLR4H-Fn.mjs";
4
+ //#region node_modules/.nitro/vite/services/ssr/assets/remote-config-rpc-BzX31mUS.js
5
+ /** Remote Config, once the console's access check and the feature guard pass. */
6
+ var remoteConfig = async () => {
7
+ const [{ prepareConfig }, { requireFeature }] = await Promise.all([import("./config.server-DskXCAyI.mjs"), import("./runtime.server-De0QVWc9.mjs")]);
8
+ const { runtime } = await prepareConfig();
9
+ return requireFeature(runtime, "remoteConfig");
10
+ };
11
+ var field = (input, key) => typeof input === "object" && input !== null ? Reflect.get(input, key) : void 0;
12
+ var versionNumber = (value, name) => {
13
+ if (typeof value !== "number" || !Number.isSafeInteger(value) || value < 0) throw new TypeError(`${name} must be a non-negative integer.`);
14
+ return value;
15
+ };
16
+ var parseCursor = (input) => {
17
+ const cursor = field(input, "cursor");
18
+ if (cursor !== void 0 && typeof cursor !== "string") throw new TypeError("cursor must be text.");
19
+ return cursor === void 0 ? {} : { cursor };
20
+ };
21
+ var parseVersion = (input) => ({ version: versionNumber(field(input, "version"), "version") });
22
+ var parsePublish = (input) => {
23
+ const description = field(input, "description");
24
+ if (description !== void 0 && typeof description !== "string") throw new TypeError("description must be text.");
25
+ return {
26
+ template: field(input, "template"),
27
+ baseVersion: versionNumber(field(input, "baseVersion"), "baseVersion"),
28
+ ...description === void 0 ? {} : { description }
29
+ };
30
+ };
31
+ var parseRollback = (input) => ({
32
+ version: versionNumber(field(input, "version"), "version"),
33
+ baseVersion: versionNumber(field(input, "baseVersion"), "baseVersion")
34
+ });
35
+ var CONTEXT_FIELDS = [
36
+ "platform",
37
+ "appVersion",
38
+ "channel",
39
+ "cohort",
40
+ "fingerprintHash"
41
+ ];
42
+ var parsePreview = (input) => {
43
+ const raw = field(input, "context");
44
+ const context = {};
45
+ for (const key of CONTEXT_FIELDS) {
46
+ const value = field(raw, key);
47
+ if (typeof value === "string" && value.trim().length > 0) context[key] = value.trim();
48
+ }
49
+ if (context.platform !== void 0 && context.platform !== "ios" && context.platform !== "android") throw new TypeError("platform must be \"ios\" or \"android\".");
50
+ const now = field(raw, "now");
51
+ if (now !== void 0 && (typeof now !== "number" || !Number.isFinite(now))) throw new TypeError("now must be a time in milliseconds since the epoch.");
52
+ return {
53
+ template: field(input, "template"),
54
+ context: {
55
+ ...context,
56
+ now: now ?? Date.now()
57
+ }
58
+ };
59
+ };
60
+ var getRemoteConfigRpc_createServerFn_handler = createServerRpc({
61
+ id: "0ccfae64b399b03d820328fa98a38e2caa0b622d3da5a7ca633c5a0e8101e3f6",
62
+ name: "getRemoteConfigRpc",
63
+ filename: "src/lib/remote-config-rpc.ts"
64
+ }, (opts) => getRemoteConfigRpc.__executeServer(opts));
65
+ var getRemoteConfigRpc = createServerFn({ method: "GET" }).middleware([consoleAccess]).handler(getRemoteConfigRpc_createServerFn_handler, async () => (await remoteConfig()).getActive());
66
+ var listRemoteConfigVersionsRpc_createServerFn_handler = createServerRpc({
67
+ id: "3377db68b9d1d971971595469029c0466da0777a177b294d655cd0c039737f1a",
68
+ name: "listRemoteConfigVersionsRpc",
69
+ filename: "src/lib/remote-config-rpc.ts"
70
+ }, (opts) => listRemoteConfigVersionsRpc.__executeServer(opts));
71
+ var listRemoteConfigVersionsRpc = createServerFn({ method: "GET" }).middleware([consoleAccess]).validator(parseCursor).handler(listRemoteConfigVersionsRpc_createServerFn_handler, async ({ data }) => (await remoteConfig()).listVersions({
72
+ limit: 20,
73
+ ...data
74
+ }));
75
+ var getRemoteConfigVersionRpc_createServerFn_handler = createServerRpc({
76
+ id: "af71e3c55a659ce46093e33b9d70e729359610eec7d576502e8f0e26c785b317",
77
+ name: "getRemoteConfigVersionRpc",
78
+ filename: "src/lib/remote-config-rpc.ts"
79
+ }, (opts) => getRemoteConfigVersionRpc.__executeServer(opts));
80
+ var getRemoteConfigVersionRpc = createServerFn({ method: "GET" }).middleware([consoleAccess]).validator(parseVersion).handler(getRemoteConfigVersionRpc_createServerFn_handler, async ({ data }) => (await remoteConfig()).getVersion(data.version));
81
+ var publishRemoteConfigRpc_createServerFn_handler = createServerRpc({
82
+ id: "4182bf9ccbb675700638f30bc6122517ccd90b16a339a6823a0f5f6c808d70a6",
83
+ name: "publishRemoteConfigRpc",
84
+ filename: "src/lib/remote-config-rpc.ts"
85
+ }, (opts) => publishRemoteConfigRpc.__executeServer(opts));
86
+ var publishRemoteConfigRpc = createServerFn({ method: "POST" }).middleware([consoleAccess]).validator(parsePublish).handler(publishRemoteConfigRpc_createServerFn_handler, async ({ data }) => (await remoteConfig()).publish(data));
87
+ var rollbackRemoteConfigRpc_createServerFn_handler = createServerRpc({
88
+ id: "98c10bdc514eb4d3fe65af546be44452b492a81092cfe45625778a4c9f731727",
89
+ name: "rollbackRemoteConfigRpc",
90
+ filename: "src/lib/remote-config-rpc.ts"
91
+ }, (opts) => rollbackRemoteConfigRpc.__executeServer(opts));
92
+ var rollbackRemoteConfigRpc = createServerFn({ method: "POST" }).middleware([consoleAccess]).validator(parseRollback).handler(rollbackRemoteConfigRpc_createServerFn_handler, async ({ data }) => (await remoteConfig()).rollback(data));
93
+ var previewRemoteConfigRpc_createServerFn_handler = createServerRpc({
94
+ id: "1371bff16085636e2c44b60a573ae434b556c63045c40a0a93a93ab69ec47999",
95
+ name: "previewRemoteConfigRpc",
96
+ filename: "src/lib/remote-config-rpc.ts"
97
+ }, (opts) => previewRemoteConfigRpc.__executeServer(opts));
98
+ var previewRemoteConfigRpc = createServerFn({ method: "POST" }).middleware([consoleAccess]).validator(parsePreview).handler(previewRemoteConfigRpc_createServerFn_handler, async ({ data }) => {
99
+ await remoteConfig();
100
+ const { evaluateRemoteConfig, RemoteConfigValidationError, validateRemoteConfigTemplate } = await import("./plugins-BaD1slHx.mjs").then((n) => n.t);
101
+ try {
102
+ return {
103
+ status: "ok",
104
+ parameters: evaluateRemoteConfig(validateRemoteConfigTemplate(data.template), data.context)
105
+ };
106
+ } catch (error) {
107
+ if (error instanceof RemoteConfigValidationError) return {
108
+ status: "invalid",
109
+ issues: error.issues
110
+ };
111
+ throw error;
112
+ }
113
+ });
114
+ //#endregion
115
+ export { getRemoteConfigRpc_createServerFn_handler, getRemoteConfigVersionRpc_createServerFn_handler, listRemoteConfigVersionsRpc_createServerFn_handler, previewRemoteConfigRpc_createServerFn_handler, publishRemoteConfigRpc_createServerFn_handler, rollbackRemoteConfigRpc_createServerFn_handler };
@@ -0,0 +1,13 @@
1
+ //#region node_modules/.nitro/vite/services/ssr/assets/rolldown-runtime-rSIU-vHC.js
2
+ var __defProp = Object.defineProperty;
3
+ var __exportAll = (all, no_symbols) => {
4
+ let target = {};
5
+ for (var name in all) __defProp(target, name, {
6
+ get: all[name],
7
+ enumerable: true
8
+ });
9
+ if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
10
+ return target;
11
+ };
12
+ //#endregion
13
+ export { __exportAll as t };
@@ -1,19 +1,21 @@
1
1
  import { i as __toESM } from "../_runtime.mjs";
2
- import { c as createServerFn } from "./createServerFn-B2hcXoPM.mjs";
3
- import { ht as require_react, mt as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
4
- import { A as CircleCheck, C as Info, I as ChartNoAxesCombined, S as KeyRound, _ as Moon, b as LoaderCircle, c as ShieldCheck, g as OctagonX, h as Package, n as TriangleAlert, o as Sun, y as LogOut } from "../_libs/lucide-react.mjs";
5
- import { S as buttonVariants, a as SidebarContent, b as TooltipProvider, c as SidebarGroupContent, d as SidebarInset, f as SidebarMenu, h as SidebarProvider, i as Sidebar, l as SidebarGroupLabel, m as SidebarMenuItem, o as SidebarFooter, p as SidebarMenuButton, s as SidebarGroup, t as Button$1, u as SidebarHeader, w as createSsrRpc } from "./createSsrRpc-CdlfejmI.mjs";
6
- import { a as HeadContent, d as lazyRouteComponent, f as createFileRoute, i as Scripts, l as createRouter, m as Link, o as useRouterState, p as createRootRouteWithContext, u as Outlet } from "../_libs/@tanstack/react-router+[...].mjs";
2
+ import { u as createServerFn } from "./createMiddleware-Cm6Tn0_Y.mjs";
3
+ import { _t as require_react, gt as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
4
+ import { O as Info, S as Moon, T as LoaderCircle, b as Package, c as Sun, i as TriangleAlert, w as LogOut, x as OctagonX, z as CircleCheck } from "../_libs/lucide-react.mjs";
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-DJcErBMo.mjs";
7
6
  import { t as QueryClient } from "../_libs/tanstack__query-core.mjs";
8
- import { n as useApiKeyCapabilityQuery, t as ensureApiKeyRouteAccess } from "./api-keys-api-C3oeq01R.mjs";
9
7
  import { n as toast, t as Toaster } from "../_libs/sonner.mjs";
10
- import { t as Route$5 } from "./insights-BwQ-wF2a.mjs";
11
- import { t as Route$6 } from "./insights_.distribution-VmHuikRE.mjs";
12
- import { n as getInsightsScrollRestorationKey, t as Route$7 } from "./installations-HXMF_kKf.mjs";
13
- import { t as Route$8 } from "./routes-Dru3IRj0.mjs";
8
+ 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";
9
+ import { r as requireConsoleFeature, t as consoleFeaturesQueryOptions } from "./console-features-api-C9kiKvaV.mjs";
10
+ import { t as NotFoundPage } from "./NotFoundPage-DZzOOzS3.mjs";
11
+ import { t as Route$4 } from "./insights-B55FG5fm.mjs";
12
+ import { t as Route$5 } from "./insights_.distribution-D2HaNTAA.mjs";
13
+ import { n as Route$6 } from "./installations-DD1g__Nc.mjs";
14
+ import { n as Route$7 } from "./remote-config-of0lGQH8.mjs";
15
+ import { n as Route$8, o as useFeatureUi } from "./routes-V8sDybGf.mjs";
14
16
  import { t as setupRouterSsrQueryIntegration } from "../_libs/@tanstack/react-router-ssr-query+[...].mjs";
15
17
  import { t as z } from "../_libs/next-themes.mjs";
16
- //#region node_modules/.nitro/vite/services/ssr/assets/router-BuanSsRI.js
18
+ //#region node_modules/.nitro/vite/services/ssr/assets/router-D8NuoJ_I.js
17
19
  var import_react = /* @__PURE__ */ __toESM(require_react());
18
20
  var import_jsx_runtime = require_jsx_runtime();
19
21
  function HotUpdaterLogo({ className }) {
@@ -111,14 +113,39 @@ function useTheme$1() {
111
113
  return context;
112
114
  }
113
115
  function AppSidebar({ canSignOut = false }) {
116
+ const { setOpenMobile } = useSidebar();
117
+ const closeMobileSidebar = () => setOpenMobile(false);
114
118
  const [signingOut, setSigningOut] = (0, import_react.useState)(false);
115
- const apiKeyCapability = useApiKeyCapabilityQuery();
119
+ const featureUi = useFeatureUi();
116
120
  const { theme, setTheme } = useTheme$1();
117
121
  const currentPath = useRouterState().location.pathname;
118
- const isBundlesActive = currentPath === "/";
119
- const isInsightsActive = currentPath === "/insights" || currentPath === "/insights/distribution" || currentPath === "/installations";
120
- const isApiKeysActive = currentPath === "/api-keys";
121
- const isSigningActive = currentPath === "/signing";
122
+ const navigation = [{
123
+ label: "Bundles",
124
+ icon: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Package, {}),
125
+ active: currentPath === "/",
126
+ link: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Link, {
127
+ to: "/",
128
+ onClick: closeMobileSidebar,
129
+ search: {
130
+ afterReleaseId: void 0,
131
+ beforeReleaseId: void 0,
132
+ channelId: void 0,
133
+ enabled: void 0,
134
+ releaseId: void 0,
135
+ platform: void 0,
136
+ bundleId: void 0,
137
+ scopeKey: void 0
138
+ }
139
+ })
140
+ }, ...featureUi.flatMap(({ features, label, navigation }) => navigation === void 0 ? [] : [{
141
+ label,
142
+ icon: navigation.icon,
143
+ active: navigation.paths.includes(currentPath),
144
+ link: navigation.link({
145
+ features,
146
+ onClick: closeMobileSidebar
147
+ })
148
+ }])];
122
149
  const signOut = async () => {
123
150
  setSigningOut(true);
124
151
  try {
@@ -140,6 +167,7 @@ function AppSidebar({ canSignOut = false }) {
140
167
  className: "h-12 justify-center",
141
168
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Link, {
142
169
  to: "/",
170
+ onClick: closeMobileSidebar,
143
171
  search: {
144
172
  afterReleaseId: void 0,
145
173
  beforeReleaseId: void 0,
@@ -147,9 +175,8 @@ function AppSidebar({ canSignOut = false }) {
147
175
  enabled: void 0,
148
176
  releaseId: void 0,
149
177
  platform: void 0,
150
- targetAppVersion: void 0,
151
178
  bundleId: void 0,
152
- page: void 0
179
+ scopeKey: void 0
153
180
  },
154
181
  className: "flex items-center gap-3 p-1 group-data-[collapsible=icon]:justify-center group-data-[collapsible=icon]:p-2",
155
182
  children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(HotUpdaterLogo, { className: "h-7 w-7 shrink-0" }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
@@ -164,46 +191,13 @@ function AppSidebar({ canSignOut = false }) {
164
191
  })]
165
192
  })
166
193
  }),
167
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SidebarContent, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(SidebarGroup, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(SidebarGroupLabel, { children: "Navigation" }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SidebarGroupContent, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(SidebarMenu, { children: [
168
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SidebarMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(SidebarMenuButton, {
169
- isActive: isBundlesActive,
170
- render: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Link, {
171
- to: "/",
172
- search: {
173
- afterReleaseId: void 0,
174
- beforeReleaseId: void 0,
175
- channelId: void 0,
176
- enabled: void 0,
177
- releaseId: void 0,
178
- platform: void 0,
179
- targetAppVersion: void 0,
180
- bundleId: void 0,
181
- page: void 0
182
- }
183
- }),
184
- tooltip: "Bundles",
185
- children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Package, {}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "Bundles" })]
186
- }) }),
187
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SidebarMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(SidebarMenuButton, {
188
- isActive: isInsightsActive,
189
- render: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Link, { to: "/insights" }),
190
- tooltip: "Insights",
191
- children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(ChartNoAxesCombined, {}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "Insights" })]
192
- }) }),
193
- apiKeyCapability.data?.apiKeys ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SidebarMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(SidebarMenuButton, {
194
- isActive: isApiKeysActive,
195
- render: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Link, { to: "/api-keys" }),
196
- tooltip: "API keys",
197
- children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(KeyRound, {}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "API keys" })]
198
- }) }) : null,
199
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SidebarMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(SidebarMenuButton, {
200
- isActive: isSigningActive,
201
- render: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Link, { to: "/signing" }),
202
- tooltip: "Bundle signing",
203
- children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(ShieldCheck, {}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: "Bundle signing" })]
204
- }) })
205
- ] }) })] }) }),
206
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SidebarFooter, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(SidebarMenu, { children: [canSignOut ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SidebarMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(SidebarMenuButton, {
194
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SidebarContent, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(SidebarGroup, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(SidebarGroupLabel, { children: "Navigation" }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SidebarGroupContent, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SidebarMenu, { children: navigation.map((item) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SidebarMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(SidebarMenuButton, {
195
+ isActive: item.active,
196
+ render: item.link,
197
+ tooltip: item.label,
198
+ children: [item.icon, /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: item.label })]
199
+ }) }, item.label)) }) })] }) }),
200
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(SidebarFooter, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(SidebarMenu, { children: [canSignOut ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SidebarMenuItem, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(SidebarMenuButton, {
207
201
  disabled: signingOut,
208
202
  onClick: () => void signOut(),
209
203
  tooltip: "Sign out",
@@ -212,7 +206,13 @@ function AppSidebar({ canSignOut = false }) {
212
206
  onClick: () => setTheme(theme === "dark" ? "light" : "dark"),
213
207
  tooltip: theme === "dark" ? "Light mode" : "Dark mode",
214
208
  children: [theme === "dark" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Sun, { className: "h-4 w-4" }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Moon, { className: "h-4 w-4" }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: theme === "dark" ? "Light mode" : "Dark mode" })]
215
- }) })] }) })
209
+ }) })] }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("a", {
210
+ href: "https://hot-updater.dev",
211
+ target: "_blank",
212
+ rel: "noreferrer",
213
+ className: "px-2 pb-1 text-[11px] text-sidebar-foreground/60 hover:text-sidebar-foreground group-data-[collapsible=icon]:hidden",
214
+ children: "Powered by hot-updater"
215
+ })] })
216
216
  ]
217
217
  });
218
218
  }
@@ -317,36 +317,6 @@ function ConsoleAccessPage({ access, providers }) {
317
317
  })
318
318
  });
319
319
  }
320
- var homeSearch = {
321
- channel: void 0,
322
- platform: void 0,
323
- targetAppVersion: void 0,
324
- page: void 0,
325
- after: void 0,
326
- before: void 0,
327
- bundleId: void 0,
328
- expandedBundleId: void 0
329
- };
330
- function NotFoundPage() {
331
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
332
- className: "flex min-h-svh flex-1 items-center justify-center px-6 py-10",
333
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("section", {
334
- className: "flex max-w-md flex-col items-center text-center",
335
- children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("h1", {
336
- className: "text-2xl font-semibold tracking-tight text-foreground",
337
- children: "Page not found"
338
- }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Link, {
339
- className: buttonVariants({
340
- className: "mt-6",
341
- size: "lg"
342
- }),
343
- to: "/",
344
- search: homeSearch,
345
- children: "Go to home"
346
- })]
347
- })
348
- });
349
- }
350
320
  var Toaster$1 = ({ ...props }) => {
351
321
  const { theme = "system" } = z();
352
322
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Toaster, {
@@ -371,8 +341,8 @@ var Toaster$1 = ({ ...props }) => {
371
341
  };
372
342
  var getConsoleAccessRpc = createServerFn({ method: "GET" }).handler(createSsrRpc("c504696e68ba764b48c48aa8a40275938640941e473cf9cfdd7b2322d99f9d13"));
373
343
  var getConsoleAuthProvidersRpc = createServerFn({ method: "GET" }).handler(createSsrRpc("fa8c48f0489d97c62b9b68fd0caf0a61b15bad25a42b3866ec36264b4b30bb74"));
374
- var styles_default = "/assets/styles-DnrWuBwd.css";
375
- var Route$4 = createRootRouteWithContext()({
344
+ var styles_default = "/assets/styles-DTGEAJFv.css";
345
+ var Route$3 = createRootRouteWithContext()({
376
346
  head: () => ({
377
347
  meta: [
378
348
  { charSet: "utf-8" },
@@ -395,8 +365,9 @@ var Route$4 = createRootRouteWithContext()({
395
365
  href: styles_default
396
366
  }]
397
367
  }),
398
- loader: async () => {
368
+ loader: async ({ context }) => {
399
369
  const [access, providers] = await Promise.all([getConsoleAccessRpc(), getConsoleAuthProvidersRpc()]);
370
+ if (access.status === "authorized") await context.queryClient.prefetchQuery(consoleFeaturesQueryOptions());
400
371
  return {
401
372
  access,
402
373
  providers
@@ -429,7 +400,7 @@ function RootDocument({ children }) {
429
400
  });
430
401
  }
431
402
  function RootLayout() {
432
- const { access, providers } = Route$4.useLoaderData();
403
+ const { access, providers } = Route$3.useLoaderData();
433
404
  if (access.status !== "authorized") return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ConsoleAccessPage, {
434
405
  access,
435
406
  providers
@@ -443,15 +414,15 @@ function AuthorizedConsole({ canSignOut }) {
443
414
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Outlet, {})
444
415
  })] });
445
416
  }
446
- var $$splitComponentImporter$1 = () => import("./signing-H8Lg4lPe.mjs");
447
- var Route$3 = createFileRoute("/signing")({ component: lazyRouteComponent($$splitComponentImporter$1, "component") });
448
- var $$splitComponentImporter = () => import("./api-keys-CzZ7Ont4.mjs");
417
+ var $$splitComponentImporter = () => import("./api-keys-B4sYm8dM.mjs");
418
+ var $$splitNotFoundComponentImporter = () => import("./api-keys-CEnM9fqG.mjs");
449
419
  var Route$2 = createFileRoute("/api-keys")({
450
- beforeLoad: ({ context }) => ensureApiKeyRouteAccess(context.queryClient),
420
+ beforeLoad: ({ context }) => requireConsoleFeature(context.queryClient, "apiKeys"),
421
+ notFoundComponent: lazyRouteComponent($$splitNotFoundComponentImporter, "notFoundComponent"),
451
422
  component: lazyRouteComponent($$splitComponentImporter, "component")
452
423
  });
453
424
  var handleAuthRequest = async ({ request }) => {
454
- const { handleConsoleAuth } = await import("./auth.server-CmicHh0J.mjs");
425
+ const { handleConsoleAuth } = await import("./auth.server-DFpyxRDd.mjs");
455
426
  return handleConsoleAuth(request);
456
427
  };
457
428
  var Route$1 = createFileRoute("/api/auth/$")({ server: { handlers: {
@@ -459,68 +430,70 @@ var Route$1 = createFileRoute("/api/auth/$")({ server: { handlers: {
459
430
  POST: handleAuthRequest
460
431
  } } });
461
432
  var Route = createFileRoute("/api/bundles/$bundleId/download")({ server: { handlers: { GET: async ({ params, request }) => {
462
- const { prepareConfig } = await import("./config.server-B8WsT3s0.mjs");
463
- const { downloadBundle } = await import("./downloadBundle-CI7JUKvC.mjs");
464
- const { databaseClient, storagePlugin } = await prepareConfig(request);
433
+ const { prepareConfig } = await import("./config.server-DskXCAyI.mjs");
434
+ const { downloadBundle } = await import("./downloadBundle-CZysjmNW.mjs");
435
+ const { core, storage } = await prepareConfig(request);
465
436
  return downloadBundle(params.bundleId, {
466
- databaseClient,
467
- storagePlugin
437
+ core,
438
+ storage
468
439
  });
469
440
  } } } });
470
- var SigningRoute = Route$3.update({
471
- id: "/signing",
472
- path: "/signing",
473
- getParentRoute: () => Route$4
474
- });
475
- var InstallationsRoute = Route$7.update({
476
- id: "/installations",
477
- path: "/installations",
478
- getParentRoute: () => Route$4
479
- });
480
- var InsightsRoute = Route$5.update({
481
- id: "/insights",
482
- path: "/insights",
483
- getParentRoute: () => Route$4
484
- });
485
- var ApiKeysRoute = Route$2.update({
486
- id: "/api-keys",
487
- path: "/api-keys",
488
- getParentRoute: () => Route$4
489
- });
490
441
  var rootRouteChildren = {
491
442
  IndexRoute: Route$8.update({
492
443
  id: "/",
493
444
  path: "/",
494
- getParentRoute: () => Route$4
445
+ getParentRoute: () => Route$3
446
+ }),
447
+ ApiKeysRoute: Route$2.update({
448
+ id: "/api-keys",
449
+ path: "/api-keys",
450
+ getParentRoute: () => Route$3
495
451
  }),
496
- ApiKeysRoute,
497
- InsightsRoute,
498
- InstallationsRoute,
499
- SigningRoute,
500
- InsightsDistributionRoute: Route$6.update({
452
+ InsightsRoute: Route$4.update({
453
+ id: "/insights",
454
+ path: "/insights",
455
+ getParentRoute: () => Route$3
456
+ }),
457
+ InstallationsRoute: Route$6.update({
458
+ id: "/installations",
459
+ path: "/installations",
460
+ getParentRoute: () => Route$3
461
+ }),
462
+ RemoteConfigRoute: Route$7.update({
463
+ id: "/remote-config",
464
+ path: "/remote-config",
465
+ getParentRoute: () => Route$3
466
+ }),
467
+ InsightsDistributionRoute: Route$5.update({
501
468
  id: "/insights_/distribution",
502
469
  path: "/insights/distribution",
503
- getParentRoute: () => Route$4
470
+ getParentRoute: () => Route$3
504
471
  }),
505
472
  ApiAuthSplatRoute: Route$1.update({
506
473
  id: "/api/auth/$",
507
474
  path: "/api/auth/$",
508
- getParentRoute: () => Route$4
475
+ getParentRoute: () => Route$3
509
476
  }),
510
477
  ApiBundlesBundleIdDownloadRoute: Route.update({
511
478
  id: "/api/bundles/$bundleId/download",
512
479
  path: "/api/bundles/$bundleId/download",
513
- getParentRoute: () => Route$4
480
+ getParentRoute: () => Route$3
514
481
  })
515
482
  };
516
- var routeTree = Route$4._addFileChildren(rootRouteChildren)._addFileTypes();
483
+ var routeTree = Route$3._addFileChildren(rootRouteChildren)._addFileTypes();
484
+ /** A location's scroll-restoration key: its route's own, else its history entry's. */
485
+ var routeScrollRestorationKey = (router, location) => {
486
+ const [, , foundRoute] = router.getMatchedRoutes(location.pathname);
487
+ const routeKey = foundRoute?.options.staticData?.scrollRestorationKey;
488
+ return routeKey?.(location) ?? location.state.__TSR_key;
489
+ };
517
490
  var getRouter = () => {
518
491
  const queryClient = new QueryClient();
519
492
  const router = createRouter({
520
493
  routeTree,
521
494
  context: { queryClient },
522
495
  scrollRestoration: true,
523
- getScrollRestorationKey: getInsightsScrollRestorationKey,
496
+ getScrollRestorationKey: (location) => routeScrollRestorationKey(router, location),
524
497
  defaultPreloadStaleTime: 0
525
498
  });
526
499
  setupRouterSsrQueryIntegration({