@hot-updater/console 1.0.0-rc.4 → 1.0.0-rc.41

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 (330) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/assets/ConsoleFeatureUnavailable-DRzeMGRM.js +1 -0
  3. package/.output/public/assets/EventDetails-SB5ygJzS.js +1 -0
  4. package/.output/public/assets/HashValueDisplay-BFX_kY3-.js +1 -0
  5. package/.output/public/assets/InsightsInfo-btYppp0B.js +1 -0
  6. package/.output/public/assets/InsightsPageHeader-Ba8psD8t.js +1 -0
  7. package/.output/public/assets/NotFoundPage-CyRG2eca.js +1 -0
  8. package/.output/public/assets/alert-dialog-Bbk_4-WJ.js +1 -0
  9. package/.output/public/assets/api-DUgI6yOI.js +1 -0
  10. package/.output/public/assets/api-keys-CIO9L_wu.js +1 -0
  11. package/.output/public/assets/api-keys-CmkNKOhS.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-BMsI3Bj8.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-BEfQ2_7f.js +11 -0
  22. package/.output/public/assets/input-group-ja_30qaF.js +1 -0
  23. package/.output/public/assets/insights-B0ib9qOE.js +2 -0
  24. package/.output/public/assets/insights-BIMJx-0p.js +1 -0
  25. package/.output/public/assets/insights-CndqcWEj.js +42 -0
  26. package/.output/public/assets/insights-api-B6Ewc-OG.js +1 -0
  27. package/.output/public/assets/insights-usage-rpc-DYEhsCKT.js +1 -0
  28. package/.output/public/assets/insights_.distribution-B26PMy4k.js +2 -0
  29. package/.output/public/assets/insights_.distribution-BBDtqqYS.js +1 -0
  30. package/.output/public/assets/insights_.distribution-DhHmYS8k.js +1 -0
  31. package/.output/public/assets/installations-C3cMuwRx.js +1 -0
  32. package/.output/public/assets/installations-C3yrjwDh.js +2 -0
  33. package/.output/public/assets/installations-D3edlN75.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-0i-gDkeU.js +1 -0
  38. package/.output/public/assets/remote-config-An1ROIOQ.js +6 -0
  39. package/.output/public/assets/remote-config-CoeWgA9i.js +1 -0
  40. package/.output/public/assets/routes-DNoaJIQV.js +2 -0
  41. package/.output/public/assets/routes-cWBDtghZ.js +1 -0
  42. package/.output/public/assets/search-DaTDPW25.js +1 -0
  43. package/.output/public/assets/select-CZMQKT7F.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-D8mxMvCB.css +2 -0
  47. package/.output/public/assets/switch-CU4-fupc.js +1 -0
  48. package/.output/public/assets/table-Gm4qRWwE.js +1 -0
  49. package/.output/public/assets/tabs-R1I8CRjR.js +1 -0
  50. package/.output/public/assets/undo-2-CmrHjwFc.js +1 -0
  51. package/.output/public/assets/useCompositeListItem-BaPeC9ZO.js +1 -0
  52. package/.output/public/assets/valueToPercent-CH8GCHaL.js +1 -0
  53. package/.output/server/__23tanstack-start-server-fn-resolver-DTAqlLRd.mjs +178 -0
  54. package/.output/server/_libs/@base-ui/react+[...].mjs +6450 -2741
  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 +235 -31
  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-BNoVW3Dv.mjs +13 -0
  67. package/.output/server/_ssr/ConsoleFeatureUnavailable-BPFa-cmJ.mjs +58 -0
  68. package/.output/server/_ssr/EventDetails-9CeshfdR.mjs +344 -0
  69. package/.output/server/_ssr/HashValueDisplay-DXZlkcps.mjs +55 -0
  70. package/.output/server/_ssr/InsightsInfo-DLNdJQ0m.mjs +75 -0
  71. package/.output/server/_ssr/InsightsPageHeader-DZGVDgvv.mjs +145 -0
  72. package/.output/server/_ssr/NotFoundPage-mYHHg-2s.mjs +37 -0
  73. package/.output/server/_ssr/{dialog-DUaIgpgd.mjs → alert-dialog-Chkim7vZ.mjs} +6 -83
  74. package/.output/server/_ssr/api-C-Il5-sa.mjs +203 -0
  75. package/.output/server/_ssr/api-keys-01FGqj4d.mjs +5 -0
  76. package/.output/server/_ssr/{api-keys-DJml_XoK.mjs → api-keys-B_f9h7ln.mjs} +48 -10
  77. package/.output/server/_ssr/api-keys-rpc-Cf4YCyFc.mjs +52 -0
  78. package/.output/server/_ssr/api-rpc-DRqwxxT_.mjs +296 -0
  79. package/.output/server/_ssr/{auth-BF8mbAgF.mjs → auth-UP0wXs4i.mjs} +1 -1
  80. package/.output/server/_ssr/{auth-rpc-D_hv52-J.mjs → auth-rpc-D8nFpU9C.mjs} +6 -6
  81. package/.output/server/_ssr/auth.server-COZoXu4i.mjs +5425 -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-Dm2l7w0O.mjs +36 -0
  85. package/.output/server/_ssr/console-access--o9FXikU.mjs +17 -0
  86. package/.output/server/_ssr/console-features-BftSkf3f.mjs +60 -0
  87. package/.output/server/_ssr/console-features-api-CYclUQ4h.mjs +43 -0
  88. package/.output/server/_ssr/console-features-rpc-1WaAkPM_.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-BUuNU-qt.mjs +74 -0
  94. package/.output/server/_ssr/dialog-mfSANqjC.mjs +84 -0
  95. package/.output/server/_ssr/{dist-CyzPaI5v.mjs → dist-wmnTk7w6.mjs} +140 -6
  96. package/.output/server/_ssr/{downloadBundle-B3ert-pY.mjs → downloadBundle-DViuIa9U.mjs} +10 -10
  97. package/.output/server/_ssr/empty-BPayFad3.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-DjZ5t7rH.mjs +189 -0
  101. package/.output/server/_ssr/getBundleChildren-CmjDg6Re.mjs +22 -0
  102. package/.output/server/_ssr/{input-group-Bb8ueylQ.mjs → input-group-Dx-MEkNM.mjs} +3 -52
  103. package/.output/server/_ssr/insights-BopxyJjk.mjs +14 -0
  104. package/.output/server/_ssr/insights-Bvm03d61.mjs +5 -0
  105. package/.output/server/_ssr/insights-CrLAHSDy.mjs +2315 -0
  106. package/.output/server/_ssr/insights-api-Bg8ZV_h_.mjs +122 -0
  107. package/.output/server/_ssr/insights-errors-BjnFUyZj.mjs +34 -0
  108. package/.output/server/_ssr/insights-failures-rpc-tyy5m9Cc.mjs +36 -0
  109. package/.output/server/_ssr/insights-failures-xaa41Buf.mjs +46 -0
  110. package/.output/server/_ssr/{insights-recovery-DSFM-YTL.mjs → insights-recovery-BWQhiZaF.mjs} +9 -2
  111. package/.output/server/_ssr/insights-recovery-rpc-CPJOiJAV.mjs +32 -0
  112. package/.output/server/_ssr/{insights-rpc-DrIQCjpD.mjs → insights-rpc-DoC3hla9.mjs} +22 -14
  113. package/.output/server/_ssr/insights-usage-BpBM0U0c.mjs +29 -0
  114. package/.output/server/_ssr/insights-usage-rpc-CFuTYp3T.mjs +29 -0
  115. package/.output/server/_ssr/insights-usage-rpc-O2ruP4iE.mjs +41 -0
  116. package/.output/server/_ssr/insightsUsage-CzhVjsc8.mjs +56 -0
  117. package/.output/server/_ssr/insights_.distribution-B3BVPD00.mjs +16 -0
  118. package/.output/server/_ssr/insights_.distribution-BMoisxRG.mjs +347 -0
  119. package/.output/server/_ssr/insights_.distribution-BiCcFyrG.mjs +7 -0
  120. package/.output/server/_ssr/{installations-YumqpNpa.mjs → installations-Cx3jIrwl.mjs} +280 -364
  121. package/.output/server/_ssr/installations-DTGPaKXx.mjs +69 -0
  122. package/.output/server/_ssr/installations-osiAuNKr.mjs +5 -0
  123. package/.output/server/_ssr/listReleases-BfUBlCHo.mjs +79 -0
  124. package/.output/server/_ssr/release-adoption-005tQRpo.mjs +55 -0
  125. package/.output/server/_ssr/release-adoption-rpc-BVySDR0L.mjs +41 -0
  126. package/.output/server/_ssr/releaseAdoption-2PJPA09N.mjs +114 -0
  127. package/.output/server/_ssr/releaseManagement-BTCWEY8-.mjs +11 -0
  128. package/.output/server/_ssr/remote-config-CUoAxUMy.mjs +430 -0
  129. package/.output/server/_ssr/remote-config-Cc5P4J-r.mjs +17 -0
  130. package/.output/server/_ssr/remote-config-CjdxcZ9B.mjs +5 -0
  131. package/.output/server/_ssr/remote-config-D2GmbGwI.mjs +2594 -0
  132. package/.output/server/_ssr/remote-config-rpc-kjoZ9PRS.mjs +115 -0
  133. package/.output/server/_ssr/rolldown-runtime-rSIU-vHC.mjs +13 -0
  134. package/.output/server/_ssr/{router-iP95Vqi2.mjs → router-DwGVewL-.mjs} +141 -139
  135. package/.output/server/_ssr/{routes-ivsV2TDu.mjs → routes-C4yxv3JU.mjs} +192 -685
  136. package/.output/server/_ssr/routes-D3_aegLY.mjs +409 -0
  137. package/.output/server/_ssr/runtime.server-BoWf4QhU.mjs +1716 -0
  138. package/.output/server/_ssr/schema-DrOtkRVD.mjs +361 -0
  139. package/.output/server/_ssr/select-DkzM2miy.mjs +107 -0
  140. package/.output/server/_ssr/server-BW0gzB0p.mjs +8325 -0
  141. package/.output/server/_ssr/{createSsrRpc-NHF2PxuK.mjs → sidebar-DPcOijvL.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-BqJ2mAwC.mjs +17 -0
  145. package/.output/server/_ssr/{table-D1mL8fJu.mjs → table-R7RY92q9.mjs} +2 -2
  146. package/.output/server/_ssr/tabs-trDcbRkT.mjs +45 -0
  147. package/.output/server/_ssr/updateFailures-H6pnnYK4.mjs +40 -0
  148. package/.output/server/_ssr/{uuidv7-D0QFkPL_.mjs → uuidv7-ctA_XVZA.mjs} +2 -2
  149. package/.output/server/_tanstack-start-manifest_v-BwInaUTw.mjs +139 -0
  150. package/.output/server/index.mjs +315 -154
  151. package/LICENSE +13 -14
  152. package/README.md +82 -72
  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 +100 -71
  158. package/src/components/ConsoleAccessPage.tsx +5 -1
  159. package/src/components/ConsoleFeatureUnavailable.tsx +80 -0
  160. package/src/components/NotFoundPage.tsx +7 -7
  161. package/src/components/features/FeatureSlots.tsx +103 -0
  162. package/src/components/features/api-keys/apiKeysFeatureUi.tsx +15 -0
  163. package/src/components/features/bundles/BundleMetadata.tsx +8 -5
  164. package/src/components/features/bundles/RolloutCohortsDialog.tsx +1 -1
  165. package/src/components/features/channels/ChannelManagementDialog.tsx +2 -5
  166. package/src/components/features/insights/AppUsage.tsx +366 -0
  167. package/src/components/features/insights/BuiltinBundle.tsx +36 -0
  168. package/src/components/features/insights/ComparedBundlesChart.tsx +310 -0
  169. package/src/components/features/insights/EstimatedCount.tsx +18 -0
  170. package/src/components/features/insights/EventDetails.tsx +400 -39
  171. package/src/components/features/insights/EventHistoryCard.tsx +112 -26
  172. package/src/components/features/insights/EventHistoryList.tsx +2 -2
  173. package/src/components/features/insights/FailureReports.tsx +407 -0
  174. package/src/components/features/insights/InsightsControls.tsx +265 -88
  175. package/src/components/features/insights/InsightsErrorAlert.tsx +14 -1
  176. package/src/components/features/insights/InsightsInfo.tsx +48 -0
  177. package/src/components/features/insights/InsightsOverview.tsx +604 -355
  178. package/src/components/features/insights/InsightsPageHeader.tsx +35 -20
  179. package/src/components/features/insights/InsightsPeriodSelector.tsx +89 -0
  180. package/src/components/features/insights/InstallationHistoryCard.tsx +66 -11
  181. package/src/components/features/insights/InstallationMatchesCard.tsx +1 -1
  182. package/src/components/features/insights/ReleaseActivity.tsx +308 -0
  183. package/src/components/features/insights/ReportingDevicesSummary.tsx +48 -0
  184. package/src/components/features/insights/RollbackButton.tsx +118 -0
  185. package/src/components/features/insights/UpdateFailures.tsx +382 -0
  186. package/src/components/features/insights/insightsFeatureUi.tsx +35 -0
  187. package/src/components/features/releases/ReleaseEditorSheet.tsx +26 -12
  188. package/src/components/features/remote-config/ConditionDialog.tsx +581 -0
  189. package/src/components/features/remote-config/ConditionsCard.tsx +244 -0
  190. package/src/components/features/remote-config/ParameterDialog.tsx +407 -0
  191. package/src/components/features/remote-config/ParametersCard.tsx +244 -0
  192. package/src/components/features/remote-config/PreviewCard.tsx +284 -0
  193. package/src/components/features/remote-config/PublishDialog.tsx +319 -0
  194. package/src/components/features/remote-config/RemoteConfigPage.tsx +353 -0
  195. package/src/components/features/remote-config/RuleSummary.tsx +21 -0
  196. package/src/components/features/remote-config/ValueInput.tsx +148 -0
  197. package/src/components/features/remote-config/VersionsCard.tsx +361 -0
  198. package/src/components/features/remote-config/remoteConfigFeatureUi.tsx +15 -0
  199. package/src/components/features/remote-config/useDateTimeText.ts +16 -0
  200. package/src/components/ui/card.tsx +1 -1
  201. package/src/components/ui/scroll-area.tsx +52 -0
  202. package/src/components/ui/sidebar.tsx +22 -29
  203. package/src/components/ui/tabs.tsx +81 -0
  204. package/src/index.ts +26 -19
  205. package/src/lib/api-keys-api.ts +0 -28
  206. package/src/lib/api-keys-rpc.ts +27 -38
  207. package/src/lib/api-rpc.ts +189 -266
  208. package/src/lib/api.ts +19 -102
  209. package/src/lib/bundle-activity.ts +24 -4
  210. package/src/lib/console-access.ts +20 -0
  211. package/src/lib/console-features-api.ts +68 -0
  212. package/src/lib/console-features-rpc.ts +13 -0
  213. package/src/lib/console-features.ts +97 -0
  214. package/src/lib/insights-api.ts +56 -2
  215. package/src/lib/insights-errors.ts +64 -0
  216. package/src/lib/insights-failures-rpc.ts +36 -0
  217. package/src/lib/insights-failures.ts +130 -0
  218. package/src/lib/insights-recovery-rpc.ts +13 -17
  219. package/src/lib/insights-recovery.ts +10 -27
  220. package/src/lib/insights-retention.ts +21 -0
  221. package/src/lib/insights-rpc.ts +30 -12
  222. package/src/lib/insights-search.ts +93 -0
  223. package/src/lib/insights-usage-rpc.ts +29 -0
  224. package/src/lib/insights-usage.ts +76 -0
  225. package/src/lib/insights-view.ts +34 -5
  226. package/src/lib/release-adoption-api.ts +214 -0
  227. package/src/lib/release-adoption-rpc.ts +49 -0
  228. package/src/lib/release-adoption.ts +164 -0
  229. package/src/lib/remote-config-api.ts +119 -0
  230. package/src/lib/remote-config-draft.ts +652 -0
  231. package/src/lib/remote-config-rpc.ts +196 -0
  232. package/src/lib/scroll-restoration.ts +21 -0
  233. package/src/lib/server/adminInsights.ts +124 -0
  234. package/src/lib/server/auth.server.ts +13 -5
  235. package/src/lib/server/bundleActivity.ts +27 -28
  236. package/src/lib/server/config.server.ts +21 -74
  237. package/src/lib/server/console-feature-apis.ts +70 -0
  238. package/src/lib/server/console-runtime.server.ts +82 -38
  239. package/src/lib/server/downloadBundle.ts +16 -15
  240. package/src/lib/server/failureReports.ts +49 -0
  241. package/src/lib/server/getBundleChildren.ts +31 -122
  242. package/src/lib/server/insightsUsage.ts +63 -0
  243. package/src/lib/server/listReleases.ts +109 -44
  244. package/src/lib/server/releaseAdoption.ts +154 -0
  245. package/src/lib/server/releaseReachability.ts +8 -7
  246. package/src/lib/server/remoteConfig.ts +191 -0
  247. package/src/lib/server/runtime.server.ts +120 -31
  248. package/src/lib/server/updateFailures.ts +65 -0
  249. package/src/routeTree.gen.ts +65 -44
  250. package/src/router.tsx +3 -2
  251. package/src/routes/-installations-search.ts +32 -8
  252. package/src/routes/-releases-search.ts +76 -29
  253. package/src/routes/__root.tsx +10 -4
  254. package/src/routes/api/bundles/$bundleId/download.ts +2 -5
  255. package/src/routes/api-keys.tsx +5 -2
  256. package/src/routes/index.tsx +210 -152
  257. package/src/routes/insights.tsx +133 -18
  258. package/src/routes/insights_.distribution.tsx +422 -0
  259. package/src/routes/installations.tsx +98 -41
  260. package/src/routes/remote-config.tsx +42 -0
  261. package/src/styles.css +9 -0
  262. package/src/vite-internal.ts +15 -3
  263. package/src/vite.ts +2 -0
  264. package/.output/public/assets/InsightsPageHeader-C-Xc2MB9.js +0 -1
  265. package/.output/public/assets/api-keys-C1sgC6ko.js +0 -1
  266. package/.output/public/assets/api-keys-api-LchP65vQ.js +0 -1
  267. package/.output/public/assets/badge-BuMDU0Rf.js +0 -1
  268. package/.output/public/assets/card-BEvx_QKh.js +0 -1
  269. package/.output/public/assets/chart-no-axes-combined-C0G0fQ3J.js +0 -1
  270. package/.output/public/assets/composite-CHTH1Xhh.js +0 -1
  271. package/.output/public/assets/createServerFn-DHc2erub.js +0 -3
  272. package/.output/public/assets/dialog-dyZ1SphZ.js +0 -1
  273. package/.output/public/assets/dist-Bh1gaDfB.js +0 -1
  274. package/.output/public/assets/field-79SVH26s.js +0 -1
  275. package/.output/public/assets/index-BNkxg4jz.js +0 -10
  276. package/.output/public/assets/input-group-BbHfaBzQ.js +0 -1
  277. package/.output/public/assets/insights-D_7uSKfc.js +0 -1
  278. package/.output/public/assets/installations-BzoHWuXw.js +0 -1
  279. package/.output/public/assets/installations-DvjbUqd1.js +0 -2
  280. package/.output/public/assets/lazyRouteComponent-BN0MS05o.js +0 -1
  281. package/.output/public/assets/link-BG06whwB.js +0 -1
  282. package/.output/public/assets/loader-circle-Bbp8LGVC.js +0 -1
  283. package/.output/public/assets/preload-helper-uTix4PVD.js +0 -1
  284. package/.output/public/assets/refresh-cw-DZgiAOMk.js +0 -1
  285. package/.output/public/assets/routes-BFE-oRIT.js +0 -1
  286. package/.output/public/assets/routes-DaPMY31P.js +0 -2
  287. package/.output/public/assets/shield-check-DoIiaaXU.js +0 -1
  288. package/.output/public/assets/signing-BTRhaF5D.js +0 -1
  289. package/.output/public/assets/styles-C7U0oVke.css +0 -2
  290. package/.output/public/assets/table-BBEzJ7Xl.js +0 -1
  291. package/.output/public/assets/useCompositeListItem-BkPDaqyj.js +0 -42
  292. package/.output/server/__23tanstack-start-server-fn-resolver-Dr2ixDgQ.mjs +0 -146
  293. package/.output/server/_ssr/InsightsPageHeader-C5Has8Ry.mjs +0 -60
  294. package/.output/server/_ssr/api-keys-api-CrCZyvnl.mjs +0 -60
  295. package/.output/server/_ssr/api-keys-rpc-CFaNf-q0.mjs +0 -136
  296. package/.output/server/_ssr/api-rpc-B61KL3Eo.mjs +0 -1399
  297. package/.output/server/_ssr/auth.server-DF_shCeq.mjs +0 -47
  298. package/.output/server/_ssr/badge-BgsCP9Dp.mjs +0 -28
  299. package/.output/server/_ssr/bundle-signing-rpc-BBipZnFs.mjs +0 -16
  300. package/.output/server/_ssr/bundle-signing.server-Co_zHdJx.mjs +0 -12
  301. package/.output/server/_ssr/bundleActivity-D3_fIda2.mjs +0 -27
  302. package/.output/server/_ssr/card-DrbxCPtG.mjs +0 -86
  303. package/.output/server/_ssr/chart-qxa-_30a.mjs +0 -162
  304. package/.output/server/_ssr/config-Dv8qLDZ0.mjs +0 -13
  305. package/.output/server/_ssr/config.server-CBr6PDj5.mjs +0 -368
  306. package/.output/server/_ssr/databaseRows-5bCRTxm-.mjs +0 -126
  307. package/.output/server/_ssr/deleteBundle-BAq3JuGr.mjs +0 -66
  308. package/.output/server/_ssr/field-CqNUlqUq.mjs +0 -74
  309. package/.output/server/_ssr/getBundleChildren-COMt16m_.mjs +0 -50
  310. package/.output/server/_ssr/insights-B-DUbksX.mjs +0 -502
  311. package/.output/server/_ssr/insights-recovery-rpc-P71FH66n.mjs +0 -37
  312. package/.output/server/_ssr/insightsContract-fjJDBeEE.mjs +0 -303
  313. package/.output/server/_ssr/insightsRecovery-CqcosG7B.mjs +0 -149
  314. package/.output/server/_ssr/installations-BQrppti7.mjs +0 -29
  315. package/.output/server/_ssr/routes-BDabsmc7.mjs +0 -37
  316. package/.output/server/_ssr/runtime.server-jmZOKIQM.mjs +0 -438
  317. package/.output/server/_ssr/server-p7yrVBfD.mjs +0 -7468
  318. package/.output/server/_ssr/signing-CxCbnFCt.mjs +0 -134
  319. package/.output/server/_ssr/start-DpViQGnt.mjs +0 -4
  320. package/.output/server/_tanstack-start-manifest_v-Cwpu0C9Q.mjs +0 -100
  321. package/src/components/features/bundles/BundleActivityChart.tsx +0 -95
  322. package/src/components/features/bundles/BundleInsightsSummary.tsx +0 -121
  323. package/src/components/features/signing/BundleSigningPage.tsx +0 -139
  324. package/src/lib/bundle-signing-api.ts +0 -14
  325. package/src/lib/bundle-signing-rpc.ts +0 -16
  326. package/src/lib/server/bundle-signing.server.ts +0 -23
  327. package/src/lib/server/deleteBundle.ts +0 -145
  328. package/src/lib/server/insightsHistory.ts +0 -52
  329. package/src/lib/server/insightsRecovery.ts +0 -186
  330. package/src/routes/signing.tsx +0 -37
@@ -1,303 +0,0 @@
1
- import { n as isDatabaseMetadataObject, t as DatabasePluginInputError } from "./databaseJsonValue-d6I3nAS4.mjs";
2
- import { x as isUUIDv7 } from "./dist-CyzPaI5v.mjs";
3
- //#region node_modules/.nitro/vite/services/ssr/assets/insightsContract-fjJDBeEE.js
4
- var databaseFields = {
5
- bundles: [
6
- "id",
7
- "platform",
8
- "file_hash",
9
- "git_commit_hash",
10
- "storage_uri",
11
- "archive_byte_size",
12
- "metadata",
13
- "manifest_storage_uri",
14
- "manifest_file_hash",
15
- "asset_base_storage_uri"
16
- ],
17
- bundle_patches: [
18
- "id",
19
- "bundle_id",
20
- "base_bundle_id",
21
- "base_file_hash",
22
- "patch_file_hash",
23
- "patch_storage_uri",
24
- "byte_size",
25
- "order_index"
26
- ],
27
- releases: [
28
- "id",
29
- "revision",
30
- "scope_key",
31
- "channel_id",
32
- "platform",
33
- "kind",
34
- "bundle_id",
35
- "strategy",
36
- "target_app_version",
37
- "fingerprint_hash",
38
- "enabled",
39
- "should_force_update",
40
- "message",
41
- "rollout_cohort_count",
42
- "target_cohorts",
43
- "operation",
44
- "source_release_id",
45
- "created_at_ms",
46
- "updated_at_ms"
47
- ],
48
- release_catalogs: [
49
- "scope_key",
50
- "catalog_id",
51
- "strategy",
52
- "channel_id",
53
- "channel_key",
54
- "platform",
55
- "fingerprint_hash",
56
- "generation",
57
- "payload",
58
- "catalog_hash",
59
- "byte_size",
60
- "is_tombstone",
61
- "updated_at_ms"
62
- ],
63
- channels: ["id", "name"],
64
- bundle_events: [
65
- "id",
66
- "type",
67
- "install_id",
68
- "user_id",
69
- "username",
70
- "from_bundle_id",
71
- "from_release_id",
72
- "to_release_id",
73
- "to_bundle_id",
74
- "platform",
75
- "app_version",
76
- "channel",
77
- "cohort",
78
- "update_strategy",
79
- "fingerprint_hash",
80
- "sdk_version",
81
- "received_at_ms"
82
- ],
83
- bundle_installations: [
84
- "id",
85
- "install_id",
86
- "user_id",
87
- "username",
88
- "to_bundle_id",
89
- "type",
90
- "platform",
91
- "app_version",
92
- "channel",
93
- "cohort",
94
- "received_at_ms"
95
- ],
96
- api_keys: [
97
- "id",
98
- "hash",
99
- "name",
100
- "prefix",
101
- "role",
102
- "created_at_ms",
103
- "revoked_at_ms"
104
- ]
105
- };
106
- var isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
107
- var isChannelText = (value) => {
108
- if (typeof value !== "string" || value.length === 0) return false;
109
- let codePointCount = 0;
110
- for (const _codePoint of value) {
111
- codePointCount += 1;
112
- if (codePointCount > 255) return false;
113
- }
114
- return true;
115
- };
116
- var isInsightsIdentityText = (value) => typeof value === "string" && value.length > 0 && value.length <= 255;
117
- var isNullableInsightsIdentityText = (value) => value === null || isInsightsIdentityText(value);
118
- var modelValidators = {
119
- bundles: {
120
- id: (value) => typeof value === "string",
121
- platform: (value) => value === "ios" || value === "android",
122
- should_force_update: (value) => typeof value === "boolean",
123
- enabled: (value) => typeof value === "boolean",
124
- file_hash: (value) => typeof value === "string",
125
- git_commit_hash: (value) => value === null || typeof value === "string",
126
- message: (value) => value === null || typeof value === "string",
127
- channel: isChannelText,
128
- channel_id: isChannelText,
129
- storage_uri: (value) => typeof value === "string",
130
- archive_byte_size: (value) => typeof value === "number" && Number.isSafeInteger(value) && value >= 0,
131
- target_app_version: (value) => value === null || typeof value === "string",
132
- fingerprint_hash: (value) => value === null || typeof value === "string",
133
- metadata: isDatabaseMetadataObject,
134
- rollout_cohort_count: (value) => typeof value === "number" && Number.isInteger(value) && value >= 0 && value <= 1e3,
135
- target_cohorts: (value) => value === null || Array.isArray(value) && value.every((item) => typeof item === "string"),
136
- manifest_storage_uri: (value) => value === null || typeof value === "string",
137
- manifest_file_hash: (value) => value === null || typeof value === "string",
138
- asset_base_storage_uri: (value) => value === null || typeof value === "string"
139
- },
140
- bundle_patches: {
141
- id: (value) => typeof value === "string",
142
- bundle_id: (value) => typeof value === "string",
143
- base_bundle_id: (value) => typeof value === "string",
144
- base_file_hash: (value) => typeof value === "string",
145
- patch_file_hash: (value) => typeof value === "string",
146
- patch_storage_uri: (value) => typeof value === "string",
147
- byte_size: (value) => typeof value === "number" && Number.isSafeInteger(value) && value >= 0,
148
- order_index: (value) => typeof value === "number" && Number.isInteger(value) && value >= 0
149
- },
150
- releases: {
151
- id: isUUIDv7,
152
- revision: (value) => typeof value === "number" && Number.isSafeInteger(value) && value >= 1,
153
- scope_key: (value) => typeof value === "string" && value.length > 0,
154
- channel_id: isChannelText,
155
- platform: (value) => value === "ios" || value === "android",
156
- kind: (value) => value === "BUNDLE" || value === "EMBEDDED",
157
- bundle_id: (value) => value === null || typeof value === "string",
158
- strategy: (value) => value === "APP_VERSION" || value === "FINGERPRINT",
159
- target_app_version: (value) => value === null || typeof value === "string",
160
- fingerprint_hash: (value) => value === null || typeof value === "string",
161
- enabled: (value) => typeof value === "boolean",
162
- should_force_update: (value) => typeof value === "boolean",
163
- message: (value) => value === null || typeof value === "string",
164
- rollout_cohort_count: (value) => typeof value === "number" && Number.isInteger(value) && value >= 0 && value <= 1e3,
165
- target_cohorts: (value) => Array.isArray(value) && value.every((item) => typeof item === "string"),
166
- operation: (value) => value === "DEPLOY" || value === "PROMOTE" || value === "ROLLBACK",
167
- source_release_id: (value) => value === null || isUUIDv7(value),
168
- created_at_ms: (value) => typeof value === "number" && Number.isSafeInteger(value) && value >= 0,
169
- updated_at_ms: (value) => typeof value === "number" && Number.isSafeInteger(value) && value >= 0
170
- },
171
- release_catalogs: {
172
- scope_key: (value) => typeof value === "string" && value.length > 0,
173
- catalog_id: (value) => typeof value === "string" && value.length > 0,
174
- strategy: (value) => value === "APP_VERSION" || value === "FINGERPRINT",
175
- channel_id: isChannelText,
176
- channel_key: (value) => typeof value === "string" && value.length > 0,
177
- platform: (value) => value === "ios" || value === "android",
178
- fingerprint_hash: (value) => value === null || typeof value === "string",
179
- generation: (value) => typeof value === "number" && Number.isSafeInteger(value) && value >= 1,
180
- payload: (value) => typeof value === "string",
181
- catalog_hash: (value) => typeof value === "string" && value.length > 0,
182
- byte_size: (value) => typeof value === "number" && Number.isSafeInteger(value) && value >= 0,
183
- is_tombstone: (value) => typeof value === "boolean",
184
- updated_at_ms: (value) => typeof value === "number" && Number.isSafeInteger(value) && value >= 0
185
- },
186
- channels: {
187
- id: isChannelText,
188
- name: isChannelText
189
- },
190
- bundle_events: {
191
- id: (value) => typeof value === "string",
192
- type: (value) => value === "UPDATE_APPLIED" || value === "RECOVERED" || value === "RELEASE_ADOPTED" || value === "UNCHANGED",
193
- install_id: isInsightsIdentityText,
194
- user_id: isNullableInsightsIdentityText,
195
- username: (value) => value === null || typeof value === "string",
196
- from_bundle_id: (value) => value === null || typeof value === "string",
197
- from_release_id: (value) => value === null || typeof value === "string",
198
- to_release_id: (value) => value === null || typeof value === "string",
199
- to_bundle_id: (value) => typeof value === "string",
200
- platform: (value) => value === "ios" || value === "android",
201
- app_version: (value) => typeof value === "string",
202
- channel: (value) => typeof value === "string",
203
- cohort: (value) => typeof value === "string",
204
- update_strategy: (value) => value === null || value === "fingerprint" || value === "appVersion",
205
- fingerprint_hash: (value) => value === null || typeof value === "string",
206
- sdk_version: (value) => value === null || typeof value === "string",
207
- received_at_ms: (value) => typeof value === "number" && Number.isSafeInteger(value) && value >= 0
208
- },
209
- bundle_installations: {
210
- id: (value) => typeof value === "string",
211
- install_id: isInsightsIdentityText,
212
- user_id: isNullableInsightsIdentityText,
213
- username: (value) => value === null || typeof value === "string",
214
- to_bundle_id: (value) => typeof value === "string",
215
- type: (value) => value === "UPDATE_APPLIED" || value === "RECOVERED" || value === "RELEASE_ADOPTED" || value === "UNCHANGED",
216
- platform: (value) => value === "ios" || value === "android",
217
- app_version: (value) => typeof value === "string",
218
- channel: (value) => typeof value === "string",
219
- cohort: (value) => typeof value === "string",
220
- received_at_ms: (value) => typeof value === "number" && Number.isSafeInteger(value) && value >= 0
221
- },
222
- api_keys: {
223
- id: (value) => typeof value === "string",
224
- hash: (value) => typeof value === "string",
225
- name: (value) => typeof value === "string",
226
- prefix: (value) => typeof value === "string",
227
- role: (value) => value === "client",
228
- created_at_ms: (value) => typeof value === "number" && Number.isSafeInteger(value) && value >= 0,
229
- revoked_at_ms: (value) => value === null || typeof value === "number" && Number.isSafeInteger(value) && value >= 0
230
- }
231
- };
232
- var validateField = (model, field) => {
233
- if (!databaseFields[model].includes(field)) throw new DatabasePluginInputError("invalid-field");
234
- };
235
- var validateFields = (model, fields) => {
236
- for (const field of fields) validateField(model, field);
237
- };
238
- var hasValidReleaseInvariants = (data) => {
239
- const kind = data.kind;
240
- const bundleId = data.bundle_id;
241
- const strategy = data.strategy;
242
- const targetAppVersion = data.target_app_version;
243
- const fingerprintHash = data.fingerprint_hash;
244
- return (kind === "BUNDLE" && typeof bundleId === "string" || kind === "EMBEDDED" && bundleId === null) && (strategy === "APP_VERSION" && typeof targetAppVersion === "string" && fingerprintHash === null || strategy === "FINGERPRINT" && targetAppVersion === null && typeof fingerprintHash === "string");
245
- };
246
- var hasValidBundleEventInvariants = (data) => (data.type === "UPDATE_APPLIED" || data.type === "RECOVERED" || data.type === "RELEASE_ADOPTED") && typeof data.from_bundle_id === "string" && (data.update_strategy === "fingerprint" || data.update_strategy === "appVersion") || data.type === "UNCHANGED" && data.from_bundle_id === null && data.update_strategy === null;
247
- var validateCreateData = (model, data) => {
248
- if (!isRecord(data)) throw new DatabasePluginInputError("invalid-data");
249
- validateFields(model, Object.keys(data));
250
- for (const field of databaseFields[model]) {
251
- const validator = modelValidators[model][field];
252
- if (!Object.hasOwn(data, field) || !validator || !validator(Reflect.get(data, field))) throw new DatabasePluginInputError("invalid-data");
253
- }
254
- if (model === "bundles" && data.target_app_version === null && data.fingerprint_hash === null) throw new DatabasePluginInputError("invalid-data");
255
- if (model === "releases" && !hasValidReleaseInvariants(data)) throw new DatabasePluginInputError("invalid-data");
256
- if (model === "release_catalogs" && (data.strategy === "APP_VERSION" && data.fingerprint_hash !== null || data.strategy === "FINGERPRINT" && typeof data.fingerprint_hash !== "string")) throw new DatabasePluginInputError("invalid-data");
257
- if (model === "bundle_events" && !hasValidBundleEventInvariants(data)) throw new DatabasePluginInputError("invalid-data");
258
- };
259
- var encoder = new TextEncoder();
260
- /** Exact UTF-8 byte ordering, without case folding or Unicode normalization. */
261
- var compareInsightsText = (left, right) => {
262
- const a = encoder.encode(left);
263
- const b = encoder.encode(right);
264
- for (let index = 0; index < Math.min(a.length, b.length); index += 1) if (a[index] !== b[index]) return a[index] - b[index];
265
- return a.length - b.length;
266
- };
267
- var isWellFormedText = (value) => {
268
- for (const character of value) {
269
- const point = character.codePointAt(0);
270
- if (point >= 55296 && point <= 57343) return false;
271
- }
272
- return true;
273
- };
274
- var validateRow = (model, row, result = false) => {
275
- try {
276
- validateCreateData(model, row);
277
- if (!isRecord(row) || typeof row.id !== "string" || !isUUIDv7(row.id) || Object.values(row).some((value) => typeof value === "string" && !isWellFormedText(value))) throw new DatabasePluginInputError("invalid-data");
278
- } catch (error) {
279
- if (result) throw new DatabasePluginInputError("invalid-result");
280
- throw error;
281
- }
282
- };
283
- /** Prepare the full latest-state candidate; the provider owns winning writes. */
284
- var toInsightsInstallationRow = (event) => {
285
- validateRow("bundle_events", event);
286
- return {
287
- id: event.id,
288
- install_id: event.install_id,
289
- user_id: event.user_id,
290
- username: event.username,
291
- to_bundle_id: event.to_bundle_id,
292
- type: event.type,
293
- platform: event.platform,
294
- app_version: event.app_version,
295
- channel: event.channel,
296
- cohort: event.cohort,
297
- received_at_ms: event.received_at_ms
298
- };
299
- };
300
- /** Release adoption and unchanged lifecycle reports are not bundle movements. */
301
- var isInsightsMovementEvent = (event) => event.type === "UPDATE_APPLIED" || event.type === "RECOVERED";
302
- //#endregion
303
- export { toInsightsInstallationRow as i, isInsightsMovementEvent as n, isRecord as r, compareInsightsText as t };
@@ -1,149 +0,0 @@
1
- import { n as recoveryWindows, t as readRecoveryInput } from "./insights-recovery-DSFM-YTL.mjs";
2
- //#region node_modules/.nitro/vite/services/ssr/assets/insightsRecovery-CqcosG7B.js
3
- async function readInsightsHistory(model, window, beforeReceivedAtMs = Date.now()) {
4
- const { durationMs, intervalMs } = recoveryWindows[window];
5
- const sinceMs = Math.max(0, beforeReceivedAtMs - durationMs);
6
- let completeSinceMs = sinceMs;
7
- let after;
8
- let truncated = false;
9
- const events = [];
10
- while (events.length < 5e4) {
11
- const limit = Math.min(100, 5e4 - events.length);
12
- const rows = await model.listEvents({
13
- filter: { kind: "all" },
14
- sinceMs,
15
- beforeReceivedAtMs,
16
- after,
17
- limit: limit + 1
18
- });
19
- const page = rows.slice(0, limit);
20
- events.push(...page);
21
- const last = page.at(-1);
22
- if (!last || rows.length <= limit) break;
23
- after = {
24
- id: last.id,
25
- receivedAtMs: last.received_at_ms
26
- };
27
- if (events.length === 5e4) {
28
- truncated = true;
29
- completeSinceMs = Math.floor(last.received_at_ms / intervalMs) * intervalMs + intervalMs;
30
- }
31
- }
32
- return {
33
- events: events.filter((row) => row.received_at_ms >= completeSinceMs).reverse(),
34
- sinceMs: completeSinceMs,
35
- beforeReceivedAtMs,
36
- intervalMs,
37
- truncated
38
- };
39
- }
40
- async function getRecoveryReport(model, input, beforeReceivedAtMs = Date.now()) {
41
- readRecoveryInput(input);
42
- return buildRecoveryReport(await readInsightsHistory(model, input.window, beforeReceivedAtMs), input);
43
- }
44
- function buildRecoveryReport(history, input) {
45
- const { events, sinceMs, beforeReceivedAtMs, intervalMs, truncated } = history;
46
- const bucketStart = (time) => Math.floor(time / intervalMs) * intervalMs;
47
- const releases = /* @__PURE__ */ new Map();
48
- const ensureRelease = (id) => {
49
- let release = releases.get(id);
50
- if (!release) {
51
- release = {
52
- firstAdoptedAtMs: null,
53
- recovered: /* @__PURE__ */ new Set(),
54
- buckets: /* @__PURE__ */ new Map()
55
- };
56
- releases.set(id, release);
57
- }
58
- return release;
59
- };
60
- const latest = /* @__PURE__ */ new Map();
61
- const active = /* @__PURE__ */ new Map();
62
- const snapshots = /* @__PURE__ */ new Map();
63
- let unattributedInstallations = 0;
64
- let observed = false;
65
- let eventIndex = 0;
66
- for (let startMs = bucketStart(sinceMs); startMs < beforeReceivedAtMs; startMs += intervalMs) {
67
- while (eventIndex < events.length && events[eventIndex].received_at_ms < startMs + intervalMs) {
68
- const row = events[eventIndex++];
69
- const inScope = row.platform === input.platform && row.channel === input.channel;
70
- const previous = latest.get(row.install_id);
71
- const releaseId = row.to_release_id ?? (row.type === "UNCHANGED" && previous?.bundleId === row.to_bundle_id && previous.inScope === inScope ? previous.releaseId : null);
72
- if (previous?.inScope) if (previous.releaseId) active.set(previous.releaseId, (active.get(previous.releaseId) ?? 0) - 1);
73
- else unattributedInstallations -= 1;
74
- latest.set(row.install_id, {
75
- releaseId,
76
- bundleId: row.to_bundle_id,
77
- inScope
78
- });
79
- if (!inScope) continue;
80
- observed = true;
81
- if (releaseId) {
82
- ensureRelease(releaseId);
83
- active.set(releaseId, (active.get(releaseId) ?? 0) + 1);
84
- } else unattributedInstallations += 1;
85
- if (row.from_release_id) ensureRelease(row.from_release_id);
86
- const outcomeId = row.type === "RECOVERED" ? row.from_release_id : row.to_release_id;
87
- if (!outcomeId || row.type !== "RECOVERED" && row.type !== "RELEASE_ADOPTED" && row.type !== "UPDATE_APPLIED") continue;
88
- const release = ensureRelease(outcomeId);
89
- const bucket = release.buckets.get(startMs) ?? {
90
- adopted: 0,
91
- recovered: 0,
92
- installations: /* @__PURE__ */ new Set(),
93
- lastRecoveredAtMs: -1
94
- };
95
- if (row.type === "RECOVERED") {
96
- bucket.recovered += 1;
97
- bucket.installations.add(row.install_id);
98
- bucket.lastRecoveredAtMs = row.received_at_ms;
99
- release.recovered.add(row.install_id);
100
- } else {
101
- bucket.adopted += 1;
102
- release.firstAdoptedAtMs ??= row.received_at_ms;
103
- }
104
- release.buckets.set(startMs, bucket);
105
- }
106
- snapshots.set(startMs, observed ? new Map(active) : null);
107
- }
108
- const series = [];
109
- for (const [releaseId, release] of releases) {
110
- if (input.releaseId && input.releaseId !== releaseId) continue;
111
- let previousRate = null;
112
- const points = Array.from(snapshots, ([startMs, snapshot]) => {
113
- const bucket = release.buckets.get(startMs);
114
- const adopted = bucket?.adopted ?? 0;
115
- const recovered = bucket?.recovered ?? 0;
116
- const total = adopted + recovered;
117
- const rate = total === 0 ? null : recovered / total * 100;
118
- const spike = release.firstAdoptedAtMs !== null && (bucket?.lastRecoveredAtMs ?? -1) >= release.firstAdoptedAtMs && (!truncated || previousRate !== null) && rate !== null && total >= 10 && recovered >= 3 && rate >= 10 && rate - (previousRate ?? 0) >= 10;
119
- if (rate !== null) previousRate = rate;
120
- return {
121
- startMs,
122
- active: snapshot ? snapshot.get(releaseId) ?? 0 : null,
123
- recoveredInstallations: bucket?.installations.size ?? 0,
124
- adopted,
125
- recovered,
126
- rate,
127
- spike
128
- };
129
- });
130
- series.push({
131
- releaseId,
132
- firstAdoptedAtMs: release.firstAdoptedAtMs,
133
- activeInstallations: active.get(releaseId) ?? 0,
134
- recoveredInstallations: release.recovered.size,
135
- points
136
- });
137
- }
138
- series.sort((a, b) => b.releaseId.localeCompare(a.releaseId));
139
- return {
140
- sinceMs,
141
- beforeReceivedAtMs,
142
- intervalMs,
143
- truncated,
144
- unattributedInstallations,
145
- series
146
- };
147
- }
148
- //#endregion
149
- export { buildRecoveryReport, getRecoveryReport, readInsightsHistory as t };
@@ -1,29 +0,0 @@
1
- import { d as lazyRouteComponent, f as createFileRoute } from "../_libs/@tanstack/react-router+[...].mjs";
2
- //#region node_modules/.nitro/vite/services/ssr/assets/installations-BQrppti7.js
3
- var readCursor = (value) => typeof value === "string" && value.length > 0 ? value : void 0;
4
- var readTimestamp = (value) => typeof value === "number" && Number.isSafeInteger(value) && value >= 0 ? value : void 0;
5
- function getInsightsScrollRestorationKey(location) {
6
- if (location.pathname === "/installations") {
7
- const search = validateInstallationsSearch(location.search);
8
- if (search.query === void 0 && search.installId === void 0) return `/installations?eventsBefore=${search.eventsBefore ?? "new"}&eventsCursor=${search.eventsCursor ?? "first"}`;
9
- }
10
- return location.state.__TSR_key;
11
- }
12
- function validateInstallationsSearch(search) {
13
- return {
14
- query: typeof search.query === "string" ? search.query : void 0,
15
- installId: typeof search.installId === "string" ? search.installId : void 0,
16
- eventsCursor: readCursor(search.eventsCursor),
17
- eventsBefore: readTimestamp(search.eventsBefore),
18
- searchCursor: readCursor(search.searchCursor),
19
- historyCursor: readCursor(search.historyCursor),
20
- historyBefore: readTimestamp(search.historyBefore)
21
- };
22
- }
23
- var $$splitComponentImporter = () => import("./installations-YumqpNpa.mjs");
24
- var Route = createFileRoute("/installations")({
25
- component: lazyRouteComponent($$splitComponentImporter, "component"),
26
- validateSearch: validateInstallationsSearch
27
- });
28
- //#endregion
29
- export { getInsightsScrollRestorationKey as n, Route as t };
@@ -1,37 +0,0 @@
1
- import { d as lazyRouteComponent, f as createFileRoute } from "../_libs/@tanstack/react-router+[...].mjs";
2
- //#region node_modules/.nitro/vite/services/ssr/assets/routes-BDabsmc7.js
3
- var optionalString = (value) => typeof value === "string" && value.trim().length > 0 ? value.trim() : void 0;
4
- function validateReleaseSearch(search) {
5
- const parsedPage = typeof search.page === "number" ? search.page : typeof search.page === "string" ? Number(search.page) : void 0;
6
- const beforeReleaseId = optionalString(search.beforeReleaseId);
7
- const afterReleaseId = beforeReleaseId ? void 0 : optionalString(search.afterReleaseId);
8
- const enabled = search.enabled === true || search.enabled === "true" ? true : search.enabled === false || search.enabled === "false" ? false : void 0;
9
- return {
10
- afterReleaseId,
11
- beforeReleaseId,
12
- bundleId: optionalString(search.bundleId),
13
- channelId: optionalString(search.channelId),
14
- enabled,
15
- page: parsedPage !== void 0 && Number.isInteger(parsedPage) && parsedPage > 1 ? parsedPage : void 0,
16
- platform: search.platform === "ios" || search.platform === "android" ? search.platform : void 0,
17
- releaseId: optionalString(search.releaseId),
18
- targetAppVersion: optionalString(search.targetAppVersion)
19
- };
20
- }
21
- function updateReleaseFilters(current, filters) {
22
- return {
23
- ...current,
24
- ...filters,
25
- afterReleaseId: void 0,
26
- beforeReleaseId: void 0,
27
- page: void 0,
28
- releaseId: void 0
29
- };
30
- }
31
- var $$splitComponentImporter = () => import("./routes-ivsV2TDu.mjs");
32
- var Route = createFileRoute("/")({
33
- component: lazyRouteComponent($$splitComponentImporter, "component"),
34
- validateSearch: validateReleaseSearch
35
- });
36
- //#endregion
37
- export { updateReleaseFilters as n, Route as t };