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

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 (285) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/assets/ConsoleFeatureUnavailable-D0LPL1Gy.js +1 -0
  3. package/.output/public/assets/HashValueDisplay-BmuB4FW-.js +1 -0
  4. package/.output/public/assets/InsightsInfo--v4SC07c.js +1 -0
  5. package/.output/public/assets/InsightsPageHeader-dU83CAQY.js +1 -0
  6. package/.output/public/assets/NotFoundPage-B5mhGG2a.js +1 -0
  7. package/.output/public/assets/api-D-vOVlQ4.js +1 -0
  8. package/.output/public/assets/api-keys-Csh8ARKU.js +1 -0
  9. package/.output/public/assets/api-keys-OMPUoA_A.js +1 -0
  10. package/.output/public/assets/arrow-left-Bwq9X1eS.js +1 -0
  11. package/.output/public/assets/arrow-up-right-BkOVn4if.js +1 -0
  12. package/.output/public/assets/card-C_7d6O9a.js +1 -0
  13. package/.output/public/assets/console-features-api-C1jRZTGw.js +1 -0
  14. package/.output/public/assets/dialog-DE8wFN_P.js +1 -0
  15. package/.output/public/assets/dist-C7ENGzpS.js +1 -0
  16. package/.output/public/assets/empty-CVd5NlQD.js +1 -0
  17. package/.output/public/assets/field-C06q1iC9.js +1 -0
  18. package/.output/public/assets/index-BeWlQtO6.js +11 -0
  19. package/.output/public/assets/input-group-Bi61biIA.js +1 -0
  20. package/.output/public/assets/insights-BjnAtC0f.js +2 -0
  21. package/.output/public/assets/insights-D86m11yH.js +42 -0
  22. package/.output/public/assets/insights-DpYstMoY.js +1 -0
  23. package/.output/public/assets/insights-recovery-rpc-BIm5_ALc.js +1 -0
  24. package/.output/public/assets/insights-search-KIF7mRtB.js +1 -0
  25. package/.output/public/assets/insights-usage-rpc-VHj8vyBt.js +1 -0
  26. package/.output/public/assets/insights_.distribution-ADcrX48c.js +2 -0
  27. package/.output/public/assets/insights_.distribution-CuuJUN6Y.js +1 -0
  28. package/.output/public/assets/insights_.distribution-DJRjuXsO.js +1 -0
  29. package/.output/public/assets/installations-BSBBzqWs.js +2 -0
  30. package/.output/public/assets/installations-DqIE6WcO.js +1 -0
  31. package/.output/public/assets/installations-UsELbDvw.js +1 -0
  32. package/.output/public/assets/loader-circle-CnCBxzHp.js +1 -0
  33. package/.output/public/assets/mutation-Csp7xUNh.js +1 -0
  34. package/.output/public/assets/preload-helper-B-cOmpLH.js +1 -0
  35. package/.output/public/assets/refresh-cw-FF1NtzlQ.js +1 -0
  36. package/.output/public/assets/routes-CoN9XHP_.js +2 -0
  37. package/.output/public/assets/routes-DT1jB0Zi.js +1 -0
  38. package/.output/public/assets/sidebar-D8mJRF15.js +3 -0
  39. package/.output/public/assets/styles-Bwt7v6U5.css +2 -0
  40. package/.output/public/assets/table-WBgfvgXg.js +1 -0
  41. package/.output/public/assets/useCompositeListItem-CloBmDwn.js +1 -0
  42. package/.output/public/assets/useMutation-DO8cvsTx.js +1 -0
  43. package/.output/public/assets/useOpenInteractionType-ReGr9GzJ.js +1 -0
  44. package/.output/public/assets/valueToPercent-BvPAi4bP.js +1 -0
  45. package/.output/server/{__23tanstack-start-server-fn-resolver-B7ioJhtE.mjs → __23tanstack-start-server-fn-resolver-DMRD4e4f.mjs} +51 -47
  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 +3803 -4023
  49. package/.output/server/_libs/@tanstack/react-router-ssr-query+[...].mjs +141 -98
  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__history.mjs +68 -41
  67. package/.output/server/_libs/tanstack__query-core.mjs +1618 -309
  68. package/.output/server/_libs/tanstack__react-query.mjs +262 -22
  69. package/.output/server/_libs/verkit.mjs +99 -1
  70. package/.output/server/_runtime.mjs +10 -1
  71. package/.output/server/_ssr/ConsoleFeatureUnavailable-Du7jNPNS.mjs +58 -0
  72. package/.output/server/_ssr/{HashValueDisplay-DwpGLfrl.mjs → HashValueDisplay-GQvFkXoi.mjs} +3 -3
  73. package/.output/server/_ssr/InsightsInfo-Do7QSaFR.mjs +37 -0
  74. package/.output/server/_ssr/InsightsPageHeader-DSUWUWRc.mjs +154 -0
  75. package/.output/server/_ssr/NotFoundPage-DsF4Vrhg.mjs +37 -0
  76. package/.output/server/_ssr/api-BEiVs0H7.mjs +203 -0
  77. package/.output/server/_ssr/api-keys-BrvBWGRf.mjs +5 -0
  78. package/.output/server/_ssr/{api-keys-CZeTPQys.mjs → api-keys-K5v32nf7.mjs} +49 -9
  79. package/.output/server/_ssr/api-keys-rpc-B96bBllm.mjs +52 -0
  80. package/.output/server/_ssr/api-rpc-DcUe280B.mjs +296 -0
  81. package/.output/server/_ssr/{auth-rpc-DUaeOWKK.mjs → auth-rpc-C68W56DP.mjs} +6 -6
  82. package/.output/server/_ssr/auth.server-DM1J6NwR.mjs +5712 -0
  83. package/.output/server/_ssr/bundleActivity-CpuY9CTP.mjs +19 -0
  84. package/.output/server/_ssr/card-CPAEKx0w.mjs +49 -0
  85. package/.output/server/_ssr/config-nsIcsHh8.mjs +15 -0
  86. package/.output/server/_ssr/config.server-DDCZk3Sq.mjs +36 -0
  87. package/.output/server/_ssr/console-access-Da-2Qd7q.mjs +17 -0
  88. package/.output/server/_ssr/console-features-Dzu2iUGD.mjs +55 -0
  89. package/.output/server/_ssr/console-features-api-xAsSgFa_.mjs +43 -0
  90. package/.output/server/_ssr/console-features-rpc-qARGpB24.mjs +19 -0
  91. package/.output/server/_ssr/{createServerFn-B2hcXoPM.mjs → createMiddleware-BdBf_ezN.mjs} +67 -56
  92. package/.output/server/_ssr/{createServerRpc-DB29C_5p.mjs → createServerRpc-B_y2lrwA.mjs} +2 -2
  93. package/.output/server/_ssr/{databaseJsonValue-d6I3nAS4.mjs → databaseJsonValue-Bhxciy7Z.mjs} +28 -5
  94. package/.output/server/_ssr/databaseRows-DwMAjaF8.mjs +74 -0
  95. package/.output/server/_ssr/{dialog-DS-nw-pA.mjs → dialog-q__BJ7mQ.mjs} +2 -2
  96. package/.output/server/_ssr/{dist-CyzPaI5v.mjs → dist-Cxo9ghYv.mjs} +140 -6
  97. package/.output/server/_ssr/{downloadBundle-CNnYxYO2.mjs → downloadBundle-BW9I-pMQ.mjs} +10 -10
  98. package/.output/server/_ssr/empty-DcBTAooP.mjs +49 -0
  99. package/.output/server/_ssr/{empty-plugin-adapters-B5QvGpEl.mjs → empty-plugin-adapters-CYdinE-i.mjs} +1 -1
  100. package/.output/server/_ssr/{table-CnZmon_Z.mjs → field-QCDBVpXA.mjs} +63 -51
  101. package/.output/server/_ssr/getBundleChildren-DIAGCF4a.mjs +22 -0
  102. package/.output/server/_ssr/{input-group-BpsnmvZw.mjs → input-group-hCk2nUoU.mjs} +2 -2
  103. package/.output/server/_ssr/insights-BfBO0RFr.mjs +1238 -0
  104. package/.output/server/_ssr/insights-DsAU3-TB.mjs +14 -0
  105. package/.output/server/_ssr/insights-RIfg447W.mjs +5 -0
  106. package/.output/server/_ssr/insights-api-CDn-QQHU.mjs +105 -0
  107. package/.output/server/_ssr/insights-failures-BBGMhuUr.mjs +44 -0
  108. package/.output/server/_ssr/insights-failures-rpc-rA2dctK2.mjs +21 -0
  109. package/.output/server/_ssr/insights-recovery-Dpk6Mfb9.mjs +28 -0
  110. package/.output/server/_ssr/insights-recovery-rpc-BCaF-xSd.mjs +46 -0
  111. package/.output/server/_ssr/insights-recovery-rpc-CcgYyUHk.mjs +20 -0
  112. package/.output/server/_ssr/{insights-rpc-38DujK0G.mjs → insights-rpc-keycmwzw.mjs} +22 -14
  113. package/.output/server/_ssr/insights-search-BRg5VsNe.mjs +25 -0
  114. package/.output/server/_ssr/insights-usage-cbw9n2Fq.mjs +29 -0
  115. package/.output/server/_ssr/insights-usage-rpc-BKgV1QDf.mjs +29 -0
  116. package/.output/server/_ssr/insights-usage-rpc-D-JYachy.mjs +41 -0
  117. package/.output/server/_ssr/insightsRecovery-B7oMc8d8.mjs +45 -0
  118. package/.output/server/_ssr/insightsUsage-Oa7kk5ek.mjs +56 -0
  119. package/.output/server/_ssr/insights_.distribution-BIqOqRW0.mjs +335 -0
  120. package/.output/server/_ssr/insights_.distribution-CuUrDa7P.mjs +5 -0
  121. package/.output/server/_ssr/insights_.distribution-RT_6x_ud.mjs +14 -0
  122. package/.output/server/_ssr/{installations-DiVKEF5T.mjs → installations-BO5CjX2z.mjs} +517 -54
  123. package/.output/server/_ssr/installations-BjaHiIfh.mjs +5 -0
  124. package/.output/server/_ssr/installations-Dt5luA-N.mjs +69 -0
  125. package/.output/server/_ssr/listReleases-BitHzOYB.mjs +79 -0
  126. package/.output/server/_ssr/releaseManagement-B3e7I8J9.mjs +11 -0
  127. package/.output/server/_ssr/{router-B9wG_9f8.mjs → router-DfVAixxe.mjs} +135 -139
  128. package/.output/server/_ssr/{routes-D7Yh_jfj.mjs → routes-C6LstNp8.mjs} +176 -455
  129. package/.output/server/_ssr/routes-Q3Uhmwwz.mjs +292 -0
  130. package/.output/server/_ssr/runtime.server-fL0o6I2b.mjs +1459 -0
  131. package/.output/server/_ssr/schema-BKY9SqaY.mjs +25 -0
  132. package/.output/server/_ssr/select-CUlInmjk.mjs +107 -0
  133. package/.output/server/_ssr/server-C43wq9ft.mjs +8330 -0
  134. package/.output/server/_ssr/{createSsrRpc-DjWNJ0uc.mjs → sidebar-DKbx2ach.mjs} +117 -63
  135. package/.output/server/_ssr/ssr.mjs +1 -1
  136. package/.output/server/_ssr/start-BXUOv_n8.mjs +4 -0
  137. package/.output/server/_ssr/table-NGWV8B-S.mjs +53 -0
  138. package/.output/server/_ssr/updateFailures-Jwe2Baab.mjs +24 -0
  139. package/.output/server/_ssr/{uuidv7-D0QFkPL_.mjs → uuidv7-C8bwiZr8.mjs} +2 -2
  140. package/.output/server/_tanstack-start-manifest_v-WQ5qGn8n.mjs +124 -0
  141. package/.output/server/index.mjs +267 -162
  142. package/LICENSE +13 -14
  143. package/README.md +82 -72
  144. package/lib/index.d.mts +23 -11
  145. package/lib/vite-internal.mjs +13 -3
  146. package/lib/vite.d.mts +2 -0
  147. package/package.json +14 -14
  148. package/src/components/AppSidebar.tsx +100 -71
  149. package/src/components/ConsoleAccessPage.tsx +5 -1
  150. package/src/components/ConsoleFeatureUnavailable.tsx +80 -0
  151. package/src/components/NotFoundPage.tsx +7 -7
  152. package/src/components/features/FeatureSlots.tsx +99 -0
  153. package/src/components/features/api-keys/apiKeysFeatureUi.tsx +15 -0
  154. package/src/components/features/bundles/BundleMetadata.tsx +8 -5
  155. package/src/components/features/bundles/RolloutCohortsDialog.tsx +1 -1
  156. package/src/components/features/channels/ChannelManagementDialog.tsx +2 -5
  157. package/src/components/features/insights/AppUsage.tsx +370 -0
  158. package/src/components/features/insights/EstimatedCount.tsx +18 -0
  159. package/src/components/features/insights/EventDetails.tsx +117 -37
  160. package/src/components/features/insights/EventHistoryCard.tsx +112 -26
  161. package/src/components/features/insights/EventHistoryList.tsx +2 -2
  162. package/src/components/features/insights/InsightsControls.tsx +265 -102
  163. package/src/components/features/insights/InsightsErrorAlert.tsx +14 -1
  164. package/src/components/features/insights/InsightsInfo.tsx +48 -0
  165. package/src/components/features/insights/InsightsOverview.tsx +176 -173
  166. package/src/components/features/insights/InsightsPageHeader.tsx +35 -20
  167. package/src/components/features/insights/InsightsPeriodSelector.tsx +89 -0
  168. package/src/components/features/insights/InstallationHistoryCard.tsx +52 -10
  169. package/src/components/features/insights/InstallationMatchesCard.tsx +1 -1
  170. package/src/components/features/insights/ReleaseActivity.tsx +188 -0
  171. package/src/components/features/insights/ReportingDevicesSummary.tsx +65 -0
  172. package/src/components/features/insights/UpdateFailures.tsx +319 -0
  173. package/src/components/features/insights/insightsFeatureUi.tsx +35 -0
  174. package/src/components/features/releases/ReleaseEditorSheet.tsx +30 -7
  175. package/src/components/ui/card.tsx +1 -1
  176. package/src/components/ui/empty.tsx +101 -0
  177. package/src/components/ui/scroll-area.tsx +52 -0
  178. package/src/components/ui/sidebar.tsx +22 -29
  179. package/src/components/ui/tabs.tsx +81 -0
  180. package/src/index.ts +26 -19
  181. package/src/lib/api-keys-api.ts +0 -28
  182. package/src/lib/api-keys-rpc.ts +27 -38
  183. package/src/lib/api-rpc.ts +189 -266
  184. package/src/lib/api.ts +19 -102
  185. package/src/lib/bundle-activity.ts +31 -0
  186. package/src/lib/console-access.ts +20 -0
  187. package/src/lib/console-features-api.ts +68 -0
  188. package/src/lib/console-features-rpc.ts +13 -0
  189. package/src/lib/console-features.ts +91 -0
  190. package/src/lib/insights-api.ts +37 -1
  191. package/src/lib/insights-failures-rpc.ts +21 -0
  192. package/src/lib/insights-failures.ts +129 -0
  193. package/src/lib/insights-recovery-rpc.ts +51 -0
  194. package/src/lib/insights-recovery.ts +68 -0
  195. package/src/lib/insights-retention.ts +21 -0
  196. package/src/lib/insights-rpc.ts +30 -12
  197. package/src/lib/insights-search.ts +58 -0
  198. package/src/lib/insights-usage-rpc.ts +29 -0
  199. package/src/lib/insights-usage.ts +74 -0
  200. package/src/lib/insights-view.ts +38 -2
  201. package/src/lib/scroll-restoration.ts +21 -0
  202. package/src/lib/server/adminInsights.ts +124 -0
  203. package/src/lib/server/auth.server.ts +13 -5
  204. package/src/lib/server/bundleActivity.ts +37 -0
  205. package/src/lib/server/config.server.ts +21 -74
  206. package/src/lib/server/console-feature-apis.ts +59 -0
  207. package/src/lib/server/console-runtime.server.ts +82 -38
  208. package/src/lib/server/downloadBundle.ts +16 -15
  209. package/src/lib/server/getBundleChildren.ts +31 -122
  210. package/src/lib/server/insightsRecovery.ts +55 -0
  211. package/src/lib/server/insightsUsage.ts +63 -0
  212. package/src/lib/server/listReleases.ts +109 -44
  213. package/src/lib/server/releaseReachability.ts +8 -7
  214. package/src/lib/server/runtime.server.ts +120 -31
  215. package/src/lib/server/updateFailures.ts +31 -0
  216. package/src/routeTree.gen.ts +44 -44
  217. package/src/router.tsx +3 -2
  218. package/src/routes/-installations-search.ts +32 -8
  219. package/src/routes/-releases-search.ts +76 -29
  220. package/src/routes/__root.tsx +10 -4
  221. package/src/routes/api/bundles/$bundleId/download.ts +2 -5
  222. package/src/routes/api-keys.tsx +5 -2
  223. package/src/routes/index.tsx +167 -104
  224. package/src/routes/insights.tsx +100 -59
  225. package/src/routes/insights_.distribution.tsx +398 -0
  226. package/src/routes/installations.tsx +98 -41
  227. package/src/vite-internal.ts +15 -3
  228. package/src/vite.ts +2 -0
  229. package/.output/public/assets/HashValueDisplay-CB0Eskit.js +0 -1
  230. package/.output/public/assets/InsightsPageHeader-Car5LNiZ.js +0 -1
  231. package/.output/public/assets/api-keys-BzKocqRy.js +0 -1
  232. package/.output/public/assets/api-keys-api-BHcODB7q.js +0 -1
  233. package/.output/public/assets/card-Dhr_eFYj.js +0 -1
  234. package/.output/public/assets/chart-no-axes-combined-Dy4WJv2U.js +0 -1
  235. package/.output/public/assets/composite-Bp98A0Ld.js +0 -1
  236. package/.output/public/assets/createServerFn-CA8fs7QD.js +0 -3
  237. package/.output/public/assets/dialog-CUTrcPlB.js +0 -1
  238. package/.output/public/assets/dist-C_NydL0e.js +0 -1
  239. package/.output/public/assets/index-DdAz-CXv.js +0 -10
  240. package/.output/public/assets/input-group-cSOG4wh_.js +0 -1
  241. package/.output/public/assets/insights-C0PBSZ-n.js +0 -1
  242. package/.output/public/assets/installations-CE33wgbY.js +0 -2
  243. package/.output/public/assets/installations-CStZja8x.js +0 -1
  244. package/.output/public/assets/lazyRouteComponent-Ccp3bwBY.js +0 -1
  245. package/.output/public/assets/link-CI8idAUi.js +0 -1
  246. package/.output/public/assets/loader-circle-BoxLrsOu.js +0 -1
  247. package/.output/public/assets/preload-helper-CQ36nxok.js +0 -1
  248. package/.output/public/assets/refresh-cw-Bqc72UZG.js +0 -1
  249. package/.output/public/assets/routes-DGVXdzpw.js +0 -2
  250. package/.output/public/assets/routes-DTlwOr8I.js +0 -1
  251. package/.output/public/assets/shield-check-uK3MHWJZ.js +0 -1
  252. package/.output/public/assets/signing-CMf4aqDO.js +0 -1
  253. package/.output/public/assets/styles-BCvbtKsm.css +0 -2
  254. package/.output/public/assets/table-2vcV89QB.js +0 -1
  255. package/.output/public/assets/useCompositeListItem-CHLITE_4.js +0 -1
  256. package/.output/public/assets/x-DCd0j8c6.js +0 -1
  257. package/.output/server/_ssr/InsightsPageHeader-Df4Brj8u.mjs +0 -484
  258. package/.output/server/_ssr/api-keys-api-BUPQVSpk.mjs +0 -60
  259. package/.output/server/_ssr/api-keys-rpc-Cs7tS5_j.mjs +0 -136
  260. package/.output/server/_ssr/api-rpc-tAupfGQm.mjs +0 -1399
  261. package/.output/server/_ssr/auth.server-DW71WzsD.mjs +0 -47
  262. package/.output/server/_ssr/bundle-signing-rpc-BhnBw0-d.mjs +0 -16
  263. package/.output/server/_ssr/bundle-signing.server-C4NW5mWx.mjs +0 -12
  264. package/.output/server/_ssr/card-BRiPmi0C.mjs +0 -108
  265. package/.output/server/_ssr/config-Dv8qLDZ0.mjs +0 -13
  266. package/.output/server/_ssr/config.server-afDuAwaG.mjs +0 -368
  267. package/.output/server/_ssr/databaseRows-5bCRTxm-.mjs +0 -126
  268. package/.output/server/_ssr/deleteBundle-BTGwBgzx.mjs +0 -66
  269. package/.output/server/_ssr/getBundleChildren-C0vh4ZvE.mjs +0 -50
  270. package/.output/server/_ssr/insights-BdS364Xu.mjs +0 -460
  271. package/.output/server/_ssr/insightsContract-fjJDBeEE.mjs +0 -303
  272. package/.output/server/_ssr/installations-CtA59MQG.mjs +0 -29
  273. package/.output/server/_ssr/routes-CKrrS2q2.mjs +0 -37
  274. package/.output/server/_ssr/runtime.server-DacU1TBV.mjs +0 -438
  275. package/.output/server/_ssr/server-D_C2rMzf.mjs +0 -7468
  276. package/.output/server/_ssr/signing-Dz1WkZOf.mjs +0 -133
  277. package/.output/server/_ssr/start-DpViQGnt.mjs +0 -4
  278. package/.output/server/_tanstack-start-manifest_v-2MjTyxil.mjs +0 -97
  279. package/src/components/features/insights/InsightsBundleReports.tsx +0 -51
  280. package/src/components/features/signing/BundleSigningPage.tsx +0 -139
  281. package/src/lib/bundle-signing-api.ts +0 -14
  282. package/src/lib/bundle-signing-rpc.ts +0 -16
  283. package/src/lib/server/bundle-signing.server.ts +0 -23
  284. package/src/lib/server/deleteBundle.ts +0 -145
  285. package/src/routes/signing.tsx +0 -37
@@ -1,8 +1,120 @@
1
- //#region node_modules/.nitro/vite/services/ssr/assets/dist-CyzPaI5v.js
1
+ //#region node_modules/.nitro/vite/services/ssr/assets/dist-Cxo9ghYv.js
2
+ var LETTER_DASH_NUMBER = "[a-zA-Z0-9-]";
3
+ var NUMERIC_IDENTIFIER = String.raw`0|[1-9]\d*`;
4
+ var NUMERIC_IDENTIFIER_LOOSE = String.raw`\d+`;
5
+ var NON_NUMERIC_IDENTIFIER = String.raw`\d*[a-zA-Z-]${LETTER_DASH_NUMBER}*`;
6
+ var MAIN_VERSION = String.raw`(${NUMERIC_IDENTIFIER})\.(${NUMERIC_IDENTIFIER})\.(${NUMERIC_IDENTIFIER})`;
7
+ var MAIN_VERSION_LOOSE = String.raw`(${NUMERIC_IDENTIFIER_LOOSE})\.(${NUMERIC_IDENTIFIER_LOOSE})\.(${NUMERIC_IDENTIFIER_LOOSE})`;
8
+ var PRERELEASE_IDENTIFIER = `(?:${NON_NUMERIC_IDENTIFIER}|${NUMERIC_IDENTIFIER})`;
9
+ var PRERELEASE_IDENTIFIER_LOOSE = `(?:${NON_NUMERIC_IDENTIFIER}|${NUMERIC_IDENTIFIER_LOOSE})`;
10
+ var PRERELEASE = String.raw`(?:-(${PRERELEASE_IDENTIFIER}(?:\.${PRERELEASE_IDENTIFIER})*))`;
11
+ var PRERELEASE_LOOSE = String.raw`(?:-?(${PRERELEASE_IDENTIFIER_LOOSE}(?:\.${PRERELEASE_IDENTIFIER_LOOSE})*))`;
12
+ var BUILD_IDENTIFIER = `${LETTER_DASH_NUMBER}+`;
13
+ var BUILD = String.raw`(?:\+(${BUILD_IDENTIFIER}(?:\.${BUILD_IDENTIFIER})*))`;
14
+ var FULL_PLAIN = `v?${MAIN_VERSION}${PRERELEASE}?${BUILD}?`;
15
+ var LOOSE_PLAIN = String.raw`[v=\s]*${MAIN_VERSION_LOOSE}${PRERELEASE_LOOSE}?${BUILD}?`;
16
+ var XRANGE_IDENTIFIER = String.raw`${NUMERIC_IDENTIFIER}|x|X|\*`;
17
+ var XRANGE_IDENTIFIER_LOOSE = String.raw`${NUMERIC_IDENTIFIER_LOOSE}|x|X|\*`;
18
+ String.raw`[v=\s]*(${XRANGE_IDENTIFIER})(?:\.(${XRANGE_IDENTIFIER})(?:\.(${XRANGE_IDENTIFIER})(?:${PRERELEASE})?${BUILD}?)?)?`;
19
+ String.raw`[v=\s]*(${XRANGE_IDENTIFIER_LOOSE})(?:\.(${XRANGE_IDENTIFIER_LOOSE})(?:\.(${XRANGE_IDENTIFIER_LOOSE})(?:${PRERELEASE_LOOSE})?${BUILD}?)?)?`;
20
+ String.raw`(?:\^)`;
21
+ var COERCE_PLAIN = String.raw`(^|[^\d])(\d{1,${16}})(?:\.(\d{1,${16}}))?(?:\.(\d{1,${16}}))?`;
22
+ var COERCE = String.raw`${COERCE_PLAIN}(?:$|[^\d])`;
23
+ var COERCE_FULL = String.raw`${COERCE_PLAIN}(?:${PRERELEASE})?(?:${BUILD})?(?:$|[^\d])`;
24
+ function makeSafeRegexSource(source) {
25
+ const replacements = [
26
+ [String.raw`\s`, 1],
27
+ [String.raw`\d`, 256],
28
+ [LETTER_DASH_NUMBER, 250]
29
+ ];
30
+ for (const [token, maximum] of replacements) source = source.split(`${token}*`).join(`${token}{0,${maximum}}`).split(`${token}+`).join(`${token}{1,${maximum}}`);
31
+ return source;
32
+ }
33
+ function safeRegex(source, flags) {
34
+ return new RegExp(makeSafeRegexSource(source), flags);
35
+ }
36
+ var FULL = safeRegex(`^${FULL_PLAIN}$`);
37
+ var LOOSE = safeRegex(`^${LOOSE_PLAIN}$`);
38
+ var NUMERIC$1 = /^\d+$/;
39
+ function formatComparableVersion(version) {
40
+ const base = `${version.major}.${version.minor}.${version.patch}`;
41
+ return version.prerelease?.length ? `${base}-${version.prerelease.join(".")}` : base;
42
+ }
43
+ function formatFullVersion(version) {
44
+ const comparable = formatComparableVersion(version);
45
+ return version.build?.length ? `${comparable}+${version.build.join(".")}` : comparable;
46
+ }
47
+ function parse(version, options = {}) {
48
+ if (typeof version !== "string") return version;
49
+ if (version.length > 256) throw new TypeError(`Version exceeds the maximum length of 256 characters`);
50
+ const match = version.trim().match(options.loose ? LOOSE : FULL);
51
+ if (!match) throw new TypeError(`Invalid version syntax: ${version}`);
52
+ const major = Number(match[1]);
53
+ const minor = Number(match[2]);
54
+ const patch = Number(match[3]);
55
+ if (major > Number.MAX_SAFE_INTEGER || major < 0) throw new TypeError(`Invalid major version: ${match[1]}`);
56
+ if (minor > Number.MAX_SAFE_INTEGER || minor < 0) throw new TypeError(`Invalid minor version: ${match[2]}`);
57
+ if (patch > Number.MAX_SAFE_INTEGER || patch < 0) throw new TypeError(`Invalid patch version: ${match[3]}`);
58
+ const prerelease = match[4] ? match[4].split(".").map((identifier) => {
59
+ if (NUMERIC$1.test(identifier)) {
60
+ const numeric = Number(identifier);
61
+ if (numeric >= 0 && numeric < Number.MAX_SAFE_INTEGER) return numeric;
62
+ }
63
+ return identifier;
64
+ }) : void 0;
65
+ return {
66
+ build: match[5]?.split("."),
67
+ major,
68
+ minor,
69
+ patch,
70
+ prerelease
71
+ };
72
+ }
73
+ function tryParse(version, options = {}) {
74
+ try {
75
+ return parse(version, options);
76
+ } catch {
77
+ return null;
78
+ }
79
+ }
80
+ var COERCE_EXACT = safeRegex(COERCE);
81
+ var COERCE_FULL_EXACT = safeRegex(COERCE_FULL);
82
+ safeRegex(`^${PRERELEASE}$`);
83
+ safeRegex(`^${PRERELEASE_LOOSE}$`);
84
+ function normalizeFull(version, options = {}) {
85
+ const parsed = tryParse(version, options);
86
+ return parsed ? formatFullVersion(parsed) : null;
87
+ }
88
+ function coerce(value, options = {}) {
89
+ if (typeof value === "object") return value;
90
+ const input = typeof value === "number" ? String(value) : value;
91
+ let match = null;
92
+ if (options.rtl) {
93
+ const expression = safeRegex(options.includePrerelease ? COERCE_FULL : COERCE, "g");
94
+ let next;
95
+ while ((next = expression.exec(input)) && (!match || match.index + match[0].length !== input.length)) {
96
+ if (!match || next.index + next[0].length !== match.index + match[0].length) match = next;
97
+ expression.lastIndex = next.index + next[1].length + next[2].length;
98
+ }
99
+ } else match = (options.includePrerelease ? COERCE_FULL_EXACT : COERCE_EXACT).exec(input);
100
+ if (!match) return null;
101
+ const major = match[2];
102
+ return tryParse(`${major}.${match[3] || "0"}.${match[4] || "0"}${options.includePrerelease && match[5] ? `-${match[5]}` : ""}${options.includePrerelease && match[6] ? `+${match[6]}` : ""}`, options);
103
+ }
104
+ /**
105
+ * The form of an app version that the device and the server compare:
106
+ * `major.minor.patch` of the first version in `appVersion`, such as `1.4.0`
107
+ * for `v1.4`, or null when it holds none. Prerelease and build parts are
108
+ * dropped.
109
+ */
110
+ function canonicalizeAppVersion(appVersion) {
111
+ const version = coerce(appVersion);
112
+ return version ? normalizeFull(version) : null;
113
+ }
2
114
  var stripBundleArtifactMetadata = (metadata) => metadata;
3
- var getManifestStorageUri = (bundle) => bundle.manifestStorageUri ?? null;
4
- var getManifestFileHash = (bundle) => bundle.manifestFileHash ?? null;
5
- var getAssetBaseStorageUri = (bundle) => bundle.assetBaseStorageUri ?? null;
115
+ var getManifestStorageUri = (bundle) => bundle.manifestStorageUri;
116
+ var getManifestFileHash = (bundle) => bundle.manifestFileHash;
117
+ var getAssetBaseStorageUri = (bundle) => bundle.assetBaseStorageUri;
6
118
  var isBundlePatchArtifact = (value) => {
7
119
  if (!value || typeof value !== "object" || Array.isArray(value)) return false;
8
120
  const candidate = value;
@@ -21,13 +133,15 @@ var getBundlePatches = (bundle) => {
21
133
  return true;
22
134
  });
23
135
  };
136
+ var getBundlePatch = (bundle, baseBundleId) => {
137
+ return getBundlePatches(bundle).find((patch) => patch.baseBundleId === baseBundleId) ?? null;
138
+ };
24
139
  var getPrimaryPatch = (bundle) => {
25
140
  return getBundlePatches(bundle)[0] ?? null;
26
141
  };
27
142
  var getPatchBaseBundleId = (bundle) => getPrimaryPatch(bundle)?.baseBundleId ?? null;
28
143
  var getPatchBaseFileHash = (bundle) => getPrimaryPatch(bundle)?.baseFileHash ?? null;
29
144
  var getPatchFileHash = (bundle) => getPrimaryPatch(bundle)?.patchFileHash ?? null;
30
- var getPatchStorageUri = (bundle) => getPrimaryPatch(bundle)?.patchStorageUri ?? null;
31
145
  var NUMERIC_COHORT_SIZE = 1e3;
32
146
  var DEFAULT_ROLLOUT_COHORT_COUNT = NUMERIC_COHORT_SIZE;
33
147
  var INVALID_COHORT_ERROR_MESSAGE = `Invalid cohort. Use 1-1000 or a lowercase slug without spaces, up to 64 characters.`;
@@ -244,7 +358,27 @@ function createReleaseCatalogScopeKey(input) {
244
358
  assertCatalogSegment(input.fingerprintHash, "Fingerprint hash");
245
359
  return `v1:fingerprint:${input.platform}:${input.channelKey}:${input.fingerprintHash}`;
246
360
  }
361
+ function parseReleaseCatalogScopeKey(scopeKey) {
362
+ const segments = scopeKey.split(":");
363
+ const [version, strategy, platform, channelKey] = segments;
364
+ if (version !== "v1" || platform !== "ios" && platform !== "android" || channelKey === void 0) throw new Error("Invalid release catalog scope key");
365
+ const input = strategy === "app-version" && segments.length === 4 ? {
366
+ channelKey,
367
+ platform,
368
+ strategy: "APP_VERSION"
369
+ } : strategy === "fingerprint" && segments.length === 5 && segments[4] !== void 0 ? {
370
+ channelKey,
371
+ fingerprintHash: segments[4],
372
+ platform,
373
+ strategy: "FINGERPRINT"
374
+ } : (() => {
375
+ throw new Error("Invalid release catalog scope key");
376
+ })();
377
+ if (createReleaseCatalogScopeKey(input) !== scopeKey) throw new Error("Release catalog scope key is not canonical");
378
+ return input;
379
+ }
380
+ var NIL_UUID = "00000000-0000-0000-0000-000000000000";
247
381
  var UUID_V7_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/;
248
382
  var isUUIDv7 = (value) => typeof value === "string" && UUID_V7_PATTERN.test(value);
249
383
  //#endregion
250
- export { normalizeCohortValue as C, isValidCohort as S, stripBundleArtifactMetadata as T, getPatchStorageUri as _, createReleaseCatalogScopeKey as a, isReleaseEligibleForCohort as b, getAssetBaseStorageUri as c, getManifestStorageUri as d, getNumericCohortRolloutPosition as f, getPatchFileHash as g, getPatchBaseFileHash as h, RELEASE_CATALOG_FALLBACK_POLICY as i, getBundlePatches as l, getPatchBaseBundleId as m, MAX_COMPILED_CATALOG_BYTES as n, decodeChannelKey as o, getNumericCohortValue as p, NUMERIC_COHORT_SIZE as r, encodeChannelKey as s, INVALID_COHORT_ERROR_MESSAGE as t, getManifestFileHash as u, getRolledOutNumericCohorts as v, normalizeRolloutCohortCount as w, isUUIDv7 as x, isCustomCohort as y };
384
+ export { isUUIDv7 as C, parseReleaseCatalogScopeKey as D, normalizeRolloutCohortCount as E, stripBundleArtifactMetadata as O, isReleaseEligibleForCohort as S, normalizeCohortValue as T, getPatchBaseBundleId as _, RELEASE_CATALOG_FALLBACK_POLICY as a, getRolledOutNumericCohorts as b, decodeChannelKey as c, getBundlePatch as d, getBundlePatches as f, getNumericCohortValue as g, getNumericCohortRolloutPosition as h, NUMERIC_COHORT_SIZE as i, encodeChannelKey as l, getManifestStorageUri as m, MAX_COMPILED_CATALOG_BYTES as n, canonicalizeAppVersion as o, getManifestFileHash as p, NIL_UUID as r, createReleaseCatalogScopeKey as s, INVALID_COHORT_ERROR_MESSAGE as t, getAssetBaseStorageUri as u, getPatchBaseFileHash as v, isValidCohort as w, isCustomCohort as x, getPatchFileHash as y };
@@ -1,23 +1,23 @@
1
- //#region node_modules/.nitro/vite/services/ssr/assets/downloadBundle-CNnYxYO2.js
2
- var downloadBundle = async (bundleId, { databaseClient, storagePlugin }) => {
3
- const bundle = await databaseClient.getBundleById(bundleId);
4
- if (!bundle) return new Response("Bundle not found", { status: 404 });
5
- const storageUri = bundle.storageUri;
6
- if (!storageUri) return new Response("Bundle has no storage URI", { status: 404 });
1
+ //#region node_modules/.nitro/vite/services/ssr/assets/downloadBundle-BW9I-pMQ.js
2
+ var downloadBundle = async (bundleId, { core, storage }) => {
3
+ const detail = await core.getBundle(bundleId);
4
+ if (!detail) return new Response("Bundle not found", { status: 404 });
5
+ const storageUri = detail.bundle.manifest_storage_uri;
7
6
  const protocol = new URL(storageUri).protocol.replace(":", "");
8
- if (storagePlugin?.protocol === protocol) {
9
- const { response } = await storagePlugin.get({ storageUri });
7
+ const storageAdapter = storage.find((adapter) => adapter.protocol === protocol);
8
+ if (storageAdapter?.get !== void 0) {
9
+ const { response } = await storageAdapter.get({ storageUri });
10
10
  if (!response) return new Response("Storage object not found", { status: 404 });
11
11
  const headers = new Headers(response.headers);
12
12
  headers.set("cache-control", "private, no-store");
13
- headers.set("content-disposition", "attachment");
13
+ headers.set("content-disposition", "attachment; filename=\"manifest.json\"");
14
14
  return new Response(response.body, {
15
15
  headers,
16
16
  status: response.status,
17
17
  statusText: response.statusText
18
18
  });
19
19
  }
20
- if (protocol !== "http" && protocol !== "https") return new Response(`No storage plugin for protocol: ${protocol}`, { status: 503 });
20
+ if (protocol !== "http" && protocol !== "https") return new Response(`No storage adapter for protocol: ${protocol}`, { status: 503 });
21
21
  return Response.redirect(storageUri, 302);
22
22
  };
23
23
  //#endregion
@@ -0,0 +1,49 @@
1
+ import { pt as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
2
+ import { t as cva } from "../_libs/class-variance-authority+clsx.mjs";
3
+ import { O as cn } from "./sidebar-DKbx2ach.mjs";
4
+ //#region node_modules/.nitro/vite/services/ssr/assets/empty-DcBTAooP.js
5
+ var import_jsx_runtime = require_jsx_runtime();
6
+ function Empty({ className, ...props }) {
7
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
8
+ "data-slot": "empty",
9
+ className: cn("flex w-full min-w-0 flex-1 flex-col items-center justify-center gap-4 rounded-xl border-dashed p-6 text-center text-balance", className),
10
+ ...props
11
+ });
12
+ }
13
+ function EmptyHeader({ className, ...props }) {
14
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
15
+ "data-slot": "empty-header",
16
+ className: cn("flex max-w-sm flex-col items-center gap-1", className),
17
+ ...props
18
+ });
19
+ }
20
+ cva("mb-2 flex shrink-0 items-center justify-center [&_svg]:pointer-events-none [&_svg]:shrink-0", {
21
+ variants: { variant: {
22
+ default: "bg-transparent",
23
+ icon: "flex size-8 shrink-0 items-center justify-center rounded-md bg-muted text-foreground [&_svg:not([class*='size-'])]:size-4"
24
+ } },
25
+ defaultVariants: { variant: "default" }
26
+ });
27
+ function EmptyTitle({ className, ...props }) {
28
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
29
+ "data-slot": "empty-title",
30
+ className: cn("text-sm font-medium tracking-tight", className),
31
+ ...props
32
+ });
33
+ }
34
+ function EmptyDescription({ className, ...props }) {
35
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
36
+ "data-slot": "empty-description",
37
+ className: cn("text-xs/relaxed text-muted-foreground [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary", className),
38
+ ...props
39
+ });
40
+ }
41
+ function EmptyContent({ className, ...props }) {
42
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
43
+ "data-slot": "empty-content",
44
+ className: cn("flex w-full max-w-sm min-w-0 flex-col items-center gap-2 text-xs/relaxed text-balance", className),
45
+ ...props
46
+ });
47
+ }
48
+ //#endregion
49
+ export { EmptyTitle as a, EmptyHeader as i, EmptyContent as n, EmptyDescription as r, Empty as t };
@@ -1,4 +1,4 @@
1
- //#region node_modules/.nitro/vite/services/ssr/assets/empty-plugin-adapters-B5QvGpEl.js
1
+ //#region node_modules/.nitro/vite/services/ssr/assets/empty-plugin-adapters-CYdinE-i.js
2
2
  var pluginSerializationAdapters = [];
3
3
  var hasPluginAdapters = false;
4
4
  //#endregion
@@ -1,10 +1,68 @@
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";
1
+ import { i as __toESM } from "../_runtime.mjs";
2
+ import { ft as mergeProps, mt as require_react, pt as require_jsx_runtime, tt as useRender } from "../_libs/@base-ui/react+[...].mjs";
3
3
  import { t as cva } from "../_libs/class-variance-authority+clsx.mjs";
4
- import { C as cn } from "./createSsrRpc-DjWNJ0uc.mjs";
5
- //#region node_modules/.nitro/vite/services/ssr/assets/table-CnZmon_Z.js
4
+ import { O as cn } from "./sidebar-DKbx2ach.mjs";
5
+ //#region node_modules/.nitro/vite/services/ssr/assets/field-QCDBVpXA.js
6
6
  var import_react = /* @__PURE__ */ __toESM(require_react());
7
7
  var import_jsx_runtime = require_jsx_runtime();
8
+ var alertVariants = cva("group/alert relative grid w-full gap-0.5 rounded-lg border px-2 py-1.5 text-left text-xs/relaxed has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-1.5 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-3.5", {
9
+ variants: { variant: {
10
+ default: "bg-card text-card-foreground",
11
+ destructive: "bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current"
12
+ } },
13
+ defaultVariants: { variant: "default" }
14
+ });
15
+ function Alert({ className, variant, ...props }) {
16
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
17
+ "data-slot": "alert",
18
+ role: "alert",
19
+ className: cn(alertVariants({ variant }), className),
20
+ ...props
21
+ });
22
+ }
23
+ function AlertTitle({ className, ...props }) {
24
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
25
+ "data-slot": "alert-title",
26
+ className: cn("font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground", className),
27
+ ...props
28
+ });
29
+ }
30
+ function AlertDescription({ className, ...props }) {
31
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
32
+ "data-slot": "alert-description",
33
+ className: cn("text-xs/relaxed text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4", className),
34
+ ...props
35
+ });
36
+ }
37
+ function AlertAction({ className, ...props }) {
38
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
39
+ "data-slot": "alert-action",
40
+ className: cn("absolute top-1.5 right-2", className),
41
+ ...props
42
+ });
43
+ }
44
+ var badgeVariants = cva("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2", {
45
+ variants: { variant: {
46
+ default: "border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",
47
+ secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
48
+ success: "border-success/20 bg-success/10 text-success",
49
+ warning: "border-warning/20 bg-warning/10 text-warning",
50
+ destructive: "border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",
51
+ outline: "text-foreground"
52
+ } },
53
+ defaultVariants: { variant: "default" }
54
+ });
55
+ function Badge({ className, variant = "default", render, ...props }) {
56
+ return useRender({
57
+ defaultTagName: "span",
58
+ props: mergeProps({ className: cn(badgeVariants({ variant }), className) }, props),
59
+ render,
60
+ state: {
61
+ slot: "badge",
62
+ variant
63
+ }
64
+ });
65
+ }
8
66
  function Label({ className, htmlFor, ...props }) {
9
67
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("label", {
10
68
  "data-slot": "label",
@@ -70,51 +128,5 @@ function FieldError({ className, children, errors, ...props }) {
70
128
  children: content
71
129
  });
72
130
  }
73
- function Table({ className, ...props }) {
74
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
75
- "data-slot": "table-container",
76
- className: "relative w-full overflow-x-auto",
77
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("table", {
78
- "data-slot": "table",
79
- className: cn("w-full caption-bottom text-xs", className),
80
- ...props
81
- })
82
- });
83
- }
84
- function TableHeader({ className, ...props }) {
85
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("thead", {
86
- "data-slot": "table-header",
87
- className: cn("[&_tr]:border-b", className),
88
- ...props
89
- });
90
- }
91
- function TableBody({ className, ...props }) {
92
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("tbody", {
93
- "data-slot": "table-body",
94
- className: cn("[&_tr:last-child]:border-0", className),
95
- ...props
96
- });
97
- }
98
- function TableRow({ className, ...props }) {
99
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("tr", {
100
- "data-slot": "table-row",
101
- className: cn("hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors", className),
102
- ...props
103
- });
104
- }
105
- function TableHead({ className, ...props }) {
106
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("th", {
107
- "data-slot": "table-head",
108
- className: cn("text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0", className),
109
- ...props
110
- });
111
- }
112
- function TableCell({ className, ...props }) {
113
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("td", {
114
- "data-slot": "table-cell",
115
- className: cn("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0", className),
116
- ...props
117
- });
118
- }
119
131
  //#endregion
120
- export { FieldLabel as a, TableBody as c, TableHeader as d, TableRow as f, FieldGroup as i, TableCell as l, FieldDescription as n, Label as o, FieldError as r, Table as s, Field as t, TableHead as u };
132
+ export { Badge as a, FieldError as c, Label as d, AlertTitle as i, FieldGroup as l, AlertAction as n, Field as o, AlertDescription as r, FieldDescription as s, Alert as t, FieldLabel as u };
@@ -0,0 +1,22 @@
1
+ import { i as rowToBundle } from "./databaseRows-DwMAjaF8.mjs";
2
+ //#region node_modules/.nitro/vite/services/ssr/assets/getBundleChildren-DIAGCF4a.js
3
+ /** The most children the lineage panel lists; the count comes from the base bundle's counter. */
4
+ var BUNDLE_CHILDREN_LIMIT = 100;
5
+ /**
6
+ * The bundles with a patch from this base, newest first: one read of the
7
+ * patches index, then each child bundle.
8
+ */
9
+ async function getBundleChildren(core, baseBundleId) {
10
+ const patches = await core.listPatchesFromBase(baseBundleId, {
11
+ order: "desc",
12
+ limit: 100
13
+ });
14
+ return (await Promise.all([...new Set(patches.map(({ bundle_id }) => bundle_id))].map((id) => core.getBundle(id)))).flatMap((detail) => detail === null ? [] : [rowToBundle(detail.bundle, detail.patches)]);
15
+ }
16
+ /** How many bundles patch from each base: each base bundle's reference counter, in one batch read. */
17
+ async function getBundleChildCounts(core, baseBundleIds) {
18
+ const ids = [...new Set(baseBundleIds.filter(Boolean))];
19
+ return ids.length === 0 ? {} : core.countBundleChildren(ids);
20
+ }
21
+ //#endregion
22
+ export { BUNDLE_CHILDREN_LIMIT, getBundleChildCounts, getBundleChildren };
@@ -1,7 +1,7 @@
1
1
  import "../_runtime.mjs";
2
- import { J as require_react, q as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
2
+ import { mt as require_react, pt as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
3
3
  import { t as cva } from "../_libs/class-variance-authority+clsx.mjs";
4
- import { C as cn, n as Input, t as Button$1 } from "./createSsrRpc-DjWNJ0uc.mjs";
4
+ import { O as cn, n as Input, t as Button$1 } from "./sidebar-DKbx2ach.mjs";
5
5
  require_react();
6
6
  var import_jsx_runtime = require_jsx_runtime();
7
7
  function Textarea({ className, ...props }) {