@hot-updater/console 0.36.6 → 1.0.0-rc.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 (266) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/assets/AnalyticsCapabilityContext-BCke57-7.js +1 -0
  3. package/.output/public/assets/BundleActivityChart-CnsBe_1J.js +42 -0
  4. package/.output/public/assets/BundleIdDisplay-Dky75zLU.js +1 -0
  5. package/.output/public/assets/alert-C-1KvDW8.js +1 -0
  6. package/.output/public/assets/analytics-Bqz0c-BT.js +1 -0
  7. package/.output/public/assets/analytics-api-CJdrTLLO.js +1 -0
  8. package/.output/public/assets/api-B_Rh-uzC.js +1 -0
  9. package/.output/public/assets/api-keys-BurCFhzH.js +1 -0
  10. package/.output/public/assets/api-keys-api-BEDJdQg3.js +1 -0
  11. package/.output/public/assets/badge-Bf0fZ-Gx.js +1 -0
  12. package/.output/public/assets/chart-no-axes-combined-FaYMGmQS.js +1 -0
  13. package/.output/public/assets/createServerFn-gM2-LFBy.js +3 -0
  14. package/.output/public/assets/dialog-BS60BRr2.js +1 -0
  15. package/.output/public/assets/dist-DspNKfMj.js +1 -0
  16. package/.output/public/assets/download-O-yNBc9H.js +1 -0
  17. package/.output/public/assets/field-Buq148-A.js +1 -0
  18. package/.output/public/assets/index-kFhd2S78.js +10 -0
  19. package/.output/public/assets/installations-BrQ-od41.js +2 -0
  20. package/.output/public/assets/installations-CGlZ3ROz.js +1 -0
  21. package/.output/public/assets/lazyRouteComponent-rPzgA7S-.js +1 -0
  22. package/.output/public/assets/loader-circle-DCYF-wJl.js +1 -0
  23. package/.output/public/assets/preload-helper-TKOBYGYD.js +1 -0
  24. package/.output/public/assets/refresh-cw-n8XYbPPj.js +1 -0
  25. package/.output/public/assets/routes-CrdokJ80.js +1 -0
  26. package/.output/public/assets/routes-DcQnVajO.js +2 -0
  27. package/.output/public/assets/search-DLhbWw3W.js +1 -0
  28. package/.output/public/assets/shield-check-DE_hVuHu.js +1 -0
  29. package/.output/public/assets/signing-HRexfjsH.js +1 -0
  30. package/.output/public/assets/styles-eB4EtvFS.css +2 -0
  31. package/.output/public/assets/table-D8CLieHX.js +1 -0
  32. package/.output/public/assets/textarea-YJLTVAoq.js +1 -0
  33. package/.output/public/assets/useMutation-JsGVjQMY.js +1 -0
  34. package/.output/public/assets/useOpenInteractionType-4cRD5xO0.js +1 -0
  35. package/.output/server/__23tanstack-start-server-fn-resolver-DBP9TQ7K.mjs +146 -0
  36. package/.output/server/_libs/@base-ui/react+[...].mjs +16124 -0
  37. package/.output/server/_libs/@reduxjs/toolkit+[...].mjs +1554 -0
  38. package/.output/server/_libs/@tanstack/react-router+[...].mjs +41 -10
  39. package/.output/server/_libs/@tanstack/react-router-ssr-query+[...].mjs +132 -0
  40. package/.output/server/_libs/d3-array.mjs +231 -0
  41. package/.output/server/_libs/d3-color.mjs +330 -0
  42. package/.output/server/_libs/d3-format.mjs +252 -0
  43. package/.output/server/_libs/d3-interpolate.mjs +207 -0
  44. package/.output/server/_libs/d3-path.mjs +77 -0
  45. package/.output/server/_libs/d3-scale+[...].mjs +1907 -0
  46. package/.output/server/_libs/d3-shape.mjs +818 -0
  47. package/.output/server/_libs/decimal.js-light.mjs +884 -0
  48. package/.output/server/_libs/es-toolkit.mjs +1134 -0
  49. package/.output/server/_libs/eventemitter3.mjs +236 -0
  50. package/.output/server/_libs/immer.mjs +532 -0
  51. package/.output/server/_libs/lucide-react.mjs +141 -13
  52. package/.output/server/_libs/next-themes.mjs +2 -2
  53. package/.output/server/_libs/react-redux+[...].mjs +205 -0
  54. package/.output/server/_libs/recharts+[...].mjs +14117 -0
  55. package/.output/server/_libs/sonner.mjs +2 -2
  56. package/.output/server/_libs/tanstack__query-core.mjs +114 -1
  57. package/.output/server/_libs/tanstack__react-query.mjs +3 -4
  58. package/.output/server/_runtime.mjs +10 -1
  59. package/.output/server/_ssr/AnalyticsCapabilityContext-ui4DX8GO.mjs +15 -0
  60. package/.output/server/_ssr/BundleActivityChart-BiB9ZORH.mjs +288 -0
  61. package/.output/server/_ssr/BundleIdDisplay-Czk6iR6p.mjs +13 -0
  62. package/.output/server/_ssr/alert-Dim3MGY5.mjs +86 -0
  63. package/.output/server/_ssr/analytics-DtMTn8fn.mjs +858 -0
  64. package/.output/server/_ssr/analytics-api-Cg1M5v_H.mjs +71 -0
  65. package/.output/server/_ssr/analytics-input-fRRRn0uA.mjs +96 -0
  66. package/.output/server/_ssr/analytics-rpc-DY5uXvHT.mjs +155 -0
  67. package/.output/server/_ssr/api-BTSv1tZb.mjs +282 -0
  68. package/.output/server/_ssr/api-keys-BnM_o2nS.mjs +300 -0
  69. package/.output/server/_ssr/api-keys-api-CIywsSF5.mjs +60 -0
  70. package/.output/server/_ssr/api-keys-rpc-BSp1wkIV.mjs +136 -0
  71. package/.output/server/_ssr/api-rpc-cG5wd_tO.mjs +1468 -0
  72. package/.output/server/_ssr/auth-BF8mbAgF.mjs +21 -0
  73. package/.output/server/_ssr/auth-rpc-BrJ6obHJ.mjs +24 -0
  74. package/.output/server/_ssr/auth.server-DwKoZoQM.mjs +50 -0
  75. package/.output/server/_ssr/badge-DCxbEeof.mjs +26 -0
  76. package/.output/server/_ssr/bundle-signing-rpc-COoQhW8E.mjs +16 -0
  77. package/.output/server/_ssr/bundle-signing.server-D5u8KkMp.mjs +51 -0
  78. package/.output/server/_ssr/config-Dv8qLDZ0.mjs +13 -0
  79. package/.output/server/_ssr/config.server-DEiLhKmy.mjs +361 -0
  80. package/.output/server/_ssr/{createServerFn-DzU0k62V.mjs → createServerFn-B2hcXoPM.mjs} +1 -1
  81. package/.output/server/_ssr/createServerRpc-DB29C_5p.mjs +12 -0
  82. package/.output/server/_ssr/{sidebar-Cv_H0_Jv.mjs → createSsrRpc-9P0S0lJ3.mjs} +68 -50
  83. package/.output/server/_ssr/databaseRows-CwbNwYSl.mjs +166 -0
  84. package/.output/server/_ssr/deleteBundle-Cu_XOMt0.mjs +66 -0
  85. package/.output/server/_ssr/dialog-CQuRMNZ4.mjs +170 -0
  86. package/.output/server/_ssr/dist-BVSLTpoP.mjs +250 -0
  87. package/.output/server/_ssr/downloadBundle-CNnYxYO2.mjs +24 -0
  88. package/.output/server/_ssr/{empty-plugin-adapters-B4HCzgmM.mjs → empty-plugin-adapters-B5QvGpEl.mjs} +1 -1
  89. package/.output/server/_ssr/field-DRIXKjZG.mjs +74 -0
  90. package/.output/server/_ssr/{getBundleChildren-CVtSiH5t.mjs → getBundleChildren-BcRMFoDF.mjs} +10 -18
  91. package/.output/server/_ssr/installations-B-azgAvX.mjs +19 -0
  92. package/.output/server/_ssr/installations-Ctvzp2JH.mjs +535 -0
  93. package/.output/server/_ssr/router-C-KUBfOi.mjs +513 -0
  94. package/.output/server/_ssr/routes-BM4ht9jb.mjs +2286 -0
  95. package/.output/server/_ssr/routes-Z7TwC6nC.mjs +37 -0
  96. package/.output/server/_ssr/runtime.server-awTLiiXW.mjs +527 -0
  97. package/.output/server/_ssr/server-BjzmvXnO.mjs +7468 -0
  98. package/.output/server/_ssr/signing-k8GxyBDF.mjs +202 -0
  99. package/.output/server/_ssr/ssr.mjs +4 -5740
  100. package/.output/server/_ssr/start-DpViQGnt.mjs +4 -0
  101. package/.output/server/_ssr/table-v1yCvYo7.mjs +53 -0
  102. package/.output/server/_ssr/textarea-DYHnskhb.mjs +14 -0
  103. package/.output/server/_ssr/uuidv7-BbJ-9D_I.mjs +31 -0
  104. package/.output/server/_tanstack-start-manifest_v-CH4StzJu.mjs +108 -0
  105. package/.output/server/index.mjs +249 -46
  106. package/README.md +29 -8
  107. package/lib/index.d.mts +36 -0
  108. package/lib/index.mjs +4 -0
  109. package/lib/vite-internal.mjs +127 -0
  110. package/lib/vite.d.mts +10 -0
  111. package/lib/vite.mjs +5 -0
  112. package/package.json +51 -29
  113. package/public/apple-touch-icon.png +0 -0
  114. package/public/favicon-16x16.png +0 -0
  115. package/public/favicon-32x32.png +0 -0
  116. package/public/favicon.ico +0 -0
  117. package/public/logo.svg +1 -0
  118. package/public/manifest.json +30 -0
  119. package/public/robots.txt +3 -0
  120. package/src/components/AppSidebar.tsx +159 -0
  121. package/src/components/BundleIdDisplay.tsx +18 -0
  122. package/src/components/ChannelBadge.tsx +31 -0
  123. package/src/components/ConsoleAccessPage.tsx +122 -0
  124. package/src/components/EnabledStatusIcon.tsx +54 -0
  125. package/src/components/HashValueDisplay.tsx +85 -0
  126. package/src/components/HotUpdaterLogo.tsx +30 -0
  127. package/src/components/NotFoundPage.tsx +33 -0
  128. package/src/components/PlatformIcon.tsx +39 -0
  129. package/src/components/RolloutPercentageBadge.tsx +28 -0
  130. package/src/components/ThemeProvider.tsx +116 -0
  131. package/src/components/TimestampDisplay.tsx +41 -0
  132. package/src/components/features/analytics/ActivityChart.tsx +150 -0
  133. package/src/components/features/analytics/AnalyticsCapabilityContext.tsx +24 -0
  134. package/src/components/features/analytics/AnalyticsControls.tsx +115 -0
  135. package/src/components/features/analytics/AnalyticsErrorAlert.tsx +21 -0
  136. package/src/components/features/analytics/AnalyticsOverview.tsx +208 -0
  137. package/src/components/features/analytics/BundleDistribution.tsx +133 -0
  138. package/src/components/features/analytics/BundleSelector.tsx +114 -0
  139. package/src/components/features/analytics/InstallationHistoryCard.tsx +248 -0
  140. package/src/components/features/analytics/InstallationMatchesCard.tsx +132 -0
  141. package/src/components/features/analytics/InstallationPageHeader.tsx +138 -0
  142. package/src/components/features/analytics/InstallationPagination.tsx +48 -0
  143. package/src/components/features/analytics/InstallationSearch.tsx +230 -0
  144. package/src/components/features/analytics/UpdateOutcomes.tsx +147 -0
  145. package/src/components/features/api-keys/ApiKeysPage.tsx +377 -0
  146. package/src/components/features/bundles/BundleActivityChart.tsx +193 -0
  147. package/src/components/features/bundles/BundleAnalyticsSummary.tsx +123 -0
  148. package/src/components/features/bundles/BundleChildrenPanel.tsx +201 -0
  149. package/src/components/features/bundles/BundleMetadata.tsx +136 -0
  150. package/src/components/features/bundles/RolloutCohortsDialog.tsx +201 -0
  151. package/src/components/features/channels/ChannelManagementDialog.tsx +228 -0
  152. package/src/components/features/releases/ReleaseEditorSheet.tsx +879 -0
  153. package/src/components/features/releases/ReleaseStateBadge.tsx +20 -0
  154. package/src/components/features/signing/BundleSigningPage.tsx +247 -0
  155. package/src/components/ui/alert-dialog.tsx +185 -0
  156. package/src/components/ui/alert.tsx +76 -0
  157. package/src/components/ui/badge.tsx +49 -0
  158. package/src/components/ui/button.tsx +58 -0
  159. package/src/components/ui/card.tsx +89 -0
  160. package/src/components/ui/chart.tsx +371 -0
  161. package/src/components/ui/combobox.tsx +303 -0
  162. package/src/components/ui/dialog.tsx +156 -0
  163. package/src/components/ui/dropdown-menu.tsx +270 -0
  164. package/src/components/ui/field.tsx +235 -0
  165. package/src/components/ui/input-group.tsx +147 -0
  166. package/src/components/ui/input.tsx +19 -0
  167. package/src/components/ui/label.tsx +25 -0
  168. package/src/components/ui/progress.tsx +84 -0
  169. package/src/components/ui/select.tsx +205 -0
  170. package/src/components/ui/separator.tsx +23 -0
  171. package/src/components/ui/sheet.tsx +132 -0
  172. package/src/components/ui/sidebar.tsx +779 -0
  173. package/src/components/ui/skeleton.tsx +13 -0
  174. package/src/components/ui/slider.tsx +56 -0
  175. package/src/components/ui/sonner.tsx +45 -0
  176. package/src/components/ui/switch.tsx +25 -0
  177. package/src/components/ui/table.tsx +114 -0
  178. package/src/components/ui/textarea.tsx +18 -0
  179. package/src/components/ui/toggle-group.tsx +89 -0
  180. package/src/components/ui/toggle.tsx +43 -0
  181. package/src/components/ui/tooltip.tsx +66 -0
  182. package/src/hooks/use-mobile.ts +30 -0
  183. package/src/index.ts +48 -0
  184. package/src/lib/analytics-api.ts +145 -0
  185. package/src/lib/analytics-error.ts +19 -0
  186. package/src/lib/analytics-input.ts +187 -0
  187. package/src/lib/analytics-overview.ts +170 -0
  188. package/src/lib/analytics-rpc.ts +218 -0
  189. package/src/lib/api-keys-api.ts +69 -0
  190. package/src/lib/api-keys-rpc.ts +87 -0
  191. package/src/lib/api-rpc.ts +478 -0
  192. package/src/lib/api.ts +444 -0
  193. package/src/lib/auth-rpc.ts +16 -0
  194. package/src/lib/bundle-signing-api.ts +14 -0
  195. package/src/lib/bundle-signing-rpc.ts +16 -0
  196. package/src/lib/constants.ts +1 -0
  197. package/src/lib/git.ts +51 -0
  198. package/src/lib/server/auth.server.ts +43 -0
  199. package/src/lib/server/bundle-signing.server.ts +100 -0
  200. package/src/lib/server/config.server.ts +109 -0
  201. package/src/lib/server/console-runtime.server.ts +70 -0
  202. package/src/lib/server/deleteBundle.ts +145 -0
  203. package/src/lib/server/downloadBundle.ts +46 -0
  204. package/src/lib/server/getBundleChildren.ts +130 -0
  205. package/src/lib/server/listReleases.ts +61 -0
  206. package/src/lib/server/releaseActivity.ts +27 -0
  207. package/src/lib/server/releaseReachability.ts +95 -0
  208. package/src/lib/server/runtime.server.ts +172 -0
  209. package/src/lib/utils.ts +9 -0
  210. package/src/logo.svg +1 -0
  211. package/src/routeTree.gen.ts +199 -0
  212. package/src/router.tsx +21 -0
  213. package/src/routes/-installations-search.ts +19 -0
  214. package/src/routes/-releases-search.ts +74 -0
  215. package/src/routes/__root.tsx +174 -0
  216. package/src/routes/analytics.tsx +139 -0
  217. package/src/routes/api/auth/$.ts +19 -0
  218. package/src/routes/api/bundles/$bundleId/download.ts +17 -0
  219. package/src/routes/api-keys.tsx +37 -0
  220. package/src/routes/index.tsx +982 -0
  221. package/src/routes/installations.tsx +194 -0
  222. package/src/routes/signing.tsx +37 -0
  223. package/src/styles.css +152 -0
  224. package/src/virtual-modules.d.ts +21 -0
  225. package/src/vite-env.d.ts +1 -0
  226. package/src/vite-internal.ts +195 -0
  227. package/src/vite.ts +12 -0
  228. package/.output/public/assets/dist-DJX53faP.js +0 -3
  229. package/.output/public/assets/index-Iylis5kY.js +0 -10
  230. package/.output/public/assets/routes-HT21hs0C.js +0 -54
  231. package/.output/public/assets/styles-C0Re4quB.css +0 -2
  232. package/.output/server/__23tanstack-start-server-fn-resolver-CgwgZ0-i.mjs +0 -66
  233. package/.output/server/_libs/@floating-ui/core+[...].mjs +0 -698
  234. package/.output/server/_libs/@floating-ui/dom+[...].mjs +0 -644
  235. package/.output/server/_libs/@floating-ui/react-dom+[...].mjs +0 -839
  236. package/.output/server/_libs/@radix-ui/react-alert-dialog+[...].mjs +0 -2138
  237. package/.output/server/_libs/@radix-ui/react-popper+[...].mjs +0 -308
  238. package/.output/server/_libs/@radix-ui/react-select+[...].mjs +0 -1038
  239. package/.output/server/_libs/@tanstack/devtools-event-client+[...].mjs +0 -196
  240. package/.output/server/_libs/@tanstack/form-core+[...].mjs +0 -3228
  241. package/.output/server/_libs/@tanstack/react-form+[...].mjs +0 -430
  242. package/.output/server/_libs/@tanstack/react-table+[...].mjs +0 -2382
  243. package/.output/server/_libs/radix-ui__number.mjs +0 -6
  244. package/.output/server/_libs/radix-ui__primitive.mjs +0 -9
  245. package/.output/server/_libs/radix-ui__react-arrow.mjs +0 -23
  246. package/.output/server/_libs/radix-ui__react-collection.mjs +0 -78
  247. package/.output/server/_libs/radix-ui__react-direction.mjs +0 -13
  248. package/.output/server/_libs/radix-ui__react-label.mjs +0 -22
  249. package/.output/server/_libs/radix-ui__react-separator.mjs +0 -30
  250. package/.output/server/_libs/radix-ui__react-slider.mjs +0 -510
  251. package/.output/server/_libs/radix-ui__react-switch.mjs +0 -157
  252. package/.output/server/_libs/radix-ui__react-tooltip.mjs +0 -493
  253. package/.output/server/_ssr/api-rpc-BIbDUKSz.mjs +0 -292
  254. package/.output/server/_ssr/config.server-BSS366KT.mjs +0 -41
  255. package/.output/server/_ssr/deleteBundle-BgbZTtpW.mjs +0 -141
  256. package/.output/server/_ssr/dist-KboydRVk.mjs +0 -120
  257. package/.output/server/_ssr/router-C3hqEy3k.mjs +0 -307
  258. package/.output/server/_ssr/routes-B0lQvvlC.mjs +0 -3048
  259. package/.output/server/_ssr/start-02sLteYG.mjs +0 -4
  260. package/.output/server/_ssr/storageProfile-FVkjPoGb.mjs +0 -9
  261. package/.output/server/_tanstack-start-manifest_v-Bpx52WOU.mjs +0 -20
  262. package/.output/server/node_modules/tslib/modules/index.js +0 -70
  263. package/.output/server/node_modules/tslib/modules/package.json +0 -3
  264. package/.output/server/node_modules/tslib/package.json +0 -47
  265. package/.output/server/node_modules/tslib/tslib.js +0 -484
  266. package/.output/server/package.json +0 -9
@@ -0,0 +1,21 @@
1
+ //#region node_modules/.nitro/vite/services/ssr/assets/auth-BF8mbAgF.js
2
+ var principal = {
3
+ email: "local@hot-updater.dev",
4
+ name: "Local Console"
5
+ };
6
+ var auth_default = {
7
+ async handle() {
8
+ return new Response("Not Found", { status: 404 });
9
+ },
10
+ async getAccess() {
11
+ return {
12
+ status: "authorized",
13
+ principal
14
+ };
15
+ },
16
+ async getProviders() {
17
+ return [];
18
+ }
19
+ };
20
+ //#endregion
21
+ export { auth_default as default };
@@ -0,0 +1,24 @@
1
+ import { c as createServerFn } from "./createServerFn-B2hcXoPM.mjs";
2
+ import { t as createServerRpc } from "./createServerRpc-DB29C_5p.mjs";
3
+ import { r as getRequest } from "./server-BjzmvXnO.mjs";
4
+ //#region node_modules/.nitro/vite/services/ssr/assets/auth-rpc-BrJ6obHJ.js
5
+ var getConsoleAccessRpc_createServerFn_handler = createServerRpc({
6
+ id: "c504696e68ba764b48c48aa8a40275938640941e473cf9cfdd7b2322d99f9d13",
7
+ name: "getConsoleAccessRpc",
8
+ filename: "src/lib/auth-rpc.ts"
9
+ }, (opts) => getConsoleAccessRpc.__executeServer(opts));
10
+ var getConsoleAccessRpc = createServerFn({ method: "GET" }).handler(getConsoleAccessRpc_createServerFn_handler, async () => {
11
+ const { getConsoleAccess } = await import("./auth.server-DwKoZoQM.mjs");
12
+ return getConsoleAccess(getRequest());
13
+ });
14
+ var getConsoleAuthProvidersRpc_createServerFn_handler = createServerRpc({
15
+ id: "fa8c48f0489d97c62b9b68fd0caf0a61b15bad25a42b3866ec36264b4b30bb74",
16
+ name: "getConsoleAuthProvidersRpc",
17
+ filename: "src/lib/auth-rpc.ts"
18
+ }, (opts) => getConsoleAuthProvidersRpc.__executeServer(opts));
19
+ var getConsoleAuthProvidersRpc = createServerFn({ method: "GET" }).handler(getConsoleAuthProvidersRpc_createServerFn_handler, async () => {
20
+ const { getConsoleAuthProviders } = await import("./auth.server-DwKoZoQM.mjs");
21
+ return getConsoleAuthProviders(getRequest());
22
+ });
23
+ //#endregion
24
+ export { getConsoleAccessRpc_createServerFn_handler, getConsoleAuthProvidersRpc_createServerFn_handler };
@@ -0,0 +1,50 @@
1
+ import path from "node:path";
2
+ //#region node_modules/.nitro/vite/services/ssr/assets/auth.server-DwKoZoQM.js
3
+ var readString = (value, key) => {
4
+ if (typeof value !== "object" || value === null) return void 0;
5
+ const member = Reflect.get(value, key);
6
+ return typeof member === "string" && member.trim().length > 0 ? member.trim() : void 0;
7
+ };
8
+ var getProviderName = (signing) => {
9
+ return readString(signing, "name")?.slice(0, 80) ?? (readString(signing, "privateKeyPath") ? "localSigning" : void 0) ?? "Configured provider";
10
+ };
11
+ var sanitizeConsoleSigningConfig = (signing) => {
12
+ if (typeof signing !== "object" || signing === null) return void 0;
13
+ const privateKeyPath = readString(signing, "privateKeyPath");
14
+ if (Reflect.get(signing, "enabled") === false || privateKeyPath && Reflect.get(signing, "enabled") !== true) return void 0;
15
+ const publicKeyPath = readString(signing, "publicKeyPath") ?? (privateKeyPath ? path.join(path.dirname(privateKeyPath), "public-key.pem") : void 0);
16
+ return {
17
+ enabled: true,
18
+ provider: getProviderName(signing),
19
+ ...publicKeyPath === void 0 ? {} : { publicKeyPath }
20
+ };
21
+ };
22
+ var getConsoleAuthAdapter = async () => {
23
+ return (await import("./auth-BF8mbAgF.mjs")).default;
24
+ };
25
+ var resolveConsoleConfig = async (request) => {
26
+ const { default: source } = await import("./config-Dv8qLDZ0.mjs");
27
+ const { signing: signingSource, ...configWithoutSigning } = typeof source === "function" ? await source(request) : source;
28
+ const signing = sanitizeConsoleSigningConfig(signingSource);
29
+ return {
30
+ ...configWithoutSigning,
31
+ ...signing === void 0 ? {} : { signing }
32
+ };
33
+ };
34
+ var accessError = (access) => new Response(access.status === "unauthenticated" ? "Unauthorized" : "Forbidden", { status: access.status === "unauthenticated" ? 401 : 403 });
35
+ var getConsoleAccess = async (request) => {
36
+ return (await getConsoleAuthAdapter()).getAccess(request);
37
+ };
38
+ var getConsoleAuthProviders = async (request) => {
39
+ return (await getConsoleAuthAdapter()).getProviders(request);
40
+ };
41
+ var handleConsoleAuth = async (request) => {
42
+ return (await getConsoleAuthAdapter()).handle(request);
43
+ };
44
+ var requireConsoleAccess = async (request) => {
45
+ const access = await getConsoleAccess(request);
46
+ if (access.status !== "authorized") throw accessError(access);
47
+ return access.principal;
48
+ };
49
+ //#endregion
50
+ export { getConsoleAccess, getConsoleAuthProviders, handleConsoleAuth, requireConsoleAccess, resolveConsoleConfig as t };
@@ -0,0 +1,26 @@
1
+ import { nt as useRender, rt as mergeProps } from "../_libs/@base-ui/react+[...].mjs";
2
+ import { t as cva } from "../_libs/class-variance-authority+clsx.mjs";
3
+ import { C as cn } from "./createSsrRpc-9P0S0lJ3.mjs";
4
+ //#region node_modules/.nitro/vite/services/ssr/assets/badge-DCxbEeof.js
5
+ var badgeVariants = cva("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2", {
6
+ variants: { variant: {
7
+ default: "border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",
8
+ secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
9
+ destructive: "border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",
10
+ outline: "text-foreground"
11
+ } },
12
+ defaultVariants: { variant: "default" }
13
+ });
14
+ function Badge({ className, variant = "default", render, ...props }) {
15
+ return useRender({
16
+ defaultTagName: "span",
17
+ props: mergeProps({ className: cn(badgeVariants({ variant }), className) }, props),
18
+ render,
19
+ state: {
20
+ slot: "badge",
21
+ variant
22
+ }
23
+ });
24
+ }
25
+ //#endregion
26
+ export { Badge as t };
@@ -0,0 +1,16 @@
1
+ import { c as createServerFn } from "./createServerFn-B2hcXoPM.mjs";
2
+ import { t as createServerRpc } from "./createServerRpc-DB29C_5p.mjs";
3
+ //#region node_modules/.nitro/vite/services/ssr/assets/bundle-signing-rpc-COoQhW8E.js
4
+ var getBundleSigningInspection = async () => {
5
+ const [{ prepareConfig }, { inspectBundleSigning }] = await Promise.all([import("./config.server-DEiLhKmy.mjs"), import("./bundle-signing.server-D5u8KkMp.mjs")]);
6
+ const { config } = await prepareConfig();
7
+ return inspectBundleSigning(config.signing);
8
+ };
9
+ var getBundleSigningInspectionRpc_createServerFn_handler = createServerRpc({
10
+ id: "662034966679a6d29db2b55e7ba665e26e6c9a58a5529f33aa857a2049616233",
11
+ name: "getBundleSigningInspectionRpc",
12
+ filename: "src/lib/bundle-signing-rpc.ts"
13
+ }, (opts) => getBundleSigningInspectionRpc.__executeServer(opts));
14
+ var getBundleSigningInspectionRpc = createServerFn({ method: "GET" }).handler(getBundleSigningInspectionRpc_createServerFn_handler, getBundleSigningInspection);
15
+ //#endregion
16
+ export { getBundleSigningInspectionRpc_createServerFn_handler };
@@ -0,0 +1,51 @@
1
+ import { createHash, createPublicKey } from "node:crypto";
2
+ import path from "node:path";
3
+ import { readFile, stat } from "node:fs/promises";
4
+ //#region node_modules/.nitro/vite/services/ssr/assets/bundle-signing.server-D5u8KkMp.js
5
+ var MAX_PUBLIC_KEY_BYTES = 16 * 1024;
6
+ var DEFAULT_PROVIDER = "Configured provider";
7
+ var PUBLIC_KEY_HEADER = "-----BEGIN PUBLIC KEY-----";
8
+ var PUBLIC_KEY_FOOTER = "-----END PUBLIC KEY-----";
9
+ var misconfigured = (provider, message) => ({
10
+ message,
11
+ provider,
12
+ status: "misconfigured"
13
+ });
14
+ var isSpkiPublicKeyPem = (value) => {
15
+ const trimmed = value.trim();
16
+ return trimmed.startsWith(PUBLIC_KEY_HEADER) && trimmed.endsWith(PUBLIC_KEY_FOOTER) && !trimmed.includes("PRIVATE KEY");
17
+ };
18
+ var inspectBundleSigning = async (signing) => {
19
+ if (!signing?.enabled) return { status: "disabled" };
20
+ const provider = signing.provider ?? DEFAULT_PROVIDER;
21
+ if (!signing.publicKeyPath) return misconfigured(provider, "A public key file is not configured.");
22
+ try {
23
+ const publicKeyPath = path.isAbsolute(signing.publicKeyPath) ? signing.publicKeyPath : path.resolve(process.cwd(), signing.publicKeyPath);
24
+ const publicKeyStat = await stat(publicKeyPath);
25
+ if (!publicKeyStat.isFile() || publicKeyStat.size > MAX_PUBLIC_KEY_BYTES) return misconfigured(provider, "The configured public key could not be loaded.");
26
+ const publicKeyPem = await readFile(publicKeyPath, "utf8");
27
+ if (!isSpkiPublicKeyPem(publicKeyPem)) return misconfigured(provider, "The configured public key is not a valid SPKI public key.");
28
+ const publicKey = createPublicKey(publicKeyPem);
29
+ if (publicKey.asymmetricKeyType !== "rsa") return misconfigured(provider, "The configured public key is not an RSA public key.");
30
+ if ((publicKey.asymmetricKeyDetails?.modulusLength ?? 0) < 2048) return misconfigured(provider, "The configured RSA public key must be at least 2048 bits.");
31
+ const canonicalDer = publicKey.export({
32
+ format: "der",
33
+ type: "spki"
34
+ });
35
+ const canonicalPem = publicKey.export({
36
+ format: "pem",
37
+ type: "spki"
38
+ });
39
+ return {
40
+ algorithm: "RSA-SHA256",
41
+ fingerprint: createHash("sha256").update(canonicalDer).digest("hex"),
42
+ provider,
43
+ publicKey: canonicalPem.toString().trim(),
44
+ status: "enabled"
45
+ };
46
+ } catch {
47
+ return misconfigured(provider, "The configured public key could not be loaded.");
48
+ }
49
+ };
50
+ //#endregion
51
+ export { inspectBundleSigning };
@@ -0,0 +1,13 @@
1
+ import { loadConfig } from "@hot-updater/cli-tools";
2
+ //#region node_modules/.nitro/vite/services/ssr/assets/config-Dv8qLDZ0.js
3
+ var config_default = async () => {
4
+ const config = await loadConfig(null);
5
+ return {
6
+ console: { gitUrl: config.console.gitUrl },
7
+ database: config.database,
8
+ signing: config.signing,
9
+ storage: config.storage
10
+ };
11
+ };
12
+ //#endregion
13
+ export { config_default as default };
@@ -0,0 +1,361 @@
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
6
+ /**
7
+ * Calculate pagination information based on total count, limit, and offset
8
+ */
9
+ function calculatePagination(total, options) {
10
+ const { limit, offset } = options;
11
+ if (total === 0) return {
12
+ total: 0,
13
+ hasNextPage: false,
14
+ hasPreviousPage: false,
15
+ currentPage: 1,
16
+ totalPages: 0
17
+ };
18
+ const currentPage = Math.floor(offset / limit) + 1;
19
+ const totalPages = Math.ceil(total / limit);
20
+ return {
21
+ total,
22
+ hasNextPage: offset + limit < total,
23
+ hasPreviousPage: offset > 0,
24
+ currentPage,
25
+ totalPages
26
+ };
27
+ }
28
+ var isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
29
+ var validateBundlePagination = (options) => {
30
+ 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
+ const cursor = options.cursor;
32
+ if (cursor === void 0) return;
33
+ if (!isRecord(cursor)) throw new DatabasePluginInputError("invalid-pagination");
34
+ const hasAfter = Object.hasOwn(cursor, "after");
35
+ if (hasAfter === Object.hasOwn(cursor, "before")) throw new DatabasePluginInputError("invalid-pagination");
36
+ const value = hasAfter ? cursor.after : cursor.before;
37
+ if (typeof value !== "string" || value.length === 0) throw new DatabasePluginInputError("invalid-pagination");
38
+ };
39
+ var DatabaseAtomicCommitUnsupportedError = class extends Error {
40
+ name = "DatabaseAtomicCommitUnsupportedError";
41
+ constructor(pluginName) {
42
+ super(`Database plugin "${pluginName}" cannot atomically commit changes across models.`);
43
+ this.pluginName = pluginName;
44
+ }
45
+ };
46
+ /**
47
+ * Internal provider signal for a delete rejected by a live reference.
48
+ *
49
+ * Provider implementations throw this after translating their native
50
+ * foreign-key or reference-condition error. The public database contract
51
+ * observes only the indexed `referenced` commit conflict.
52
+ */
53
+ var DatabaseRowReferencedError = class extends Error {
54
+ name = "DatabaseRowReferencedError";
55
+ constructor() {
56
+ super("The database row is still referenced.");
57
+ }
58
+ };
59
+ function assertStorageOperations(plugin, operations) {
60
+ for (const operation of operations) if (typeof plugin[operation] !== "function") throw new Error(`Storage plugin "${plugin.name}" does not implement ${operation}.`);
61
+ }
62
+ var DatabasePatchUpdateUnsupportedError = class extends Error {
63
+ name = "DatabasePatchUpdateUnsupportedError";
64
+ constructor(bundleId, pluginName) {
65
+ super(`Database plugin "${pluginName}" cannot atomically replace patches for bundle "${bundleId}".`);
66
+ this.bundleId = bundleId;
67
+ this.pluginName = pluginName;
68
+ }
69
+ };
70
+ var bundleUpdateToRow = (update, _channelId) => {
71
+ return {
72
+ ...update.platform !== void 0 ? { platform: update.platform } : {},
73
+ ...update.fileHash !== void 0 ? { file_hash: update.fileHash } : {},
74
+ ...update.gitCommitHash !== void 0 ? { git_commit_hash: update.gitCommitHash } : {},
75
+ ...update.storageUri !== void 0 ? { storage_uri: update.storageUri } : {},
76
+ ...update.archiveByteSize !== void 0 ? { archive_byte_size: update.archiveByteSize } : {},
77
+ ...update.metadata !== void 0 ? { metadata: bundleMetadataToRow(update.metadata) } : {},
78
+ ...update.manifestStorageUri !== void 0 ? { manifest_storage_uri: update.manifestStorageUri } : {},
79
+ ...update.manifestFileHash !== void 0 ? { manifest_file_hash: update.manifestFileHash } : {},
80
+ ...update.assetBaseStorageUri !== void 0 ? { asset_base_storage_uri: update.assetBaseStorageUri } : {}
81
+ };
82
+ };
83
+ var bundleUpdateToPatchRows = (bundleId, update) => getBundlePatches({ patches: update.patches }).map((patch, orderIndex) => ({
84
+ id: `${bundleId}:${patch.baseBundleId}`,
85
+ bundle_id: bundleId,
86
+ base_bundle_id: patch.baseBundleId,
87
+ base_file_hash: patch.baseFileHash,
88
+ patch_file_hash: patch.patchFileHash,
89
+ patch_storage_uri: patch.patchStorageUri,
90
+ byte_size: patch.byteSize,
91
+ order_index: orderIndex
92
+ }));
93
+ var PAGE_SIZE = 100;
94
+ var mergeIdFilter = (where, id) => ({
95
+ ...where,
96
+ id: {
97
+ ...where?.id,
98
+ ...id
99
+ }
100
+ });
101
+ var loadBundleRows = async (database, where) => {
102
+ const finiteIds = where?.id?.in;
103
+ if (finiteIds) {
104
+ if (finiteIds.length === 0) return [];
105
+ return [...await database.models.bundles.findMany({
106
+ where,
107
+ limit: finiteIds.length,
108
+ offset: 0,
109
+ orderBy: {
110
+ field: "id",
111
+ direction: "asc"
112
+ }
113
+ })];
114
+ }
115
+ const [cutoff] = await database.models.bundles.findMany({
116
+ where,
117
+ limit: 1,
118
+ offset: 0,
119
+ orderBy: {
120
+ field: "id",
121
+ direction: "desc"
122
+ }
123
+ });
124
+ if (!cutoff) return [];
125
+ const rows = [];
126
+ let after;
127
+ for (;;) {
128
+ const page = await database.models.bundles.findMany({
129
+ where: mergeIdFilter(where, {
130
+ lte: cutoff.id,
131
+ ...after ? { gt: after } : {}
132
+ }),
133
+ limit: PAGE_SIZE,
134
+ offset: 0,
135
+ orderBy: {
136
+ field: "id",
137
+ direction: "asc"
138
+ }
139
+ });
140
+ rows.push(...page);
141
+ if (page.length < PAGE_SIZE) return rows;
142
+ after = page.at(-1)?.id;
143
+ }
144
+ };
145
+ var hydrateRows = async (database, ownerRows) => {
146
+ const patchRows = await database.models.bundlePatches.findByBundleIds(ownerRows.map(({ id }) => id));
147
+ const ownerIds = new Set(ownerRows.map(({ id }) => id));
148
+ const referencedIds = [...new Set(patchRows.map(({ base_bundle_id }) => base_bundle_id).filter((id) => !ownerIds.has(id)))];
149
+ return rowsToBundles(ownerRows, patchRows, referencedIds.length === 0 ? [] : await loadBundleRows(database, { id: { in: referencedIds } }));
150
+ };
151
+ var cursorIdFilter = (cursor, direction) => {
152
+ if (cursor?.after) return { [direction === "desc" ? "lt" : "gt"]: cursor.after };
153
+ if (cursor?.before) return { [direction === "desc" ? "gt" : "lt"]: cursor.before };
154
+ };
155
+ var responsePage = async (database, options) => {
156
+ validateBundlePagination(options);
157
+ const direction = options.orderBy?.direction ?? "desc";
158
+ const offset = options.page ? Math.max(0, options.page - 1) * options.limit : 0;
159
+ const cursor = options.page ? void 0 : options.cursor;
160
+ const queryLimit = cursor ? options.limit + 1 : options.limit;
161
+ if (!Number.isSafeInteger(offset) || !Number.isSafeInteger(queryLimit) || !Number.isSafeInteger(offset + queryLimit)) throw new DatabasePluginInputError("invalid-pagination");
162
+ const cursorFilter = cursorIdFilter(cursor, direction);
163
+ const where = cursorFilter ? mergeIdFilter(options.where, cursorFilter) : options.where;
164
+ const queryDirection = cursor?.before ? direction === "desc" ? "asc" : "desc" : direction;
165
+ const [queriedRows, total] = await Promise.all([database.models.bundles.findMany({
166
+ where,
167
+ limit: queryLimit,
168
+ offset,
169
+ orderBy: {
170
+ field: "id",
171
+ direction: queryDirection
172
+ }
173
+ }), database.models.bundles.count(options.where)]);
174
+ const hasMore = cursor ? queriedRows.length > options.limit : false;
175
+ const pageRows = cursor ? queriedRows.slice(0, options.limit) : queriedRows;
176
+ const ownerRows = cursor?.before ? pageRows.toReversed() : pageRows;
177
+ const pagination = calculatePagination(total, {
178
+ limit: options.limit,
179
+ offset
180
+ });
181
+ const hasPreviousPage = cursor ? Boolean(cursor.after) || hasMore : pagination.hasPreviousPage;
182
+ const hasNextPage = cursor ? Boolean(cursor.before) || hasMore : pagination.hasNextPage;
183
+ const firstId = ownerRows[0]?.id;
184
+ const lastId = ownerRows.at(-1)?.id;
185
+ return {
186
+ data: await hydrateRows(database, ownerRows),
187
+ pagination: {
188
+ ...pagination,
189
+ hasNextPage,
190
+ hasPreviousPage,
191
+ ...hasNextPage && lastId ? { nextCursor: lastId } : {},
192
+ ...hasPreviousPage && firstId ? { previousCursor: firstId } : {},
193
+ ...!firstId && cursor?.after ? { previousCursor: cursor.after } : {},
194
+ ...!lastId && cursor?.before ? { nextCursor: cursor.before } : {}
195
+ }
196
+ };
197
+ };
198
+ var DatabaseBundleNotFoundError = class extends Error {
199
+ name = "DatabaseBundleNotFoundError";
200
+ constructor(bundleId) {
201
+ super(`Bundle "${bundleId}" was not found.`);
202
+ this.bundleId = bundleId;
203
+ }
204
+ };
205
+ var DatabasePatchInsertUnsupportedError = class extends Error {
206
+ name = "DatabasePatchInsertUnsupportedError";
207
+ constructor(bundleId, pluginName) {
208
+ super(`Database plugin "${pluginName}" cannot atomically insert patches for bundle "${bundleId}".`);
209
+ this.bundleId = bundleId;
210
+ this.pluginName = pluginName;
211
+ }
212
+ };
213
+ var insertChanges = (bundle) => [{
214
+ model: "bundles",
215
+ operation: "insert",
216
+ row: bundleToRow(bundle)
217
+ }, ...bundleToPatchRows(bundle).map((row) => ({
218
+ model: "bundlePatches",
219
+ operation: "insert",
220
+ row
221
+ }))];
222
+ var updateChanges = (bundleId, update) => {
223
+ const rowUpdate = bundleUpdateToRow(update);
224
+ return [{
225
+ model: "bundles",
226
+ operation: "update",
227
+ where: { id: bundleId },
228
+ update: rowUpdate
229
+ }, ...Object.hasOwn(update, "patches") ? [{
230
+ model: "bundlePatches",
231
+ operation: "delete",
232
+ where: { bundleId }
233
+ }, ...bundleUpdateToPatchRows(bundleId, update).map((row) => ({
234
+ model: "bundlePatches",
235
+ operation: "insert",
236
+ row
237
+ }))] : []];
238
+ };
239
+ var deleteChanges = (bundleId) => [{
240
+ model: "bundles",
241
+ operation: "delete",
242
+ where: { id: bundleId }
243
+ }];
244
+ var createDatabaseClient = (plugin) => {
245
+ const getBundleById = async (id) => {
246
+ const row = await plugin.models.bundles.findById(id);
247
+ if (!row) return null;
248
+ return (await hydrateRows(plugin, [row]))[0] ?? null;
249
+ };
250
+ const insertChannel = (input) => plugin.models.channels.insert(input);
251
+ const createMutationClient = (commit) => ({
252
+ getBundleById,
253
+ getBundles: (options) => responsePage(plugin, options),
254
+ async getChannels() {
255
+ return (await plugin.models.channels.list({})).channels;
256
+ },
257
+ insertChannel,
258
+ async insertBundle(bundle) {
259
+ try {
260
+ await commit(insertChanges(bundle));
261
+ } catch (error) {
262
+ if (error instanceof DatabaseAtomicCommitUnsupportedError && bundleToPatchRows(bundle).length > 0) throw new DatabasePatchInsertUnsupportedError(bundle.id, plugin.name);
263
+ throw error;
264
+ }
265
+ },
266
+ async updateBundleById(bundleId, update) {
267
+ try {
268
+ if (!(await commit(updateChanges(bundleId, update))).committed) throw new DatabaseBundleNotFoundError(bundleId);
269
+ } catch (error) {
270
+ if (error instanceof DatabaseAtomicCommitUnsupportedError && Object.hasOwn(update, "patches")) throw new DatabasePatchUpdateUnsupportedError(bundleId, plugin.name);
271
+ throw error;
272
+ }
273
+ },
274
+ async deleteBundleById(bundleId) {
275
+ const result = await commit(deleteChanges(bundleId));
276
+ if (!result.committed && result.conflict.reason === "referenced") throw new DatabaseRowReferencedError();
277
+ }
278
+ });
279
+ const runMutation = async (operation) => {
280
+ const changes = [];
281
+ const result = await operation(createMutationClient(async (input) => {
282
+ changes.push(...input);
283
+ return { committed: true };
284
+ }));
285
+ if (changes.length === 0) return result;
286
+ const commitResult = await plugin.commit({ changes });
287
+ if (!commitResult.committed) {
288
+ const change = changes[commitResult.conflict.changeIndex];
289
+ if (commitResult.conflict.reason === "referenced" && change?.model === "bundles" && change.operation === "delete") throw new DatabaseRowReferencedError();
290
+ if (change?.model === "bundles" && change.operation === "update") throw new DatabaseBundleNotFoundError(change.where.id);
291
+ throw new Error(`Database plugin "${plugin.name}" rejected a commit.`);
292
+ }
293
+ return result;
294
+ };
295
+ return {
296
+ ...createMutationClient((changes) => plugin.commit({ changes })),
297
+ deleteChannel: (input) => plugin.models.channels.delete(input),
298
+ mutate: runMutation
299
+ };
300
+ };
301
+ var configPromise = null;
302
+ var databaseClient = null;
303
+ var hotUpdater = null;
304
+ var apiKeyStore = null;
305
+ var apiKeyStoreResolved = false;
306
+ var storagePluginPromise = null;
307
+ var loadCachedConfig = async (request) => {
308
+ if (!configPromise) configPromise = resolveConsoleConfig(request).then((config) => ({
309
+ ...config,
310
+ console: config.console ?? {}
311
+ })).catch((error) => {
312
+ configPromise = null;
313
+ throw error;
314
+ });
315
+ return configPromise;
316
+ };
317
+ var loadCachedStoragePlugin = async (config) => {
318
+ if (!storagePluginPromise) storagePluginPromise = Promise.resolve(config.storage).then((storagePlugin) => {
319
+ assertStorageOperations(storagePlugin, [
320
+ "get",
321
+ "put",
322
+ "exists",
323
+ "delete"
324
+ ]);
325
+ return storagePlugin;
326
+ }).catch((error) => {
327
+ storagePluginPromise = null;
328
+ throw error;
329
+ });
330
+ return storagePluginPromise;
331
+ };
332
+ var prepareConfig = async (request = getRequest()) => {
333
+ try {
334
+ await requireConsoleAccess(request);
335
+ const config = await loadCachedConfig(request);
336
+ if (!databaseClient) databaseClient = createDatabaseClient(config.database);
337
+ if (!hotUpdater) {
338
+ const { createRuntimeHotUpdater } = await import("./runtime.server-awTLiiXW.mjs");
339
+ hotUpdater = createRuntimeHotUpdater(config);
340
+ }
341
+ if (!apiKeyStoreResolved) {
342
+ const { createApiKeyStore } = await import("./runtime.server-awTLiiXW.mjs");
343
+ apiKeyStore = createApiKeyStore(config);
344
+ apiKeyStoreResolved = true;
345
+ }
346
+ const storagePlugin = await loadCachedStoragePlugin(config);
347
+ return {
348
+ config,
349
+ databaseClient,
350
+ hotUpdater,
351
+ apiKeyStore,
352
+ storagePlugin
353
+ };
354
+ } catch (error) {
355
+ if (!(error instanceof Response && (error.status === 401 || error.status === 403))) console.error("Error during configuration initialization:", error);
356
+ throw error;
357
+ }
358
+ };
359
+ var isConfigLoaded = () => Boolean(configPromise);
360
+ //#endregion
361
+ export { isConfigLoaded, prepareConfig };
@@ -1,5 +1,5 @@
1
1
  import { AsyncLocalStorage } from "node:async_hooks";
2
- //#region node_modules/.nitro/vite/services/ssr/assets/createServerFn-DzU0k62V.js
2
+ //#region node_modules/.nitro/vite/services/ssr/assets/createServerFn-B2hcXoPM.js
3
3
  /**
4
4
  * Create a redirect Response understood by TanStack Router.
5
5
  *
@@ -0,0 +1,12 @@
1
+ import { i as TSS_SERVER_FUNCTION } from "./createServerFn-B2hcXoPM.mjs";
2
+ //#region node_modules/.nitro/vite/services/ssr/assets/createServerRpc-DB29C_5p.js
3
+ var createServerRpc = (serverFnMeta, splitImportFn) => {
4
+ const url = "/_serverFn/" + serverFnMeta.id;
5
+ return Object.assign(splitImportFn, {
6
+ url,
7
+ serverFnMeta,
8
+ [TSS_SERVER_FUNCTION]: true
9
+ });
10
+ };
11
+ //#endregion
12
+ export { createServerRpc as t };