@hot-updater/console 1.0.0-rc.9 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (341) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/assets/ConsoleFeatureUnavailable-jB4Loglh.js +1 -0
  3. package/.output/public/assets/EventDetails-B6yUsyNA.js +1 -0
  4. package/.output/public/assets/HashValueDisplay-BFX_kY3-.js +1 -0
  5. package/.output/public/assets/InsightsInfo-BNO0WznZ.js +1 -0
  6. package/.output/public/assets/InsightsPageHeader-B892oVml.js +1 -0
  7. package/.output/public/assets/NotFoundPage-DIqCpWa3.js +1 -0
  8. package/.output/public/assets/alert-dialog-Bbk_4-WJ.js +1 -0
  9. package/.output/public/assets/api-DCM0wr6O.js +1 -0
  10. package/.output/public/assets/api-keys-CIO9L_wu.js +1 -0
  11. package/.output/public/assets/api-keys-DVTL_--f.js +1 -0
  12. package/.output/public/assets/arrow-left-CnMYpqB7.js +1 -0
  13. package/.output/public/assets/arrow-up-right-BtffZA6e.js +1 -0
  14. package/.output/public/assets/chevron-right-BqD5wtFb.js +1 -0
  15. package/.output/public/assets/clipboard-DS9ucUQL.js +1 -0
  16. package/.output/public/assets/console-features-api-BH5m_PtQ.js +1 -0
  17. package/.output/public/assets/dialog-Bqbb7B0N.js +1 -0
  18. package/.output/public/assets/dist-LxKJB-Vu.js +1 -0
  19. package/.output/public/assets/empty-CuT2UhFp.js +1 -0
  20. package/.output/public/assets/field-BBDpjIqu.js +1 -0
  21. package/.output/public/assets/index-6o51GkFe.js +11 -0
  22. package/.output/public/assets/input-group-ja_30qaF.js +1 -0
  23. package/.output/public/assets/insights-CmraDzQh.js +1 -0
  24. package/.output/public/assets/insights-CxZ2GCYV.js +2 -0
  25. package/.output/public/assets/insights-api-BigAU9sZ.js +1 -0
  26. package/.output/public/assets/insights-usage-rpc-DYEhsCKT.js +1 -0
  27. package/.output/public/assets/insights-vNRCrfnS.js +42 -0
  28. package/.output/public/assets/insights_.distribution-ChOerfJt.js +1 -0
  29. package/.output/public/assets/insights_.distribution-D-e4iga8.js +1 -0
  30. package/.output/public/assets/insights_.distribution-DZtkibX1.js +2 -0
  31. package/.output/public/assets/installations-BazSJXE0.js +2 -0
  32. package/.output/public/assets/installations-ClHTqdAO.js +1 -0
  33. package/.output/public/assets/installations-DpKsBuHi.js +1 -0
  34. package/.output/public/assets/key-round-wS_SIZ6b.js +1 -0
  35. package/.output/public/assets/list-CgrYiadM.js +1 -0
  36. package/.output/public/assets/refresh-cw-BYgoNCco.js +1 -0
  37. package/.output/public/assets/remote-config-BWwHOkCK.js +1 -0
  38. package/.output/public/assets/remote-config-Br56BODb.js +6 -0
  39. package/.output/public/assets/remote-config-CXOi0LRu.js +1 -0
  40. package/.output/public/assets/routes-B88Erkpk.js +2 -0
  41. package/.output/public/assets/routes-CfzsAleC.js +1 -0
  42. package/.output/public/assets/search-DaTDPW25.js +1 -0
  43. package/.output/public/assets/select-BZZBXMkr.js +1 -0
  44. package/.output/public/assets/sidebar-DNVyJPfX.js +3 -0
  45. package/.output/public/assets/smartphone-DpTFgtKf.js +1 -0
  46. package/.output/public/assets/styles-DTGEAJFv.css +2 -0
  47. package/.output/public/assets/switch-DZ1TPwx-.js +1 -0
  48. package/.output/public/assets/table-Gm4qRWwE.js +1 -0
  49. package/.output/public/assets/tabs-C7FOEjFC.js +1 -0
  50. package/.output/public/assets/undo-2-CmrHjwFc.js +1 -0
  51. package/.output/public/assets/useCompositeListItem-9E4pj_CH.js +1 -0
  52. package/.output/public/assets/valueToPercent-CH8GCHaL.js +1 -0
  53. package/.output/server/__23tanstack-start-server-fn-resolver-BpRlos5Q.mjs +170 -0
  54. package/.output/server/_libs/@base-ui/react+[...].mjs +4389 -4207
  55. package/.output/server/_libs/@tanstack/react-router+[...].mjs +3802 -4022
  56. package/.output/server/_libs/@tanstack/react-router-ssr-query+[...].mjs +140 -97
  57. package/.output/server/_libs/lucide-react.mjs +221 -9
  58. package/.output/server/_libs/next-themes.mjs +1 -1
  59. package/.output/server/_libs/react-redux+[...].mjs +1 -1
  60. package/.output/server/_libs/recharts+[...].mjs +483 -901
  61. package/.output/server/_libs/sonner.mjs +1 -1
  62. package/.output/server/_libs/tanstack__history.mjs +68 -41
  63. package/.output/server/_libs/tanstack__query-core.mjs +2010 -309
  64. package/.output/server/_libs/tanstack__react-query.mjs +448 -21
  65. package/.output/server/_libs/verkit.mjs +102 -1
  66. package/.output/server/_ssr/BundleIdDisplay-x94o9rlU.mjs +13 -0
  67. package/.output/server/_ssr/ConsoleFeatureUnavailable-ldW8v8-q.mjs +58 -0
  68. package/.output/server/_ssr/EventDetails-Q8kfj9Nr.mjs +344 -0
  69. package/.output/server/_ssr/{HashValueDisplay-CyMmr0O9.mjs → HashValueDisplay-n1GholGS.mjs} +3 -3
  70. package/.output/server/_ssr/InsightsInfo-DuJFatQO.mjs +75 -0
  71. package/.output/server/_ssr/InsightsPageHeader-BSUX3Ye9.mjs +145 -0
  72. package/.output/server/_ssr/NotFoundPage-DZzOOzS3.mjs +37 -0
  73. package/.output/server/_ssr/{dialog-CKvQ4VIE.mjs → alert-dialog-C43Doa0I.mjs} +6 -83
  74. package/.output/server/_ssr/{api-keys-CzZ7Ont4.mjs → api-keys-B4sYm8dM.mjs} +48 -9
  75. package/.output/server/_ssr/api-keys-CEnM9fqG.mjs +5 -0
  76. package/.output/server/_ssr/api-keys-rpc-BIFuUgMt.mjs +52 -0
  77. package/.output/server/_ssr/api-oZjRn9tP.mjs +186 -0
  78. package/.output/server/_ssr/api-rpc-BNiFRRK8.mjs +240 -0
  79. package/.output/server/_ssr/{auth-BF8mbAgF.mjs → auth-UP0wXs4i.mjs} +1 -1
  80. package/.output/server/_ssr/{auth-rpc-DH6Bhwcz.mjs → auth-rpc-DnZqYxyq.mjs} +6 -6
  81. package/.output/server/_ssr/auth.server-DFpyxRDd.mjs +5374 -0
  82. package/.output/server/_ssr/bundleActivity-M5gzBFNg.mjs +18 -0
  83. package/.output/server/_ssr/config-WVX4IxSR.mjs +15 -0
  84. package/.output/server/_ssr/config.server-DskXCAyI.mjs +35 -0
  85. package/.output/server/_ssr/console-access-BJfAXknd.mjs +17 -0
  86. package/.output/server/_ssr/console-features-Oz0q20jJ.mjs +61 -0
  87. package/.output/server/_ssr/console-features-api-C9kiKvaV.mjs +43 -0
  88. package/.output/server/_ssr/console-features-rpc-P0GL7Z-R.mjs +19 -0
  89. package/.output/server/_ssr/{createServerFn-B2hcXoPM.mjs → createMiddleware-Cm6Tn0_Y.mjs} +67 -56
  90. package/.output/server/_ssr/{createServerRpc-DB29C_5p.mjs → createServerRpc-RLR4H-Fn.mjs} +2 -2
  91. package/.output/server/_ssr/databaseConfig-C5SkAyUy.mjs +5 -0
  92. package/.output/server/_ssr/{databaseJsonValue-d6I3nAS4.mjs → databaseJsonValue-Csbuzc9Q.mjs} +28 -5
  93. package/.output/server/_ssr/databaseRows-CPphvbag.mjs +73 -0
  94. package/.output/server/_ssr/dialog-BbYDMjdC.mjs +84 -0
  95. package/.output/server/_ssr/{dist-CyzPaI5v.mjs → dist-CbQbBIw-.mjs} +140 -7
  96. package/.output/server/_ssr/{downloadBundle-CI7JUKvC.mjs → downloadBundle-CZysjmNW.mjs} +10 -10
  97. package/.output/server/_ssr/empty-CVLGfxuu.mjs +60 -0
  98. package/.output/server/_ssr/{empty-plugin-adapters-B5QvGpEl.mjs → empty-plugin-adapters-CPtwX8a7.mjs} +1 -1
  99. package/.output/server/_ssr/failureReports-DKDhVsXA.mjs +33 -0
  100. package/.output/server/_ssr/field-asw83X0v.mjs +189 -0
  101. package/.output/server/_ssr/getBundleChildren-Cv9iz1As.mjs +22 -0
  102. package/.output/server/_ssr/{input-group-BrGSjz4S.mjs → input-group-CuYJHosb.mjs} +2 -2
  103. package/.output/server/_ssr/insights-B55FG5fm.mjs +14 -0
  104. package/.output/server/_ssr/insights-CWnHIFUV.mjs +5 -0
  105. package/.output/server/_ssr/insights-CpLpedFZ.mjs +2315 -0
  106. package/.output/server/_ssr/insights-api-sjws23WF.mjs +122 -0
  107. package/.output/server/_ssr/insights-errors-BjnFUyZj.mjs +34 -0
  108. package/.output/server/_ssr/insights-failures-rpc-BvbWvqNf.mjs +36 -0
  109. package/.output/server/_ssr/insights-failures-xaa41Buf.mjs +46 -0
  110. package/.output/server/_ssr/insights-recovery-BWQhiZaF.mjs +28 -0
  111. package/.output/server/_ssr/insights-recovery-rpc-GiYXdkaY.mjs +32 -0
  112. package/.output/server/_ssr/{insights-rpc-DDKmIrpV.mjs → insights-rpc-DP_8Rmz4.mjs} +22 -14
  113. package/.output/server/_ssr/insights-usage-BpBM0U0c.mjs +29 -0
  114. package/.output/server/_ssr/insights-usage-rpc-BiolgB8e.mjs +29 -0
  115. package/.output/server/_ssr/insights-usage-rpc-KStL0zOx.mjs +41 -0
  116. package/.output/server/_ssr/insightsUsage-CzhVjsc8.mjs +56 -0
  117. package/.output/server/_ssr/insights_.distribution-CVrnbP3R.mjs +7 -0
  118. package/.output/server/_ssr/insights_.distribution-D2HaNTAA.mjs +16 -0
  119. package/.output/server/_ssr/{insights_.distribution-cIsU-kHG.mjs → insights_.distribution-DN9pR422.mjs} +50 -22
  120. package/.output/server/_ssr/installations-BHmbbnH8.mjs +5 -0
  121. package/.output/server/_ssr/{installations-C5anhyP0.mjs → installations-BSCmFq8Q.mjs} +279 -367
  122. package/.output/server/_ssr/installations-DD1g__Nc.mjs +69 -0
  123. package/.output/server/_ssr/listReleases-BfUBlCHo.mjs +79 -0
  124. package/.output/server/_ssr/plugins-BaD1slHx.mjs +2086 -0
  125. package/.output/server/_ssr/release-adoption-005tQRpo.mjs +55 -0
  126. package/.output/server/_ssr/release-adoption-rpc-BsstqxUp.mjs +41 -0
  127. package/.output/server/_ssr/releaseAdoption-CtOFkwli.mjs +114 -0
  128. package/.output/server/_ssr/releaseManagement-DFMUnDF5.mjs +11 -0
  129. package/.output/server/_ssr/remote-config-C2Ee8lXO.mjs +5 -0
  130. package/.output/server/_ssr/remote-config-Dv1ccMo-.mjs +17 -0
  131. package/.output/server/_ssr/remote-config-of0lGQH8.mjs +2648 -0
  132. package/.output/server/_ssr/remote-config-rpc-BzX31mUS.mjs +115 -0
  133. package/.output/server/_ssr/rolldown-runtime-rSIU-vHC.mjs +13 -0
  134. package/.output/server/_ssr/{router-BuanSsRI.mjs → router-D8NuoJ_I.mjs} +107 -134
  135. package/.output/server/_ssr/{routes-DY-vqU6R.mjs → routes-DgvnFqDy.mjs} +195 -429
  136. package/.output/server/_ssr/routes-V8sDybGf.mjs +409 -0
  137. package/.output/server/_ssr/runtime.server-De0QVWc9.mjs +104 -0
  138. package/.output/server/_ssr/schema-BiAVyEj2.mjs +361 -0
  139. package/.output/server/_ssr/{select-DD2szs3Y.mjs → select-t3iXRwc9.mjs} +3 -3
  140. package/.output/server/_ssr/server-h4VxnExB.mjs +8325 -0
  141. package/.output/server/_ssr/{createSsrRpc-CdlfejmI.mjs → sidebar-DJcErBMo.mjs} +107 -47
  142. package/.output/server/_ssr/ssr.mjs +1 -1
  143. package/.output/server/_ssr/start-BfFbHKMK.mjs +4 -0
  144. package/.output/server/_ssr/switch-E-btwMGt.mjs +43 -0
  145. package/.output/server/_ssr/{table-CTj6n-4F.mjs → table-37Dd23TN.mjs} +2 -2
  146. package/.output/server/_ssr/tabs-DEFnTm95.mjs +45 -0
  147. package/.output/server/_ssr/updateFailures-H6pnnYK4.mjs +40 -0
  148. package/.output/server/_ssr/{uuidv7-D0QFkPL_.mjs → uuidv7-C88s9jWF.mjs} +2 -2
  149. package/.output/server/_tanstack-start-manifest_v-55AGsehh.mjs +139 -0
  150. package/.output/server/index.mjs +309 -211
  151. package/LICENSE +13 -14
  152. package/README.md +80 -71
  153. package/lib/index.d.mts +23 -11
  154. package/lib/vite-internal.mjs +13 -3
  155. package/lib/vite.d.mts +2 -0
  156. package/package.json +14 -14
  157. package/src/components/AppSidebar.tsx +69 -74
  158. package/src/components/ConsoleFeatureUnavailable.tsx +80 -0
  159. package/src/components/NotFoundPage.tsx +7 -7
  160. package/src/components/features/FeatureSlots.tsx +103 -0
  161. package/src/components/features/api-keys/apiKeysFeatureUi.tsx +15 -0
  162. package/src/components/features/bundles/BundleMetadata.tsx +8 -5
  163. package/src/components/features/bundles/RolloutCohortsDialog.tsx +1 -1
  164. package/src/components/features/channels/ChannelManagementDialog.tsx +8 -6
  165. package/src/components/features/insights/AppUsage.tsx +41 -14
  166. package/src/components/features/insights/BuiltinBundle.tsx +36 -0
  167. package/src/components/features/insights/ComparedBundlesChart.tsx +310 -0
  168. package/src/components/features/insights/EstimatedCount.tsx +18 -0
  169. package/src/components/features/insights/EventDetails.tsx +390 -26
  170. package/src/components/features/insights/EventHistoryCard.tsx +111 -25
  171. package/src/components/features/insights/EventHistoryList.tsx +1 -1
  172. package/src/components/features/insights/FailureReports.tsx +407 -0
  173. package/src/components/features/insights/InsightsControls.tsx +240 -142
  174. package/src/components/features/insights/InsightsErrorAlert.tsx +14 -1
  175. package/src/components/features/insights/InsightsOverview.tsx +601 -403
  176. package/src/components/features/insights/InsightsPageHeader.tsx +19 -14
  177. package/src/components/features/insights/InsightsPeriodSelector.tsx +67 -12
  178. package/src/components/features/insights/InstallationHistoryCard.tsx +65 -10
  179. package/src/components/features/insights/InstallationMatchesCard.tsx +1 -1
  180. package/src/components/features/insights/ReleaseActivity.tsx +308 -0
  181. package/src/components/features/insights/ReportingDevicesSummary.tsx +13 -13
  182. package/src/components/features/insights/RollbackButton.tsx +118 -0
  183. package/src/components/features/insights/UpdateFailures.tsx +382 -0
  184. package/src/components/features/insights/insightsFeatureUi.tsx +35 -0
  185. package/src/components/features/releases/ReleaseEditorSheet.tsx +27 -13
  186. package/src/components/features/remote-config/ConditionDialog.tsx +592 -0
  187. package/src/components/features/remote-config/ConditionsCard.tsx +247 -0
  188. package/src/components/features/remote-config/ParameterDialog.tsx +426 -0
  189. package/src/components/features/remote-config/ParametersCard.tsx +254 -0
  190. package/src/components/features/remote-config/PreviewCard.tsx +284 -0
  191. package/src/components/features/remote-config/PublishDialog.tsx +325 -0
  192. package/src/components/features/remote-config/RemoteConfigPage.tsx +353 -0
  193. package/src/components/features/remote-config/RuleSummary.tsx +21 -0
  194. package/src/components/features/remote-config/ValueInput.tsx +151 -0
  195. package/src/components/features/remote-config/VersionsCard.tsx +384 -0
  196. package/src/components/features/remote-config/remoteConfigFeatureUi.tsx +15 -0
  197. package/src/components/features/remote-config/useDateTimeText.ts +16 -0
  198. package/src/components/ui/sidebar.tsx +22 -29
  199. package/src/index.ts +26 -19
  200. package/src/lib/api-keys-api.ts +0 -28
  201. package/src/lib/api-keys-rpc.ts +27 -38
  202. package/src/lib/api-rpc.ts +125 -288
  203. package/src/lib/api.ts +15 -134
  204. package/src/lib/bundle-activity.ts +24 -4
  205. package/src/lib/console-access.ts +20 -0
  206. package/src/lib/console-features-api.ts +68 -0
  207. package/src/lib/console-features-rpc.ts +13 -0
  208. package/src/lib/console-features.ts +98 -0
  209. package/src/lib/insights-api.ts +56 -2
  210. package/src/lib/insights-errors.ts +64 -0
  211. package/src/lib/insights-failures-rpc.ts +36 -0
  212. package/src/lib/insights-failures.ts +130 -0
  213. package/src/lib/insights-recovery-rpc.ts +13 -17
  214. package/src/lib/insights-recovery.ts +12 -36
  215. package/src/lib/insights-retention.ts +21 -0
  216. package/src/lib/insights-rpc.ts +30 -12
  217. package/src/lib/insights-search.ts +50 -4
  218. package/src/lib/insights-usage-rpc.ts +15 -9
  219. package/src/lib/insights-usage.ts +41 -3
  220. package/src/lib/insights-view.ts +34 -5
  221. package/src/lib/release-adoption-api.ts +214 -0
  222. package/src/lib/release-adoption-rpc.ts +49 -0
  223. package/src/lib/release-adoption.ts +164 -0
  224. package/src/lib/remote-config-api.ts +119 -0
  225. package/src/lib/remote-config-draft.ts +666 -0
  226. package/src/lib/remote-config-rpc.ts +196 -0
  227. package/src/lib/scroll-restoration.ts +21 -0
  228. package/src/lib/server/auth.server.ts +13 -5
  229. package/src/lib/server/bundleActivity.ts +27 -28
  230. package/src/lib/server/config.server.ts +21 -76
  231. package/src/lib/server/console-feature-apis.ts +70 -0
  232. package/src/lib/server/console-runtime.server.ts +82 -38
  233. package/src/lib/server/downloadBundle.ts +14 -15
  234. package/src/lib/server/failureReports.ts +50 -0
  235. package/src/lib/server/getBundleChildren.ts +31 -122
  236. package/src/lib/server/insightsUsage.ts +52 -113
  237. package/src/lib/server/listReleases.ts +109 -44
  238. package/src/lib/server/releaseAdoption.ts +151 -0
  239. package/src/lib/server/releaseReachability.ts +8 -8
  240. package/src/lib/server/remoteConfig.ts +75 -0
  241. package/src/lib/server/runtime.server.ts +120 -31
  242. package/src/lib/server/updateFailures.ts +66 -0
  243. package/src/lib/use-dialog-target.ts +27 -0
  244. package/src/routeTree.gen.ts +44 -44
  245. package/src/router.tsx +3 -2
  246. package/src/routes/-installations-search.ts +32 -8
  247. package/src/routes/-releases-search.ts +76 -29
  248. package/src/routes/__root.tsx +7 -1
  249. package/src/routes/api/bundles/$bundleId/download.ts +2 -5
  250. package/src/routes/api-keys.tsx +5 -2
  251. package/src/routes/index.tsx +210 -152
  252. package/src/routes/insights.tsx +91 -23
  253. package/src/routes/insights_.distribution.tsx +50 -9
  254. package/src/routes/installations.tsx +97 -40
  255. package/src/routes/remote-config.tsx +42 -0
  256. package/src/styles.css +9 -0
  257. package/src/vite-internal.ts +15 -3
  258. package/src/vite.ts +2 -0
  259. package/.output/public/assets/HashValueDisplay-BpTc3Oyg.js +0 -1
  260. package/.output/public/assets/InsightsPageHeader-DC2eEst8.js +0 -1
  261. package/.output/public/assets/api-CdUyUqzR.js +0 -42
  262. package/.output/public/assets/api-keys-64PM9PwW.js +0 -1
  263. package/.output/public/assets/api-keys-api-BeaJnvY5.js +0 -1
  264. package/.output/public/assets/arrow-left-04Rh8Zgp.js +0 -1
  265. package/.output/public/assets/card-CYHs5FZv.js +0 -1
  266. package/.output/public/assets/chart-no-axes-combined-DwyMsVFW.js +0 -1
  267. package/.output/public/assets/createServerFn-DU71xucx.js +0 -3
  268. package/.output/public/assets/dialog-IVMkBRCq.js +0 -1
  269. package/.output/public/assets/dist-BR4GzeEu.js +0 -1
  270. package/.output/public/assets/field-B3CYDpjg.js +0 -1
  271. package/.output/public/assets/index-Cb_D1D6N.js +0 -10
  272. package/.output/public/assets/info-C3y9HNoU.js +0 -1
  273. package/.output/public/assets/input-group-nLZylhWF.js +0 -1
  274. package/.output/public/assets/insights-Bm9v8uO3.js +0 -2
  275. package/.output/public/assets/insights-DS3iO7Up.js +0 -1
  276. package/.output/public/assets/insights-search-Byj3g3Mp.js +0 -1
  277. package/.output/public/assets/insights-usage-rpc-BaGR3lgq.js +0 -1
  278. package/.output/public/assets/insights_.distribution-B1i6cjlQ.js +0 -1
  279. package/.output/public/assets/insights_.distribution-C1Wf27eB.js +0 -2
  280. package/.output/public/assets/installations-CkFW4fV9.js +0 -2
  281. package/.output/public/assets/installations-DxTaIcHD.js +0 -1
  282. package/.output/public/assets/lazyRouteComponent-BapzjYnb.js +0 -1
  283. package/.output/public/assets/list-Dqt53fWZ.js +0 -1
  284. package/.output/public/assets/loader-circle-CUKfUqow.js +0 -1
  285. package/.output/public/assets/preload-helper-ClBMtM1g.js +0 -1
  286. package/.output/public/assets/refresh-cw-CNE_2PnD.js +0 -1
  287. package/.output/public/assets/routes-Cgtvspjg.js +0 -2
  288. package/.output/public/assets/routes-O2r2UUN8.js +0 -1
  289. package/.output/public/assets/shield-check-BFcJ46kz.js +0 -1
  290. package/.output/public/assets/signing-BgspC-xP.js +0 -1
  291. package/.output/public/assets/styles-DnrWuBwd.css +0 -2
  292. package/.output/public/assets/table-BuWQgxJJ.js +0 -1
  293. package/.output/public/assets/useMutation-CSV9NCUl.js +0 -1
  294. package/.output/public/assets/useOpenInteractionType-D5kduCTD.js +0 -1
  295. package/.output/public/assets/valueToPercent-BAtcbSLk.js +0 -1
  296. package/.output/server/__23tanstack-start-server-fn-resolver-DBRojHaG.mjs +0 -150
  297. package/.output/server/_ssr/InsightsPageHeader-mtxVuZKK.mjs +0 -64
  298. package/.output/server/_ssr/api-BfCgYlj5.mjs +0 -332
  299. package/.output/server/_ssr/api-keys-api-C3oeq01R.mjs +0 -60
  300. package/.output/server/_ssr/api-keys-rpc-CdPFdGOx.mjs +0 -136
  301. package/.output/server/_ssr/api-rpc-B2E1ZIG5.mjs +0 -1399
  302. package/.output/server/_ssr/auth.server-CmicHh0J.mjs +0 -47
  303. package/.output/server/_ssr/bundle-signing-rpc-Di7-I6fE.mjs +0 -16
  304. package/.output/server/_ssr/bundle-signing.server-Uqt1OF49.mjs +0 -12
  305. package/.output/server/_ssr/bundleActivity-pBrPSG01.mjs +0 -28
  306. package/.output/server/_ssr/card-Bemj0dpY.mjs +0 -108
  307. package/.output/server/_ssr/config-Dv8qLDZ0.mjs +0 -13
  308. package/.output/server/_ssr/config.server-B8WsT3s0.mjs +0 -368
  309. package/.output/server/_ssr/databaseRows-5bCRTxm-.mjs +0 -126
  310. package/.output/server/_ssr/deleteBundle-8X-jq7Z7.mjs +0 -66
  311. package/.output/server/_ssr/field-BrQ2u0fT.mjs +0 -74
  312. package/.output/server/_ssr/getBundleChildren-DoL8l_AS.mjs +0 -50
  313. package/.output/server/_ssr/insights-BwQ-wF2a.mjs +0 -10
  314. package/.output/server/_ssr/insights-gr1I_dJU.mjs +0 -938
  315. package/.output/server/_ssr/insights-recovery-Cv6RSyeR.mjs +0 -21
  316. package/.output/server/_ssr/insights-recovery-rpc-DOzxfYfv.mjs +0 -37
  317. package/.output/server/_ssr/insights-search-1czJMZgk.mjs +0 -21
  318. package/.output/server/_ssr/insights-usage-rpc-4ImOq_0p.mjs +0 -184
  319. package/.output/server/_ssr/insights-usage-rpc-BUruODjE.mjs +0 -24
  320. package/.output/server/_ssr/insightsContract-B09K_Px1.mjs +0 -303
  321. package/.output/server/_ssr/insightsHistory-Ci4rYAgl.mjs +0 -41
  322. package/.output/server/_ssr/insightsRecovery-CaghWL2t.mjs +0 -113
  323. package/.output/server/_ssr/insightsUsage-DNIj6jxF.mjs +0 -71
  324. package/.output/server/_ssr/insights_.distribution-VmHuikRE.mjs +0 -10
  325. package/.output/server/_ssr/installations-HXMF_kKf.mjs +0 -29
  326. package/.output/server/_ssr/routes-Dru3IRj0.mjs +0 -37
  327. package/.output/server/_ssr/runtime.server-CsiKFp_Z.mjs +0 -436
  328. package/.output/server/_ssr/server-DJm72Kj-.mjs +0 -7468
  329. package/.output/server/_ssr/signing-H8Lg4lPe.mjs +0 -133
  330. package/.output/server/_ssr/start-DpViQGnt.mjs +0 -4
  331. package/.output/server/_tanstack-start-manifest_v-DsFcTLw_.mjs +0 -125
  332. package/src/components/features/bundles/BundleActivityChart.tsx +0 -97
  333. package/src/components/features/bundles/BundleInsightsSummary.tsx +0 -126
  334. package/src/components/features/signing/BundleSigningPage.tsx +0 -139
  335. package/src/lib/bundle-signing-api.ts +0 -14
  336. package/src/lib/bundle-signing-rpc.ts +0 -16
  337. package/src/lib/server/bundle-signing.server.ts +0 -23
  338. package/src/lib/server/deleteBundle.ts +0 -145
  339. package/src/lib/server/insightsHistory.ts +0 -52
  340. package/src/lib/server/insightsRecovery.ts +0 -187
  341. package/src/routes/signing.tsx +0 -37
@@ -0,0 +1,18 @@
1
+ //#region node_modules/.nitro/vite/services/ssr/assets/bundleActivity-M5gzBFNg.js
2
+ async function getBundleActivity(model, inputs) {
3
+ if (inputs.length === 0) return {};
4
+ const releases = inputs.map((input) => ({
5
+ releaseId: input.releaseId,
6
+ platform: input.platform,
7
+ channel: input.channel
8
+ }));
9
+ const activity = await model.getReleaseActivity({ releases });
10
+ return Object.fromEntries(activity.data.flatMap((item) => item.release === void 0 ? [] : [[item.release.releaseId, {
11
+ downloads: item.metrics.downloads,
12
+ launched: item.metrics.applies,
13
+ failedLaunches: item.metrics.failedLaunches,
14
+ measuredAtMs: activity.measuredAtMs
15
+ }]]));
16
+ }
17
+ //#endregion
18
+ export { getBundleActivity };
@@ -0,0 +1,15 @@
1
+ import { loadConfig } from "@hot-updater/cli-tools";
2
+ //#region node_modules/.nitro/vite/services/ssr/assets/config-WVX4IxSR.js
3
+ var config_default = async () => {
4
+ const config = await loadConfig(null);
5
+ if (config.database === void 0) throw new Error("Set database in hot-updater.config.ts: the database your server runs on, such as d1Database(...), or standaloneRepository({ baseUrl }) to reach a self-hosted server through its admin API.");
6
+ if (config.storage === void 0) throw new Error("Set storage in hot-updater.config.ts: where your server stores bundles, which the console reads, such as r2Storage(...).");
7
+ return {
8
+ database: config.database,
9
+ storage: config.storage,
10
+ plugins: config.plugins,
11
+ console: { gitUrl: config.console.gitUrl }
12
+ };
13
+ };
14
+ //#endregion
15
+ export { config_default as default };
@@ -0,0 +1,35 @@
1
+ import { r as getRequest } from "./server-h4VxnExB.mjs";
2
+ import { requireConsoleAccess, t as resolveConsoleConfig } from "./auth.server-DFpyxRDd.mjs";
3
+ //#region node_modules/.nitro/vite/services/ssr/assets/config.server-DskXCAyI.js
4
+ var configPromise = null;
5
+ var core = null;
6
+ var runtime = null;
7
+ var loadCachedConfig = async (request) => {
8
+ if (!configPromise) configPromise = resolveConsoleConfig(request).catch((error) => {
9
+ configPromise = null;
10
+ throw error;
11
+ });
12
+ return configPromise;
13
+ };
14
+ var prepareConfig = async (request = getRequest()) => {
15
+ try {
16
+ await requireConsoleAccess(request);
17
+ const config = await loadCachedConfig(request);
18
+ core ??= config.core;
19
+ if (!runtime) {
20
+ const { createConsoleRuntime } = await import("./runtime.server-De0QVWc9.mjs");
21
+ runtime = createConsoleRuntime(config);
22
+ }
23
+ return {
24
+ config,
25
+ core,
26
+ runtime,
27
+ storage: config.storage
28
+ };
29
+ } catch (error) {
30
+ if (!(error instanceof Response && (error.status === 401 || error.status === 403))) console.error("Error during configuration initialization:", error);
31
+ throw error;
32
+ }
33
+ };
34
+ //#endregion
35
+ export { prepareConfig };
@@ -0,0 +1,17 @@
1
+ import { c as createMiddleware } from "./createMiddleware-Cm6Tn0_Y.mjs";
2
+ //#region node_modules/.nitro/vite/services/ssr/assets/console-access-BJfAXknd.js
3
+ /**
4
+ * Refuses a caller the console does not authorize before a server function
5
+ * reads its input. TanStack Start runs a function's middleware before the
6
+ * function's own validator, so an anonymous or unlisted caller gets the access
7
+ * check's 401 or 403, never an input error, whatever it sends. Every server
8
+ * function except the sign-in reads in `auth-rpc.ts` uses it, and
9
+ * `console-access.spec.ts` checks that.
10
+ */
11
+ var consoleAccess = createMiddleware({ type: "function" }).server(async ({ next }) => {
12
+ const [{ getRequest }, { requireConsoleAccess }] = await Promise.all([import("./server-h4VxnExB.mjs").then((n) => n.t), import("./auth.server-DFpyxRDd.mjs")]);
13
+ await requireConsoleAccess(getRequest());
14
+ return next();
15
+ });
16
+ //#endregion
17
+ export { consoleAccess as t };
@@ -0,0 +1,61 @@
1
+ //#region node_modules/.nitro/vite/services/ssr/assets/console-features-Oz0q20jJ.js
2
+ /**
3
+ * The console's features and the server plugin each one needs. The console
4
+ * serves a feature only when its config lists the plugin, as the server runs
5
+ * it, and against a self-hosted server (`standaloneRepository`) only the
6
+ * features its admin API serves (`remote`); the rest read the database.
7
+ * Navigation, route guards, and server functions all read this registry. Its
8
+ * other halves, keyed by the same features, hold what serves each feature on
9
+ * the server (`server/console-feature-apis.ts`) and what each adds to pages
10
+ * (`components/features/FeatureSlots.tsx`). Their order is the sidebar's,
11
+ * below Bundles.
12
+ */
13
+ var consoleFeatures = {
14
+ insights: {
15
+ plugin: "insights",
16
+ label: "Insights",
17
+ remote: true
18
+ },
19
+ insightsAnalytics: {
20
+ plugin: "insights",
21
+ label: "Insights",
22
+ remote: false
23
+ },
24
+ remoteConfig: {
25
+ plugin: "remoteConfig",
26
+ label: "Remote Config",
27
+ remote: true
28
+ },
29
+ apiKeys: {
30
+ plugin: "apiKeys",
31
+ label: "API keys",
32
+ remote: false
33
+ }
34
+ };
35
+ var featureIds = Object.keys(consoleFeatures);
36
+ /** The features on for the plugins the console's config lists, from where the console reads them. */
37
+ var resolveConsoleFeatures = (plugins, { remote }) => {
38
+ const installed = new Set(plugins);
39
+ return Object.fromEntries(featureIds.map((feature) => {
40
+ const { plugin, remote: servedRemotely } = consoleFeatures[feature];
41
+ return [feature, installed.has(plugin) && (servedRemotely || !remote)];
42
+ }));
43
+ };
44
+ /** Why a feature is off: its plugin is missing, or it reads a database the console does not open. */
45
+ var unavailableReason = (feature, { remote }) => remote && !consoleFeatures[feature].remote ? "remote" : "plugin";
46
+ /**
47
+ * A server function refused a feature the console does not serve: the
48
+ * features' 404. The client recognizes it by `name`, which survives
49
+ * serialization where the class does not.
50
+ */
51
+ var ConsoleFeatureUnavailableError = class extends Error {
52
+ name = "ConsoleFeatureUnavailableError";
53
+ status = 404;
54
+ constructor(feature, { remote }) {
55
+ super(unavailableReason(feature, { remote }) === "remote" ? "The console reads this from the database, and it reaches a self-hosted server through its admin API instead." : `The server runs without the ${consoleFeatures[feature].plugin}() plugin.`);
56
+ this.feature = feature;
57
+ }
58
+ };
59
+ var isConsoleFeatureUnavailableError = (error) => error instanceof Error && error.name === "ConsoleFeatureUnavailableError" && featureIds.includes(Reflect.get(error, "feature"));
60
+ //#endregion
61
+ export { unavailableReason as a, resolveConsoleFeatures as i, consoleFeatures as n, isConsoleFeatureUnavailableError as r, ConsoleFeatureUnavailableError as t };
@@ -0,0 +1,43 @@
1
+ import { u as createServerFn } from "./createMiddleware-Cm6Tn0_Y.mjs";
2
+ import { t as consoleAccess } from "./console-access-BJfAXknd.mjs";
3
+ import { A as createSsrRpc } from "./sidebar-DJcErBMo.mjs";
4
+ import { i as useQuery, r as queryOptions } from "../_libs/tanstack__react-query.mjs";
5
+ import { n as consoleFeatures } from "./console-features-Oz0q20jJ.mjs";
6
+ import { _ as notFound } from "../_libs/@tanstack/react-router+[...].mjs";
7
+ //#region node_modules/.nitro/vite/services/ssr/assets/console-features-api-C9kiKvaV.js
8
+ /** The features this console serves, for navigation and route guards. */
9
+ var getConsoleFeaturesRpc = createServerFn({ method: "GET" }).middleware([consoleAccess]).handler(createSsrRpc("82ec3500e57f9e81dac6d3f3a7bd9e34915da3121429beec87b7ad153dc6eafe"));
10
+ var consoleFeaturesQueryKey = ["console", "features"];
11
+ var consoleFeaturesQueryOptions = () => queryOptions({
12
+ queryKey: consoleFeaturesQueryKey,
13
+ queryFn: () => getConsoleFeaturesRpc(),
14
+ staleTime: Infinity
15
+ });
16
+ /** The features the console serves; the authorized layout loads them first. */
17
+ var useConsoleFeatures = () => useQuery(consoleFeaturesQueryOptions());
18
+ /** Whether `feature` is on; false until the features load. */
19
+ var useConsoleFeature = (feature) => useConsoleFeatures().data?.features[feature] === true;
20
+ /** The feature in a route's not-found data, when a feature guard threw it. */
21
+ var notFoundFeature = (data) => {
22
+ const feature = typeof data === "object" && data !== null ? Reflect.get(data, "feature") : void 0;
23
+ return typeof feature === "string" && Object.hasOwn(consoleFeatures, feature) ? feature : void 0;
24
+ };
25
+ /**
26
+ * A feature route's `beforeLoad`: not found, naming the feature, when the
27
+ * console does not serve it. A failed features read lets the route load: the
28
+ * root layout answers a visitor it does not authorize, and the route's own
29
+ * reads report any other failure. The failure leaves the cache, which a
30
+ * server render sends to the browser: a refused visitor's failure is the 401
31
+ * or 403 Response, which the render cannot serialize.
32
+ */
33
+ var requireConsoleFeature = async (queryClient, feature) => {
34
+ const featureSet = await queryClient.ensureQueryData(consoleFeaturesQueryOptions()).catch(() => {
35
+ queryClient.removeQueries({
36
+ queryKey: consoleFeaturesQueryKey,
37
+ exact: true
38
+ });
39
+ });
40
+ if (featureSet !== void 0 && !featureSet.features[feature]) throw notFound({ data: { feature } });
41
+ };
42
+ //#endregion
43
+ export { useConsoleFeatures as a, useConsoleFeature as i, notFoundFeature as n, requireConsoleFeature as r, consoleFeaturesQueryOptions as t };
@@ -0,0 +1,19 @@
1
+ import { u as createServerFn } from "./createMiddleware-Cm6Tn0_Y.mjs";
2
+ import { t as consoleAccess } from "./console-access-BJfAXknd.mjs";
3
+ import { t as createServerRpc } from "./createServerRpc-RLR4H-Fn.mjs";
4
+ //#region node_modules/.nitro/vite/services/ssr/assets/console-features-rpc-P0GL7Z-R.js
5
+ var getConsoleFeaturesRpc_createServerFn_handler = createServerRpc({
6
+ id: "82ec3500e57f9e81dac6d3f3a7bd9e34915da3121429beec87b7ad153dc6eafe",
7
+ name: "getConsoleFeaturesRpc",
8
+ filename: "src/lib/console-features-rpc.ts"
9
+ }, (opts) => getConsoleFeaturesRpc.__executeServer(opts));
10
+ var getConsoleFeaturesRpc = createServerFn({ method: "GET" }).middleware([consoleAccess]).handler(getConsoleFeaturesRpc_createServerFn_handler, async () => {
11
+ const { prepareConfig } = await import("./config.server-DskXCAyI.mjs");
12
+ const { runtime } = await prepareConfig();
13
+ return {
14
+ features: await runtime.features(),
15
+ remote: runtime.remote
16
+ };
17
+ });
18
+ //#endregion
19
+ export { getConsoleFeaturesRpc_createServerFn_handler };
@@ -1,15 +1,15 @@
1
1
  import { AsyncLocalStorage } from "node:async_hooks";
2
- //#region node_modules/.nitro/vite/services/ssr/assets/createServerFn-B2hcXoPM.js
2
+ //#region node_modules/.nitro/vite/services/ssr/assets/createMiddleware-Cm6Tn0_Y.js
3
3
  /**
4
4
  * Create a redirect Response understood by TanStack Router.
5
5
  *
6
6
  * Use from route `loader`/`beforeLoad` or server functions to trigger a
7
7
  * navigation. If `throw: true` is set, the redirect is thrown instead of
8
- * returned. When an absolute `href` is supplied and `reloadDocument` is not
9
- * set, a full-document navigation is inferred.
8
+ * returned. External `href` values are classified as full-document
9
+ * navigations when the router resolves the redirect.
10
10
  *
11
11
  * @param opts Options for the redirect. Common fields:
12
- * - `href`: absolute URL for external redirects; infers `reloadDocument`.
12
+ * - `href`: absolute URL for external redirects.
13
13
  * - `statusCode`: HTTP status code to use (defaults to 307).
14
14
  * - `headers`: additional headers to include on the Response.
15
15
  * - Standard navigation options like `to`, `params`, `search`, `replace`,
@@ -19,10 +19,6 @@ import { AsyncLocalStorage } from "node:async_hooks";
19
19
  */
20
20
  function redirect(opts) {
21
21
  opts.statusCode = opts.statusCode || opts.code || 307;
22
- if (!opts._builtLocation && !opts.reloadDocument && typeof opts.href === "string") try {
23
- new URL(opts.href);
24
- opts.reloadDocument = true;
25
- } catch {}
26
22
  const headers = new Headers(opts.headers);
27
23
  if (opts.href && headers.get("Location") === null) headers.set("Location", opts.href);
28
24
  const response = new Response(null, {
@@ -34,16 +30,9 @@ function redirect(opts) {
34
30
  return response;
35
31
  }
36
32
  /** Check whether a value is a TanStack Router redirect Response. */
37
- /** Check whether a value is a TanStack Router redirect Response. */
38
33
  function isRedirect(obj) {
39
34
  return obj instanceof Response && !!obj.options;
40
35
  }
41
- /** True if value is a redirect with a resolved `href` location. */
42
- /** True if value is a redirect with a resolved `href` location. */
43
- function isResolvedRedirect(obj) {
44
- return isRedirect(obj) && !!obj.options.href;
45
- }
46
- /** Parse a serialized redirect object back into a redirect Response. */
47
36
  /** Parse a serialized redirect object back into a redirect Response. */
48
37
  function parseRedirect(obj) {
49
38
  if (obj !== null && typeof obj === "object" && obj.isSerializedRedirect) return redirect(obj);
@@ -55,42 +44,12 @@ var X_TSS_SERIALIZED = "x-tss-serialized";
55
44
  var X_TSS_RAW_RESPONSE = "x-tss-raw";
56
45
  /** Content-Type for multiplexed framed responses (RawStream support) */
57
46
  var TSS_CONTENT_TYPE_FRAMED = "application/x-tss-framed";
58
- /**
59
- * Frame types for binary multiplexing protocol.
60
- */
61
- var FrameType = {
62
- JSON: 0,
63
- CHUNK: 1,
64
- END: 2,
65
- ERROR: 3
66
- };
47
+ /** Largest payload accepted by one framed-protocol record. */
48
+ var MAX_FRAME_PAYLOAD_SIZE = 16 * 1024 * 1024;
49
+ /** Largest number of raw streams accepted in one framed response. */
50
+ var MAX_FRAMED_STREAMS = 1024;
67
51
  /** Full Content-Type header value with version parameter */
68
52
  var TSS_CONTENT_TYPE_FRAMED_VERSIONED = `${TSS_CONTENT_TYPE_FRAMED}; v=1`;
69
- function isSafeKey(key) {
70
- return key !== "__proto__" && key !== "constructor" && key !== "prototype";
71
- }
72
- /**
73
- * Merge target and source into a new null-proto object, filtering dangerous keys.
74
- */
75
- function safeObjectMerge(target, source) {
76
- const result = Object.create(null);
77
- if (target) {
78
- for (const key of Object.keys(target)) if (isSafeKey(key)) result[key] = target[key];
79
- }
80
- if (source && typeof source === "object") {
81
- for (const key of Object.keys(source)) if (isSafeKey(key)) result[key] = source[key];
82
- }
83
- return result;
84
- }
85
- /**
86
- * Create a null-prototype object, optionally copying from source.
87
- */
88
- function createNullProtoObject(source) {
89
- if (!source) return Object.create(null);
90
- const obj = Object.create(null);
91
- for (const key of Object.keys(source)) if (isSafeKey(key)) obj[key] = source[key];
92
- return obj;
93
- }
94
53
  var GLOBAL_STORAGE_KEY = Symbol.for("tanstack-start:start-storage-context");
95
54
  var globalObj = globalThis;
96
55
  if (!globalObj[GLOBAL_STORAGE_KEY]) globalObj[GLOBAL_STORAGE_KEY] = new AsyncLocalStorage();
@@ -104,7 +63,6 @@ function getStartContext(opts) {
104
63
  return context;
105
64
  }
106
65
  var getStartOptions = () => getStartContext().startOptions;
107
- var getStartContextServerOnly = getStartContext;
108
66
  function splitSetCookieString(cookiesString) {
109
67
  if (Array.isArray(cookiesString)) return cookiesString.flatMap((c) => splitSetCookieString(c));
110
68
  if (typeof cookiesString !== "string") return [];
@@ -161,6 +119,32 @@ function mergeHeaders(...headers) {
161
119
  return acc;
162
120
  }, new Headers());
163
121
  }
122
+ function isSafeKey(key) {
123
+ return key !== "__proto__" && key !== "constructor" && key !== "prototype";
124
+ }
125
+ /**
126
+ * Merge target and source into a new null-proto object, filtering dangerous keys.
127
+ */
128
+ function safeObjectMerge(target, source) {
129
+ const result = Object.create(null);
130
+ if (target) {
131
+ for (const key of Object.keys(target)) if (isSafeKey(key)) result[key] = target[key];
132
+ }
133
+ if (source && typeof source === "object") {
134
+ for (const key of Object.keys(source)) if (isSafeKey(key)) result[key] = source[key];
135
+ }
136
+ return result;
137
+ }
138
+ /**
139
+ * Create a null-prototype object, optionally copying from source.
140
+ */
141
+ function createNullProtoObject(source) {
142
+ if (!source) return Object.create(null);
143
+ const obj = Object.create(null);
144
+ for (const key of Object.keys(source)) if (isSafeKey(key)) obj[key] = source[key];
145
+ return obj;
146
+ }
147
+ var getStartContextServerOnly = getStartContext;
164
148
  var createServerFn = (options, __opts) => {
165
149
  const resolvedOptions = __opts || options || {};
166
150
  if (typeof resolvedOptions.method === "undefined") resolvedOptions.method = "GET";
@@ -175,10 +159,10 @@ var createServerFn = (options, __opts) => {
175
159
  options: resolvedOptions,
176
160
  middleware: (middleware) => {
177
161
  const newMiddleware = [...resolvedOptions.middleware || []];
178
- middleware.map((m) => {
179
- if (TSS_SERVER_FUNCTION_FACTORY in m) {
180
- if (m.options.middleware) newMiddleware.push(...m.options.middleware);
181
- } else newMiddleware.push(m);
162
+ middleware.forEach((item) => {
163
+ if (TSS_SERVER_FUNCTION_FACTORY in item) {
164
+ if (item.options.middleware) newMiddleware.push(...item.options.middleware);
165
+ } else newMiddleware.push(item);
182
166
  });
183
167
  const res = createServerFn(void 0, {
184
168
  ...resolvedOptions,
@@ -220,7 +204,8 @@ var createServerFn = (options, __opts) => {
220
204
  const serverContextAfterGlobalMiddlewares = startContext.contextAfterGlobalMiddlewares;
221
205
  return await executeMiddleware(resolvedMiddleware, "server", {
222
206
  ...extractedFn,
223
- ...opts,
207
+ data: opts.data,
208
+ method: opts.method ?? resolvedOptions.method,
224
209
  serverFnMeta: extractedFn.serverFnMeta,
225
210
  context: safeObjectMerge(opts.context, serverContextAfterGlobalMiddlewares),
226
211
  request: startContext.request
@@ -355,5 +340,31 @@ function serverFnBaseToMiddleware(options) {
355
340
  }
356
341
  };
357
342
  }
343
+ var createMiddleware = (options, __opts) => {
344
+ const resolvedOptions = {
345
+ type: "request",
346
+ ...__opts || options
347
+ };
348
+ const setValidator = (validator) => {
349
+ return createMiddleware({}, Object.assign(resolvedOptions, {
350
+ validator,
351
+ inputValidator: validator
352
+ }));
353
+ };
354
+ return {
355
+ options: resolvedOptions,
356
+ middleware: (middleware) => {
357
+ return createMiddleware({}, Object.assign(resolvedOptions, { middleware }));
358
+ },
359
+ validator: setValidator,
360
+ inputValidator: setValidator,
361
+ client: (client) => {
362
+ return createMiddleware({}, Object.assign(resolvedOptions, { client }));
363
+ },
364
+ server: (server) => {
365
+ return createMiddleware({}, Object.assign(resolvedOptions, { server }));
366
+ }
367
+ };
368
+ };
358
369
  //#endregion
359
- export { X_TSS_RAW_RESPONSE as a, createServerFn as c, getStartOptions as d, isRedirect as f, safeObjectMerge as g, runWithStartContext as h, TSS_SERVER_FUNCTION as i, flattenMiddlewares as l, mergeHeaders as m, TSS_CONTENT_TYPE_FRAMED_VERSIONED as n, X_TSS_SERIALIZED as o, isResolvedRedirect as p, TSS_FORMDATA_CONTEXT as r, createNullProtoObject as s, FrameType as t, getStartContext as u };
370
+ export { safeObjectMerge as _, TSS_SERVER_FUNCTION as a, createMiddleware as c, flattenMiddlewares as d, getStartContext as f, runWithStartContext as g, mergeHeaders as h, TSS_FORMDATA_CONTEXT as i, createNullProtoObject as l, isRedirect as m, MAX_FRAME_PAYLOAD_SIZE as n, X_TSS_RAW_RESPONSE as o, getStartOptions as p, TSS_CONTENT_TYPE_FRAMED_VERSIONED as r, X_TSS_SERIALIZED as s, MAX_FRAMED_STREAMS as t, createServerFn as u };
@@ -1,5 +1,5 @@
1
- import { i as TSS_SERVER_FUNCTION } from "./createServerFn-B2hcXoPM.mjs";
2
- //#region node_modules/.nitro/vite/services/ssr/assets/createServerRpc-DB29C_5p.js
1
+ import { a as TSS_SERVER_FUNCTION } from "./createMiddleware-Cm6Tn0_Y.mjs";
2
+ //#region node_modules/.nitro/vite/services/ssr/assets/createServerRpc-RLR4H-Fn.js
3
3
  var createServerRpc = (serverFnMeta, splitImportFn) => {
4
4
  const url = "/_serverFn/" + serverFnMeta.id;
5
5
  return Object.assign(splitImportFn, {
@@ -0,0 +1,5 @@
1
+ //#region node_modules/.nitro/vite/services/ssr/assets/databaseConfig-C5SkAyUy.js
2
+ /** Whether a configured database is a self-hosted server's. */
3
+ var isRemoteDatabase = (value) => typeof value === "object" && value !== null && "core" in value && "fetchAdmin" in value;
4
+ //#endregion
5
+ export { isRemoteDatabase as t };
@@ -1,9 +1,26 @@
1
- //#region node_modules/.nitro/vite/services/ssr/assets/databaseJsonValue-d6I3nAS4.js
2
- var DatabasePluginInputError = class extends Error {
1
+ //#region node_modules/.nitro/vite/services/ssr/assets/databaseJsonValue-Csbuzc9Q.js
2
+ /** A bundle an operation names is not stored. */
3
+ var DatabaseBundleNotFoundError = class extends Error {
4
+ bundleId;
5
+ name = "DatabaseBundleNotFoundError";
6
+ constructor(bundleId) {
7
+ super(`Bundle "${bundleId}" was not found.`);
8
+ this.bundleId = bundleId;
9
+ }
10
+ };
11
+ /** A row a delete names is still referenced, such as a bundle a release uses. */
12
+ var DatabaseRowReferencedError = class extends Error {
13
+ name = "DatabaseRowReferencedError";
14
+ constructor() {
15
+ super("The database row is still referenced.");
16
+ }
17
+ };
18
+ /** Input a database operation refuses before touching storage. */
19
+ var DatabaseAdapterInputError = class extends Error {
3
20
  code;
4
- name = "DatabasePluginInputError";
21
+ name = "DatabaseAdapterInputError";
5
22
  constructor(code) {
6
- super(`Invalid database plugin input: ${code}`);
23
+ super(`Invalid database adapter input: ${code}`);
7
24
  this.code = code;
8
25
  }
9
26
  };
@@ -39,7 +56,13 @@ var isDatabaseJsonValue = (value) => {
39
56
  };
40
57
  return validate(value);
41
58
  };
59
+ /**
60
+ * Whether `value` is a plain object of JSON values a store keeps as they
61
+ * are: no cycles, accessors, non-finite numbers, or class instances. A
62
+ * plugin checks a `json` field's value with it before it writes, as
63
+ * Insights does for an event's metadata.
64
+ */
42
65
  var isDatabaseJsonObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value) && isDatabaseJsonValue(value);
43
66
  var isDatabaseMetadataObject = (value) => isDatabaseJsonObject(value) && (!Object.hasOwn(value, "app_version") || typeof value["app_version"] === "string");
44
67
  //#endregion
45
- export { isDatabaseMetadataObject as n, DatabasePluginInputError as t };
68
+ export { isDatabaseMetadataObject as a, isDatabaseJsonObject as i, DatabaseBundleNotFoundError as n, DatabaseRowReferencedError as r, DatabaseAdapterInputError as t };
@@ -0,0 +1,73 @@
1
+ import { a as isDatabaseMetadataObject, t as DatabaseAdapterInputError } from "./databaseJsonValue-Csbuzc9Q.mjs";
2
+ import { f as getBundlePatches, m as getManifestStorageUri, p as getManifestFileHash, u as getAssetBaseStorageUri } from "./dist-CbQbBIw-.mjs";
3
+ //#region node_modules/.nitro/vite/services/ssr/assets/databaseRows-CPphvbag.js
4
+ var bundleMetadataToRow = (metadata) => {
5
+ if (metadata === void 0) return {};
6
+ if (!isDatabaseMetadataObject(metadata)) throw new DatabaseAdapterInputError("invalid-data");
7
+ return metadata;
8
+ };
9
+ var releaseRowToRelease = (row) => ({
10
+ id: row.id,
11
+ revision: row.revision,
12
+ channelId: row.channel_id,
13
+ platform: row.platform,
14
+ kind: row.kind,
15
+ bundleId: row.bundle_id,
16
+ strategy: row.strategy,
17
+ targetAppVersion: row.target_app_version,
18
+ fingerprintHash: row.fingerprint_hash,
19
+ enabled: row.enabled,
20
+ shouldForceUpdate: row.should_force_update,
21
+ message: row.message,
22
+ rolloutCohortCount: row.rollout_cohort_count,
23
+ targetCohorts: row.target_cohorts,
24
+ operation: row.operation,
25
+ sourceReleaseId: row.source_release_id,
26
+ createdAtMs: row.created_at_ms,
27
+ updatedAtMs: row.updated_at_ms
28
+ });
29
+ var bundleToRow = (bundle) => {
30
+ const metadata = bundleMetadataToRow(bundle.metadata);
31
+ return {
32
+ id: bundle.id,
33
+ platform: bundle.platform,
34
+ git_commit_hash: bundle.gitCommitHash,
35
+ metadata,
36
+ manifest_storage_uri: getManifestStorageUri(bundle),
37
+ manifest_file_hash: getManifestFileHash(bundle),
38
+ asset_base_storage_uri: getAssetBaseStorageUri(bundle)
39
+ };
40
+ };
41
+ var bundleToPatchRows = (bundle) => getBundlePatches(bundle).map((patch, orderIndex) => ({
42
+ id: `${bundle.id}:${patch.baseBundleId}`,
43
+ bundle_id: bundle.id,
44
+ base_bundle_id: patch.baseBundleId,
45
+ base_file_hash: patch.baseFileHash,
46
+ patch_file_hash: patch.patchFileHash,
47
+ patch_storage_uri: patch.patchStorageUri,
48
+ byte_size: patch.byteSize,
49
+ order_index: orderIndex
50
+ }));
51
+ var comparePatchRows = (left, right) => left.order_index - right.order_index || left.id.localeCompare(right.id);
52
+ var patchRowToArtifact = (row) => ({
53
+ baseBundleId: row.base_bundle_id,
54
+ baseFileHash: row.base_file_hash,
55
+ byteSize: row.byte_size,
56
+ patchFileHash: row.patch_file_hash,
57
+ patchStorageUri: row.patch_storage_uri
58
+ });
59
+ var rowToBundle = (row, patchRows = []) => {
60
+ const patches = patchRows.slice().sort(comparePatchRows).map(patchRowToArtifact);
61
+ return {
62
+ id: row.id,
63
+ platform: row.platform,
64
+ gitCommitHash: row.git_commit_hash,
65
+ metadata: row.metadata,
66
+ manifestStorageUri: row.manifest_storage_uri,
67
+ manifestFileHash: row.manifest_file_hash,
68
+ assetBaseStorageUri: row.asset_base_storage_uri,
69
+ patches
70
+ };
71
+ };
72
+ //#endregion
73
+ export { rowToBundle as i, bundleToRow as n, releaseRowToRelease as r, bundleToPatchRows as t };
@@ -0,0 +1,84 @@
1
+ import "../_runtime.mjs";
2
+ import { $ as DialogPopup, Q as DialogPortal$1, X as DialogTitle$1, Y as DialogTrigger$1, Z as DialogRoot, _t as require_react, et as DialogDescription$1, gt as require_jsx_runtime, nt as DialogBackdrop, tt as DialogClose } from "../_libs/@base-ui/react+[...].mjs";
3
+ import { t as X } from "../_libs/lucide-react.mjs";
4
+ import { k as cn, t as Button$1 } from "./sidebar-DJcErBMo.mjs";
5
+ require_react();
6
+ var import_jsx_runtime = require_jsx_runtime();
7
+ function Dialog$1({ ...props }) {
8
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DialogRoot, {
9
+ "data-slot": "dialog",
10
+ ...props
11
+ });
12
+ }
13
+ function DialogTrigger({ ...props }) {
14
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DialogTrigger$1, {
15
+ "data-slot": "dialog-trigger",
16
+ ...props
17
+ });
18
+ }
19
+ function DialogPortal({ ...props }) {
20
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DialogPortal$1, {
21
+ "data-slot": "dialog-portal",
22
+ ...props
23
+ });
24
+ }
25
+ function DialogOverlay({ className, ...props }) {
26
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DialogBackdrop, {
27
+ "data-slot": "dialog-overlay",
28
+ className: cn("fixed inset-0 isolate z-50 bg-black/80 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0", className),
29
+ ...props
30
+ });
31
+ }
32
+ function DialogContent({ className, children, showCloseButton = true, ...props }) {
33
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(DialogPortal, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(DialogOverlay, {}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(DialogPopup, {
34
+ "data-slot": "dialog-content",
35
+ className: cn("fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-background p-4 text-xs/relaxed ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", className),
36
+ ...props,
37
+ children: [children, showCloseButton && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(DialogClose, {
38
+ "data-slot": "dialog-close",
39
+ render: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button$1, {
40
+ variant: "ghost",
41
+ className: "absolute top-2 right-2",
42
+ size: "icon-sm"
43
+ }),
44
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(X, {}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
45
+ className: "sr-only",
46
+ children: "Close"
47
+ })]
48
+ })]
49
+ })] });
50
+ }
51
+ function DialogHeader({ className, ...props }) {
52
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
53
+ "data-slot": "dialog-header",
54
+ className: cn("flex flex-col gap-1", className),
55
+ ...props
56
+ });
57
+ }
58
+ function DialogFooter({ className, showCloseButton = false, children, ...props }) {
59
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
60
+ "data-slot": "dialog-footer",
61
+ className: cn("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", className),
62
+ ...props,
63
+ children: [children, showCloseButton && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DialogClose, {
64
+ render: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button$1, { variant: "outline" }),
65
+ children: "Close"
66
+ })]
67
+ });
68
+ }
69
+ function DialogTitle({ className, ...props }) {
70
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DialogTitle$1, {
71
+ "data-slot": "dialog-title",
72
+ className: cn("text-sm font-medium", className),
73
+ ...props
74
+ });
75
+ }
76
+ function DialogDescription({ className, ...props }) {
77
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DialogDescription$1, {
78
+ "data-slot": "dialog-description",
79
+ className: cn("text-xs/relaxed text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground", className),
80
+ ...props
81
+ });
82
+ }
83
+ //#endregion
84
+ export { DialogHeader as a, DialogFooter as i, DialogContent as n, DialogTitle as o, DialogDescription as r, DialogTrigger as s, Dialog$1 as t };