@hot-updater/console 1.0.0-rc.2 → 1.0.0-rc.20

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 (275) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/assets/ConsoleFeatureUnavailable-B9VYGA3N.js +1 -0
  3. package/.output/public/assets/HashValueDisplay-D880zntR.js +1 -0
  4. package/.output/public/assets/InsightsInfo-By_sPjTE.js +1 -0
  5. package/.output/public/assets/InsightsPageHeader-9_kx_LL7.js +1 -0
  6. package/.output/public/assets/NotFoundPage-Dys8C0cW.js +1 -0
  7. package/.output/public/assets/api-CtarlV0l.js +1 -0
  8. package/.output/public/assets/api-keys-DFF_QqtN.js +1 -0
  9. package/.output/public/assets/api-keys-evfsQ4sN.js +1 -0
  10. package/.output/public/assets/arrow-left-BP9D-ta_.js +1 -0
  11. package/.output/public/assets/arrow-up-right-CDP9Tevw.js +1 -0
  12. package/.output/public/assets/card-DzCPSRsh.js +1 -0
  13. package/.output/public/assets/console-features-api-yv7rm3DX.js +1 -0
  14. package/.output/public/assets/dialog-BDvCy_QO.js +1 -0
  15. package/.output/public/assets/dist-Clb6cQ9l.js +1 -0
  16. package/.output/public/assets/empty-C5x9mn_s.js +1 -0
  17. package/.output/public/assets/field-Bou7shoO.js +1 -0
  18. package/.output/public/assets/index-0eg3l8aC.js +10 -0
  19. package/.output/public/assets/input-group-DVtWFUUF.js +1 -0
  20. package/.output/public/assets/insights-2MbdiSNv.js +1 -0
  21. package/.output/public/assets/insights-C6tmCZHk.js +2 -0
  22. package/.output/public/assets/insights-CadS_aIA.js +42 -0
  23. package/.output/public/assets/insights-recovery-rpc-wvdyM4LD.js +1 -0
  24. package/.output/public/assets/insights-search-KIF7mRtB.js +1 -0
  25. package/.output/public/assets/insights-usage-rpc-qUkNtrWr.js +1 -0
  26. package/.output/public/assets/insights_.distribution-BhBs6PNA.js +1 -0
  27. package/.output/public/assets/insights_.distribution-CItZw3-8.js +1 -0
  28. package/.output/public/assets/insights_.distribution-CJUH_wAS.js +2 -0
  29. package/.output/public/assets/installations-CH2H7JQt.js +2 -0
  30. package/.output/public/assets/installations-DMeMuwsW.js +1 -0
  31. package/.output/public/assets/installations-DnvxI9Dt.js +1 -0
  32. package/.output/public/assets/loader-circle-Ca7C9YY1.js +1 -0
  33. package/.output/public/assets/mutation-x9L28_CD.js +1 -0
  34. package/.output/public/assets/preload-helper-BN-UkjOE.js +1 -0
  35. package/.output/public/assets/refresh-cw-CVGqvy8Z.js +1 -0
  36. package/.output/public/assets/routes-BhK8DuZA.js +1 -0
  37. package/.output/public/assets/routes-veKtDW39.js +2 -0
  38. package/.output/public/assets/sidebar-B45aMqRm.js +3 -0
  39. package/.output/public/assets/styles-Dn0pK1EX.css +2 -0
  40. package/.output/public/assets/table-CwLnN6KX.js +1 -0
  41. package/.output/public/assets/useCompositeListItem-CF7vsfcA.js +1 -0
  42. package/.output/public/assets/useMutation-CN1ygYEr.js +1 -0
  43. package/.output/public/assets/useOpenInteractionType-AnAMWYIY.js +1 -0
  44. package/.output/public/assets/valueToPercent-C-t8FT0y.js +1 -0
  45. package/.output/server/{__23tanstack-start-server-fn-resolver-B7ioJhtE.mjs → __23tanstack-start-server-fn-resolver-CUQLz7hs.mjs} +52 -40
  46. package/.output/server/_libs/@base-ui/react+[...].mjs +7044 -3622
  47. package/.output/server/_libs/@reduxjs/toolkit+[...].mjs +1554 -0
  48. package/.output/server/_libs/@tanstack/react-router+[...].mjs +49 -3
  49. package/.output/server/_libs/@tanstack/react-router-ssr-query+[...].mjs +4 -4
  50. package/.output/server/_libs/d3-array.mjs +231 -0
  51. package/.output/server/_libs/d3-color.mjs +330 -0
  52. package/.output/server/_libs/d3-format.mjs +252 -0
  53. package/.output/server/_libs/d3-interpolate.mjs +207 -0
  54. package/.output/server/_libs/d3-path.mjs +77 -0
  55. package/.output/server/_libs/d3-scale+[...].mjs +1907 -0
  56. package/.output/server/_libs/d3-shape.mjs +818 -0
  57. package/.output/server/_libs/decimal.js-light.mjs +884 -0
  58. package/.output/server/_libs/es-toolkit.mjs +1159 -0
  59. package/.output/server/_libs/eventemitter3.mjs +236 -0
  60. package/.output/server/_libs/immer.mjs +532 -0
  61. package/.output/server/_libs/lucide-react.mjs +46 -32
  62. package/.output/server/_libs/next-themes.mjs +2 -2
  63. package/.output/server/_libs/react-redux+[...].mjs +205 -0
  64. package/.output/server/_libs/recharts+[...].mjs +14350 -0
  65. package/.output/server/_libs/sonner.mjs +2 -2
  66. package/.output/server/_libs/tanstack__react-query.mjs +8 -3
  67. package/.output/server/_libs/verkit.mjs +99 -1
  68. package/.output/server/_runtime.mjs +10 -1
  69. package/.output/server/_ssr/ConsoleFeatureUnavailable-DoxET2AT.mjs +58 -0
  70. package/.output/server/_ssr/{HashValueDisplay-DwpGLfrl.mjs → HashValueDisplay-BplboHEb.mjs} +3 -3
  71. package/.output/server/_ssr/InsightsInfo-o2YPd5Qc.mjs +37 -0
  72. package/.output/server/_ssr/InsightsPageHeader-NExCJL1I.mjs +154 -0
  73. package/.output/server/_ssr/NotFoundPage-Cd-A8ock.mjs +37 -0
  74. package/.output/server/_ssr/api-B1Ro0uys.mjs +202 -0
  75. package/.output/server/_ssr/api-C0G9MTMI.mjs +4205 -0
  76. package/.output/server/_ssr/{api-keys-CZeTPQys.mjs → api-keys-CT3HG7KT.mjs} +49 -9
  77. package/.output/server/_ssr/api-keys-Dvvy1sem.mjs +5 -0
  78. package/.output/server/_ssr/api-keys-rpc-b1qTTFfG.mjs +52 -0
  79. package/.output/server/_ssr/api-rpc-Cbns2MGx.mjs +338 -0
  80. package/.output/server/_ssr/{auth-rpc-DUaeOWKK.mjs → auth-rpc-DChS7m9y.mjs} +6 -6
  81. package/.output/server/_ssr/auth.server-Ccqz2iVv.mjs +37 -0
  82. package/.output/server/_ssr/bundleActivity-D17Pb_h5.mjs +19 -0
  83. package/.output/server/_ssr/card-DMbcvlPz.mjs +49 -0
  84. package/.output/server/_ssr/config-DMEJdhoW.mjs +13 -0
  85. package/.output/server/_ssr/config.server-DyypN6cQ.mjs +60 -0
  86. package/.output/server/_ssr/console-access-KpPv5lin.mjs +17 -0
  87. package/.output/server/_ssr/console-features-CsbyHYfK.mjs +55 -0
  88. package/.output/server/_ssr/console-features-api-B-KVuo4p.mjs +43 -0
  89. package/.output/server/_ssr/console-features-rpc-Djyo5740.mjs +19 -0
  90. package/.output/server/_ssr/{createServerFn-B2hcXoPM.mjs → createMiddleware-B_I3Ll4M.mjs} +28 -2
  91. package/.output/server/_ssr/{createServerRpc-DB29C_5p.mjs → createServerRpc-DuNm5mmo.mjs} +2 -2
  92. package/.output/server/_ssr/databaseRows-CXxf_VIB.mjs +132 -0
  93. package/.output/server/_ssr/{deleteBundle-BTGwBgzx.mjs → deleteBundle-Dcc21Lbd.mjs} +9 -19
  94. package/.output/server/_ssr/{dialog-DS-nw-pA.mjs → dialog-cOmLTUV2.mjs} +2 -2
  95. package/.output/server/_ssr/{dist-CyzPaI5v.mjs → dist-B-r4u3Lg.mjs} +28 -5
  96. package/.output/server/_ssr/{downloadBundle-CNnYxYO2.mjs → downloadBundle-CexOFoZ4.mjs} +6 -7
  97. package/.output/server/_ssr/empty-BHoY_5jt.mjs +49 -0
  98. package/.output/server/_ssr/{table-CnZmon_Z.mjs → field-mjhcNEXD.mjs} +63 -51
  99. package/.output/server/_ssr/getBundleChildren-DbDXe9wB.mjs +22 -0
  100. package/.output/server/_ssr/{input-group-BpsnmvZw.mjs → input-group-96H30HWC.mjs} +2 -2
  101. package/.output/server/_ssr/insights-D25VDVaz.mjs +5 -0
  102. package/.output/server/_ssr/insights-D359GJFL.mjs +14 -0
  103. package/.output/server/_ssr/insights-DgFv1NsO.mjs +1238 -0
  104. package/.output/server/_ssr/insights-api-ChAKrbhG.mjs +105 -0
  105. package/.output/server/_ssr/insights-failures-WQ-ttjOx.mjs +44 -0
  106. package/.output/server/_ssr/insights-failures-rpc-BFsqlltN.mjs +21 -0
  107. package/.output/server/_ssr/insights-recovery-DkL6bxMW.mjs +28 -0
  108. package/.output/server/_ssr/insights-recovery-rpc-2P5m8F62.mjs +46 -0
  109. package/.output/server/_ssr/insights-recovery-rpc-Tj8vNC19.mjs +20 -0
  110. package/.output/server/_ssr/{insights-rpc-38DujK0G.mjs → insights-rpc-DrkVmV9o.mjs} +22 -14
  111. package/.output/server/_ssr/insights-search-BsalnNw-.mjs +25 -0
  112. package/.output/server/_ssr/insights-usage-1nVTQrLy.mjs +29 -0
  113. package/.output/server/_ssr/insights-usage-rpc-Ct_4xHhZ.mjs +29 -0
  114. package/.output/server/_ssr/insights-usage-rpc-DaYIRtFK.mjs +41 -0
  115. package/.output/server/_ssr/insightsRecovery-CpGucWN1.mjs +45 -0
  116. package/.output/server/_ssr/insightsUsage-JYpKZAF7.mjs +56 -0
  117. package/.output/server/_ssr/insights_.distribution-Bcu6uYs_.mjs +5 -0
  118. package/.output/server/_ssr/insights_.distribution-D3Csuyjw.mjs +14 -0
  119. package/.output/server/_ssr/insights_.distribution-jQZEF07J.mjs +335 -0
  120. package/.output/server/_ssr/installations-B8Vh54lH.mjs +69 -0
  121. package/.output/server/_ssr/installations-BI5kelHv.mjs +5 -0
  122. package/.output/server/_ssr/{installations-DiVKEF5T.mjs → installations-Cxikllmx.mjs} +517 -54
  123. package/.output/server/_ssr/listReleases-DqU9t1l3.mjs +79 -0
  124. package/.output/server/_ssr/releaseManagement-B3e7I8J9.mjs +11 -0
  125. package/.output/server/_ssr/{router-B9wG_9f8.mjs → router-CRkm-wHD.mjs} +117 -124
  126. package/.output/server/_ssr/routes-B3IJo_jL.mjs +292 -0
  127. package/.output/server/_ssr/{routes-D7Yh_jfj.mjs → routes-CNAi0Mmv.mjs} +176 -455
  128. package/.output/server/_ssr/runtime.server-NucbYjc7.mjs +1372 -0
  129. package/.output/server/_ssr/select-BkPAJFL7.mjs +107 -0
  130. package/.output/server/_ssr/{server-D_C2rMzf.mjs → server-DKJYsaCP.mjs} +6 -32
  131. package/.output/server/_ssr/{createSsrRpc-DjWNJ0uc.mjs → sidebar-Cw1VuC7d.mjs} +117 -63
  132. package/.output/server/_ssr/ssr.mjs +1 -1
  133. package/.output/server/_ssr/table-q0P9wz7x.mjs +53 -0
  134. package/.output/server/_ssr/updateFailures-DMU9f0pK.mjs +24 -0
  135. package/.output/server/_ssr/{uuidv7-D0QFkPL_.mjs → uuidv7-BzSO-fr-.mjs} +2 -2
  136. package/.output/server/_tanstack-start-manifest_v-Bb0gKDbb.mjs +124 -0
  137. package/.output/server/index.mjs +273 -168
  138. package/README.md +71 -65
  139. package/lib/index.d.mts +13 -11
  140. package/lib/vite-internal.mjs +6 -3
  141. package/package.json +8 -8
  142. package/src/components/AppSidebar.tsx +91 -71
  143. package/src/components/ConsoleAccessPage.tsx +5 -1
  144. package/src/components/ConsoleFeatureUnavailable.tsx +82 -0
  145. package/src/components/NotFoundPage.tsx +7 -7
  146. package/src/components/features/FeatureSlots.tsx +99 -0
  147. package/src/components/features/api-keys/apiKeysFeatureUi.tsx +15 -0
  148. package/src/components/features/bundles/BundleMetadata.tsx +7 -4
  149. package/src/components/features/channels/ChannelManagementDialog.tsx +2 -5
  150. package/src/components/features/insights/AppUsage.tsx +370 -0
  151. package/src/components/features/insights/EstimatedCount.tsx +18 -0
  152. package/src/components/features/insights/EventDetails.tsx +117 -37
  153. package/src/components/features/insights/EventHistoryCard.tsx +112 -26
  154. package/src/components/features/insights/EventHistoryList.tsx +2 -2
  155. package/src/components/features/insights/InsightsControls.tsx +265 -102
  156. package/src/components/features/insights/InsightsErrorAlert.tsx +14 -1
  157. package/src/components/features/insights/InsightsInfo.tsx +48 -0
  158. package/src/components/features/insights/InsightsOverview.tsx +176 -173
  159. package/src/components/features/insights/InsightsPageHeader.tsx +35 -20
  160. package/src/components/features/insights/InsightsPeriodSelector.tsx +89 -0
  161. package/src/components/features/insights/InstallationHistoryCard.tsx +52 -10
  162. package/src/components/features/insights/InstallationMatchesCard.tsx +1 -1
  163. package/src/components/features/insights/ReleaseActivity.tsx +188 -0
  164. package/src/components/features/insights/ReportingDevicesSummary.tsx +65 -0
  165. package/src/components/features/insights/UpdateFailures.tsx +319 -0
  166. package/src/components/features/insights/insightsFeatureUi.tsx +35 -0
  167. package/src/components/features/releases/ReleaseEditorSheet.tsx +24 -1
  168. package/src/components/ui/card.tsx +1 -1
  169. package/src/components/ui/empty.tsx +101 -0
  170. package/src/components/ui/scroll-area.tsx +52 -0
  171. package/src/components/ui/sidebar.tsx +22 -29
  172. package/src/components/ui/tabs.tsx +81 -0
  173. package/src/index.ts +12 -17
  174. package/src/lib/api-keys-api.ts +0 -28
  175. package/src/lib/api-keys-rpc.ts +27 -38
  176. package/src/lib/api-rpc.ts +197 -221
  177. package/src/lib/api.ts +11 -13
  178. package/src/lib/bundle-activity.ts +31 -0
  179. package/src/lib/console-access.ts +20 -0
  180. package/src/lib/console-features-api.ts +68 -0
  181. package/src/lib/console-features-rpc.ts +13 -0
  182. package/src/lib/console-features.ts +91 -0
  183. package/src/lib/insights-api.ts +37 -1
  184. package/src/lib/insights-failures-rpc.ts +21 -0
  185. package/src/lib/insights-failures.ts +129 -0
  186. package/src/lib/insights-recovery-rpc.ts +51 -0
  187. package/src/lib/insights-recovery.ts +68 -0
  188. package/src/lib/insights-retention.ts +21 -0
  189. package/src/lib/insights-rpc.ts +30 -12
  190. package/src/lib/insights-search.ts +58 -0
  191. package/src/lib/insights-usage-rpc.ts +29 -0
  192. package/src/lib/insights-usage.ts +74 -0
  193. package/src/lib/insights-view.ts +38 -2
  194. package/src/lib/scroll-restoration.ts +21 -0
  195. package/src/lib/server/adminInsights.ts +124 -0
  196. package/src/lib/server/auth.server.ts +13 -5
  197. package/src/lib/server/bundleActivity.ts +37 -0
  198. package/src/lib/server/config.server.ts +16 -32
  199. package/src/lib/server/console-feature-apis.ts +59 -0
  200. package/src/lib/server/console-runtime.server.ts +6 -40
  201. package/src/lib/server/deleteBundle.ts +16 -25
  202. package/src/lib/server/downloadBundle.ts +7 -10
  203. package/src/lib/server/getBundleChildren.ts +31 -122
  204. package/src/lib/server/insightsRecovery.ts +55 -0
  205. package/src/lib/server/insightsUsage.ts +63 -0
  206. package/src/lib/server/listReleases.ts +109 -44
  207. package/src/lib/server/releaseReachability.ts +4 -3
  208. package/src/lib/server/runtime.server.ts +132 -31
  209. package/src/lib/server/updateFailures.ts +31 -0
  210. package/src/routeTree.gen.ts +21 -21
  211. package/src/router.tsx +3 -2
  212. package/src/routes/-installations-search.ts +32 -8
  213. package/src/routes/-releases-search.ts +76 -29
  214. package/src/routes/__root.tsx +10 -4
  215. package/src/routes/api/bundles/$bundleId/download.ts +2 -5
  216. package/src/routes/api-keys.tsx +5 -2
  217. package/src/routes/index.tsx +167 -104
  218. package/src/routes/insights.tsx +100 -59
  219. package/src/routes/insights_.distribution.tsx +398 -0
  220. package/src/routes/installations.tsx +98 -41
  221. package/src/vite-internal.ts +6 -3
  222. package/.output/public/assets/HashValueDisplay-CB0Eskit.js +0 -1
  223. package/.output/public/assets/InsightsPageHeader-Car5LNiZ.js +0 -1
  224. package/.output/public/assets/api-keys-BzKocqRy.js +0 -1
  225. package/.output/public/assets/api-keys-api-BHcODB7q.js +0 -1
  226. package/.output/public/assets/card-Dhr_eFYj.js +0 -1
  227. package/.output/public/assets/chart-no-axes-combined-Dy4WJv2U.js +0 -1
  228. package/.output/public/assets/composite-Bp98A0Ld.js +0 -1
  229. package/.output/public/assets/createServerFn-CA8fs7QD.js +0 -3
  230. package/.output/public/assets/dialog-CUTrcPlB.js +0 -1
  231. package/.output/public/assets/dist-C_NydL0e.js +0 -1
  232. package/.output/public/assets/index-DdAz-CXv.js +0 -10
  233. package/.output/public/assets/input-group-cSOG4wh_.js +0 -1
  234. package/.output/public/assets/insights-C0PBSZ-n.js +0 -1
  235. package/.output/public/assets/installations-CE33wgbY.js +0 -2
  236. package/.output/public/assets/installations-CStZja8x.js +0 -1
  237. package/.output/public/assets/lazyRouteComponent-Ccp3bwBY.js +0 -1
  238. package/.output/public/assets/link-CI8idAUi.js +0 -1
  239. package/.output/public/assets/loader-circle-BoxLrsOu.js +0 -1
  240. package/.output/public/assets/preload-helper-CQ36nxok.js +0 -1
  241. package/.output/public/assets/refresh-cw-Bqc72UZG.js +0 -1
  242. package/.output/public/assets/routes-DGVXdzpw.js +0 -2
  243. package/.output/public/assets/routes-DTlwOr8I.js +0 -1
  244. package/.output/public/assets/shield-check-uK3MHWJZ.js +0 -1
  245. package/.output/public/assets/signing-CMf4aqDO.js +0 -1
  246. package/.output/public/assets/styles-BCvbtKsm.css +0 -2
  247. package/.output/public/assets/table-2vcV89QB.js +0 -1
  248. package/.output/public/assets/useCompositeListItem-CHLITE_4.js +0 -1
  249. package/.output/public/assets/x-DCd0j8c6.js +0 -1
  250. package/.output/server/_ssr/InsightsPageHeader-Df4Brj8u.mjs +0 -484
  251. package/.output/server/_ssr/api-keys-api-BUPQVSpk.mjs +0 -60
  252. package/.output/server/_ssr/api-keys-rpc-Cs7tS5_j.mjs +0 -136
  253. package/.output/server/_ssr/api-rpc-tAupfGQm.mjs +0 -1399
  254. package/.output/server/_ssr/auth.server-DW71WzsD.mjs +0 -47
  255. package/.output/server/_ssr/bundle-signing-rpc-BhnBw0-d.mjs +0 -16
  256. package/.output/server/_ssr/bundle-signing.server-C4NW5mWx.mjs +0 -12
  257. package/.output/server/_ssr/card-BRiPmi0C.mjs +0 -108
  258. package/.output/server/_ssr/config-Dv8qLDZ0.mjs +0 -13
  259. package/.output/server/_ssr/config.server-afDuAwaG.mjs +0 -368
  260. package/.output/server/_ssr/databaseJsonValue-d6I3nAS4.mjs +0 -45
  261. package/.output/server/_ssr/databaseRows-5bCRTxm-.mjs +0 -126
  262. package/.output/server/_ssr/getBundleChildren-C0vh4ZvE.mjs +0 -50
  263. package/.output/server/_ssr/insights-BdS364Xu.mjs +0 -460
  264. package/.output/server/_ssr/insightsContract-fjJDBeEE.mjs +0 -303
  265. package/.output/server/_ssr/installations-CtA59MQG.mjs +0 -29
  266. package/.output/server/_ssr/routes-CKrrS2q2.mjs +0 -37
  267. package/.output/server/_ssr/runtime.server-DacU1TBV.mjs +0 -438
  268. package/.output/server/_ssr/signing-Dz1WkZOf.mjs +0 -133
  269. package/.output/server/_tanstack-start-manifest_v-2MjTyxil.mjs +0 -97
  270. package/src/components/features/insights/InsightsBundleReports.tsx +0 -51
  271. package/src/components/features/signing/BundleSigningPage.tsx +0 -139
  272. package/src/lib/bundle-signing-api.ts +0 -14
  273. package/src/lib/bundle-signing-rpc.ts +0 -16
  274. package/src/lib/server/bundle-signing.server.ts +0 -23
  275. package/src/routes/signing.tsx +0 -37
@@ -1,15 +1,55 @@
1
- import { r as __toESM } from "../_runtime.mjs";
2
- import { J as require_react, q as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
3
- import { D as Clipboard, P as Check, d as RefreshCw, f as Plus, n as TriangleAlert, s as ShieldOff, x as KeyRound, y as LoaderCircle } from "../_libs/lucide-react.mjs";
4
- import { _ as Skeleton, g as SidebarTrigger, n as Input, t as Button$1 } from "./createSsrRpc-DjWNJ0uc.mjs";
5
- import { a as useRevokeApiKeyMutation, i as useCreateApiKeyMutation, r as useApiKeysQuery } from "./api-keys-api-BUPQVSpk.mjs";
6
- import { a as Badge, d as CardTitle, i as AlertTitle, n as AlertAction, o as Card, r as AlertDescription, s as CardContent, t as Alert, u as CardHeader } from "./card-BRiPmi0C.mjs";
7
- import { a as AlertDialogDescription, c as AlertDialogMedia, d as Dialog$1, f as DialogContent, g as DialogTitle, h as DialogHeader, i as AlertDialogContent, l as AlertDialogTitle, m as DialogFooter, n as AlertDialogAction, o as AlertDialogFooter, p as DialogDescription, r as AlertDialogCancel, s as AlertDialogHeader, t as AlertDialog$1, u as AlertDialogTrigger } from "./dialog-DS-nw-pA.mjs";
8
- import { a as FieldLabel, c as TableBody, d as TableHeader, f as TableRow, i as FieldGroup, l as TableCell, n as FieldDescription, r as FieldError, s as Table, t as Field, u as TableHead } from "./table-CnZmon_Z.mjs";
1
+ import { i as __toESM } from "../_runtime.mjs";
2
+ import { l as createServerFn } from "./createMiddleware-B_I3Ll4M.mjs";
3
+ import { t as consoleAccess } from "./console-access-KpPv5lin.mjs";
4
+ import { mt as require_react, pt as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
5
+ import { D as Clipboard, F as Check, d as RefreshCw, f as Plus, n as TriangleAlert, s as ShieldOff, x as KeyRound, y as LoaderCircle } from "../_libs/lucide-react.mjs";
6
+ import { S as Skeleton, k as createSsrRpc, n as Input, t as Button$1, x as SidebarTrigger } from "./sidebar-Cw1VuC7d.mjs";
7
+ import { a as CardHeader, n as CardContent, o as CardTitle, t as Card } from "./card-DMbcvlPz.mjs";
8
+ import { a as Badge, c as FieldError, i as AlertTitle, l as FieldGroup, n as AlertAction, o as Field, r as AlertDescription, s as FieldDescription, t as Alert, u as FieldLabel } from "./field-mjhcNEXD.mjs";
9
+ import { a as AlertDialogDescription, c as AlertDialogMedia, d as Dialog$1, f as DialogContent, g as DialogTitle, h as DialogHeader, i as AlertDialogContent, l as AlertDialogTitle, m as DialogFooter, n as AlertDialogAction, o as AlertDialogFooter, p as DialogDescription, r as AlertDialogCancel, s as AlertDialogHeader, t as AlertDialog$1, u as AlertDialogTrigger } from "./dialog-cOmLTUV2.mjs";
10
+ import { a as TableHeader, i as TableHead, n as TableBody, o as TableRow, r as TableCell, t as Table } from "./table-q0P9wz7x.mjs";
11
+ import { a as useQueryClient, r as useQuery, t as useMutation } from "../_libs/tanstack__react-query.mjs";
9
12
  import { n as toast } from "../_libs/sonner.mjs";
10
- //#region node_modules/.nitro/vite/services/ssr/assets/api-keys-CZeTPQys.js
13
+ //#region node_modules/.nitro/vite/services/ssr/assets/api-keys-CT3HG7KT.js
11
14
  var import_react = /* @__PURE__ */ __toESM(require_react());
12
15
  var import_jsx_runtime = require_jsx_runtime();
16
+ var parseName = (input) => {
17
+ const name = typeof input === "object" && input !== null ? Reflect.get(input, "name") : void 0;
18
+ if (typeof name !== "string") throw new TypeError("API key name must be a string.");
19
+ return { name };
20
+ };
21
+ var parseId = (input) => {
22
+ const id = typeof input === "object" && input !== null ? Reflect.get(input, "id") : void 0;
23
+ if (typeof id !== "string" || !/^api-[A-Za-z0-9_-]{43}$/u.test(id)) throw new TypeError("Invalid API key id.");
24
+ return { id };
25
+ };
26
+ /** API key management, once the console's access check and the feature guard pass. */
27
+ var listApiKeysRpc = createServerFn({ method: "GET" }).middleware([consoleAccess]).handler(createSsrRpc("2c7f3cdb9bd3cab2c026a48abdc84c362db0362924a08679052a325640aec56b"));
28
+ var createApiKeyRpc = createServerFn({ method: "POST" }).middleware([consoleAccess]).validator(parseName).handler(createSsrRpc("68a2d94ee016be64936401f5eba60ab08a47ff373e1cf9de48e4413336e6034b"));
29
+ var revokeApiKeyRpc = createServerFn({ method: "POST" }).middleware([consoleAccess]).validator(parseId).handler(createSsrRpc("a1cb80b19ca72a64fb631ca28ebb9b6941db245983de082d5dd3203ec2eef795"));
30
+ var apiKeyQueryKeys = { list: ["api-keys", "list"] };
31
+ var useApiKeysQuery = () => useQuery({
32
+ queryKey: apiKeyQueryKeys.list,
33
+ queryFn: () => listApiKeysRpc()
34
+ });
35
+ var useCreateApiKeyMutation = () => {
36
+ const queryClient = useQueryClient();
37
+ return useMutation({
38
+ mutationFn: (name) => createApiKeyRpc({ data: { name } }),
39
+ onSuccess: async () => {
40
+ await queryClient.invalidateQueries({ queryKey: apiKeyQueryKeys.list });
41
+ }
42
+ });
43
+ };
44
+ var useRevokeApiKeyMutation = () => {
45
+ const queryClient = useQueryClient();
46
+ return useMutation({
47
+ mutationFn: (id) => revokeApiKeyRpc({ data: { id } }),
48
+ onSuccess: async () => {
49
+ await queryClient.invalidateQueries({ queryKey: apiKeyQueryKeys.list });
50
+ }
51
+ });
52
+ };
13
53
  var formatCreatedAt = (createdAt) => new Date(createdAt).toISOString().slice(0, 10);
14
54
  function CreateApiKeyDialog() {
15
55
  const [open, setOpen] = (0, import_react.useState)(false);
@@ -0,0 +1,5 @@
1
+ import { t as ConsoleFeatureUnavailable } from "./ConsoleFeatureUnavailable-DoxET2AT.mjs";
2
+ //#region node_modules/.nitro/vite/services/ssr/assets/api-keys-Dvvy1sem.js
3
+ var SplitNotFoundComponent = ConsoleFeatureUnavailable;
4
+ //#endregion
5
+ export { SplitNotFoundComponent as notFoundComponent };
@@ -0,0 +1,52 @@
1
+ import { l as createServerFn } from "./createMiddleware-B_I3Ll4M.mjs";
2
+ import { t as consoleAccess } from "./console-access-KpPv5lin.mjs";
3
+ import { t as createServerRpc } from "./createServerRpc-DuNm5mmo.mjs";
4
+ //#region node_modules/.nitro/vite/services/ssr/assets/api-keys-rpc-b1qTTFfG.js
5
+ var parseName = (input) => {
6
+ const name = typeof input === "object" && input !== null ? Reflect.get(input, "name") : void 0;
7
+ if (typeof name !== "string") throw new TypeError("API key name must be a string.");
8
+ return { name };
9
+ };
10
+ var parseId = (input) => {
11
+ const id = typeof input === "object" && input !== null ? Reflect.get(input, "id") : void 0;
12
+ if (typeof id !== "string" || !/^api-[A-Za-z0-9_-]{43}$/u.test(id)) throw new TypeError("Invalid API key id.");
13
+ return { id };
14
+ };
15
+ /** API key management, once the console's access check and the feature guard pass. */
16
+ var apiKeyManagement = async () => {
17
+ const [{ prepareConfig }, { requireFeature }] = await Promise.all([import("./config.server-DyypN6cQ.mjs"), import("./runtime.server-NucbYjc7.mjs")]);
18
+ const { runtime } = await prepareConfig();
19
+ return requireFeature(runtime, "apiKeys");
20
+ };
21
+ var listApiKeysRpc_createServerFn_handler = createServerRpc({
22
+ id: "2c7f3cdb9bd3cab2c026a48abdc84c362db0362924a08679052a325640aec56b",
23
+ name: "listApiKeysRpc",
24
+ filename: "src/lib/api-keys-rpc.ts"
25
+ }, (opts) => listApiKeysRpc.__executeServer(opts));
26
+ var listApiKeysRpc = createServerFn({ method: "GET" }).middleware([consoleAccess]).handler(listApiKeysRpc_createServerFn_handler, async () => {
27
+ return [...await (await apiKeyManagement()).list()].sort((left, right) => right.created_at_ms - left.created_at_ms);
28
+ });
29
+ var createApiKeyRpc_createServerFn_handler = createServerRpc({
30
+ id: "68a2d94ee016be64936401f5eba60ab08a47ff373e1cf9de48e4413336e6034b",
31
+ name: "createApiKeyRpc",
32
+ filename: "src/lib/api-keys-rpc.ts"
33
+ }, (opts) => createApiKeyRpc.__executeServer(opts));
34
+ var createApiKeyRpc = createServerFn({ method: "POST" }).middleware([consoleAccess]).validator(parseName).handler(createApiKeyRpc_createServerFn_handler, async ({ data }) => {
35
+ const created = await (await apiKeyManagement()).create({ name: data.name });
36
+ return {
37
+ apiKey: created.apiKey,
38
+ record: created.record
39
+ };
40
+ });
41
+ var revokeApiKeyRpc_createServerFn_handler = createServerRpc({
42
+ id: "a1cb80b19ca72a64fb631ca28ebb9b6941db245983de082d5dd3203ec2eef795",
43
+ name: "revokeApiKeyRpc",
44
+ filename: "src/lib/api-keys-rpc.ts"
45
+ }, (opts) => revokeApiKeyRpc.__executeServer(opts));
46
+ var revokeApiKeyRpc = createServerFn({ method: "POST" }).middleware([consoleAccess]).validator(parseId).handler(revokeApiKeyRpc_createServerFn_handler, async ({ data }) => {
47
+ const revoked = await (await apiKeyManagement()).revoke({ id: data.id });
48
+ if (revoked === null) throw new Error("API key not found.");
49
+ return revoked;
50
+ });
51
+ //#endregion
52
+ export { createApiKeyRpc_createServerFn_handler, listApiKeysRpc_createServerFn_handler, revokeApiKeyRpc_createServerFn_handler };
@@ -0,0 +1,338 @@
1
+ import { l as createServerFn } from "./createMiddleware-B_I3Ll4M.mjs";
2
+ import { t as consoleAccess } from "./console-access-KpPv5lin.mjs";
3
+ import { t as createServerRpc } from "./createServerRpc-DuNm5mmo.mjs";
4
+ import { S as isReleaseEligibleForCohort, i as NUMERIC_COHORT_SIZE } from "./dist-B-r4u3Lg.mjs";
5
+ import { c as rowToBundle } from "./databaseRows-CXxf_VIB.mjs";
6
+ import { t as ReleaseManagementError } from "./releaseManagement-B3e7I8J9.mjs";
7
+ import { n as readReleaseFilter, t as listReleases } from "./listReleases-DqU9t1l3.mjs";
8
+ //#region node_modules/.nitro/vite/services/ssr/assets/api-rpc-Cbns2MGx.js
9
+ var withPublicBundleMutationErrors = async (action) => {
10
+ try {
11
+ return await action();
12
+ } catch (error) {
13
+ if (error instanceof ReleaseManagementError) throw new Error(error.message.replace(/\bRelease\b/g, "Bundle").replace("Bundle Bundle", "deployed Bundle"), { cause: error });
14
+ throw error;
15
+ }
16
+ };
17
+ var NON_TARGETED_COHORT = "release-catalog-non-targeted-cohort";
18
+ function collectReachableFromIndexes(catalog, indexes, reachableReleaseIds) {
19
+ const descriptors = indexes.flatMap((index) => {
20
+ const descriptor = catalog.releaseDescriptors[index];
21
+ return descriptor === void 0 ? [] : [descriptor];
22
+ });
23
+ const cohorts = new Set([
24
+ void 0,
25
+ ...Array.from({ length: NUMERIC_COHORT_SIZE }, (_, index) => String(index + 1)),
26
+ ...descriptors.flatMap(({ targetCohorts }) => targetCohorts),
27
+ NON_TARGETED_COHORT
28
+ ]);
29
+ for (const cohort of cohorts) {
30
+ const selected = descriptors.find((descriptor) => descriptor.kind === "BUNDLE" && descriptor.bundleId !== null && isReleaseEligibleForCohort(descriptor, cohort));
31
+ if (selected !== void 0) reachableReleaseIds.add(selected.releaseId);
32
+ }
33
+ }
34
+ function collectCurrentlyReachableReleaseIds(catalog) {
35
+ const reachableReleaseIds = /* @__PURE__ */ new Set();
36
+ const indexGroups = catalog.strategy === "APP_VERSION" ? catalog.segments.map(({ releaseIndexes }) => releaseIndexes) : [catalog.releaseIndexes];
37
+ for (const indexes of indexGroups) collectReachableFromIndexes(catalog, indexes, reachableReleaseIds);
38
+ return reachableReleaseIds;
39
+ }
40
+ /** Marks each release its scope's compiled catalog no longer serves: one catalog read per scope. */
41
+ async function addReleaseReachability(core, releases) {
42
+ const scopeKeys = [...new Set(releases.map(({ scope_key }) => scope_key))];
43
+ const reachableByScope = new Map(await Promise.all(scopeKeys.map(async (scopeKey) => {
44
+ const row = await core.getReleaseCatalogRow(scopeKey);
45
+ return [scopeKey, row === null ? /* @__PURE__ */ new Set() : collectCurrentlyReachableReleaseIds(JSON.parse(row.payload))];
46
+ })));
47
+ return releases.map((release) => ({
48
+ ...release,
49
+ currentlyUnreachable: !reachableByScope.get(release.scope_key)?.has(release.id)
50
+ }));
51
+ }
52
+ var MAX_PAGE_LIMIT = 100;
53
+ var pageLimit = (limit) => {
54
+ const value = limit ?? 20;
55
+ if (!Number.isSafeInteger(value) || value < 1 || value > MAX_PAGE_LIMIT) throw new Error(`limit must be between 1 and ${MAX_PAGE_LIMIT}.`);
56
+ return value;
57
+ };
58
+ var prepare = async () => {
59
+ const { prepareConfig } = await import("./config.server-DyypN6cQ.mjs");
60
+ return prepareConfig();
61
+ };
62
+ var getReleases_createServerFn_handler = createServerRpc({
63
+ id: "206547cb1526f961070a989818ca7b9e34f6b2b0e4ab851698c3807fe9fb5e0c",
64
+ name: "getReleases",
65
+ filename: "src/lib/api-rpc.ts"
66
+ }, (opts) => getReleases.__executeServer(opts));
67
+ var getReleases = createServerFn({ method: "GET" }).middleware([consoleAccess]).validator((input) => ({
68
+ filter: readReleaseFilter(input?.filter),
69
+ ...input?.afterReleaseId === void 0 ? {} : { afterReleaseId: input.afterReleaseId },
70
+ ...input?.beforeReleaseId === void 0 ? {} : { beforeReleaseId: input.beforeReleaseId },
71
+ limit: pageLimit(input?.limit)
72
+ })).handler(getReleases_createServerFn_handler, async ({ data }) => {
73
+ const { core } = await prepare();
74
+ const result = await listReleases(core, data);
75
+ return {
76
+ ...result,
77
+ data: await addReleaseReachability(core, result.data)
78
+ };
79
+ });
80
+ var getRelease_createServerFn_handler = createServerRpc({
81
+ id: "a6f23116eeaf76166d405e28a95213123025613c6603030894e519015bf48032",
82
+ name: "getRelease",
83
+ filename: "src/lib/api-rpc.ts"
84
+ }, (opts) => getRelease.__executeServer(opts));
85
+ var getRelease = createServerFn({ method: "GET" }).middleware([consoleAccess]).validator((input) => input).handler(getRelease_createServerFn_handler, async ({ data }) => (await prepare()).core.getRelease(data.releaseId));
86
+ var updateRelease_createServerFn_handler = createServerRpc({
87
+ id: "7ea0186f19f9f2bc2ca4b26e3c59636891cf046957f84287b6783f8d88bd8cb7",
88
+ name: "updateRelease",
89
+ filename: "src/lib/api-rpc.ts"
90
+ }, (opts) => updateRelease.__executeServer(opts));
91
+ var updateRelease = createServerFn({ method: "POST" }).middleware([consoleAccess]).validator((input) => input).handler(updateRelease_createServerFn_handler, async ({ data }) => {
92
+ const { core } = await prepare();
93
+ return withPublicBundleMutationErrors(() => core.updateReleasePolicy(data));
94
+ });
95
+ var preflightRelease_createServerFn_handler = createServerRpc({
96
+ id: "b46c95dba95a6a3e8fa5c9d100e3622fa5ae7af4f38e10fb1ed2fa48289a3a8f",
97
+ name: "preflightRelease",
98
+ filename: "src/lib/api-rpc.ts"
99
+ }, (opts) => preflightRelease.__executeServer(opts));
100
+ var preflightRelease = createServerFn({ method: "POST" }).middleware([consoleAccess]).validator((input) => input).handler(preflightRelease_createServerFn_handler, async ({ data }) => {
101
+ const { core } = await prepare();
102
+ return withPublicBundleMutationErrors(() => core.preflightReleasePolicy(data));
103
+ });
104
+ var deleteRelease_createServerFn_handler = createServerRpc({
105
+ id: "d5b58722ce514e3b63a377f736b4823c2011782495442ae4870ed547e392c70b",
106
+ name: "deleteRelease",
107
+ filename: "src/lib/api-rpc.ts"
108
+ }, (opts) => deleteRelease.__executeServer(opts));
109
+ var deleteRelease = createServerFn({ method: "POST" }).middleware([consoleAccess]).validator((input) => input).handler(deleteRelease_createServerFn_handler, async ({ data }) => {
110
+ const { core } = await prepare();
111
+ return withPublicBundleMutationErrors(() => core.deleteRelease(data));
112
+ });
113
+ var promoteRelease_createServerFn_handler = createServerRpc({
114
+ id: "956539a300d79a7efa191c1cc2d529d62fc4bfd940442548fdbc1404e0d53078",
115
+ name: "promoteRelease",
116
+ filename: "src/lib/api-rpc.ts"
117
+ }, (opts) => promoteRelease.__executeServer(opts));
118
+ var promoteRelease = createServerFn({ method: "POST" }).middleware([consoleAccess]).validator((input) => input).handler(promoteRelease_createServerFn_handler, async ({ data }) => {
119
+ const { core } = await prepare();
120
+ return withPublicBundleMutationErrors(() => core.promoteRelease(data));
121
+ });
122
+ var getReleaseCatalogDiagnostics_createServerFn_handler = createServerRpc({
123
+ id: "e8c24b7247936f045a145ffd5c177fd0e3df3b52769d67dfbd8d1de491d66396",
124
+ name: "getReleaseCatalogDiagnostics",
125
+ filename: "src/lib/api-rpc.ts"
126
+ }, (opts) => getReleaseCatalogDiagnostics.__executeServer(opts));
127
+ var getReleaseCatalogDiagnostics = createServerFn({ method: "GET" }).middleware([consoleAccess]).validator((input) => input).handler(getReleaseCatalogDiagnostics_createServerFn_handler, async ({ data }) => (await prepare()).core.getReleaseCatalogRow(data.scopeKey));
128
+ var getConfig_createServerFn_handler = createServerRpc({
129
+ id: "51a34c05479a893c7d320bd4cd1604427289d667698c48b9f30a01aabf8a5e68",
130
+ name: "getConfig",
131
+ filename: "src/lib/api-rpc.ts"
132
+ }, (opts) => getConfig.__executeServer(opts));
133
+ var getConfig = createServerFn().middleware([consoleAccess]).handler(getConfig_createServerFn_handler, async () => {
134
+ try {
135
+ const { config } = await prepare();
136
+ return { console: config.console };
137
+ } catch (error) {
138
+ console.error("Error during config retrieval:", error);
139
+ throw error;
140
+ }
141
+ });
142
+ var getChannels_createServerFn_handler = createServerRpc({
143
+ id: "79ada05964de8f2123bfcd62b10097d59bf8fd689ef5c7161031e5871d8396c5",
144
+ name: "getChannels",
145
+ filename: "src/lib/api-rpc.ts"
146
+ }, (opts) => getChannels.__executeServer(opts));
147
+ var getChannels = createServerFn().middleware([consoleAccess]).handler(getChannels_createServerFn_handler, async () => {
148
+ try {
149
+ return await (await prepare()).core.listChannels();
150
+ } catch (error) {
151
+ console.error("Error during channel retrieval:", error);
152
+ throw error;
153
+ }
154
+ });
155
+ var createChannel_createServerFn_handler = createServerRpc({
156
+ id: "2b9b8d1f49f79a511589617d8d4bfc6094a3acf5264f33651b9569ba66d3f321",
157
+ name: "createChannel",
158
+ filename: "src/lib/api-rpc.ts"
159
+ }, (opts) => createChannel.__executeServer(opts));
160
+ var createChannel = createServerFn({ method: "POST" }).middleware([consoleAccess]).validator((input) => {
161
+ const name = typeof input?.name === "string" ? input.name.trim() : "";
162
+ if (name.length === 0) throw new Error("Channel name is required.");
163
+ return { name };
164
+ }).handler(createChannel_createServerFn_handler, async ({ data }) => {
165
+ try {
166
+ const { core } = await prepare();
167
+ const existing = await core.findChannelByName(data.name);
168
+ if (existing !== null) return { data: {
169
+ row: existing,
170
+ inserted: false
171
+ } };
172
+ return { data: {
173
+ row: await core.ensureChannel(data.name),
174
+ inserted: true
175
+ } };
176
+ } catch (error) {
177
+ console.error("Error during channel creation:", error);
178
+ throw error;
179
+ }
180
+ });
181
+ var deleteChannel_createServerFn_handler = createServerRpc({
182
+ id: "52756dde414919a906bfe83d1ab6d29910c63bcafdb47653d6f1df562d958920",
183
+ name: "deleteChannel",
184
+ filename: "src/lib/api-rpc.ts"
185
+ }, (opts) => deleteChannel.__executeServer(opts));
186
+ var deleteChannel = createServerFn({ method: "POST" }).middleware([consoleAccess]).validator((input) => input).handler(deleteChannel_createServerFn_handler, async ({ data }) => {
187
+ try {
188
+ return { data: await (await prepare()).core.deleteChannel(data.id) };
189
+ } catch (error) {
190
+ console.error("Error during channel deletion:", error);
191
+ throw error;
192
+ }
193
+ });
194
+ var getConfigLoaded_createServerFn_handler = createServerRpc({
195
+ id: "f8bdca3d0579adb812d6404f55d9261a89cdb025e920b1fcad82883646a5fe9e",
196
+ name: "getConfigLoaded",
197
+ filename: "src/lib/api-rpc.ts"
198
+ }, (opts) => getConfigLoaded.__executeServer(opts));
199
+ var getConfigLoaded = createServerFn().middleware([consoleAccess]).handler(getConfigLoaded_createServerFn_handler, async () => {
200
+ try {
201
+ const { isConfigLoaded } = await import("./config.server-DyypN6cQ.mjs");
202
+ return { configLoaded: isConfigLoaded() };
203
+ } catch (error) {
204
+ console.error("Error during config loaded retrieval:", error);
205
+ throw error;
206
+ }
207
+ });
208
+ var getBundles_createServerFn_handler = createServerRpc({
209
+ id: "00ccacb4a0212c83ec29f4d11719046ad91ea8291cfc557d514dbf00d3bd7f5f",
210
+ name: "getBundles",
211
+ filename: "src/lib/api-rpc.ts"
212
+ }, (opts) => getBundles.__executeServer(opts));
213
+ var getBundles = createServerFn({ method: "GET" }).middleware([consoleAccess]).validator((input) => {
214
+ if (input?.after !== void 0 && input.before !== void 0) throw new Error("Page by after or before, not both.");
215
+ return {
216
+ ...input?.platform === void 0 ? {} : { platform: input.platform },
217
+ ...input?.after === void 0 ? {} : { after: input.after },
218
+ ...input?.before === void 0 ? {} : { before: input.before },
219
+ limit: pageLimit(input?.limit)
220
+ };
221
+ }).handler(getBundles_createServerFn_handler, async ({ data }) => {
222
+ try {
223
+ const { core } = await prepare();
224
+ const platform = data.platform === void 0 ? {} : { platform: data.platform };
225
+ const [page, total] = await Promise.all([data.before === void 0 ? core.listBundles({
226
+ ...platform,
227
+ order: "desc",
228
+ limit: data.limit,
229
+ ...data.after === void 0 ? {} : { after: data.after }
230
+ }) : core.listBundles({
231
+ ...platform,
232
+ order: "asc",
233
+ limit: data.limit,
234
+ after: data.before
235
+ }).then((rows) => rows.reverse()), core.countBundles(data.platform)]);
236
+ const full = page.length === data.limit;
237
+ const first = page[0]?.bundle.id;
238
+ const last = page.at(-1)?.bundle.id;
239
+ return {
240
+ data: page.map(({ bundle, patches }) => rowToBundle(bundle, patches)),
241
+ total,
242
+ ...last !== void 0 && (data.before !== void 0 || full) ? { next: last } : {},
243
+ ...first !== void 0 && (data.after !== void 0 || data.before !== void 0 && full) ? { previous: first } : {}
244
+ };
245
+ } catch (error) {
246
+ console.error("Error during bundle retrieval:", error);
247
+ throw error;
248
+ }
249
+ });
250
+ var getBundle_createServerFn_handler = createServerRpc({
251
+ id: "1bd85c2a50e24785cb6abb023a247a9f048f37ddfa85cbb1c57e579563bad013",
252
+ name: "getBundle",
253
+ filename: "src/lib/api-rpc.ts"
254
+ }, (opts) => getBundle.__executeServer(opts));
255
+ var getBundle = createServerFn({ method: "GET" }).middleware([consoleAccess]).validator((input) => input).handler(getBundle_createServerFn_handler, async ({ data }) => {
256
+ try {
257
+ const detail = await (await prepare()).core.getBundle(data.bundleId);
258
+ return detail === null ? null : rowToBundle(detail.bundle, detail.patches);
259
+ } catch (error) {
260
+ console.error("Error during bundle retrieval:", error);
261
+ throw error;
262
+ }
263
+ });
264
+ var getBundleChildren_createServerFn_handler = createServerRpc({
265
+ id: "4370f1bf70b91f1168d85379d3008449a1bedb915e9878ca4ef89d5f3a80fa7f",
266
+ name: "getBundleChildren",
267
+ filename: "src/lib/api-rpc.ts"
268
+ }, (opts) => getBundleChildren.__executeServer(opts));
269
+ var getBundleChildren = createServerFn({ method: "GET" }).middleware([consoleAccess]).validator((input) => input).handler(getBundleChildren_createServerFn_handler, async ({ data }) => {
270
+ try {
271
+ const [{ core }, { getBundleChildren: readBundleChildren }] = await Promise.all([prepare(), import("./getBundleChildren-DbDXe9wB.mjs")]);
272
+ return await readBundleChildren(core, data.baseBundleId);
273
+ } catch (error) {
274
+ console.error("Error during bundle children retrieval:", error);
275
+ throw error;
276
+ }
277
+ });
278
+ var getBundleChildCounts_createServerFn_handler = createServerRpc({
279
+ id: "4ca367070b00f58179a572f0bb8196a4ccdd3881e9b1dbfe33deee0cb6e1f549",
280
+ name: "getBundleChildCounts",
281
+ filename: "src/lib/api-rpc.ts"
282
+ }, (opts) => getBundleChildCounts.__executeServer(opts));
283
+ var getBundleChildCounts = createServerFn({ method: "GET" }).middleware([consoleAccess]).validator((input) => {
284
+ if (!Array.isArray(input?.bundleIds) || input.bundleIds.length > 100) throw new Error("Choose up to 100 bundles.");
285
+ return input;
286
+ }).handler(getBundleChildCounts_createServerFn_handler, async ({ data }) => {
287
+ try {
288
+ const [{ core }, { getBundleChildCounts: readBundleChildCounts }] = await Promise.all([prepare(), import("./getBundleChildren-DbDXe9wB.mjs")]);
289
+ return await readBundleChildCounts(core, data.bundleIds);
290
+ } catch (error) {
291
+ console.error("Error during bundle child count retrieval:", error);
292
+ throw error;
293
+ }
294
+ });
295
+ var deleteBundle_createServerFn_handler = createServerRpc({
296
+ id: "3a27ff5679228b86a346b3fe42142e7a5bf0264f73173c0dbe5f07fb37c43cf7",
297
+ name: "deleteBundle",
298
+ filename: "src/lib/api-rpc.ts"
299
+ }, (opts) => deleteBundle.__executeServer(opts));
300
+ var deleteBundle = createServerFn({ method: "POST" }).middleware([consoleAccess]).validator((input) => input).handler(deleteBundle_createServerFn_handler, async ({ data }) => {
301
+ try {
302
+ const { deleteBundle: deleteBundleWithStorage } = await import("./deleteBundle-Dcc21Lbd.mjs");
303
+ const { core, storagePlugin } = await prepare();
304
+ await deleteBundleWithStorage(data, {
305
+ core,
306
+ storagePlugin,
307
+ waitForStorageCleanup: false
308
+ });
309
+ return { success: true };
310
+ } catch (error) {
311
+ console.error("Error during bundle deletion:", error);
312
+ throw error;
313
+ }
314
+ });
315
+ var deleteBundles_createServerFn_handler = createServerRpc({
316
+ id: "61de3b69779c5ce2a5f5d3c27e2cfaca8fba8f14c8803559b9cd733c456494fa",
317
+ name: "deleteBundles",
318
+ filename: "src/lib/api-rpc.ts"
319
+ }, (opts) => deleteBundles.__executeServer(opts));
320
+ var deleteBundles = createServerFn({ method: "POST" }).middleware([consoleAccess]).validator((input) => input).handler(deleteBundles_createServerFn_handler, async ({ data }) => {
321
+ try {
322
+ const { deleteBundles: deleteBundlesWithStorage } = await import("./deleteBundle-Dcc21Lbd.mjs");
323
+ const { core, storagePlugin } = await prepare();
324
+ return {
325
+ success: true,
326
+ ...await deleteBundlesWithStorage(data, {
327
+ core,
328
+ storagePlugin,
329
+ waitForStorageCleanup: false
330
+ })
331
+ };
332
+ } catch (error) {
333
+ console.error("Error during bundle deletion:", error);
334
+ throw error;
335
+ }
336
+ });
337
+ //#endregion
338
+ export { createChannel_createServerFn_handler, deleteBundle_createServerFn_handler, deleteBundles_createServerFn_handler, deleteChannel_createServerFn_handler, deleteRelease_createServerFn_handler, getBundleChildCounts_createServerFn_handler, getBundleChildren_createServerFn_handler, getBundle_createServerFn_handler, getBundles_createServerFn_handler, getChannels_createServerFn_handler, getConfigLoaded_createServerFn_handler, getConfig_createServerFn_handler, getReleaseCatalogDiagnostics_createServerFn_handler, getRelease_createServerFn_handler, getReleases_createServerFn_handler, preflightRelease_createServerFn_handler, promoteRelease_createServerFn_handler, updateRelease_createServerFn_handler };
@@ -1,14 +1,14 @@
1
- import { c as createServerFn } from "./createServerFn-B2hcXoPM.mjs";
2
- import { t as createServerRpc } from "./createServerRpc-DB29C_5p.mjs";
3
- import { r as getRequest } from "./server-D_C2rMzf.mjs";
4
- //#region node_modules/.nitro/vite/services/ssr/assets/auth-rpc-DUaeOWKK.js
1
+ import { l as createServerFn } from "./createMiddleware-B_I3Ll4M.mjs";
2
+ import { t as createServerRpc } from "./createServerRpc-DuNm5mmo.mjs";
3
+ import { r as getRequest } from "./server-DKJYsaCP.mjs";
4
+ //#region node_modules/.nitro/vite/services/ssr/assets/auth-rpc-DChS7m9y.js
5
5
  var getConsoleAccessRpc_createServerFn_handler = createServerRpc({
6
6
  id: "c504696e68ba764b48c48aa8a40275938640941e473cf9cfdd7b2322d99f9d13",
7
7
  name: "getConsoleAccessRpc",
8
8
  filename: "src/lib/auth-rpc.ts"
9
9
  }, (opts) => getConsoleAccessRpc.__executeServer(opts));
10
10
  var getConsoleAccessRpc = createServerFn({ method: "GET" }).handler(getConsoleAccessRpc_createServerFn_handler, async () => {
11
- const { getConsoleAccess } = await import("./auth.server-DW71WzsD.mjs");
11
+ const { getConsoleAccess } = await import("./auth.server-Ccqz2iVv.mjs");
12
12
  return getConsoleAccess(getRequest());
13
13
  });
14
14
  var getConsoleAuthProvidersRpc_createServerFn_handler = createServerRpc({
@@ -17,7 +17,7 @@ var getConsoleAuthProvidersRpc_createServerFn_handler = createServerRpc({
17
17
  filename: "src/lib/auth-rpc.ts"
18
18
  }, (opts) => getConsoleAuthProvidersRpc.__executeServer(opts));
19
19
  var getConsoleAuthProvidersRpc = createServerFn({ method: "GET" }).handler(getConsoleAuthProvidersRpc_createServerFn_handler, async () => {
20
- const { getConsoleAuthProviders } = await import("./auth.server-DW71WzsD.mjs");
20
+ const { getConsoleAuthProviders } = await import("./auth.server-Ccqz2iVv.mjs");
21
21
  return getConsoleAuthProviders(getRequest());
22
22
  });
23
23
  //#endregion
@@ -0,0 +1,37 @@
1
+ //#region node_modules/.nitro/vite/services/ssr/assets/auth.server-Ccqz2iVv.js
2
+ var getConsoleAuthAdapter = async () => {
3
+ return (await import("./auth-BF8mbAgF.mjs")).default;
4
+ };
5
+ var resolveConsoleConfig = async (request) => {
6
+ const { default: source } = await import("./config-DMEJdhoW.mjs");
7
+ const config = typeof source === "function" ? await source(request) : source;
8
+ return {
9
+ console: config.console,
10
+ database: config.database,
11
+ storage: config.storage,
12
+ ...config.plugins === void 0 ? {} : { plugins: config.plugins }
13
+ };
14
+ };
15
+ var accessError = (access) => new Response(access.status === "unauthenticated" ? "Unauthorized" : "Forbidden", { status: access.status === "unauthenticated" ? 401 : 403 });
16
+ var accessByRequest = /* @__PURE__ */ new WeakMap();
17
+ var getConsoleAccess = (request) => {
18
+ let access = accessByRequest.get(request);
19
+ if (!access) {
20
+ access = getConsoleAuthAdapter().then((adapter) => adapter.getAccess(request));
21
+ accessByRequest.set(request, access);
22
+ }
23
+ return access;
24
+ };
25
+ var getConsoleAuthProviders = async (request) => {
26
+ return (await getConsoleAuthAdapter()).getProviders(request);
27
+ };
28
+ var handleConsoleAuth = async (request) => {
29
+ return (await getConsoleAuthAdapter()).handle(request);
30
+ };
31
+ var requireConsoleAccess = async (request) => {
32
+ const access = await getConsoleAccess(request);
33
+ if (access.status !== "authorized") throw accessError(access);
34
+ return access.principal;
35
+ };
36
+ //#endregion
37
+ export { getConsoleAccess, getConsoleAuthProviders, handleConsoleAuth, requireConsoleAccess, resolveConsoleConfig as t };
@@ -0,0 +1,19 @@
1
+ //#region node_modules/.nitro/vite/services/ssr/assets/bundleActivity-D17Pb_h5.js
2
+ async function getBundleActivity(model, inputs) {
3
+ if (inputs.length === 0) return {};
4
+ const releases = inputs.map((input) => ({
5
+ releaseId: input.releaseId,
6
+ platform: input.platform,
7
+ channel: input.channel
8
+ }));
9
+ const activity = await model.getReleaseActivity({ releases });
10
+ return Object.fromEntries(activity.data.flatMap((item) => item.release === void 0 ? [] : [[item.release.releaseId, {
11
+ downloads: item.metrics.downloads,
12
+ activeDays: item.metrics.launches,
13
+ failedLaunches: item.metrics.failedLaunches,
14
+ measuredAtMs: activity.measuredAtMs,
15
+ coverage: activity.coverage
16
+ }]]));
17
+ }
18
+ //#endregion
19
+ export { getBundleActivity };
@@ -0,0 +1,49 @@
1
+ import "../_runtime.mjs";
2
+ import { mt as require_react, pt as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
3
+ import { O as cn } from "./sidebar-Cw1VuC7d.mjs";
4
+ require_react();
5
+ var import_jsx_runtime = require_jsx_runtime();
6
+ function Card({ className, ...props }) {
7
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
8
+ "data-slot": "card",
9
+ className: cn("rounded-xl border bg-card text-card-foreground shadow", className),
10
+ ...props
11
+ });
12
+ }
13
+ function CardHeader({ className, ...props }) {
14
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
15
+ "data-slot": "card-header",
16
+ className: cn("flex flex-col gap-1.5 p-6", className),
17
+ ...props
18
+ });
19
+ }
20
+ function CardTitle({ className, ...props }) {
21
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
22
+ "data-slot": "card-title",
23
+ className: cn("font-semibold leading-none tracking-tight", className),
24
+ ...props
25
+ });
26
+ }
27
+ function CardDescription({ className, ...props }) {
28
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
29
+ "data-slot": "card-description",
30
+ className: cn("text-sm text-muted-foreground", className),
31
+ ...props
32
+ });
33
+ }
34
+ function CardContent({ className, ...props }) {
35
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
36
+ "data-slot": "card-content",
37
+ className: cn("p-6 pt-0", className),
38
+ ...props
39
+ });
40
+ }
41
+ function CardFooter({ className, ...props }) {
42
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
43
+ "data-slot": "card-footer",
44
+ className: cn("flex items-center p-6 pt-0", className),
45
+ ...props
46
+ });
47
+ }
48
+ //#endregion
49
+ export { CardHeader as a, CardFooter as i, CardContent as n, CardTitle as o, CardDescription as r, Card as t };
@@ -0,0 +1,13 @@
1
+ import { loadConfig, loadHotUpdaterPlugins } from "@hot-updater/cli-tools";
2
+ //#region node_modules/.nitro/vite/services/ssr/assets/config-DMEJdhoW.js
3
+ var config_default = async () => {
4
+ const [config, plugins] = await Promise.all([loadConfig(null), loadHotUpdaterPlugins()]);
5
+ return {
6
+ console: { gitUrl: config.console.gitUrl },
7
+ database: config.database,
8
+ storage: config.storage,
9
+ ...plugins === void 0 ? {} : { plugins }
10
+ };
11
+ };
12
+ //#endregion
13
+ export { config_default as default };