@hot-updater/console 1.1.4 → 1.2.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (273) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/assets/-native-builds-search-C-TGpFAm.js +1 -0
  3. package/.output/public/assets/{ConsoleFeatureUnavailable-C0KfsKWL.js → ConsoleFeatureUnavailable-CUtcXuY2.js} +1 -1
  4. package/.output/public/assets/EventDetails-Dl2RvPAk.js +1 -0
  5. package/.output/public/assets/HashValueDisplay-6lNRxDJX.js +1 -0
  6. package/.output/public/assets/InsightsPageHeader-DHhqY3DT.js +1 -0
  7. package/.output/public/assets/NotFoundPage-DZ3DxyRA.js +1 -0
  8. package/.output/public/assets/PlatformIcon-BBWQlWm9.js +1 -0
  9. package/.output/public/assets/RolloutPercentageBadge-Cxogpi8F.js +1 -0
  10. package/.output/public/assets/StoreSubmission-JpngSvHS.js +1 -0
  11. package/.output/public/assets/alert-dialog-BqYScr9y.js +1 -0
  12. package/.output/public/assets/api-P2g8dCNg.js +1 -0
  13. package/.output/public/assets/api-keys-DWQC2q6y.js +1 -0
  14. package/.output/public/assets/api-keys-FueRkF9q.js +1 -0
  15. package/.output/public/assets/arrow-left-g9cKqXuC.js +1 -0
  16. package/.output/public/assets/arrow-right-CNII8TYn.js +1 -0
  17. package/.output/public/assets/arrow-up-right-DK8Zdg40.js +1 -0
  18. package/.output/public/assets/badge-DWFcDWho.js +1 -0
  19. package/.output/public/assets/check-CXVR3s3X.js +1 -0
  20. package/.output/public/assets/chevron-right-BoUXo82O.js +1 -0
  21. package/.output/public/assets/circle-off-C7Muo0ss.js +1 -0
  22. package/.output/public/assets/{clipboard-DTkrlIMn.js → clipboard-DQbOcrL7.js} +1 -1
  23. package/.output/public/assets/console-features-api-DEXSwFtc.js +1 -0
  24. package/.output/public/assets/copy-DsuLj3oj.js +1 -0
  25. package/.output/public/assets/dialog-CNUPxNxH.js +1 -0
  26. package/.output/public/assets/{dist-dDj-R6uh.js → dist-CPlO6ko9.js} +1 -1
  27. package/.output/public/assets/download-Cf24LBde.js +1 -0
  28. package/.output/public/assets/{empty-Bf4DanOL.js → empty-B3Uwdd6k.js} +1 -1
  29. package/.output/public/assets/{field-GxF9SyUo.js → field-D-2-mnNh.js} +1 -1
  30. package/.output/public/assets/history-DqHlgSuV.js +1 -0
  31. package/.output/public/assets/index-BWU6owTG.js +10 -0
  32. package/.output/public/assets/{input-group-B4nrqIh0.js → input-group-D3OUBk4n.js} +1 -1
  33. package/.output/public/assets/insights-B-0odqpt.js +42 -0
  34. package/.output/public/assets/insights-BSVGfxSL.js +1 -0
  35. package/.output/public/assets/insights-NK5B6ReS.js +2 -0
  36. package/.output/public/assets/insights-api-BVCXJsoV.js +1 -0
  37. package/.output/public/assets/insights-search-DghCbEnk.js +1 -0
  38. package/.output/public/assets/insights-usage-rpc-CKQH0pUS.js +1 -0
  39. package/.output/public/assets/insights_.distribution-CJvgwcVZ.js +2 -0
  40. package/.output/public/assets/insights_.distribution-DblZM0mO.js +1 -0
  41. package/.output/public/assets/insights_.distribution-dvk6vYDM.js +1 -0
  42. package/.output/public/assets/installations-B674P5Z5.js +2 -0
  43. package/.output/public/assets/installations-BWxczZ2t.js +1 -0
  44. package/.output/public/assets/installations-Dv4kWQYz.js +1 -0
  45. package/.output/public/assets/{key-round-B4fI1psK.js → key-round-DwNKkHhy.js} +1 -1
  46. package/.output/public/assets/link-DTEyW70e.js +2 -0
  47. package/.output/public/assets/{list-Dtj7TtzV.js → list--NIee1FZ.js} +1 -1
  48. package/.output/public/assets/native-builds-BOC71grI.js +1 -0
  49. package/.output/public/assets/native-builds-BswZazmc.js +1 -0
  50. package/.output/public/assets/native-builds-c4BpOLAe.js +2 -0
  51. package/.output/public/assets/native-builds_._buildId-D_Spjl10.js +1 -0
  52. package/.output/public/assets/native-builds_._buildId-DtoXD8rz.js +2 -0
  53. package/.output/public/assets/plus-BReVKct-.js +1 -0
  54. package/.output/public/assets/preload-helper-B44EvKhG.js +1 -0
  55. package/.output/public/assets/{refresh-cw-DjIKjmrS.js → refresh-cw-B9HHjLej.js} +1 -1
  56. package/.output/public/assets/relativeTime-YQt84dYr.js +1 -0
  57. package/.output/public/assets/remote-config-B7ujqhLa.js +6 -0
  58. package/.output/public/assets/remote-config-WjpozBG5.js +1 -0
  59. package/.output/public/assets/remote-config-gXeH6PBW.js +1 -0
  60. package/.output/public/assets/rotate-cw-Cv2aVbYr.js +1 -0
  61. package/.output/public/assets/routes-BDdBIxYS.js +1 -0
  62. package/.output/public/assets/routes-CCD33Azv.js +2 -0
  63. package/.output/public/assets/search-BCel4Oy6.js +1 -0
  64. package/.output/public/assets/select-CBIU0_M1.js +1 -0
  65. package/.output/public/assets/{sidebar-BqX460IW.js → sidebar-Di9SN47G.js} +1 -1
  66. package/.output/public/assets/smartphone-CMaSy_ir.js +1 -0
  67. package/.output/public/assets/styles-Ccxthuz1.css +2 -0
  68. package/.output/public/assets/switch-BpdiHL_t.js +1 -0
  69. package/.output/public/assets/{table-ek1DmRHq.js → table-Bpy3SvSo.js} +1 -1
  70. package/.output/public/assets/{tabs-CgEH_fMT.js → tabs-Xmt7tZeG.js} +1 -1
  71. package/.output/public/assets/{undo-2-DxXx9Zvr.js → undo-2-CUX96_BG.js} +1 -1
  72. package/.output/public/assets/useCompositeListItem-JmyDfo3-.js +1 -0
  73. package/.output/public/assets/useInfiniteQuery-DX4WpBRG.js +1 -0
  74. package/.output/public/assets/useMutation-DbYw7boA.js +1 -0
  75. package/.output/public/assets/uuidv7-zXMtwR9Q.js +1 -0
  76. package/.output/public/assets/{valueToPercent-B44vDssN.js → valueToPercent-BLwGy_xK.js} +1 -1
  77. package/.output/server/{__23tanstack-start-server-fn-resolver-KpQ5Z_24.mjs → __23tanstack-start-server-fn-resolver-CygMPYHZ.mjs} +64 -40
  78. package/.output/server/_chunks/ssr-renderer.mjs +2 -2
  79. package/.output/server/_libs/@tanstack/react-router+[...].mjs +1 -1
  80. package/.output/server/_libs/@tanstack/react-router-ssr-query+[...].mjs +1 -1
  81. package/.output/server/_libs/lucide-react.mjs +88 -1
  82. package/.output/server/_libs/uqr.mjs +858 -0
  83. package/.output/server/_ssr/-native-builds-search-CwNcoXf4.mjs +37 -0
  84. package/.output/server/_ssr/{BundleIdDisplay-CjSnY65J.mjs → BundleIdDisplay-DOPz4pUS.mjs} +2 -2
  85. package/.output/server/_ssr/{ConsoleFeatureUnavailable-CHxn9f-w.mjs → ConsoleFeatureUnavailable-Xb1JKqcc.mjs} +7 -7
  86. package/.output/server/_ssr/{EventDetails-l6dF54zp.mjs → EventDetails-D7MejFCN.mjs} +8 -8
  87. package/.output/server/_ssr/{HashValueDisplay-Zs7ABoOi.mjs → HashValueDisplay-Dd-wu5rY.mjs} +2 -2
  88. package/.output/server/_ssr/{InsightsPageHeader-ZlAlDxQy.mjs → InsightsPageHeader-CWf1n4Vt.mjs} +13 -11
  89. package/.output/server/_ssr/{NotFoundPage-u28ndvp1.mjs → NotFoundPage-C5rFdUpg.mjs} +2 -2
  90. package/.output/server/_ssr/PlatformIcon-CFLiTjh1.mjs +29 -0
  91. package/.output/server/_ssr/RolloutPercentageBadge-g0Bhfl3M.mjs +21 -0
  92. package/.output/server/_ssr/StoreSubmission-JZ2Zltak.mjs +139 -0
  93. package/.output/server/_ssr/{alert-dialog-B8AqlJwo.mjs → alert-dialog-CvNvTvIJ.mjs} +1 -1
  94. package/.output/server/_ssr/{api-C_0B7NXM.mjs → api-0vtwA5vY.mjs} +126 -7
  95. package/.output/server/_ssr/{api-keys-pRNvn2-9.mjs → api-keys-D5dyA4D1.mjs} +10 -10
  96. package/.output/server/_ssr/{api-keys-rpc-wecWs0nA.mjs → api-keys-rpc-BOIUHhDi.mjs} +5 -5
  97. package/.output/server/_ssr/{api-keys-CLH38u9B.mjs → api-keys-yFlQDwQF.mjs} +2 -2
  98. package/.output/server/_ssr/{api-rpc-DWN8eOHS.mjs → api-rpc-COeFOpYi.mjs} +79 -12
  99. package/.output/server/_ssr/{auth-UP0wXs4i.mjs → auth-Z-wLddzh.mjs} +1 -1
  100. package/.output/server/_ssr/{auth-rpc-CLRArbIl.mjs → auth-rpc-D1ss2GUI.mjs} +6 -6
  101. package/.output/server/_ssr/{auth.server-DR9zc0EU.mjs → auth.server-DYS1OJ6P.mjs} +771 -641
  102. package/.output/server/_ssr/{badge-BpT7r-ng.mjs → badge-CEdVRgyl.mjs} +1 -1
  103. package/.output/server/_ssr/{bundleActivity-0qFIcvqt.mjs → bundleActivity-MLrjNJCT.mjs} +1 -1
  104. package/.output/server/_ssr/{config-WVX4IxSR.mjs → config-CjIBFhJX.mjs} +1 -1
  105. package/.output/server/_ssr/config.server-NnMFjMFX.mjs +43 -0
  106. package/.output/server/_ssr/{console-access-aUpQs49I.mjs → console-access-33BNlH97.mjs} +3 -3
  107. package/.output/server/_ssr/{console-features-4xAGfZHw.mjs → console-features-BTV-XuhQ.mjs} +1 -1
  108. package/.output/server/_ssr/{console-features-api-DSSgCV3v.mjs → console-features-api-v1fSycue.mjs} +6 -6
  109. package/.output/server/_ssr/{console-features-rpc-D6kMlR2A.mjs → console-features-rpc-C7XNVqm0.mjs} +5 -5
  110. package/.output/server/_ssr/createCsrfMiddleware-BwHbC8n-.mjs +159 -0
  111. package/.output/server/_ssr/createMiddleware-C3ACsfuG.mjs +24 -0
  112. package/.output/server/_ssr/{createMiddleware-B1iPez7u.mjs → createServerFn-AQvBMBjJ.mjs} +2 -23
  113. package/.output/server/_ssr/{createServerRpc-BaDJLGBx.mjs → createServerRpc-BVvRVOz5.mjs} +2 -2
  114. package/.output/server/_ssr/{databaseConfig-C5SkAyUy.mjs → databaseConfig-B_Bg7qS5.mjs} +1 -1
  115. package/.output/server/_ssr/{databaseJsonValue-Csbuzc9Q.mjs → databaseJsonValue-kS7cvEtz.mjs} +1 -1
  116. package/.output/server/_ssr/{databaseRows-CPphvbag.mjs → databaseRows-B6H8Cmgq.mjs} +3 -3
  117. package/.output/server/_ssr/{dialog-B4ALf7NJ.mjs → dialog-C8CS8RMt.mjs} +1 -1
  118. package/.output/server/_ssr/{dist-CbQbBIw-.mjs → dist-TEpM_UAD.mjs} +125 -125
  119. package/.output/server/_ssr/{downloadBundle-94jPBGSO.mjs → downloadBundle-DCmr7vsj.mjs} +1 -1
  120. package/.output/server/_ssr/{empty-Bh1FEeYF.mjs → empty-CkdEAvCY.mjs} +2 -2
  121. package/.output/server/_ssr/{empty-plugin-adapters-CpCHi1TV.mjs → empty-plugin-adapters-zrZ0xs6n.mjs} +1 -1
  122. package/.output/server/_ssr/{failureReports-Bh22wois.mjs → failureReports-Cn_zU9S8.mjs} +3 -3
  123. package/.output/server/_ssr/{field-HKCaPH3e.mjs → field-CW08sZXd.mjs} +2 -2
  124. package/.output/server/_ssr/{getBundleChildren-DfxB2K8D.mjs → getBundleChildren-rtkEEJw5.mjs} +2 -2
  125. package/.output/server/_ssr/git-CTA8Aqr0.mjs +56 -0
  126. package/.output/server/_ssr/{input-group-xm3LzDuq.mjs → input-group-D-TpFPuG.mjs} +1 -1
  127. package/.output/server/_ssr/{insights-BKZpJ_K4.mjs → insights-CMyzPs8l.mjs} +28 -27
  128. package/.output/server/_ssr/{insights-CCyTACIw.mjs → insights-CYeBl8N9.mjs} +5 -5
  129. package/.output/server/_ssr/{insights-CNqWQLJR.mjs → insights-DAi9KknT.mjs} +2 -2
  130. package/.output/server/_ssr/{insights-api-DtRFz5X3.mjs → insights-api-BFARQ5ct.mjs} +6 -6
  131. package/.output/server/_ssr/{insights-errors-Iy-lBaM7.mjs → insights-errors-7BCwFybo.mjs} +2 -2
  132. package/.output/server/_ssr/{insights-failures-BJN3RfLu.mjs → insights-failures-B9VPkzZE.mjs} +2 -2
  133. package/.output/server/_ssr/{insights-failures-rpc-DLZ91uOG.mjs → insights-failures-rpc-Q4WNNJkU.mjs} +12 -12
  134. package/.output/server/_ssr/{insights-recovery-BUuQdlA3.mjs → insights-recovery-BtXVU3ro.mjs} +1 -1
  135. package/.output/server/_ssr/{insights-recovery-rpc-BQHUhPi7.mjs → insights-recovery-rpc-CY5RYJKa.mjs} +8 -8
  136. package/.output/server/_ssr/{insights-rpc-C6Vukyn7.mjs → insights-rpc-BO7_evvs.mjs} +5 -5
  137. package/.output/server/_ssr/{insights-search-CBYoxT7v.mjs → insights-search-DKfxgHD3.mjs} +5 -5
  138. package/.output/server/_ssr/{insights-usage-CHqvtehH.mjs → insights-usage-DiGnuxW8.mjs} +1 -1
  139. package/.output/server/_ssr/{insights-usage-rpc-BJ7a-xco.mjs → insights-usage-rpc-B4czku50.mjs} +8 -8
  140. package/.output/server/_ssr/{insights-usage-rpc-C-lNUIsD.mjs → insights-usage-rpc-CUCTFska.mjs} +5 -5
  141. package/.output/server/_ssr/{insightsUsage-COUG-_-U.mjs → insightsUsage-ClAmoUz8.mjs} +3 -3
  142. package/.output/server/_ssr/{insights_.distribution-DmLW8I8a.mjs → insights_.distribution-BDeUhZGj.mjs} +2 -2
  143. package/.output/server/_ssr/{insights_.distribution-CTwilMPm.mjs → insights_.distribution-BRrbZN1X.mjs} +5 -5
  144. package/.output/server/_ssr/{insights_.distribution-DztDyrBj.mjs → insights_.distribution-C2MXpzKd.mjs} +15 -14
  145. package/.output/server/_ssr/{installations-Bct7ag5y.mjs → installations-BVk7okiY.mjs} +4 -4
  146. package/.output/server/_ssr/{installations-B6MK5iA8.mjs → installations-BjLMgBoH.mjs} +2 -2
  147. package/.output/server/_ssr/{installations-_N4PtYFl.mjs → installations-DxGZEC5G.mjs} +12 -12
  148. package/.output/server/_ssr/{listReleases-BfUBlCHo.mjs → listReleases-D_GY00SQ.mjs} +1 -1
  149. package/.output/server/_ssr/native-builds-CSCgFB21.mjs +10 -0
  150. package/.output/server/_ssr/native-builds-CdlyAldW.mjs +569 -0
  151. package/.output/server/_ssr/native-builds-DhXL5zf_.mjs +137 -0
  152. package/.output/server/_ssr/native-builds_._buildId-CMp1h8dT.mjs +10 -0
  153. package/.output/server/_ssr/native-builds_._buildId-GHpGaYyE.mjs +813 -0
  154. package/.output/server/_ssr/nativeBuildQr-84cnFQPX.mjs +59 -0
  155. package/.output/server/_ssr/nativeBuilds-B_7BPjt_.mjs +133 -0
  156. package/.output/server/_ssr/{plugins-BaD1slHx.mjs → plugins-RIryUNWj.mjs} +6 -5
  157. package/.output/server/_ssr/qr-code-C7kNRIDX.mjs +22 -0
  158. package/.output/server/_ssr/{release-adoption-DuYJTGuX.mjs → release-adoption-DoAtNPED.mjs} +2 -2
  159. package/.output/server/_ssr/{release-adoption-rpc-CHl7G_Zy.mjs → release-adoption-rpc-BJXZvtoQ.mjs} +10 -10
  160. package/.output/server/_ssr/{releaseAdoption-B39cpvfo.mjs → releaseAdoption-a2byXMfz.mjs} +4 -4
  161. package/.output/server/_ssr/releaseCatalogCompiler-DLcean2k.mjs +364 -0
  162. package/.output/server/_ssr/{releaseManagement-DFMUnDF5.mjs → releaseManagement-DHUux2az.mjs} +1 -1
  163. package/.output/server/_ssr/{releaseReachability-bFsuElSS.mjs → releaseReachability-DZOK_dH-.mjs} +2 -2
  164. package/.output/server/_ssr/{remote-config-Mj05qVYZ.mjs → remote-config-DjsEl270.mjs} +20 -19
  165. package/.output/server/_ssr/{remote-config-10-obSZ0.mjs → remote-config-DlyyohL2.mjs} +2 -2
  166. package/.output/server/_ssr/{remote-config-Dj1eTYi4.mjs → remote-config-XdYuByHz.mjs} +2 -2
  167. package/.output/server/_ssr/{remote-config-rpc-lteqDSLn.mjs → remote-config-rpc-GMLPb-90.mjs} +6 -6
  168. package/.output/server/_ssr/request-guard-CPdRBuGW.mjs +108 -0
  169. package/.output/server/_ssr/{router-Dr4jjjhx.mjs → router-vpxd56RW.mjs} +317 -71
  170. package/.output/server/_ssr/{routes-BZbrY_qw.mjs → routes-DyEM4b3x.mjs} +14 -14
  171. package/.output/server/_ssr/{routes-B5KrCDwk.mjs → routes-dQe3XhiS.mjs} +99 -81
  172. package/.output/server/_ssr/{runtime.server-DsHqVqTr.mjs → runtime.server-BdMY1blX.mjs} +4 -4
  173. package/.output/server/_ssr/schema-ChlRtZIo.mjs +23 -0
  174. package/.output/server/_ssr/schema-migration-rpc-BfGzEK_o.mjs +65 -0
  175. package/.output/server/_ssr/{select-BtdGNSmp.mjs → select-DM1uwtk9.mjs} +3 -27
  176. package/.output/server/_ssr/{server-BxaHSwHh.mjs → server-BUUKNSPI.mjs} +7 -161
  177. package/.output/server/_ssr/{sidebar-CVsgosaD.mjs → sidebar-DB2YQlok.mjs} +4 -4
  178. package/.output/server/_ssr/ssr.mjs +1 -1
  179. package/.output/server/_ssr/start-BvDsQehg.mjs +49 -0
  180. package/.output/server/_ssr/{switch-BmARgkUP.mjs → switch-DLD58zLy.mjs} +2 -2
  181. package/.output/server/_ssr/{table-M5P3YUfY.mjs → table-P4TnAZhl.mjs} +1 -1
  182. package/.output/server/_ssr/{tabs-CrmfOlJj.mjs → tabs-B7ZeLicF.mjs} +2 -2
  183. package/.output/server/_ssr/{updateFailures-z1IQy_4q.mjs → updateFailures-n-tGv90S.mjs} +3 -3
  184. package/.output/server/_ssr/{uuidv7-C88s9jWF.mjs → uuidv7-BIF4nb_q.mjs} +2 -2
  185. package/.output/server/_ssr/{schema-BiAVyEj2.mjs → version-CQ98ZBpL-CWSkTT9J.mjs} +2 -22
  186. package/.output/server/_tanstack-start-manifest_v-C-KC63Zq.mjs +184 -0
  187. package/.output/server/index.mjs +432 -271
  188. package/lib/vite-internal.mjs +32 -1
  189. package/package.json +8 -7
  190. package/src/components/AppSidebar.tsx +12 -1
  191. package/src/components/ConsoleAccessPage.tsx +49 -3
  192. package/src/components/QrCode.tsx +35 -0
  193. package/src/components/SchemaMigrationRequired.tsx +139 -0
  194. package/src/components/features/insights/BuiltinBundle.tsx +5 -3
  195. package/src/components/features/native-builds/BuiltInBundleCard.tsx +163 -0
  196. package/src/components/features/native-builds/CommitLink.tsx +30 -0
  197. package/src/components/features/native-builds/CopyableText.tsx +48 -0
  198. package/src/components/features/native-builds/ImportBuild.tsx +91 -0
  199. package/src/components/features/native-builds/InstallCard.tsx +205 -0
  200. package/src/components/features/native-builds/NativeBuildDetailPage.tsx +175 -0
  201. package/src/components/features/native-builds/NativeBuildsPage.tsx +151 -0
  202. package/src/components/features/native-builds/NativeBuildsTable.tsx +426 -0
  203. package/src/components/features/native-builds/PatchesCard.tsx +222 -0
  204. package/src/components/features/native-builds/ReleaseNativeBuildLink.tsx +101 -0
  205. package/src/components/features/native-builds/ServedNowCard.tsx +214 -0
  206. package/src/components/features/native-builds/ShortHash.tsx +41 -0
  207. package/src/components/features/native-builds/StoreSubmission.tsx +73 -0
  208. package/src/components/features/releases/ReleaseEditorSheet.tsx +8 -0
  209. package/src/lib/api-rpc.ts +98 -0
  210. package/src/lib/api.ts +120 -0
  211. package/src/lib/native-builds.ts +162 -0
  212. package/src/lib/qr-code.ts +16 -0
  213. package/src/lib/schema-migration-api.ts +54 -0
  214. package/src/lib/schema-migration-rpc.ts +26 -0
  215. package/src/lib/schema-migration.ts +101 -0
  216. package/src/lib/server/config.server.ts +23 -14
  217. package/src/lib/server/console-runtime.server.ts +4 -6
  218. package/src/lib/server/local-console.ts +164 -0
  219. package/src/lib/server/nativeBuildQr.ts +73 -0
  220. package/src/lib/server/nativeBuilds.ts +288 -0
  221. package/src/lib/shell.ts +9 -0
  222. package/src/routeTree.gen.ts +88 -1
  223. package/src/router.tsx +11 -1
  224. package/src/routes/-native-builds-search.ts +51 -0
  225. package/src/routes/[_]hot-updater/native-builds/qr.ts +14 -0
  226. package/src/routes/__root.tsx +11 -1
  227. package/src/routes/api/native-builds/$buildId/download.ts +50 -0
  228. package/src/routes/native-builds.tsx +21 -0
  229. package/src/routes/native-builds_.$buildId.tsx +23 -0
  230. package/src/start.ts +33 -0
  231. package/src/virtual-modules.d.ts +18 -0
  232. package/src/vite-internal.ts +57 -1
  233. package/.output/public/assets/EventDetails-gbD_fCqc.js +0 -1
  234. package/.output/public/assets/HashValueDisplay-BGkDPaYi.js +0 -1
  235. package/.output/public/assets/InsightsPageHeader-BRw8XkJW.js +0 -1
  236. package/.output/public/assets/NotFoundPage-Cei6W2lm.js +0 -1
  237. package/.output/public/assets/alert-dialog-BtVg50WQ.js +0 -1
  238. package/.output/public/assets/api-DoicFJfd.js +0 -1
  239. package/.output/public/assets/api-keys-D81VHHNM.js +0 -1
  240. package/.output/public/assets/api-keys-Dia6i8K1.js +0 -1
  241. package/.output/public/assets/arrow-left-DsivSewE.js +0 -1
  242. package/.output/public/assets/arrow-up-right-B5aM0F7f.js +0 -1
  243. package/.output/public/assets/badge-Bqf3UDee.js +0 -1
  244. package/.output/public/assets/circle-off-BsbZQtsF.js +0 -1
  245. package/.output/public/assets/console-features-api-DPE4C06Y.js +0 -2
  246. package/.output/public/assets/dialog-CGKPxz3n.js +0 -1
  247. package/.output/public/assets/index-DrkdiRIn.js +0 -10
  248. package/.output/public/assets/insights-C-5t8wh2.js +0 -2
  249. package/.output/public/assets/insights-D_ngQdiz.js +0 -1
  250. package/.output/public/assets/insights-KigRBDgC.js +0 -42
  251. package/.output/public/assets/insights-api-1ZjVu3Sb.js +0 -1
  252. package/.output/public/assets/insights-search-aT8BVCci.js +0 -1
  253. package/.output/public/assets/insights-usage-rpc-DqTiXI1_.js +0 -1
  254. package/.output/public/assets/insights_.distribution-Bzl6RFBR.js +0 -2
  255. package/.output/public/assets/insights_.distribution-Cthgttqb.js +0 -1
  256. package/.output/public/assets/insights_.distribution-D2c2v1bu.js +0 -1
  257. package/.output/public/assets/installations-2Nx8Htf-.js +0 -1
  258. package/.output/public/assets/installations-BskJ1xQr.js +0 -2
  259. package/.output/public/assets/installations-K2iJ_r0h.js +0 -1
  260. package/.output/public/assets/remote-config-D9X3NiwV.js +0 -6
  261. package/.output/public/assets/remote-config-DzOOiBIO.js +0 -1
  262. package/.output/public/assets/remote-config-ikg7kak0.js +0 -1
  263. package/.output/public/assets/routes-9rb9P5Y7.js +0 -2
  264. package/.output/public/assets/routes-P7683vKQ.js +0 -1
  265. package/.output/public/assets/search-DuI1FBpg.js +0 -1
  266. package/.output/public/assets/select-M3H2gxCc.js +0 -1
  267. package/.output/public/assets/smartphone-CtsHuiIC.js +0 -1
  268. package/.output/public/assets/styles-CpiW_YdW.css +0 -2
  269. package/.output/public/assets/switch-By_vfm8I.js +0 -1
  270. package/.output/public/assets/useCompositeListItem-B-UkrDlu.js +0 -1
  271. package/.output/server/_ssr/config.server-DTdsG47T.mjs +0 -35
  272. package/.output/server/_ssr/start-B6ECIE_7.mjs +0 -4
  273. package/.output/server/_tanstack-start-manifest_v-_BY9hYTm.mjs +0 -136
@@ -1,31 +1,31 @@
1
1
  import { i as __toESM } from "../_runtime.mjs";
2
2
  import { a as SliderIndicator, bt as require_react, c as SliderControl, l as SliderRoot, o as SliderThumb, s as SliderTrack, yt as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
3
- import { C as Minus, E as List, F as Download, G as Check, H as ChevronRight, M as FingerprintPattern, P as ExternalLink, R as CircleOff, T as LoaderCircle, U as ChevronLeft, W as ChevronDown, Z as ArrowRight, _ as Plus, a as Trash2, b as Package, h as RotateCcw, i as TriangleAlert, j as Funnel, o as Tags, s as Tag, t as X } from "../_libs/lucide-react.mjs";
4
- import { C as Skeleton, O as buttonVariants, S as SidebarTrigger, a as SheetContent, c as SheetTitle, i as Sheet, j as useIsMobile, k as cn, n as Input, o as SheetDescription, r as Separator$1, s as SheetHeader, t as Button$1 } from "./sidebar-CVsgosaD.mjs";
5
- import { h as Link } from "../_libs/@tanstack/react-router+[...].mjs";
6
- import { a as Badge, c as CardDescription, d as CardTitle, i as AlertTitle, o as Card, r as AlertDescription, s as CardContent, t as Alert, u as CardHeader } from "./badge-BpT7r-ng.mjs";
7
- import { a as AlertDialogDescription, i as AlertDialogContent, l as AlertDialogTitle, n as AlertDialogAction, o as AlertDialogFooter, r as AlertDialogCancel, s as AlertDialogHeader, t as AlertDialog$1 } from "./alert-dialog-B8AqlJwo.mjs";
8
- import { a as DialogHeader, i as DialogFooter, n as DialogContent, o as DialogTitle, r as DialogDescription, s as DialogTrigger, t as Dialog$1 } from "./dialog-B4ALf7NJ.mjs";
9
- import { a as FieldLabel, c as Label, i as FieldGroup, n as FieldDescription, r as FieldError, t as Field } from "./field-HKCaPH3e.mjs";
10
- import { a as TableHeader, i as TableHead, n as TableBody, o as TableRow, r as TableCell, t as Table } from "./table-M5P3YUfY.mjs";
3
+ import { B as Download, D as LoaderCircle, F as Funnel, I as FingerprintPattern, J as ChevronLeft, O as List, T as Minus, U as CircleOff, X as Check, Y as ChevronDown, a as Trash2, g as RotateCcw, i as TriangleAlert, nt as ArrowRight, o as Tags, q as ChevronRight, s as Tag, t as X, tt as ArrowUpRight, v as Plus, x as Package, z as ExternalLink } from "../_libs/lucide-react.mjs";
4
+ import { C as Skeleton, O as buttonVariants, S as SidebarTrigger, a as SheetContent, c as SheetTitle, i as Sheet, j as useIsMobile, k as cn, n as Input, o as SheetDescription, r as Separator$1, s as SheetHeader, t as Button$1 } from "./sidebar-DB2YQlok.mjs";
5
+ import { a as Badge, c as CardDescription, d as CardTitle, i as AlertTitle, o as Card, r as AlertDescription, s as CardContent, t as Alert, u as CardHeader } from "./badge-CEdVRgyl.mjs";
6
+ import { a as AlertDialogDescription, i as AlertDialogContent, l as AlertDialogTitle, n as AlertDialogAction, o as AlertDialogFooter, r as AlertDialogCancel, s as AlertDialogHeader, t as AlertDialog$1 } from "./alert-dialog-CvNvTvIJ.mjs";
7
+ import { a as DialogHeader, i as DialogFooter, n as DialogContent, o as DialogTitle, r as DialogDescription, s as DialogTrigger, t as Dialog$1 } from "./dialog-C8CS8RMt.mjs";
8
+ import { a as FieldLabel, c as Label, i as FieldGroup, n as FieldDescription, r as FieldError, t as Field } from "./field-CW08sZXd.mjs";
9
+ import { a as TableHeader, i as TableHead, n as TableBody, o as TableRow, r as TableCell, t as Table } from "./table-P4TnAZhl.mjs";
11
10
  import { n as toast } from "../_libs/sonner.mjs";
12
- import { E as normalizeRolloutCohortCount, T as normalizeCohortValue, _ as getPatchBaseBundleId, h as getNumericCohortRolloutPosition, i as NUMERIC_COHORT_SIZE, t as INVALID_COHORT_ERROR_MESSAGE, v as getPatchBaseFileHash, w as isValidCohort, y as getPatchFileHash } from "./dist-CbQbBIw-.mjs";
13
- import { r as extractTimestampFromUUIDv7 } from "./uuidv7-C88s9jWF.mjs";
11
+ import { h as Link } from "../_libs/@tanstack/react-router+[...].mjs";
12
+ import { D as normalizeRolloutCohortCount, E as normalizeCohortValue, T as isValidCohort, b as getPatchFileHash, g as getNumericCohortRolloutPosition, i as NUMERIC_COHORT_SIZE, t as INVALID_COHORT_ERROR_MESSAGE, v as getPatchBaseBundleId, y as getPatchBaseFileHash } from "./dist-TEpM_UAD.mjs";
13
+ import { d as platformLabel, f as releaseNativeBuildScope, i as nativeBuildArtifacts } from "./native-builds-DhXL5zf_.mjs";
14
14
  import { n as normalizeRange } from "../_libs/verkit.mjs";
15
- import { n as InfoTooltip } from "./insights-search-CBYoxT7v.mjs";
16
- import { a as SelectItem, i as SelectGroup, n as Select$1, o as SelectTrigger, r as SelectContent, s as SelectValue, t as PlatformIcon } from "./select-BtdGNSmp.mjs";
17
- import { a as InputGroupText, i as InputGroupInput, n as InputGroupAddon, o as Textarea, t as InputGroup } from "./input-group-xm3LzDuq.mjs";
18
- import { a as useConfigQuery, c as useDeleteReleaseMutation, d as useReleaseCatalogDiagnosticsQuery, f as useReleaseQuery, i as useChannelsQuery, l as usePreflightReleaseMutation, m as useUpdateReleaseMutation, n as useBundleChildrenQuery, o as useCreateChannelMutation, p as useReleasesQuery, r as useBundleQuery, s as useDeleteChannelMutation, t as useBundleChildCountsQuery, u as usePromoteReleaseMutation } from "./api-C_0B7NXM.mjs";
19
- import { t as BundleIdDisplay } from "./BundleIdDisplay-CjSnY65J.mjs";
20
- import { t as HashValueDisplay } from "./HashValueDisplay-Zs7ABoOi.mjs";
21
- import { n as useDialogTarget, t as Switch$1 } from "./switch-BmARgkUP.mjs";
22
- import { n as require_dayjs_min, t as require_relativeTime } from "../_libs/dayjs.mjs";
23
- import { a as updateReleaseFilters, i as releaseFilterOf, n as Route, r as hasReleaseFilters, s as useReleaseColumns, t as ReleaseSections } from "./routes-BZbrY_qw.mjs";
24
- //#region node_modules/.nitro/vite/services/ssr/assets/routes-B5KrCDwk.js
15
+ import { n as InfoTooltip } from "./insights-search-DKfxgHD3.mjs";
16
+ import { t as PlatformIcon } from "./PlatformIcon-CFLiTjh1.mjs";
17
+ import { a as InputGroupText, i as InputGroupInput, n as InputGroupAddon, o as Textarea, t as InputGroup } from "./input-group-D-TpFPuG.mjs";
18
+ import { a as SelectTrigger, i as SelectItem, n as SelectContent, o as SelectValue, r as SelectGroup, t as Select$1 } from "./select-DM1uwtk9.mjs";
19
+ import { _ as useReleaseQuery, a as useConfigQuery, c as useDeleteReleaseMutation, g as useReleaseNativeBuildQuery, h as useReleaseCatalogDiagnosticsQuery, i as useChannelsQuery, m as usePromoteReleaseMutation, n as useBundleChildrenQuery, o as useCreateChannelMutation, p as usePreflightReleaseMutation, r as useBundleQuery, s as useDeleteChannelMutation, t as useBundleChildCountsQuery, v as useReleasesQuery, y as useUpdateReleaseMutation } from "./api-0vtwA5vY.mjs";
20
+ import { t as BundleIdDisplay } from "./BundleIdDisplay-DOPz4pUS.mjs";
21
+ import { t as HashValueDisplay } from "./HashValueDisplay-Dd-wu5rY.mjs";
22
+ import { n as getCommitUrl, t as TimestampDisplay } from "./git-CTA8Aqr0.mjs";
23
+ import { t as RolloutPercentageBadge } from "./RolloutPercentageBadge-g0Bhfl3M.mjs";
24
+ import { n as useDialogTarget, t as Switch$1 } from "./switch-DLD58zLy.mjs";
25
+ import { a as updateReleaseFilters, i as releaseFilterOf, n as Route, r as hasReleaseFilters, s as useReleaseColumns, t as ReleaseSections } from "./routes-DyEM4b3x.mjs";
26
+ //#region node_modules/.nitro/vite/services/ssr/assets/routes-dQe3XhiS.js
25
27
  var import_react = /* @__PURE__ */ __toESM(require_react());
26
28
  var import_jsx_runtime = require_jsx_runtime();
27
- var import_dayjs_min = /* @__PURE__ */ __toESM(require_dayjs_min());
28
- var import_relativeTime = /* @__PURE__ */ __toESM(require_relativeTime());
29
29
  var channelColors = {
30
30
  production: "bg-green-500/10 text-green-700 dark:text-green-400 border-green-500/20",
31
31
  dev: "bg-blue-500/10 text-blue-700 dark:text-blue-400 border-blue-500/20",
@@ -44,28 +44,6 @@ function EnabledStatusIcon({ enabled, className, falseIcon = "x", colorMode = "s
44
44
  if (falseIcon === "minus") return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Minus, { className: cn("h-4 w-4", iconColorClassName ?? "text-muted-foreground", className) });
45
45
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(X, { className: cn("h-4 w-4", iconColorClassName ?? "text-red-600 dark:text-red-400", className) });
46
46
  }
47
- import_dayjs_min.default.extend(import_relativeTime.default);
48
- function TimestampDisplay({ uuid, format = "relative" }) {
49
- const date = (0, import_dayjs_min.default)(extractTimestampFromUUIDv7(uuid));
50
- if (format === "relative") return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
51
- className: "text-sm text-muted-foreground",
52
- children: date.fromNow()
53
- });
54
- if (format === "absolute") return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
55
- className: "text-sm text-muted-foreground",
56
- children: date.format("YYYY-MM-DD HH:mm:ss")
57
- });
58
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
59
- className: "flex flex-col",
60
- children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
61
- className: "text-sm",
62
- children: date.fromNow()
63
- }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
64
- className: "text-xs text-muted-foreground",
65
- children: date.format("YYYY-MM-DD HH:mm:ss")
66
- })]
67
- });
68
- }
69
47
  function BundleChildrenPanel({ panelId, bundle, bundles, loading, onDetailClick }) {
70
48
  const isMobile = useIsMobile();
71
49
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
@@ -390,30 +368,6 @@ function ChannelManagementDialog({ open, onOpenChange }) {
390
368
  })] })] })
391
369
  })] });
392
370
  }
393
- var normalizeGitUrl = (gitUrl) => {
394
- const trimmedGitUrl = gitUrl.trim();
395
- if (trimmedGitUrl.startsWith("git@")) {
396
- const sshMatch = trimmedGitUrl.match(/^git@([^:]+):(.+?)(?:\.git)?$/);
397
- if (sshMatch) return `https://${sshMatch[1]}/${sshMatch[2]}`;
398
- }
399
- if (trimmedGitUrl.startsWith("ssh://")) try {
400
- const url = new URL(trimmedGitUrl);
401
- return `https://${url.hostname}${url.pathname}`.replace(/\/+$/, "").replace(/\.git$/, "");
402
- } catch {
403
- return trimmedGitUrl.replace(/\/+$/, "").replace(/\.git$/, "");
404
- }
405
- return trimmedGitUrl.replace(/\/+$/, "").replace(/\.git$/, "");
406
- };
407
- var getCommitUrl = (gitUrl, commitHash) => {
408
- if (!gitUrl?.trim()) return null;
409
- const normalizedGitUrl = normalizeGitUrl(gitUrl);
410
- try {
411
- const { hostname } = new URL(normalizedGitUrl);
412
- if (hostname.includes("gitlab")) return `${normalizedGitUrl}/-/commit/${commitHash}`;
413
- if (hostname.includes("bitbucket")) return `${normalizedGitUrl}/commits/${commitHash}`;
414
- } catch {}
415
- return `${normalizedGitUrl}/commit/${commitHash}`;
416
- };
417
371
  function Row({ label, value }) {
418
372
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
419
373
  className: "flex flex-col gap-1.5 sm:flex-row sm:items-start sm:justify-between sm:gap-4",
@@ -624,6 +578,78 @@ function RolloutCohortsDialog({ releaseId, rolloutCohortCount, targetCohorts })
624
578
  ] })
625
579
  })] });
626
580
  }
581
+ /**
582
+ * The native build a release's bundle reaches, and whether that bundle has
583
+ * a patch from its built-in bundle: the newest build of the release's
584
+ * scope, one read. A release of an app version range targets many builds,
585
+ * so it shows none and reads nothing.
586
+ */
587
+ function ReleaseNativeBuildLink({ release, channel, bundle }) {
588
+ const input = release.bundle_id === null ? null : {
589
+ platform: release.platform,
590
+ channel,
591
+ fingerprintHash: release.fingerprint_hash,
592
+ targetAppVersion: release.target_app_version
593
+ };
594
+ const scoped = input !== null && releaseNativeBuildScope(input) !== null;
595
+ const query = useReleaseNativeBuildQuery(scoped ? input : null);
596
+ if (!scoped) return null;
597
+ const build = query.data;
598
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
599
+ className: "flex flex-wrap items-center gap-2",
600
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
601
+ className: "font-medium text-muted-foreground",
602
+ children: "Native build"
603
+ }), query.isPending ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Skeleton, { className: "h-4 w-40" }) : build ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Link, {
604
+ className: "inline-flex flex-wrap items-center gap-x-1 gap-y-0.5 text-xs text-foreground underline-offset-4 hover:underline",
605
+ params: { buildId: build.id },
606
+ to: "/native-builds/$buildId",
607
+ children: [
608
+ platformLabel(build.platform),
609
+ " ",
610
+ nativeBuildArtifacts[build.artifact_kind].label,
611
+ " ·",
612
+ " ",
613
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
614
+ className: "font-mono",
615
+ translate: "no",
616
+ children: build.min_bundle_id
617
+ }),
618
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ArrowUpRight, {
619
+ "aria-hidden": "true",
620
+ className: "size-3"
621
+ })
622
+ ]
623
+ }), bundle ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Badge, {
624
+ variant: "secondary",
625
+ children: (bundle.patches ?? []).some(({ baseBundleId }) => baseBundleId === build.min_bundle_id) ? "Patches from it" : "No patch from it"
626
+ }) : null] }) : query.isError ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
627
+ className: "text-xs text-muted-foreground",
628
+ children: [
629
+ "Couldn't load the scope's native build.",
630
+ " ",
631
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", {
632
+ className: "underline underline-offset-4",
633
+ onClick: () => void query.refetch(),
634
+ type: "button",
635
+ children: "Retry"
636
+ })
637
+ ]
638
+ }) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
639
+ className: "text-xs text-muted-foreground",
640
+ children: [
641
+ "None tracked for this scope ·",
642
+ " ",
643
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Link, {
644
+ className: "underline-offset-4 hover:text-foreground hover:underline",
645
+ search: { channel },
646
+ to: "/native-builds",
647
+ children: "This channel's builds"
648
+ })
649
+ ]
650
+ })]
651
+ });
652
+ }
627
653
  function Slider$1({ className, defaultValue, value, min = 0, max = 100, ...props }) {
628
654
  const _values = Array.isArray(value) ? value : value !== void 0 ? [value] : Array.isArray(defaultValue) ? defaultValue : defaultValue !== void 0 ? [defaultValue] : [min];
629
655
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SliderRoot, {
@@ -886,6 +912,11 @@ function ReleaseEditorSheet({ channels, onOpenChange, onShowScope, open, release
886
912
  children: channelName
887
913
  })]
888
914
  }),
915
+ channelName ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ReleaseNativeBuildLink, {
916
+ bundle,
917
+ channel: channelName,
918
+ release
919
+ }) : null,
889
920
  /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
890
921
  className: "flex flex-wrap items-center gap-2",
891
922
  children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
@@ -1335,19 +1366,6 @@ function ReleaseStateBadge({ release }) {
1335
1366
  children: [release.enabled ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Check, { className: "size-3" }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CircleOff, { className: "size-3" }), release.enabled ? "Enabled" : "Disabled"]
1336
1367
  });
1337
1368
  }
1338
- function RolloutPercentageBadge({ percentage, className }) {
1339
- const isPartialRollout = percentage < 100;
1340
- const formattedPercentage = percentage.toFixed(1);
1341
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Badge, {
1342
- className: cn("gap-1", className),
1343
- variant: isPartialRollout ? "secondary" : "default",
1344
- children: [
1345
- isPartialRollout ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TriangleAlert, { className: "h-3 w-3" }) : null,
1346
- formattedPercentage,
1347
- "%"
1348
- ]
1349
- });
1350
- }
1351
1369
  var PAGE_SIZE = 20;
1352
1370
  var platformFilterItems = [{
1353
1371
  label: "iOS",
@@ -1,7 +1,7 @@
1
- import { i as resolveConsoleFeatures, n as consoleFeatures, t as ConsoleFeatureUnavailableError } from "./console-features-4xAGfZHw.mjs";
2
- import { t as isRemoteDatabase } from "./databaseConfig-C5SkAyUy.mjs";
3
- import { a as createInsightsReads, i as createInsightsAdminReads, n as createRemoteConfigAdminApi, o as createInsightsModel, r as RemoteConfigValidationError } from "./plugins-BaD1slHx.mjs";
4
- //#region node_modules/.nitro/vite/services/ssr/assets/runtime.server-DsHqVqTr.js
1
+ import { i as resolveConsoleFeatures, n as consoleFeatures, t as ConsoleFeatureUnavailableError } from "./console-features-BTV-XuhQ.mjs";
2
+ import { t as isRemoteDatabase } from "./databaseConfig-B_Bg7qS5.mjs";
3
+ import { a as createInsightsReads, i as createInsightsAdminReads, n as createRemoteConfigAdminApi, o as createInsightsModel, r as RemoteConfigValidationError } from "./plugins-RIryUNWj.mjs";
4
+ //#region node_modules/.nitro/vite/services/ssr/assets/runtime.server-BdMY1blX.js
5
5
  var invalidOf = (error) => {
6
6
  if (error instanceof RemoteConfigValidationError) return {
7
7
  status: "invalid",
@@ -0,0 +1,23 @@
1
+ //#region node_modules/.nitro/vite/services/ssr/assets/schema-ChlRtZIo.js
2
+ var defineTable = (fields, options) => ({
3
+ kind: "table",
4
+ fields,
5
+ key: options.key,
6
+ derived: options.derived ?? {},
7
+ indexes: options.indexes ?? {},
8
+ ...options.retention === void 0 ? {} : { retention: options.retention }
9
+ });
10
+ var defineAggregate = (fields, options) => ({
11
+ kind: "aggregate",
12
+ fields,
13
+ key: options.key,
14
+ counters: options.counters ?? [],
15
+ gauges: options.gauges ?? [],
16
+ distinct: options.distinct ?? [],
17
+ shards: options.shards ?? 1,
18
+ indexes: options.indexes ?? {},
19
+ ...options.batched ? { batched: true } : {},
20
+ ...options.retention === void 0 ? {} : { retention: options.retention }
21
+ });
22
+ //#endregion
23
+ export { defineTable as n, defineAggregate as t };
@@ -0,0 +1,65 @@
1
+ import { l as createServerFn } from "./createServerFn-AQvBMBjJ.mjs";
2
+ import { t as consoleAccess } from "./console-access-33BNlH97.mjs";
3
+ import { t as createServerRpc } from "./createServerRpc-BVvRVOz5.mjs";
4
+ //#region node_modules/.nitro/vite/services/ssr/assets/schema-migration-rpc-BfGzEK_o.js
5
+ /** Compares dotted numeric versions, such as "1" and "1.2.0"; NaN when either is not one. */
6
+ var compareVersions = (left, right) => {
7
+ const parse = (version) => version.split(".").map(Number);
8
+ const [a, b] = [parse(left), parse(right)];
9
+ if ([...a, ...b].some(Number.isNaN)) return NaN;
10
+ for (let index = 0; index < Math.max(a.length, b.length); index += 1) {
11
+ const difference = (a[index] ?? 0) - (b[index] ?? 0);
12
+ if (difference !== 0) return difference;
13
+ }
14
+ return 0;
15
+ };
16
+ /** The brand Hot Updater's own plugin factories set, read as the server reads it. */
17
+ var OFFICIAL = Symbol.for("@hot-updater/server/official-plugin");
18
+ /**
19
+ * Whether a migration moves a setting forward: a missing one, or an older
20
+ * version of core's or of one of Hot Updater's own plugins. Another plugin's
21
+ * changed tables need its own migration.
22
+ */
23
+ var migrates = ({ key, expected, found }, official) => found === null || (key === "schema.core" || official.has(key)) && compareVersions(found, expected) < 0;
24
+ /**
25
+ * The fence's refusal in `error`, recognized by name: plugin-core may be
26
+ * another copy than the console's. Null for any other error.
27
+ */
28
+ var schemaMigrationOf = (error, plugins = []) => {
29
+ if (!(error instanceof Error) || error.name !== "HotUpdaterSchemaMigrationRequiredError") return null;
30
+ const official = new Set(plugins.flatMap((plugin) => typeof plugin === "object" && plugin !== null && Reflect.get(plugin, OFFICIAL) === true ? [`schema.${String(Reflect.get(plugin, "id"))}`] : []));
31
+ const { settings = [], plugins: refused = [], currentVersion } = error;
32
+ return {
33
+ message: error.message,
34
+ settings: settings.map(({ key, expected, found }) => ({
35
+ key,
36
+ expected,
37
+ found
38
+ })),
39
+ plugins: [...refused],
40
+ migratable: currentVersion === void 0 && settings.length > 0 && settings.every((setting) => migrates(setting, official))
41
+ };
42
+ };
43
+ /**
44
+ * Whether the schema fence refuses the console's database, and what it
45
+ * found: one read through core, which the console makes only after a page's
46
+ * read failed. Null when the read passes or fails for another reason, which
47
+ * the page reports itself.
48
+ */
49
+ var getSchemaMigrationRpc_createServerFn_handler = createServerRpc({
50
+ id: "28ea8c9bdbeb67f80c776990bb5bcb5c990f5129520631f241faf074d90fea02",
51
+ name: "getSchemaMigrationRpc",
52
+ filename: "src/lib/schema-migration-rpc.ts"
53
+ }, (opts) => getSchemaMigrationRpc.__executeServer(opts));
54
+ var getSchemaMigrationRpc = createServerFn({ method: "GET" }).middleware([consoleAccess]).handler(getSchemaMigrationRpc_createServerFn_handler, async () => {
55
+ const { prepareConfig } = await import("./config.server-NnMFjMFX.mjs");
56
+ const { config, core } = await prepareConfig();
57
+ try {
58
+ await core.listChannels();
59
+ return null;
60
+ } catch (error) {
61
+ return schemaMigrationOf(error, config.plugins);
62
+ }
63
+ });
64
+ //#endregion
65
+ export { getSchemaMigrationRpc_createServerFn_handler };
@@ -1,33 +1,9 @@
1
1
  import "../_runtime.mjs";
2
2
  import { B as SelectPositioner, F as SelectItemText, G as SelectRoot, H as SelectIcon, I as SelectItemIndicator, L as SelectItem$1, M as SelectGroup$1, N as SelectScrollUpArrow, P as SelectScrollDownArrow, R as SelectList, U as SelectValue$1, V as SelectPortal, W as SelectTrigger$1, bt as require_react, yt as require_jsx_runtime, z as SelectPopup } from "../_libs/@base-ui/react+[...].mjs";
3
- import { G as Check, V as ChevronUp, W as ChevronDown } from "../_libs/lucide-react.mjs";
4
- import { k as cn } from "./sidebar-CVsgosaD.mjs";
3
+ import { K as ChevronUp, X as Check, Y as ChevronDown } from "../_libs/lucide-react.mjs";
4
+ import { k as cn } from "./sidebar-DB2YQlok.mjs";
5
5
  require_react();
6
6
  var import_jsx_runtime = require_jsx_runtime();
7
- function AppleIcon({ className }) {
8
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", {
9
- "aria-hidden": "true",
10
- viewBox: "0 0 24 24",
11
- xmlns: "http://www.w3.org/2000/svg",
12
- className,
13
- fill: "currentColor",
14
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701" })
15
- });
16
- }
17
- function AndroidIcon({ className }) {
18
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", {
19
- "aria-hidden": "true",
20
- viewBox: "0 0 24 24",
21
- xmlns: "http://www.w3.org/2000/svg",
22
- className,
23
- fill: "currentColor",
24
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M18.4395 5.5586c-.675 1.1664-1.352 2.3318-2.0274 3.498-.0366-.0155-.0742-.0286-.1113-.043-1.8249-.6957-3.484-.8-4.42-.787-1.8551.0185-3.3544.4643-4.2597.8203-.084-.1494-1.7526-3.021-2.0215-3.4864a1.1451 1.1451 0 0 0-.1406-.1914c-.3312-.364-.9054-.4859-1.379-.203-.475.282-.7136.9361-.3886 1.5019 1.9466 3.3696-.0966-.2158 1.9473 3.3593.0172.031-.4946.2642-1.3926 1.0177C2.8987 12.176.452 14.772 0 18.9902h24c-.119-1.1108-.3686-2.099-.7461-3.0683-.7438-1.9118-1.8435-3.2928-2.7402-4.1836a12.1048 12.1048 0 0 0-2.1309-1.6875c.6594-1.122 1.312-2.2559 1.9649-3.3848.2077-.3615.1886-.7956-.0079-1.1191a1.1001 1.1001 0 0 0-.8515-.5332c-.5225-.0536-.9392.3128-1.0488.5449zm-.0391 8.461c.3944.5926.324 1.3306-.1563 1.6503-.4799.3197-1.188.0985-1.582-.4941-.3944-.5927-.324-1.3307.1563-1.6504.4727-.315 1.1812-.1086 1.582.4941zM7.207 13.5273c.4803.3197.5506 1.0577.1563 1.6504-.394.5926-1.1038.8138-1.584.4941-.48-.3197-.5503-1.0577-.1563-1.6504.4008-.6021 1.1087-.8106 1.584-.4941z" })
25
- });
26
- }
27
- function PlatformIcon({ platform, className }) {
28
- if (platform === "ios") return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AppleIcon, { className });
29
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AndroidIcon, { className });
30
- }
31
7
  var Select$1 = SelectRoot;
32
8
  function SelectGroup({ className, ...props }) {
33
9
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SelectGroup$1, {
@@ -104,4 +80,4 @@ function SelectScrollDownButton({ className, ...props }) {
104
80
  });
105
81
  }
106
82
  //#endregion
107
- export { SelectItem as a, SelectGroup as i, Select$1 as n, SelectTrigger as o, SelectContent as r, SelectValue as s, PlatformIcon as t };
83
+ export { SelectTrigger as a, SelectItem as i, SelectContent as n, SelectValue as o, SelectGroup as r, Select$1 as t };
@@ -1,9 +1,10 @@
1
1
  import "../_runtime.mjs";
2
- import { _ as parseSetCookie, a as TSS_SERVER_FUNCTION, b as serialize, c as createMiddleware, d as flattenMiddlewares, f as getStartContext, g as parse, h as mergeHeaders, i as TSS_FORMDATA_CONTEXT, l as createNullProtoObject, m as isRedirect, n as MAX_FRAME_PAYLOAD_SIZE, o as X_TSS_RAW_RESPONSE, p as getStartOptions, r as TSS_CONTENT_TYPE_FRAMED_VERSIONED, s as X_TSS_SERIALIZED, t as MAX_FRAMED_STREAMS, v as runWithStartContext, x as splitSetCookieString, y as safeObjectMerge } from "./createMiddleware-B1iPez7u.mjs";
3
- import { t as getServerFnById } from "../__23tanstack-start-server-fn-resolver-KpQ5Z_24.mjs";
2
+ import { _ as runWithStartContext, a as TSS_SERVER_FUNCTION, b as splitSetCookieString, c as createNullProtoObject, d as getStartContext, f as getStartOptions, g as parseSetCookie, h as parse, i as TSS_FORMDATA_CONTEXT, m as mergeHeaders, n as MAX_FRAME_PAYLOAD_SIZE, o as X_TSS_RAW_RESPONSE, p as isRedirect, r as TSS_CONTENT_TYPE_FRAMED_VERSIONED, s as X_TSS_SERIALIZED, t as MAX_FRAMED_STREAMS, u as flattenMiddlewares, v as safeObjectMerge, y as serialize } from "./createServerFn-AQvBMBjJ.mjs";
3
+ import { t as getServerFnById } from "../__23tanstack-start-server-fn-resolver-CygMPYHZ.mjs";
4
4
  import { bt as require_react, yt as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
5
5
  import { l as RouterProvider, n as renderRouterToString, r as defineHandlerCallback, t as renderRouterToStream } from "../_libs/@tanstack/react-router+[...].mjs";
6
6
  import { t as __exportAll } from "./rolldown-runtime-rSIU-vHC.mjs";
7
+ import { i as isPromise, n as decodePath, r as isDangerousProtocol, t as createCsrfMiddleware } from "./createCsrfMiddleware-BwHbC8n-.mjs";
7
8
  import { Readable } from "node:stream";
8
9
  import { AsyncLocalStorage } from "node:async_hooks";
9
10
  require_react();
@@ -214,94 +215,6 @@ function waitForReason(value, signal, onLate, onLateError) {
214
215
  });
215
216
  });
216
217
  }
217
- function isPromise(value) {
218
- return Boolean(value && typeof value === "object" && typeof value.then === "function");
219
- }
220
- /**
221
- * Re-encode characters that are unsafe in URL paths.
222
- * Includes ASCII control characters (0x00-0x1F, 0x7F) and a subset of the
223
- * WHATWG URL "path percent-encode set" (", <, >, `, {, }).
224
- *
225
- * Space (0x20) is intentionally excluded — decodeURI decodes %20 to space
226
- * and the router stores decoded spaces in location.pathname. The existing
227
- * encodePathLikeUrl already handles re-encoding spaces for outgoing URLs.
228
- *
229
- * These characters are decoded by decodeURI but must remain percent-encoded
230
- * in paths to match how upstream layers (CDNs, edge middleware, browsers)
231
- * interpret the URL, preventing infinite redirect loops and path mismatches.
232
- */
233
- var PATH_UNSAFE_RE = /[\x00-\x1f\x7f"<>`{}]/g;
234
- function sanitizePathSegment(segment) {
235
- return segment.replace(PATH_UNSAFE_RE, (ch) => "%" + ch.charCodeAt(0).toString(16).toUpperCase().padStart(2, "0"));
236
- }
237
- function decodeSegment(segment) {
238
- let decoded;
239
- try {
240
- decoded = decodeURI(segment);
241
- } catch {
242
- decoded = segment.replaceAll(/%[0-9A-F]{2}/gi, (match) => {
243
- try {
244
- return decodeURI(match);
245
- } catch {
246
- return match;
247
- }
248
- });
249
- }
250
- return sanitizePathSegment(decoded);
251
- }
252
- /**
253
- * Extract the explicit URL scheme, including its colon, using WHATWG
254
- * normalization rules. This does not validate the rest of the URL.
255
- *
256
- * Returning `undefined` means "no explicit scheme", not "safe URL";
257
- * protocol-relative URLs such as "//evil.example" require a separate check.
258
- */
259
- function getUrlScheme(url) {
260
- if (url[0] === "/") return;
261
- if (!url.includes(":")) return;
262
- return /^[\x00-\x20]*([a-z][a-z\d+.\t\n\r-]*:)/i.exec(url)?.[1]?.replace(/[\t\n\r]/g, "").toLowerCase();
263
- }
264
- var protocolRelativePrefixRegex = /^[\x00-\x20]*[\\/][\t\n\r]*[\\/]/;
265
- /**
266
- * Check if a URL string uses a protocol that is not in the allowlist or is
267
- * protocol-relative (e.g. "//evil.example"), which can navigate to another host.
268
- * Returns true for blocked protocols like javascript:, blob:, and data:, as
269
- * well as slash/backslash variants of protocol-relative URLs.
270
- *
271
- * Scheme parsing normalizes:
272
- * - Mixed case (JavaScript: → javascript:)
273
- * - Whitespace/control characters (java\nscript: → javascript:)
274
- * - Leading whitespace
275
- *
276
- * For relative URLs without a protocol-relative prefix, returns false.
277
- *
278
- * @param url - The URL string to check
279
- * @param allowlist - Set of protocols to allow
280
- * @returns true if the URL uses a protocol that is not allowed or can escape
281
- * the current origin through a protocol-relative URL
282
- */
283
- function isDangerousProtocol(url, allowlist) {
284
- if (!url) return false;
285
- if (protocolRelativePrefixRegex.test(url)) return true;
286
- const scheme = getUrlScheme(url);
287
- return scheme ? !allowlist.has(scheme) : false;
288
- }
289
- function decodePath(path) {
290
- if (!path) return path;
291
- let result = path;
292
- if (/[%\\\x00-\x1f\x7f]/.test(path)) {
293
- const re = /%25|%5C/gi;
294
- let cursor = 0;
295
- let match;
296
- result = "";
297
- while (null !== (match = re.exec(path))) {
298
- result += decodeSegment(path.slice(cursor, match.index)) + match[0];
299
- cursor = re.lastIndex;
300
- }
301
- result += decodeSegment(cursor ? path.slice(cursor) : path);
302
- }
303
- return result;
304
- }
305
218
  function getAssetCrossOrigin(assetCrossOrigin, kind) {
306
219
  if (!assetCrossOrigin) return;
307
220
  if (typeof assetCrossOrigin === "string") return assetCrossOrigin;
@@ -3966,7 +3879,7 @@ var HEADERS = { TSS_SHELL: "X-TSS_SHELL" };
3966
3879
  * the dev styles URL for route-scoped CSS collection.
3967
3880
  */
3968
3881
  async function getStartManifest(matchedRoutes) {
3969
- const { tsrStartManifest } = await import("../_tanstack-start-manifest_v-_BY9hYTm.mjs");
3882
+ const { tsrStartManifest } = await import("../_tanstack-start-manifest_v-C-KC63Zq.mjs");
3970
3883
  const startManifest = tsrStartManifest();
3971
3884
  let routes = startManifest.routes;
3972
3885
  routes[rootRouteId];
@@ -4511,73 +4424,6 @@ function createMultiplexedStream(recordStream, options = {}) {
4511
4424
  }
4512
4425
  });
4513
4426
  }
4514
- var innerCreateCsrfMiddleware = (opts = {}) => {
4515
- const continueRequest = (result, ctx) => {
4516
- return isValidationResultAllowed(result, opts) ? ctx.next() : getFailureResponse(opts, ctx);
4517
- };
4518
- const validateRequest = (ctx) => {
4519
- const result = validateCsrfRequest(opts, ctx);
4520
- if (isPromise(result)) return result.then((result) => continueRequest(result, ctx));
4521
- return continueRequest(result, ctx);
4522
- };
4523
- return createMiddleware().server((ctx) => {
4524
- const csrfCtx = ctx;
4525
- try {
4526
- if (opts.filter) {
4527
- const shouldValidate = opts.filter(csrfCtx);
4528
- if (isPromise(shouldValidate)) return shouldValidate.then((shouldValidate) => shouldValidate ? validateRequest(csrfCtx) : ctx.next());
4529
- if (!shouldValidate) return ctx.next();
4530
- }
4531
- return validateRequest(csrfCtx);
4532
- } catch (error) {
4533
- return Promise.reject(error);
4534
- }
4535
- });
4536
- };
4537
- var createCsrfMiddleware = innerCreateCsrfMiddleware;
4538
- function isValidationResultAllowed(result, opts) {
4539
- return result === true || result === void 0 && opts.allowRequestsWithoutOriginCheck === true;
4540
- }
4541
- function validateCsrfRequest(opts, ctx) {
4542
- const fetchSite = ctx.request.headers.get("Sec-Fetch-Site");
4543
- if (fetchSite !== null) return matchValue(opts.secFetchSite ?? "same-origin", fetchSite, ctx);
4544
- const origin = ctx.request.headers.get("Origin");
4545
- if (origin !== null) {
4546
- if (opts.origin) return matchValue(opts.origin, origin, ctx);
4547
- return origin === new URL(ctx.request.url).origin;
4548
- }
4549
- const referer = ctx.request.headers.get("Referer");
4550
- if (referer === null || opts.referer === false) return;
4551
- if (typeof opts.referer === "function") return opts.referer(referer, ctx);
4552
- if (opts.origin) {
4553
- const refererOrigin = getOriginFromUrl(referer);
4554
- return refererOrigin !== void 0 && matchValue(opts.origin, refererOrigin, ctx);
4555
- }
4556
- return isRefererSameOrigin(referer, new URL(ctx.request.url).origin);
4557
- }
4558
- function matchValue(matcher, value, ctx) {
4559
- if (typeof matcher === "function") return matcher(value, ctx);
4560
- if (Array.isArray(matcher)) return matcher.includes(value);
4561
- return value === matcher;
4562
- }
4563
- function getOriginFromUrl(url) {
4564
- try {
4565
- return new URL(url).origin;
4566
- } catch {
4567
- return;
4568
- }
4569
- }
4570
- function isRefererSameOrigin(referer, requestOrigin) {
4571
- if (referer === requestOrigin) return true;
4572
- if (!referer.startsWith(requestOrigin)) return false;
4573
- if (referer.length === requestOrigin.length) return true;
4574
- const code = referer.charCodeAt(requestOrigin.length);
4575
- return code === 47 || code === 63 || code === 35;
4576
- }
4577
- function getFailureResponse(opts, ctx) {
4578
- if (typeof opts.failureResponse === "function") return opts.failureResponse(ctx);
4579
- return opts.failureResponse?.clone() ?? new Response("Forbidden", { status: 403 });
4580
- }
4581
4427
  var GLOBAL_TSR = "$_TSR";
4582
4428
  /**
4583
4429
  * Create a Seroval plugin for server-side serialization only. `tracker.didRun`
@@ -6988,9 +6834,9 @@ var getBaseManifest = getProdBaseManifest;
6988
6834
  var createEarlyHintsForRequest = createEarlyHintsCollector;
6989
6835
  async function loadEntries() {
6990
6836
  const [routerEntry, startEntry, pluginAdapters] = await Promise.all([
6991
- import("./router-Dr4jjjhx.mjs"),
6992
- import("./start-B6ECIE_7.mjs"),
6993
- import("./empty-plugin-adapters-CpCHi1TV.mjs")
6837
+ import("./router-vpxd56RW.mjs"),
6838
+ import("./start-BvDsQehg.mjs"),
6839
+ import("./empty-plugin-adapters-zrZ0xs6n.mjs")
6994
6840
  ]);
6995
6841
  return {
6996
6842
  routerEntry,
@@ -1,11 +1,11 @@
1
1
  import { i as __toESM } from "../_runtime.mjs";
2
- import { a as TSS_SERVER_FUNCTION } from "./createMiddleware-B1iPez7u.mjs";
3
- import { t as getServerFnById } from "../__23tanstack-start-server-fn-resolver-KpQ5Z_24.mjs";
2
+ import { a as TSS_SERVER_FUNCTION } from "./createServerFn-AQvBMBjJ.mjs";
3
+ import { t as getServerFnById } from "../__23tanstack-start-server-fn-resolver-CygMPYHZ.mjs";
4
4
  import { $ as DialogTitle, Q as DialogTrigger, _t as Button, at as DialogBackdrop, bt as require_react, ct as TooltipProvider$1, dt as TooltipPositioner, et as DialogRoot, ft as TooltipPortal, it as DialogClose, lt as TooltipArrow, mt as TooltipRoot, nt as DialogPopup, ot as useRender, pt as TooltipTrigger$1, rt as DialogDescription, st as Separator, tt as DialogPortal, ut as TooltipPopup, vt as mergeProps, yt as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
5
- import { t as X, y as PanelLeft } from "../_libs/lucide-react.mjs";
5
+ import { b as PanelLeft, t as X } from "../_libs/lucide-react.mjs";
6
6
  import { n as clsx, t as cva } from "../_libs/class-variance-authority+clsx.mjs";
7
7
  import { t as twMerge } from "../_libs/tailwind-merge.mjs";
8
- //#region node_modules/.nitro/vite/services/ssr/assets/sidebar-CVsgosaD.js
8
+ //#region node_modules/.nitro/vite/services/ssr/assets/sidebar-DB2YQlok.js
9
9
  var import_react = /* @__PURE__ */ __toESM(require_react());
10
10
  var import_jsx_runtime = require_jsx_runtime();
11
11
  var createSsrRpc = (functionId) => {
@@ -1,4 +1,4 @@
1
- import { a as defaultStreamHandler, n as createStartHandler, r as createServerEntry$1 } from "./server-BxaHSwHh.mjs";
1
+ import { a as defaultStreamHandler, n as createStartHandler, r as createServerEntry$1 } from "./server-BUUKNSPI.mjs";
2
2
  //#region node_modules/.nitro/vite/services/ssr/index.js
3
3
  var fetch = createStartHandler(defaultStreamHandler);
4
4
  var createServerEntry = createServerEntry$1;