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

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 (203) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/assets/HashValueDisplay-CB0Eskit.js +1 -0
  3. package/.output/public/assets/InsightsPageHeader-Car5LNiZ.js +1 -0
  4. package/.output/public/assets/api-keys-BzKocqRy.js +1 -0
  5. package/.output/public/assets/api-keys-api-BHcODB7q.js +1 -0
  6. package/.output/public/assets/card-Dhr_eFYj.js +1 -0
  7. package/.output/public/assets/{chart-no-axes-combined-FaYMGmQS.js → chart-no-axes-combined-Dy4WJv2U.js} +1 -1
  8. package/.output/public/assets/composite-Bp98A0Ld.js +1 -0
  9. package/.output/public/assets/createServerFn-CA8fs7QD.js +3 -0
  10. package/.output/public/assets/dialog-CUTrcPlB.js +1 -0
  11. package/.output/public/assets/{dist-DspNKfMj.js → dist-C_NydL0e.js} +1 -1
  12. package/.output/public/assets/index-DdAz-CXv.js +10 -0
  13. package/.output/public/assets/input-group-cSOG4wh_.js +1 -0
  14. package/.output/public/assets/insights-C0PBSZ-n.js +1 -0
  15. package/.output/public/assets/installations-CE33wgbY.js +2 -0
  16. package/.output/public/assets/installations-CStZja8x.js +1 -0
  17. package/.output/public/assets/lazyRouteComponent-Ccp3bwBY.js +1 -0
  18. package/.output/public/assets/link-CI8idAUi.js +1 -0
  19. package/.output/public/assets/loader-circle-BoxLrsOu.js +1 -0
  20. package/.output/public/assets/refresh-cw-Bqc72UZG.js +1 -0
  21. package/.output/public/assets/{routes-DcQnVajO.js → routes-DGVXdzpw.js} +2 -2
  22. package/.output/public/assets/routes-DTlwOr8I.js +1 -0
  23. package/.output/public/assets/{shield-check-DE_hVuHu.js → shield-check-uK3MHWJZ.js} +1 -1
  24. package/.output/public/assets/signing-CMf4aqDO.js +1 -0
  25. package/.output/public/assets/styles-BCvbtKsm.css +2 -0
  26. package/.output/public/assets/table-2vcV89QB.js +1 -0
  27. package/.output/public/assets/useCompositeListItem-CHLITE_4.js +1 -0
  28. package/.output/public/assets/x-DCd0j8c6.js +1 -0
  29. package/.output/server/{__23tanstack-start-server-fn-resolver-DBP9TQ7K.mjs → __23tanstack-start-server-fn-resolver-B7ioJhtE.mjs} +44 -52
  30. package/.output/server/_libs/@base-ui/react+[...].mjs +1906 -4040
  31. package/.output/server/_libs/@tanstack/react-router+[...].mjs +52 -4
  32. package/.output/server/_libs/@tanstack/react-router-ssr-query+[...].mjs +2 -2
  33. package/.output/server/_libs/lucide-react.mjs +36 -3
  34. package/.output/server/_libs/next-themes.mjs +2 -2
  35. package/.output/server/_libs/sonner.mjs +2 -2
  36. package/.output/server/_libs/tanstack__react-query.mjs +2 -2
  37. package/.output/server/_libs/verkit.mjs +20 -15
  38. package/.output/server/_runtime.mjs +1 -10
  39. package/.output/server/_ssr/HashValueDisplay-DwpGLfrl.mjs +55 -0
  40. package/.output/server/_ssr/InsightsPageHeader-Df4Brj8u.mjs +484 -0
  41. package/.output/server/_ssr/{api-keys-BnM_o2nS.mjs → api-keys-CZeTPQys.mjs} +11 -13
  42. package/.output/server/_ssr/{api-keys-api-CIywsSF5.mjs → api-keys-api-BUPQVSpk.mjs} +2 -2
  43. package/.output/server/_ssr/{api-keys-rpc-BSp1wkIV.mjs → api-keys-rpc-Cs7tS5_j.mjs} +5 -5
  44. package/.output/server/_ssr/{api-rpc-cG5wd_tO.mjs → api-rpc-tAupfGQm.mjs} +73 -142
  45. package/.output/server/_ssr/{auth-rpc-BrJ6obHJ.mjs → auth-rpc-DUaeOWKK.mjs} +4 -4
  46. package/.output/server/_ssr/{auth.server-DwKoZoQM.mjs → auth.server-DW71WzsD.mjs} +2 -5
  47. package/.output/server/_ssr/{bundle-signing-rpc-COoQhW8E.mjs → bundle-signing-rpc-BhnBw0-d.mjs} +2 -2
  48. package/.output/server/_ssr/bundle-signing.server-C4NW5mWx.mjs +12 -0
  49. package/.output/server/_ssr/{alert-Dim3MGY5.mjs → card-BRiPmi0C.mjs} +61 -39
  50. package/.output/server/_ssr/{config.server-DEiLhKmy.mjs → config.server-afDuAwaG.mjs} +15 -8
  51. package/.output/server/_ssr/{createSsrRpc-9P0S0lJ3.mjs → createSsrRpc-DjWNJ0uc.mjs} +6 -6
  52. package/.output/server/_ssr/databaseJsonValue-d6I3nAS4.mjs +45 -0
  53. package/.output/server/_ssr/{databaseRows-CwbNwYSl.mjs → databaseRows-5bCRTxm-.mjs} +4 -44
  54. package/.output/server/_ssr/{deleteBundle-Cu_XOMt0.mjs → deleteBundle-BTGwBgzx.mjs} +2 -2
  55. package/.output/server/_ssr/{dialog-CQuRMNZ4.mjs → dialog-DS-nw-pA.mjs} +2 -2
  56. package/.output/server/_ssr/{dist-BVSLTpoP.mjs → dist-CyzPaI5v.mjs} +2 -2
  57. package/.output/server/_ssr/{getBundleChildren-BcRMFoDF.mjs → getBundleChildren-C0vh4ZvE.mjs} +2 -2
  58. package/.output/server/_ssr/input-group-BpsnmvZw.mjs +70 -0
  59. package/.output/server/_ssr/insights-BdS364Xu.mjs +460 -0
  60. package/.output/server/_ssr/insights-rpc-38DujK0G.mjs +57 -0
  61. package/.output/server/_ssr/insightsContract-fjJDBeEE.mjs +303 -0
  62. package/.output/server/_ssr/installations-CtA59MQG.mjs +29 -0
  63. package/.output/server/_ssr/installations-DiVKEF5T.mjs +627 -0
  64. package/.output/server/_ssr/{router-C-KUBfOi.mjs → router-B9wG_9f8.mjs} +37 -46
  65. package/.output/server/_ssr/{routes-Z7TwC6nC.mjs → routes-CKrrS2q2.mjs} +3 -3
  66. package/.output/server/_ssr/{routes-BM4ht9jb.mjs → routes-D7Yh_jfj.mjs} +402 -390
  67. package/.output/server/_ssr/runtime.server-DacU1TBV.mjs +438 -0
  68. package/.output/server/_ssr/{server-BjzmvXnO.mjs → server-D_C2rMzf.mjs} +5 -5
  69. package/.output/server/_ssr/{signing-k8GxyBDF.mjs → signing-Dz1WkZOf.mjs} +16 -85
  70. package/.output/server/_ssr/ssr.mjs +1 -1
  71. package/.output/server/_ssr/{field-DRIXKjZG.mjs → table-CnZmon_Z.mjs} +51 -5
  72. package/.output/server/_ssr/{uuidv7-BbJ-9D_I.mjs → uuidv7-D0QFkPL_.mjs} +3 -3
  73. package/.output/server/_tanstack-start-manifest_v-2MjTyxil.mjs +97 -0
  74. package/.output/server/index.mjs +168 -203
  75. package/lib/index.d.mts +4 -4
  76. package/lib/vite-internal.mjs +1 -1
  77. package/lib/vite.d.mts +0 -1
  78. package/package.json +8 -8
  79. package/src/components/AppSidebar.tsx +12 -16
  80. package/src/components/ConsoleAccessPage.tsx +1 -1
  81. package/src/components/HashValueDisplay.tsx +11 -2
  82. package/src/components/features/api-keys/ApiKeysPage.tsx +1 -1
  83. package/src/components/features/bundles/BundleChildrenPanel.tsx +7 -6
  84. package/src/components/features/bundles/BundleMetadata.tsx +1 -20
  85. package/src/components/features/channels/ChannelManagementDialog.tsx +1 -1
  86. package/src/components/features/insights/EventDetails.tsx +151 -0
  87. package/src/components/features/insights/EventHistoryCard.tsx +245 -0
  88. package/src/components/features/insights/EventHistoryList.tsx +63 -0
  89. package/src/components/features/insights/InsightsBundleReports.tsx +51 -0
  90. package/src/components/features/insights/InsightsControls.tsx +121 -0
  91. package/src/components/features/{analytics/AnalyticsErrorAlert.tsx → insights/InsightsErrorAlert.tsx} +6 -6
  92. package/src/components/features/insights/InsightsOverview.tsx +203 -0
  93. package/src/components/features/insights/InsightsPageHeader.tsx +48 -0
  94. package/src/components/features/insights/InsightsPagination.tsx +52 -0
  95. package/src/components/features/insights/InstallationHistoryCard.tsx +250 -0
  96. package/src/components/features/insights/InstallationMatchesCard.tsx +178 -0
  97. package/src/components/features/insights/InstallationPageHeader.tsx +90 -0
  98. package/src/components/features/releases/ReleaseEditorSheet.tsx +24 -24
  99. package/src/components/features/signing/BundleSigningPage.tsx +18 -126
  100. package/src/components/ui/badge.tsx +2 -0
  101. package/src/components/ui/combobox.tsx +1 -0
  102. package/src/components/ui/skeleton.tsx +4 -1
  103. package/src/components/ui/tooltip.tsx +1 -1
  104. package/src/index.ts +7 -3
  105. package/src/lib/api-rpc.ts +19 -90
  106. package/src/lib/api.ts +0 -99
  107. package/src/lib/insights-api.ts +100 -0
  108. package/src/lib/insights-rpc.ts +88 -0
  109. package/src/lib/insights-view.ts +15 -0
  110. package/src/lib/public-bundle-error.ts +19 -0
  111. package/src/lib/server/bundle-signing.server.ts +5 -82
  112. package/src/lib/server/console-runtime.server.ts +0 -9
  113. package/src/lib/server/releaseReachability.ts +1 -4
  114. package/src/lib/server/runtime.server.ts +6 -142
  115. package/src/routeTree.gen.ts +21 -21
  116. package/src/router.tsx +3 -0
  117. package/src/routes/-installations-search.ts +25 -12
  118. package/src/routes/__root.tsx +6 -16
  119. package/src/routes/api-keys.tsx +1 -1
  120. package/src/routes/index.tsx +21 -81
  121. package/src/routes/insights.tsx +84 -0
  122. package/src/routes/installations.tsx +294 -142
  123. package/src/styles.css +6 -0
  124. package/.output/public/assets/AnalyticsCapabilityContext-BCke57-7.js +0 -1
  125. package/.output/public/assets/BundleActivityChart-CnsBe_1J.js +0 -42
  126. package/.output/public/assets/BundleIdDisplay-Dky75zLU.js +0 -1
  127. package/.output/public/assets/alert-C-1KvDW8.js +0 -1
  128. package/.output/public/assets/analytics-Bqz0c-BT.js +0 -1
  129. package/.output/public/assets/analytics-api-CJdrTLLO.js +0 -1
  130. package/.output/public/assets/api-B_Rh-uzC.js +0 -1
  131. package/.output/public/assets/api-keys-BurCFhzH.js +0 -1
  132. package/.output/public/assets/api-keys-api-BEDJdQg3.js +0 -1
  133. package/.output/public/assets/badge-Bf0fZ-Gx.js +0 -1
  134. package/.output/public/assets/createServerFn-gM2-LFBy.js +0 -3
  135. package/.output/public/assets/dialog-BS60BRr2.js +0 -1
  136. package/.output/public/assets/download-O-yNBc9H.js +0 -1
  137. package/.output/public/assets/field-Buq148-A.js +0 -1
  138. package/.output/public/assets/index-kFhd2S78.js +0 -10
  139. package/.output/public/assets/installations-BrQ-od41.js +0 -2
  140. package/.output/public/assets/installations-CGlZ3ROz.js +0 -1
  141. package/.output/public/assets/lazyRouteComponent-rPzgA7S-.js +0 -1
  142. package/.output/public/assets/loader-circle-DCYF-wJl.js +0 -1
  143. package/.output/public/assets/refresh-cw-n8XYbPPj.js +0 -1
  144. package/.output/public/assets/routes-CrdokJ80.js +0 -1
  145. package/.output/public/assets/search-DLhbWw3W.js +0 -1
  146. package/.output/public/assets/signing-HRexfjsH.js +0 -1
  147. package/.output/public/assets/styles-eB4EtvFS.css +0 -2
  148. package/.output/public/assets/table-D8CLieHX.js +0 -1
  149. package/.output/public/assets/textarea-YJLTVAoq.js +0 -1
  150. package/.output/public/assets/useMutation-JsGVjQMY.js +0 -1
  151. package/.output/public/assets/useOpenInteractionType-4cRD5xO0.js +0 -1
  152. package/.output/server/_libs/@reduxjs/toolkit+[...].mjs +0 -1554
  153. package/.output/server/_libs/d3-array.mjs +0 -231
  154. package/.output/server/_libs/d3-color.mjs +0 -330
  155. package/.output/server/_libs/d3-format.mjs +0 -252
  156. package/.output/server/_libs/d3-interpolate.mjs +0 -207
  157. package/.output/server/_libs/d3-path.mjs +0 -77
  158. package/.output/server/_libs/d3-scale+[...].mjs +0 -1907
  159. package/.output/server/_libs/d3-shape.mjs +0 -818
  160. package/.output/server/_libs/decimal.js-light.mjs +0 -884
  161. package/.output/server/_libs/es-toolkit.mjs +0 -1134
  162. package/.output/server/_libs/eventemitter3.mjs +0 -236
  163. package/.output/server/_libs/immer.mjs +0 -532
  164. package/.output/server/_libs/react-redux+[...].mjs +0 -205
  165. package/.output/server/_libs/recharts+[...].mjs +0 -14117
  166. package/.output/server/_ssr/AnalyticsCapabilityContext-ui4DX8GO.mjs +0 -15
  167. package/.output/server/_ssr/BundleActivityChart-BiB9ZORH.mjs +0 -288
  168. package/.output/server/_ssr/BundleIdDisplay-Czk6iR6p.mjs +0 -13
  169. package/.output/server/_ssr/analytics-DtMTn8fn.mjs +0 -858
  170. package/.output/server/_ssr/analytics-api-Cg1M5v_H.mjs +0 -71
  171. package/.output/server/_ssr/analytics-input-fRRRn0uA.mjs +0 -96
  172. package/.output/server/_ssr/analytics-rpc-DY5uXvHT.mjs +0 -155
  173. package/.output/server/_ssr/api-BTSv1tZb.mjs +0 -282
  174. package/.output/server/_ssr/badge-DCxbEeof.mjs +0 -26
  175. package/.output/server/_ssr/bundle-signing.server-D5u8KkMp.mjs +0 -51
  176. package/.output/server/_ssr/installations-B-azgAvX.mjs +0 -19
  177. package/.output/server/_ssr/installations-Ctvzp2JH.mjs +0 -535
  178. package/.output/server/_ssr/runtime.server-awTLiiXW.mjs +0 -527
  179. package/.output/server/_ssr/table-v1yCvYo7.mjs +0 -53
  180. package/.output/server/_ssr/textarea-DYHnskhb.mjs +0 -14
  181. package/.output/server/_tanstack-start-manifest_v-CH4StzJu.mjs +0 -108
  182. package/src/components/features/analytics/ActivityChart.tsx +0 -150
  183. package/src/components/features/analytics/AnalyticsCapabilityContext.tsx +0 -24
  184. package/src/components/features/analytics/AnalyticsControls.tsx +0 -115
  185. package/src/components/features/analytics/AnalyticsOverview.tsx +0 -208
  186. package/src/components/features/analytics/BundleDistribution.tsx +0 -133
  187. package/src/components/features/analytics/BundleSelector.tsx +0 -114
  188. package/src/components/features/analytics/InstallationHistoryCard.tsx +0 -248
  189. package/src/components/features/analytics/InstallationMatchesCard.tsx +0 -132
  190. package/src/components/features/analytics/InstallationPageHeader.tsx +0 -138
  191. package/src/components/features/analytics/InstallationPagination.tsx +0 -48
  192. package/src/components/features/analytics/InstallationSearch.tsx +0 -230
  193. package/src/components/features/analytics/UpdateOutcomes.tsx +0 -147
  194. package/src/components/features/bundles/BundleActivityChart.tsx +0 -193
  195. package/src/components/features/bundles/BundleAnalyticsSummary.tsx +0 -123
  196. package/src/lib/analytics-api.ts +0 -145
  197. package/src/lib/analytics-error.ts +0 -19
  198. package/src/lib/analytics-input.ts +0 -187
  199. package/src/lib/analytics-overview.ts +0 -170
  200. package/src/lib/analytics-rpc.ts +0 -218
  201. package/src/lib/server/releaseActivity.ts +0 -27
  202. package/src/routes/analytics.tsx +0 -139
  203. /package/.output/public/assets/{preload-helper-TKOBYGYD.js → preload-helper-CQ36nxok.js} +0 -0
@@ -1,8 +1,10 @@
1
- import { l as getBundlePatches } from "./dist-BVSLTpoP.mjs";
2
- import { i as bundleToRow, n as bundleMetadataToRow, o as rowsToBundles, r as bundleToPatchRows, t as DatabasePluginInputError } from "./databaseRows-CwbNwYSl.mjs";
3
- import { r as getRequest } from "./server-BjzmvXnO.mjs";
4
- import { requireConsoleAccess, t as resolveConsoleConfig } from "./auth.server-DwKoZoQM.mjs";
5
- //#region node_modules/.nitro/vite/services/ssr/assets/config.server-DEiLhKmy.js
1
+ import { t as DatabasePluginInputError } from "./databaseJsonValue-d6I3nAS4.mjs";
2
+ import { l as getBundlePatches } from "./dist-CyzPaI5v.mjs";
3
+ import { a as rowsToBundles, n as bundleToPatchRows, r as bundleToRow, t as bundleMetadataToRow } from "./databaseRows-5bCRTxm-.mjs";
4
+ import { r as getRequest } from "./server-D_C2rMzf.mjs";
5
+ import { requireConsoleAccess, t as resolveConsoleConfig } from "./auth.server-DW71WzsD.mjs";
6
+ import { r as isRecord } from "./insightsContract-fjJDBeEE.mjs";
7
+ //#region node_modules/.nitro/vite/services/ssr/assets/config.server-afDuAwaG.js
6
8
  /**
7
9
  * Calculate pagination information based on total count, limit, and offset
8
10
  */
@@ -25,7 +27,6 @@ function calculatePagination(total, options) {
25
27
  totalPages
26
28
  };
27
29
  }
28
- var isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
29
30
  var validateBundlePagination = (options) => {
30
31
  if (!Number.isSafeInteger(options.limit) || options.limit <= 0 || options.page !== void 0 && (!Number.isSafeInteger(options.page) || options.page <= 0) || options.page !== void 0 && options.cursor !== void 0) throw new DatabasePluginInputError("invalid-pagination");
31
32
  const cursor = options.cursor;
@@ -37,6 +38,7 @@ var validateBundlePagination = (options) => {
37
38
  if (typeof value !== "string" || value.length === 0) throw new DatabasePluginInputError("invalid-pagination");
38
39
  };
39
40
  var DatabaseAtomicCommitUnsupportedError = class extends Error {
41
+ pluginName;
40
42
  name = "DatabaseAtomicCommitUnsupportedError";
41
43
  constructor(pluginName) {
42
44
  super(`Database plugin "${pluginName}" cannot atomically commit changes across models.`);
@@ -60,6 +62,8 @@ function assertStorageOperations(plugin, operations) {
60
62
  for (const operation of operations) if (typeof plugin[operation] !== "function") throw new Error(`Storage plugin "${plugin.name}" does not implement ${operation}.`);
61
63
  }
62
64
  var DatabasePatchUpdateUnsupportedError = class extends Error {
65
+ bundleId;
66
+ pluginName;
63
67
  name = "DatabasePatchUpdateUnsupportedError";
64
68
  constructor(bundleId, pluginName) {
65
69
  super(`Database plugin "${pluginName}" cannot atomically replace patches for bundle "${bundleId}".`);
@@ -196,6 +200,7 @@ var responsePage = async (database, options) => {
196
200
  };
197
201
  };
198
202
  var DatabaseBundleNotFoundError = class extends Error {
203
+ bundleId;
199
204
  name = "DatabaseBundleNotFoundError";
200
205
  constructor(bundleId) {
201
206
  super(`Bundle "${bundleId}" was not found.`);
@@ -203,6 +208,8 @@ var DatabaseBundleNotFoundError = class extends Error {
203
208
  }
204
209
  };
205
210
  var DatabasePatchInsertUnsupportedError = class extends Error {
211
+ bundleId;
212
+ pluginName;
206
213
  name = "DatabasePatchInsertUnsupportedError";
207
214
  constructor(bundleId, pluginName) {
208
215
  super(`Database plugin "${pluginName}" cannot atomically insert patches for bundle "${bundleId}".`);
@@ -335,11 +342,11 @@ var prepareConfig = async (request = getRequest()) => {
335
342
  const config = await loadCachedConfig(request);
336
343
  if (!databaseClient) databaseClient = createDatabaseClient(config.database);
337
344
  if (!hotUpdater) {
338
- const { createRuntimeHotUpdater } = await import("./runtime.server-awTLiiXW.mjs");
345
+ const { createRuntimeHotUpdater } = await import("./runtime.server-DacU1TBV.mjs");
339
346
  hotUpdater = createRuntimeHotUpdater(config);
340
347
  }
341
348
  if (!apiKeyStoreResolved) {
342
- const { createApiKeyStore } = await import("./runtime.server-awTLiiXW.mjs");
349
+ const { createApiKeyStore } = await import("./runtime.server-DacU1TBV.mjs");
343
350
  apiKeyStore = createApiKeyStore(config);
344
351
  apiKeyStoreResolved = true;
345
352
  }
@@ -1,11 +1,11 @@
1
- import { i as __toESM } from "../_runtime.mjs";
2
- import { G as TooltipProvider$1, J as TooltipPositioner, K as TooltipArrow, X as TooltipTrigger$1, Y as TooltipPortal, Z as TooltipRoot, at as require_react, et as Separator, it as require_jsx_runtime, nt as useRender, q as TooltipPopup, rt as mergeProps, tt as Button } from "../_libs/@base-ui/react+[...].mjs";
1
+ import { r as __toESM } from "../_runtime.mjs";
3
2
  import { i as TSS_SERVER_FUNCTION } from "./createServerFn-B2hcXoPM.mjs";
4
- import { t as getServerFnById } from "../__23tanstack-start-server-fn-resolver-DBP9TQ7K.mjs";
3
+ import { t as getServerFnById } from "../__23tanstack-start-server-fn-resolver-B7ioJhtE.mjs";
4
+ import { B as TooltipRoot, F as TooltipArrow, G as useRender, I as TooltipPopup, J as require_react, K as mergeProps, L as TooltipPositioner, P as TooltipProvider$1, R as TooltipPortal, U as Separator, W as Button, q as require_jsx_runtime, z as TooltipTrigger$1 } from "../_libs/@base-ui/react+[...].mjs";
5
5
  import { p as PanelLeft } from "../_libs/lucide-react.mjs";
6
6
  import { n as clsx, t as cva } from "../_libs/class-variance-authority+clsx.mjs";
7
7
  import { t as twMerge } from "../_libs/tailwind-merge.mjs";
8
- //#region node_modules/.nitro/vite/services/ssr/assets/createSsrRpc-9P0S0lJ3.js
8
+ //#region node_modules/.nitro/vite/services/ssr/assets/createSsrRpc-DjWNJ0uc.js
9
9
  var import_react = /* @__PURE__ */ __toESM(require_react());
10
10
  var import_jsx_runtime = require_jsx_runtime();
11
11
  function cn(...inputs) {
@@ -69,7 +69,7 @@ function Separator$1({ className, orientation = "horizontal", ...props }) {
69
69
  function Skeleton({ className, ...props }) {
70
70
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
71
71
  "data-slot": "skeleton",
72
- className: cn("bg-muted rounded-md animate-pulse", className),
72
+ className: cn("bg-muted rounded-md animate-pulse motion-reduce:animate-none", className),
73
73
  ...props
74
74
  });
75
75
  }
@@ -101,7 +101,7 @@ function TooltipContent({ className, side = "top", sideOffset = 4, align = "cent
101
101
  className: "isolate z-50",
102
102
  children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(TooltipPopup, {
103
103
  "data-slot": "tooltip-content",
104
- className: cn("z-50 inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 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),
104
+ className: cn("z-50 inline-flex w-fit max-w-xs origin-(--transform-origin) items-center gap-1.5 rounded-md bg-foreground px-3 py-1.5 text-xs text-background has-data-[slot=kbd]:pr-1.5 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 **:data-[slot=kbd]:relative **:data-[slot=kbd]:isolate **:data-[slot=kbd]:z-50 **:data-[slot=kbd]:rounded-sm data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 motion-reduce:animate-none! 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),
105
105
  ...props,
106
106
  children: [children, /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TooltipArrow, { className: "z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground data-[side=bottom]:top-1 data-[side=inline-end]:top-1/2! data-[side=inline-end]:-left-1 data-[side=inline-end]:-translate-y-1/2 data-[side=inline-start]:top-1/2! data-[side=inline-start]:-right-1 data-[side=inline-start]:-translate-y-1/2 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5" })]
107
107
  })
@@ -0,0 +1,45 @@
1
+ //#region node_modules/.nitro/vite/services/ssr/assets/databaseJsonValue-d6I3nAS4.js
2
+ var DatabasePluginInputError = class extends Error {
3
+ code;
4
+ name = "DatabasePluginInputError";
5
+ constructor(code) {
6
+ super(`Invalid database plugin input: ${code}`);
7
+ this.code = code;
8
+ }
9
+ };
10
+ var isDatabaseJsonValue = (value) => {
11
+ const ancestors = /* @__PURE__ */ new WeakSet();
12
+ const validate = (input) => {
13
+ if (input === null || typeof input === "string" || typeof input === "boolean") return true;
14
+ if (typeof input === "number") return Number.isFinite(input);
15
+ if (typeof input !== "object") return false;
16
+ if (ancestors.has(input)) return false;
17
+ ancestors.add(input);
18
+ try {
19
+ if (Array.isArray(input)) {
20
+ if (Object.getPrototypeOf(input) !== Array.prototype) return false;
21
+ if (Reflect.ownKeys(input).length !== input.length + 1) return false;
22
+ for (let index = 0; index < input.length; index += 1) {
23
+ const descriptor = Object.getOwnPropertyDescriptor(input, String(index));
24
+ if (descriptor === void 0 || !descriptor.enumerable || !("value" in descriptor) || !validate(descriptor.value)) return false;
25
+ }
26
+ return true;
27
+ }
28
+ const prototype = Object.getPrototypeOf(input);
29
+ if (prototype !== Object.prototype && prototype !== null) return false;
30
+ for (const key of Reflect.ownKeys(input)) {
31
+ if (typeof key !== "string" || key === "__proto__") return false;
32
+ const descriptor = Object.getOwnPropertyDescriptor(input, key);
33
+ if (descriptor === void 0 || !descriptor.enumerable || !("value" in descriptor) || !validate(descriptor.value)) return false;
34
+ }
35
+ return true;
36
+ } finally {
37
+ ancestors.delete(input);
38
+ }
39
+ };
40
+ return validate(value);
41
+ };
42
+ var isDatabaseJsonObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value) && isDatabaseJsonValue(value);
43
+ var isDatabaseMetadataObject = (value) => isDatabaseJsonObject(value) && (!Object.hasOwn(value, "app_version") || typeof value["app_version"] === "string");
44
+ //#endregion
45
+ export { isDatabaseMetadataObject as n, DatabasePluginInputError as t };
@@ -1,46 +1,6 @@
1
- import { T as stripBundleArtifactMetadata, c as getAssetBaseStorageUri, d as getManifestStorageUri, l as getBundlePatches, u as getManifestFileHash } from "./dist-BVSLTpoP.mjs";
2
- //#region node_modules/.nitro/vite/services/ssr/assets/databaseRows-CwbNwYSl.js
3
- var DatabasePluginInputError = class extends Error {
4
- name = "DatabasePluginInputError";
5
- constructor(code) {
6
- super(`Invalid database plugin input: ${code}`);
7
- this.code = code;
8
- }
9
- };
10
- var isDatabaseJsonValue = (value) => {
11
- const ancestors = /* @__PURE__ */ new WeakSet();
12
- const validate = (input) => {
13
- if (input === null || typeof input === "string" || typeof input === "boolean") return true;
14
- if (typeof input === "number") return Number.isFinite(input);
15
- if (typeof input !== "object") return false;
16
- if (ancestors.has(input)) return false;
17
- ancestors.add(input);
18
- try {
19
- if (Array.isArray(input)) {
20
- if (Object.getPrototypeOf(input) !== Array.prototype) return false;
21
- if (Reflect.ownKeys(input).length !== input.length + 1) return false;
22
- for (let index = 0; index < input.length; index += 1) {
23
- const descriptor = Object.getOwnPropertyDescriptor(input, String(index));
24
- if (descriptor === void 0 || !descriptor.enumerable || !("value" in descriptor) || !validate(descriptor.value)) return false;
25
- }
26
- return true;
27
- }
28
- const prototype = Object.getPrototypeOf(input);
29
- if (prototype !== Object.prototype && prototype !== null) return false;
30
- for (const key of Reflect.ownKeys(input)) {
31
- if (typeof key !== "string" || key === "__proto__") return false;
32
- const descriptor = Object.getOwnPropertyDescriptor(input, key);
33
- if (descriptor === void 0 || !descriptor.enumerable || !("value" in descriptor) || !validate(descriptor.value)) return false;
34
- }
35
- return true;
36
- } finally {
37
- ancestors.delete(input);
38
- }
39
- };
40
- return validate(value);
41
- };
42
- var isDatabaseJsonObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value) && isDatabaseJsonValue(value);
43
- var isDatabaseMetadataObject = (value) => isDatabaseJsonObject(value) && (!Object.hasOwn(value, "app_version") || typeof value["app_version"] === "string");
1
+ import { n as isDatabaseMetadataObject, t as DatabasePluginInputError } from "./databaseJsonValue-d6I3nAS4.mjs";
2
+ import { T as stripBundleArtifactMetadata, c as getAssetBaseStorageUri, d as getManifestStorageUri, l as getBundlePatches, u as getManifestFileHash } from "./dist-CyzPaI5v.mjs";
3
+ //#region node_modules/.nitro/vite/services/ssr/assets/databaseRows-5bCRTxm-.js
44
4
  var bundleMetadataToRow = (metadata) => {
45
5
  const value = stripBundleArtifactMetadata(metadata);
46
6
  if (value === void 0) return {};
@@ -163,4 +123,4 @@ var rowsToBundles = (bundleRows, patchRows, referencedBundleRows) => {
163
123
  return bundleRows.map((row) => rowToBundle(row, patchesByOwner.get(row.id) ?? []));
164
124
  };
165
125
  //#endregion
166
- export { releaseRowToRelease as a, bundleToRow as i, bundleMetadataToRow as n, rowsToBundles as o, bundleToPatchRows as r, DatabasePluginInputError as t };
126
+ export { rowsToBundles as a, releaseRowToRelease as i, bundleToPatchRows as n, bundleToRow as r, bundleMetadataToRow as t };
@@ -1,5 +1,5 @@
1
- import { _ as getPatchStorageUri, d as getManifestStorageUri, l as getBundlePatches } from "./dist-BVSLTpoP.mjs";
2
- //#region node_modules/.nitro/vite/services/ssr/assets/deleteBundle-Cu_XOMt0.js
1
+ import { _ as getPatchStorageUri, d as getManifestStorageUri, l as getBundlePatches } from "./dist-CyzPaI5v.mjs";
2
+ //#region node_modules/.nitro/vite/services/ssr/assets/deleteBundle-BTGwBgzx.js
3
3
  function resolveStorageUriForDeletion(storageUri, storagePlugin) {
4
4
  const protocol = new URL(storageUri).protocol.replace(":", "");
5
5
  if (storagePlugin.protocol === protocol) return storageUri;
@@ -1,7 +1,7 @@
1
1
  import "../_runtime.mjs";
2
- import { B as DialogClose, F as DialogTrigger$1, H as AlertDialogRoot, I as DialogTitle$1, L as DialogPortal$1, P as AlertDialogTrigger$1, R as DialogPopup, S as DialogRoot, V as DialogBackdrop, at as require_react, it as require_jsx_runtime, z as DialogDescription$1 } from "../_libs/@base-ui/react+[...].mjs";
2
+ import { A as DialogDescription$1, D as DialogTitle$1, E as DialogTrigger$1, J as require_react, M as DialogBackdrop, N as AlertDialogRoot, O as DialogPortal$1, T as AlertDialogTrigger$1, j as DialogClose, k as DialogPopup, q as require_jsx_runtime, w as DialogRoot } from "../_libs/@base-ui/react+[...].mjs";
3
3
  import { t as X } from "../_libs/lucide-react.mjs";
4
- import { C as cn, t as Button$1 } from "./createSsrRpc-9P0S0lJ3.mjs";
4
+ import { C as cn, t as Button$1 } from "./createSsrRpc-DjWNJ0uc.mjs";
5
5
  require_react();
6
6
  var import_jsx_runtime = require_jsx_runtime();
7
7
  function AlertDialog$1({ ...props }) {
@@ -1,4 +1,4 @@
1
- //#region node_modules/.nitro/vite/services/ssr/assets/dist-BVSLTpoP.js
1
+ //#region node_modules/.nitro/vite/services/ssr/assets/dist-CyzPaI5v.js
2
2
  var stripBundleArtifactMetadata = (metadata) => metadata;
3
3
  var getManifestStorageUri = (bundle) => bundle.manifestStorageUri ?? null;
4
4
  var getManifestFileHash = (bundle) => bundle.manifestFileHash ?? null;
@@ -138,7 +138,7 @@ function isCohortEligibleForUpdate(bundleId, cohort, rolloutCohortCount, targetC
138
138
  return getNumericCohortRolloutPosition(bundleId, numericCohort) < normalizedRolloutCount;
139
139
  }
140
140
  var RELEASE_CATALOG_FALLBACK_POLICY = "BUILTIN_IF_ACTIVE_INELIGIBLE";
141
- var MAX_COMPILED_CATALOG_BYTES = 256 * 1024;
141
+ var MAX_COMPILED_CATALOG_BYTES = 262144;
142
142
  function isReleaseEligibleForCohort(release, cohort) {
143
143
  if (isCohortEligibleForUpdate(release.releaseId, cohort, release.rolloutCohortCount, release.targetCohorts)) return true;
144
144
  return cohort !== null && cohort !== void 0 && isCustomCohort(normalizeCohortValue(cohort)) && normalizeRolloutCohortCount(release.rolloutCohortCount) === 1e3;
@@ -1,5 +1,5 @@
1
- import { l as getBundlePatches } from "./dist-BVSLTpoP.mjs";
2
- //#region node_modules/.nitro/vite/services/ssr/assets/getBundleChildren-BcRMFoDF.js
1
+ import { l as getBundlePatches } from "./dist-CyzPaI5v.mjs";
2
+ //#region node_modules/.nitro/vite/services/ssr/assets/getBundleChildren-C0vh4ZvE.js
3
3
  var CHILDREN_QUERY_LIMIT = 100;
4
4
  async function collectBundleChildrenByBaseIds(baseBundleIds, deps) {
5
5
  const uniqueBaseBundleIds = [...new Set(baseBundleIds.filter(Boolean))];
@@ -0,0 +1,70 @@
1
+ import "../_runtime.mjs";
2
+ import { J as require_react, q as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
3
+ import { t as cva } from "../_libs/class-variance-authority+clsx.mjs";
4
+ import { C as cn, n as Input, t as Button$1 } from "./createSsrRpc-DjWNJ0uc.mjs";
5
+ require_react();
6
+ var import_jsx_runtime = require_jsx_runtime();
7
+ function Textarea({ className, ...props }) {
8
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("textarea", {
9
+ "data-slot": "textarea",
10
+ className: cn("flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50", className),
11
+ ...props
12
+ });
13
+ }
14
+ function InputGroup({ className, ...props }) {
15
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
16
+ "data-slot": "input-group",
17
+ className: cn("border-input bg-input/20 dark:bg-input/30 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/30 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 h-7 rounded-md border transition-colors has-data-[align=block-end]:rounded-md has-data-[align=block-start]:rounded-md has-[[data-slot=input-group-control]:focus-visible]:ring-[2px] has-[[data-slot][aria-invalid=true]]:ring-[2px] has-[textarea]:rounded-md has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5 [[data-slot=combobox-content]_&]:focus-within:border-inherit [[data-slot=combobox-content]_&]:focus-within:ring-0 group/input-group relative flex w-full min-w-0 items-center outline-none has-[>textarea]:h-auto", className),
18
+ ...props
19
+ });
20
+ }
21
+ var inputGroupAddonVariants = cva("text-muted-foreground **:data-[slot=kbd]:bg-muted-foreground/10 h-auto gap-1 py-2 text-xs/relaxed font-medium group-data-[disabled=true]/input-group:opacity-50 **:data-[slot=kbd]:rounded-[calc(var(--radius-sm)-2px)] **:data-[slot=kbd]:px-1 **:data-[slot=kbd]:text-[0.625rem] [&>svg:not([class*='size-'])]:size-3.5 flex cursor-text items-center justify-center select-none", {
22
+ variants: { align: {
23
+ "inline-start": "pl-2 has-[>button]:ml-[-0.275rem] has-[>kbd]:ml-[-0.275rem] order-first",
24
+ "inline-end": "pr-2 has-[>button]:mr-[-0.275rem] has-[>kbd]:mr-[-0.275rem] order-last",
25
+ "block-start": "px-2 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2 order-first w-full justify-start",
26
+ "block-end": "px-2 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2 order-last w-full justify-start"
27
+ } },
28
+ defaultVariants: { align: "inline-start" }
29
+ });
30
+ function InputGroupAddon({ className, align = "inline-start", ...props }) {
31
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
32
+ "data-slot": "input-group-addon",
33
+ "data-align": align,
34
+ className: cn(inputGroupAddonVariants({ align }), className),
35
+ ...props
36
+ });
37
+ }
38
+ var inputGroupButtonVariants = cva("gap-2 rounded-md text-xs/relaxed shadow-none flex items-center", {
39
+ variants: { size: {
40
+ xs: "h-5 gap-1 rounded-[calc(var(--radius-sm)-2px)] px-1 [&>svg:not([class*='size-'])]:size-3",
41
+ sm: "",
42
+ "icon-xs": "size-6 p-0 has-[>svg]:p-0",
43
+ "icon-sm": "size-8 p-0 has-[>svg]:p-0"
44
+ } },
45
+ defaultVariants: { size: "xs" }
46
+ });
47
+ function InputGroupButton({ className, type = "button", variant = "ghost", size = "xs", ...props }) {
48
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button$1, {
49
+ type,
50
+ "data-size": size,
51
+ variant,
52
+ className: cn(inputGroupButtonVariants({ size }), className),
53
+ ...props
54
+ });
55
+ }
56
+ function InputGroupText({ className, ...props }) {
57
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
58
+ className: cn("text-muted-foreground gap-2 text-xs/relaxed [&_svg:not([class*='size-'])]:size-4 flex items-center [&_svg]:pointer-events-none", className),
59
+ ...props
60
+ });
61
+ }
62
+ function InputGroupInput({ className, ...props }) {
63
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Input, {
64
+ "data-slot": "input-group-control",
65
+ className: cn("rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 aria-invalid:ring-0 dark:bg-transparent flex-1", className),
66
+ ...props
67
+ });
68
+ }
69
+ //#endregion
70
+ export { InputGroupText as a, InputGroupInput as i, InputGroupAddon as n, Textarea as o, InputGroupButton as r, InputGroup as t };