@hot-updater/console 0.36.7 → 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.
- package/.output/nitro.json +1 -1
- package/.output/public/assets/AnalyticsCapabilityContext-BCke57-7.js +1 -0
- package/.output/public/assets/BundleActivityChart-CnsBe_1J.js +42 -0
- package/.output/public/assets/BundleIdDisplay-Dky75zLU.js +1 -0
- package/.output/public/assets/alert-C-1KvDW8.js +1 -0
- package/.output/public/assets/analytics-Bqz0c-BT.js +1 -0
- package/.output/public/assets/analytics-api-CJdrTLLO.js +1 -0
- package/.output/public/assets/api-B_Rh-uzC.js +1 -0
- package/.output/public/assets/api-keys-BurCFhzH.js +1 -0
- package/.output/public/assets/api-keys-api-BEDJdQg3.js +1 -0
- package/.output/public/assets/badge-Bf0fZ-Gx.js +1 -0
- package/.output/public/assets/chart-no-axes-combined-FaYMGmQS.js +1 -0
- package/.output/public/assets/createServerFn-gM2-LFBy.js +3 -0
- package/.output/public/assets/dialog-BS60BRr2.js +1 -0
- package/.output/public/assets/dist-DspNKfMj.js +1 -0
- package/.output/public/assets/download-O-yNBc9H.js +1 -0
- package/.output/public/assets/field-Buq148-A.js +1 -0
- package/.output/public/assets/index-kFhd2S78.js +10 -0
- package/.output/public/assets/installations-BrQ-od41.js +2 -0
- package/.output/public/assets/installations-CGlZ3ROz.js +1 -0
- package/.output/public/assets/lazyRouteComponent-rPzgA7S-.js +1 -0
- package/.output/public/assets/loader-circle-DCYF-wJl.js +1 -0
- package/.output/public/assets/preload-helper-TKOBYGYD.js +1 -0
- package/.output/public/assets/refresh-cw-n8XYbPPj.js +1 -0
- package/.output/public/assets/routes-CrdokJ80.js +1 -0
- package/.output/public/assets/routes-DcQnVajO.js +2 -0
- package/.output/public/assets/search-DLhbWw3W.js +1 -0
- package/.output/public/assets/shield-check-DE_hVuHu.js +1 -0
- package/.output/public/assets/signing-HRexfjsH.js +1 -0
- package/.output/public/assets/styles-eB4EtvFS.css +2 -0
- package/.output/public/assets/table-D8CLieHX.js +1 -0
- package/.output/public/assets/textarea-YJLTVAoq.js +1 -0
- package/.output/public/assets/useMutation-JsGVjQMY.js +1 -0
- package/.output/public/assets/useOpenInteractionType-4cRD5xO0.js +1 -0
- package/.output/server/__23tanstack-start-server-fn-resolver-DBP9TQ7K.mjs +146 -0
- package/.output/server/_libs/@base-ui/react+[...].mjs +16124 -0
- package/.output/server/_libs/@reduxjs/toolkit+[...].mjs +1554 -0
- package/.output/server/_libs/@tanstack/react-router+[...].mjs +41 -10
- package/.output/server/_libs/@tanstack/react-router-ssr-query+[...].mjs +132 -0
- package/.output/server/_libs/d3-array.mjs +231 -0
- package/.output/server/_libs/d3-color.mjs +330 -0
- package/.output/server/_libs/d3-format.mjs +252 -0
- package/.output/server/_libs/d3-interpolate.mjs +207 -0
- package/.output/server/_libs/d3-path.mjs +77 -0
- package/.output/server/_libs/d3-scale+[...].mjs +1907 -0
- package/.output/server/_libs/d3-shape.mjs +818 -0
- package/.output/server/_libs/decimal.js-light.mjs +884 -0
- package/.output/server/_libs/es-toolkit.mjs +1134 -0
- package/.output/server/_libs/eventemitter3.mjs +236 -0
- package/.output/server/_libs/immer.mjs +532 -0
- package/.output/server/_libs/lucide-react.mjs +141 -13
- package/.output/server/_libs/next-themes.mjs +2 -2
- package/.output/server/_libs/react-redux+[...].mjs +205 -0
- package/.output/server/_libs/recharts+[...].mjs +14117 -0
- package/.output/server/_libs/sonner.mjs +2 -2
- package/.output/server/_libs/tanstack__query-core.mjs +114 -1
- package/.output/server/_libs/tanstack__react-query.mjs +3 -4
- package/.output/server/_runtime.mjs +10 -1
- package/.output/server/_ssr/AnalyticsCapabilityContext-ui4DX8GO.mjs +15 -0
- package/.output/server/_ssr/BundleActivityChart-BiB9ZORH.mjs +288 -0
- package/.output/server/_ssr/BundleIdDisplay-Czk6iR6p.mjs +13 -0
- package/.output/server/_ssr/alert-Dim3MGY5.mjs +86 -0
- package/.output/server/_ssr/analytics-DtMTn8fn.mjs +858 -0
- package/.output/server/_ssr/analytics-api-Cg1M5v_H.mjs +71 -0
- package/.output/server/_ssr/analytics-input-fRRRn0uA.mjs +96 -0
- package/.output/server/_ssr/analytics-rpc-DY5uXvHT.mjs +155 -0
- package/.output/server/_ssr/api-BTSv1tZb.mjs +282 -0
- package/.output/server/_ssr/api-keys-BnM_o2nS.mjs +300 -0
- package/.output/server/_ssr/api-keys-api-CIywsSF5.mjs +60 -0
- package/.output/server/_ssr/api-keys-rpc-BSp1wkIV.mjs +136 -0
- package/.output/server/_ssr/api-rpc-cG5wd_tO.mjs +1468 -0
- package/.output/server/_ssr/auth-BF8mbAgF.mjs +21 -0
- package/.output/server/_ssr/auth-rpc-BrJ6obHJ.mjs +24 -0
- package/.output/server/_ssr/auth.server-DwKoZoQM.mjs +50 -0
- package/.output/server/_ssr/badge-DCxbEeof.mjs +26 -0
- package/.output/server/_ssr/bundle-signing-rpc-COoQhW8E.mjs +16 -0
- package/.output/server/_ssr/bundle-signing.server-D5u8KkMp.mjs +51 -0
- package/.output/server/_ssr/config-Dv8qLDZ0.mjs +13 -0
- package/.output/server/_ssr/config.server-DEiLhKmy.mjs +361 -0
- package/.output/server/_ssr/{createServerFn-DzU0k62V.mjs → createServerFn-B2hcXoPM.mjs} +1 -1
- package/.output/server/_ssr/createServerRpc-DB29C_5p.mjs +12 -0
- package/.output/server/_ssr/{sidebar-Cv_H0_Jv.mjs → createSsrRpc-9P0S0lJ3.mjs} +68 -50
- package/.output/server/_ssr/databaseRows-CwbNwYSl.mjs +166 -0
- package/.output/server/_ssr/deleteBundle-Cu_XOMt0.mjs +66 -0
- package/.output/server/_ssr/dialog-CQuRMNZ4.mjs +170 -0
- package/.output/server/_ssr/dist-BVSLTpoP.mjs +250 -0
- package/.output/server/_ssr/downloadBundle-CNnYxYO2.mjs +24 -0
- package/.output/server/_ssr/{empty-plugin-adapters-B4HCzgmM.mjs → empty-plugin-adapters-B5QvGpEl.mjs} +1 -1
- package/.output/server/_ssr/field-DRIXKjZG.mjs +74 -0
- package/.output/server/_ssr/{getBundleChildren-CVtSiH5t.mjs → getBundleChildren-BcRMFoDF.mjs} +10 -18
- package/.output/server/_ssr/installations-B-azgAvX.mjs +19 -0
- package/.output/server/_ssr/installations-Ctvzp2JH.mjs +535 -0
- package/.output/server/_ssr/router-C-KUBfOi.mjs +513 -0
- package/.output/server/_ssr/routes-BM4ht9jb.mjs +2286 -0
- package/.output/server/_ssr/routes-Z7TwC6nC.mjs +37 -0
- package/.output/server/_ssr/runtime.server-awTLiiXW.mjs +527 -0
- package/.output/server/_ssr/server-BjzmvXnO.mjs +7468 -0
- package/.output/server/_ssr/signing-k8GxyBDF.mjs +202 -0
- package/.output/server/_ssr/ssr.mjs +4 -5740
- package/.output/server/_ssr/start-DpViQGnt.mjs +4 -0
- package/.output/server/_ssr/table-v1yCvYo7.mjs +53 -0
- package/.output/server/_ssr/textarea-DYHnskhb.mjs +14 -0
- package/.output/server/_ssr/uuidv7-BbJ-9D_I.mjs +31 -0
- package/.output/server/_tanstack-start-manifest_v-CH4StzJu.mjs +108 -0
- package/.output/server/index.mjs +256 -53
- package/README.md +29 -8
- package/lib/index.d.mts +36 -0
- package/lib/index.mjs +4 -0
- package/lib/vite-internal.mjs +127 -0
- package/lib/vite.d.mts +10 -0
- package/lib/vite.mjs +5 -0
- package/package.json +51 -29
- package/public/apple-touch-icon.png +0 -0
- package/public/favicon-16x16.png +0 -0
- package/public/favicon-32x32.png +0 -0
- package/public/favicon.ico +0 -0
- package/public/logo.svg +1 -0
- package/public/manifest.json +30 -0
- package/public/robots.txt +3 -0
- package/src/components/AppSidebar.tsx +159 -0
- package/src/components/BundleIdDisplay.tsx +18 -0
- package/src/components/ChannelBadge.tsx +31 -0
- package/src/components/ConsoleAccessPage.tsx +122 -0
- package/src/components/EnabledStatusIcon.tsx +54 -0
- package/src/components/HashValueDisplay.tsx +85 -0
- package/src/components/HotUpdaterLogo.tsx +30 -0
- package/src/components/NotFoundPage.tsx +33 -0
- package/src/components/PlatformIcon.tsx +39 -0
- package/src/components/RolloutPercentageBadge.tsx +28 -0
- package/src/components/ThemeProvider.tsx +116 -0
- package/src/components/TimestampDisplay.tsx +41 -0
- package/src/components/features/analytics/ActivityChart.tsx +150 -0
- package/src/components/features/analytics/AnalyticsCapabilityContext.tsx +24 -0
- package/src/components/features/analytics/AnalyticsControls.tsx +115 -0
- package/src/components/features/analytics/AnalyticsErrorAlert.tsx +21 -0
- package/src/components/features/analytics/AnalyticsOverview.tsx +208 -0
- package/src/components/features/analytics/BundleDistribution.tsx +133 -0
- package/src/components/features/analytics/BundleSelector.tsx +114 -0
- package/src/components/features/analytics/InstallationHistoryCard.tsx +248 -0
- package/src/components/features/analytics/InstallationMatchesCard.tsx +132 -0
- package/src/components/features/analytics/InstallationPageHeader.tsx +138 -0
- package/src/components/features/analytics/InstallationPagination.tsx +48 -0
- package/src/components/features/analytics/InstallationSearch.tsx +230 -0
- package/src/components/features/analytics/UpdateOutcomes.tsx +147 -0
- package/src/components/features/api-keys/ApiKeysPage.tsx +377 -0
- package/src/components/features/bundles/BundleActivityChart.tsx +193 -0
- package/src/components/features/bundles/BundleAnalyticsSummary.tsx +123 -0
- package/src/components/features/bundles/BundleChildrenPanel.tsx +201 -0
- package/src/components/features/bundles/BundleMetadata.tsx +136 -0
- package/src/components/features/bundles/RolloutCohortsDialog.tsx +201 -0
- package/src/components/features/channels/ChannelManagementDialog.tsx +228 -0
- package/src/components/features/releases/ReleaseEditorSheet.tsx +879 -0
- package/src/components/features/releases/ReleaseStateBadge.tsx +20 -0
- package/src/components/features/signing/BundleSigningPage.tsx +247 -0
- package/src/components/ui/alert-dialog.tsx +185 -0
- package/src/components/ui/alert.tsx +76 -0
- package/src/components/ui/badge.tsx +49 -0
- package/src/components/ui/button.tsx +58 -0
- package/src/components/ui/card.tsx +89 -0
- package/src/components/ui/chart.tsx +371 -0
- package/src/components/ui/combobox.tsx +303 -0
- package/src/components/ui/dialog.tsx +156 -0
- package/src/components/ui/dropdown-menu.tsx +270 -0
- package/src/components/ui/field.tsx +235 -0
- package/src/components/ui/input-group.tsx +147 -0
- package/src/components/ui/input.tsx +19 -0
- package/src/components/ui/label.tsx +25 -0
- package/src/components/ui/progress.tsx +84 -0
- package/src/components/ui/select.tsx +205 -0
- package/src/components/ui/separator.tsx +23 -0
- package/src/components/ui/sheet.tsx +132 -0
- package/src/components/ui/sidebar.tsx +779 -0
- package/src/components/ui/skeleton.tsx +13 -0
- package/src/components/ui/slider.tsx +56 -0
- package/src/components/ui/sonner.tsx +45 -0
- package/src/components/ui/switch.tsx +25 -0
- package/src/components/ui/table.tsx +114 -0
- package/src/components/ui/textarea.tsx +18 -0
- package/src/components/ui/toggle-group.tsx +89 -0
- package/src/components/ui/toggle.tsx +43 -0
- package/src/components/ui/tooltip.tsx +66 -0
- package/src/hooks/use-mobile.ts +30 -0
- package/src/index.ts +48 -0
- package/src/lib/analytics-api.ts +145 -0
- package/src/lib/analytics-error.ts +19 -0
- package/src/lib/analytics-input.ts +187 -0
- package/src/lib/analytics-overview.ts +170 -0
- package/src/lib/analytics-rpc.ts +218 -0
- package/src/lib/api-keys-api.ts +69 -0
- package/src/lib/api-keys-rpc.ts +87 -0
- package/src/lib/api-rpc.ts +478 -0
- package/src/lib/api.ts +444 -0
- package/src/lib/auth-rpc.ts +16 -0
- package/src/lib/bundle-signing-api.ts +14 -0
- package/src/lib/bundle-signing-rpc.ts +16 -0
- package/src/lib/constants.ts +1 -0
- package/src/lib/git.ts +51 -0
- package/src/lib/server/auth.server.ts +43 -0
- package/src/lib/server/bundle-signing.server.ts +100 -0
- package/src/lib/server/config.server.ts +109 -0
- package/src/lib/server/console-runtime.server.ts +70 -0
- package/src/lib/server/deleteBundle.ts +145 -0
- package/src/lib/server/downloadBundle.ts +46 -0
- package/src/lib/server/getBundleChildren.ts +130 -0
- package/src/lib/server/listReleases.ts +61 -0
- package/src/lib/server/releaseActivity.ts +27 -0
- package/src/lib/server/releaseReachability.ts +95 -0
- package/src/lib/server/runtime.server.ts +172 -0
- package/src/lib/utils.ts +9 -0
- package/src/logo.svg +1 -0
- package/src/routeTree.gen.ts +199 -0
- package/src/router.tsx +21 -0
- package/src/routes/-installations-search.ts +19 -0
- package/src/routes/-releases-search.ts +74 -0
- package/src/routes/__root.tsx +174 -0
- package/src/routes/analytics.tsx +139 -0
- package/src/routes/api/auth/$.ts +19 -0
- package/src/routes/api/bundles/$bundleId/download.ts +17 -0
- package/src/routes/api-keys.tsx +37 -0
- package/src/routes/index.tsx +982 -0
- package/src/routes/installations.tsx +194 -0
- package/src/routes/signing.tsx +37 -0
- package/src/styles.css +152 -0
- package/src/virtual-modules.d.ts +21 -0
- package/src/vite-env.d.ts +1 -0
- package/src/vite-internal.ts +195 -0
- package/src/vite.ts +12 -0
- package/.output/public/assets/dist-DJX53faP.js +0 -3
- package/.output/public/assets/index-Iylis5kY.js +0 -10
- package/.output/public/assets/routes-HT21hs0C.js +0 -54
- package/.output/public/assets/styles-C0Re4quB.css +0 -2
- package/.output/server/__23tanstack-start-server-fn-resolver-CgwgZ0-i.mjs +0 -66
- package/.output/server/_libs/@floating-ui/core+[...].mjs +0 -698
- package/.output/server/_libs/@floating-ui/dom+[...].mjs +0 -644
- package/.output/server/_libs/@floating-ui/react-dom+[...].mjs +0 -839
- package/.output/server/_libs/@radix-ui/react-alert-dialog+[...].mjs +0 -2138
- package/.output/server/_libs/@radix-ui/react-popper+[...].mjs +0 -308
- package/.output/server/_libs/@radix-ui/react-select+[...].mjs +0 -1038
- package/.output/server/_libs/@tanstack/devtools-event-client+[...].mjs +0 -196
- package/.output/server/_libs/@tanstack/form-core+[...].mjs +0 -3228
- package/.output/server/_libs/@tanstack/react-form+[...].mjs +0 -430
- package/.output/server/_libs/@tanstack/react-table+[...].mjs +0 -2382
- package/.output/server/_libs/radix-ui__number.mjs +0 -6
- package/.output/server/_libs/radix-ui__primitive.mjs +0 -9
- package/.output/server/_libs/radix-ui__react-arrow.mjs +0 -23
- package/.output/server/_libs/radix-ui__react-collection.mjs +0 -78
- package/.output/server/_libs/radix-ui__react-direction.mjs +0 -13
- package/.output/server/_libs/radix-ui__react-label.mjs +0 -22
- package/.output/server/_libs/radix-ui__react-separator.mjs +0 -30
- package/.output/server/_libs/radix-ui__react-slider.mjs +0 -510
- package/.output/server/_libs/radix-ui__react-switch.mjs +0 -157
- package/.output/server/_libs/radix-ui__react-tooltip.mjs +0 -493
- package/.output/server/_ssr/api-rpc-BIbDUKSz.mjs +0 -292
- package/.output/server/_ssr/config.server-BSS366KT.mjs +0 -41
- package/.output/server/_ssr/deleteBundle-BgbZTtpW.mjs +0 -141
- package/.output/server/_ssr/dist-KboydRVk.mjs +0 -120
- package/.output/server/_ssr/router-C3hqEy3k.mjs +0 -307
- package/.output/server/_ssr/routes-B0lQvvlC.mjs +0 -3048
- package/.output/server/_ssr/start-02sLteYG.mjs +0 -4
- package/.output/server/_ssr/storageProfile-FVkjPoGb.mjs +0 -9
- package/.output/server/_tanstack-start-manifest_v-Bpx52WOU.mjs +0 -20
- package/.output/server/node_modules/tslib/modules/index.js +0 -70
- package/.output/server/node_modules/tslib/modules/package.json +0 -3
- package/.output/server/node_modules/tslib/package.json +0 -47
- package/.output/server/node_modules/tslib/tslib.js +0 -484
- package/.output/server/package.json +0 -9
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
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";
|
|
3
|
+
import { i as TSS_SERVER_FUNCTION } from "./createServerFn-B2hcXoPM.mjs";
|
|
4
|
+
import { t as getServerFnById } from "../__23tanstack-start-server-fn-resolver-DBP9TQ7K.mjs";
|
|
5
|
+
import { p as PanelLeft } from "../_libs/lucide-react.mjs";
|
|
5
6
|
import { n as clsx, t as cva } from "../_libs/class-variance-authority+clsx.mjs";
|
|
6
|
-
import { t as Root } from "../_libs/radix-ui__react-separator.mjs";
|
|
7
|
-
import { a as Root3, i as Provider, n as Content2, o as Trigger, r as Portal, t as Arrow2 } from "../_libs/radix-ui__react-tooltip.mjs";
|
|
8
7
|
import { t as twMerge } from "../_libs/tailwind-merge.mjs";
|
|
9
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/
|
|
8
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/createSsrRpc-9P0S0lJ3.js
|
|
10
9
|
var import_react = /* @__PURE__ */ __toESM(require_react());
|
|
11
10
|
var import_jsx_runtime = require_jsx_runtime();
|
|
12
11
|
function cn(...inputs) {
|
|
@@ -18,8 +17,8 @@ var buttonVariants = cva("focus-visible:border-ring focus-visible:ring-ring/30 a
|
|
|
18
17
|
default: "bg-primary text-primary-foreground hover:bg-primary/80",
|
|
19
18
|
outline: "border-border dark:bg-input/30 hover:bg-input/50 hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground",
|
|
20
19
|
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground",
|
|
21
|
-
ghost: "hover:bg-muted hover:text-foreground
|
|
22
|
-
destructive: "bg-destructive/10 hover:bg-destructive/20 focus-visible:
|
|
20
|
+
ghost: "hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50",
|
|
21
|
+
destructive: "bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40",
|
|
23
22
|
link: "text-primary underline-offset-4 hover:underline"
|
|
24
23
|
},
|
|
25
24
|
size: {
|
|
@@ -38,11 +37,11 @@ var buttonVariants = cva("focus-visible:border-ring focus-visible:ring-ring/30 a
|
|
|
38
37
|
size: "default"
|
|
39
38
|
}
|
|
40
39
|
});
|
|
41
|
-
function Button({ className, variant = "default", size = "default",
|
|
42
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
40
|
+
function Button$1({ className, variant = "default", size = "default", ...props }) {
|
|
41
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button, {
|
|
43
42
|
"data-slot": "button",
|
|
44
|
-
"data-variant": variant,
|
|
45
43
|
"data-size": size,
|
|
44
|
+
"data-variant": variant,
|
|
46
45
|
className: cn(buttonVariants({
|
|
47
46
|
variant,
|
|
48
47
|
size,
|
|
@@ -59,12 +58,11 @@ function Input({ className, type, ...props }) {
|
|
|
59
58
|
...props
|
|
60
59
|
});
|
|
61
60
|
}
|
|
62
|
-
function Separator$1({ className, orientation = "horizontal",
|
|
63
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
61
|
+
function Separator$1({ className, orientation = "horizontal", ...props }) {
|
|
62
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Separator, {
|
|
64
63
|
"data-slot": "separator",
|
|
65
|
-
decorative,
|
|
66
64
|
orientation,
|
|
67
|
-
className: cn("bg-border
|
|
65
|
+
className: cn("shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch", className),
|
|
68
66
|
...props
|
|
69
67
|
});
|
|
70
68
|
}
|
|
@@ -75,32 +73,38 @@ function Skeleton({ className, ...props }) {
|
|
|
75
73
|
...props
|
|
76
74
|
});
|
|
77
75
|
}
|
|
78
|
-
function TooltipProvider({
|
|
79
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
76
|
+
function TooltipProvider({ delay = 0, ...props }) {
|
|
77
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TooltipProvider$1, {
|
|
80
78
|
"data-slot": "tooltip-provider",
|
|
81
|
-
|
|
79
|
+
delay,
|
|
82
80
|
...props
|
|
83
81
|
});
|
|
84
82
|
}
|
|
85
83
|
function Tooltip$1({ ...props }) {
|
|
86
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
84
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TooltipRoot, {
|
|
87
85
|
"data-slot": "tooltip",
|
|
88
86
|
...props
|
|
89
|
-
})
|
|
87
|
+
});
|
|
90
88
|
}
|
|
91
89
|
function TooltipTrigger({ ...props }) {
|
|
92
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
90
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TooltipTrigger$1, {
|
|
93
91
|
"data-slot": "tooltip-trigger",
|
|
94
92
|
...props
|
|
95
93
|
});
|
|
96
94
|
}
|
|
97
|
-
function TooltipContent({ className, sideOffset = 0, children, ...props }) {
|
|
98
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
99
|
-
|
|
95
|
+
function TooltipContent({ className, side = "top", sideOffset = 4, align = "center", alignOffset = 0, children, ...props }) {
|
|
96
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TooltipPortal, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TooltipPositioner, {
|
|
97
|
+
align,
|
|
98
|
+
alignOffset,
|
|
99
|
+
side,
|
|
100
100
|
sideOffset,
|
|
101
|
-
className:
|
|
102
|
-
|
|
103
|
-
|
|
101
|
+
className: "isolate z-50",
|
|
102
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(TooltipPopup, {
|
|
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),
|
|
105
|
+
...props,
|
|
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
|
+
})
|
|
104
108
|
}) });
|
|
105
109
|
}
|
|
106
110
|
var MOBILE_BREAKPOINT = 768;
|
|
@@ -284,7 +288,7 @@ function Sidebar({ side = "left", variant = "sidebar", collapsible = "offExample
|
|
|
284
288
|
}
|
|
285
289
|
function SidebarTrigger({ className, onClick, ...props }) {
|
|
286
290
|
const { toggleSidebar } = useSidebar();
|
|
287
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Button, {
|
|
291
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Button$1, {
|
|
288
292
|
"data-sidebar": "trigger",
|
|
289
293
|
"data-slot": "sidebar-trigger",
|
|
290
294
|
variant: "ghost",
|
|
@@ -340,12 +344,15 @@ function SidebarGroup({ className, ...props }) {
|
|
|
340
344
|
...props
|
|
341
345
|
});
|
|
342
346
|
}
|
|
343
|
-
function SidebarGroupLabel({ className,
|
|
344
|
-
return
|
|
345
|
-
|
|
346
|
-
"
|
|
347
|
-
|
|
348
|
-
|
|
347
|
+
function SidebarGroupLabel({ className, render, ...props }) {
|
|
348
|
+
return useRender({
|
|
349
|
+
defaultTagName: "div",
|
|
350
|
+
props: mergeProps({ className: cn("text-sidebar-foreground/70 ring-sidebar-ring h-8 rounded-md px-2 text-xs transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 flex shrink-0 items-center outline-hidden [&>svg]:shrink-0", className) }, props),
|
|
351
|
+
render,
|
|
352
|
+
state: {
|
|
353
|
+
sidebar: "group-label",
|
|
354
|
+
slot: "sidebar-group-label"
|
|
355
|
+
}
|
|
349
356
|
});
|
|
350
357
|
}
|
|
351
358
|
function SidebarGroupContent({ className, ...props }) {
|
|
@@ -389,31 +396,42 @@ var sidebarMenuButtonVariants = cva("ring-sidebar-ring hover:bg-sidebar-accent h
|
|
|
389
396
|
size: "default"
|
|
390
397
|
}
|
|
391
398
|
});
|
|
392
|
-
function SidebarMenuButton({
|
|
393
|
-
const Comp = asChild ? Slot : "button";
|
|
399
|
+
function SidebarMenuButton({ render, isActive = false, variant = "default", size = "default", tooltip, className, ...props }) {
|
|
394
400
|
const { isMobile, state } = useSidebar();
|
|
395
|
-
const button =
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
"data-size": size,
|
|
399
|
-
"data-active": isActive,
|
|
400
|
-
className: cn(sidebarMenuButtonVariants({
|
|
401
|
+
const button = useRender({
|
|
402
|
+
defaultTagName: "button",
|
|
403
|
+
props: mergeProps({ className: cn(sidebarMenuButtonVariants({
|
|
401
404
|
variant,
|
|
402
405
|
size
|
|
403
|
-
}), className),
|
|
404
|
-
|
|
406
|
+
}), className) }, props),
|
|
407
|
+
render: !tooltip ? render : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TooltipTrigger, { render }),
|
|
408
|
+
state: {
|
|
409
|
+
active: isActive,
|
|
410
|
+
sidebar: "menu-button",
|
|
411
|
+
size,
|
|
412
|
+
slot: "sidebar-menu-button"
|
|
413
|
+
}
|
|
405
414
|
});
|
|
406
415
|
if (!tooltip) return button;
|
|
407
416
|
if (typeof tooltip === "string") tooltip = { children: tooltip };
|
|
408
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Tooltip$1, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
409
|
-
asChild: true,
|
|
410
|
-
children: button
|
|
411
|
-
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TooltipContent, {
|
|
417
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Tooltip$1, { children: [button, /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TooltipContent, {
|
|
412
418
|
side: "right",
|
|
413
419
|
align: "center",
|
|
414
420
|
hidden: state !== "collapsed" || isMobile,
|
|
415
421
|
...tooltip
|
|
416
422
|
})] });
|
|
417
423
|
}
|
|
424
|
+
var createSsrRpc = (functionId) => {
|
|
425
|
+
const url = "/_serverFn/" + functionId;
|
|
426
|
+
const serverFnMeta = { id: functionId };
|
|
427
|
+
const fn = async (...args) => {
|
|
428
|
+
return (await getServerFnById(functionId, { origin: "server" }))(...args);
|
|
429
|
+
};
|
|
430
|
+
return Object.assign(fn, {
|
|
431
|
+
url,
|
|
432
|
+
serverFnMeta,
|
|
433
|
+
[TSS_SERVER_FUNCTION]: true
|
|
434
|
+
});
|
|
435
|
+
};
|
|
418
436
|
//#endregion
|
|
419
|
-
export {
|
|
437
|
+
export { cn as C, buttonVariants as S, useIsMobile as T, Skeleton as _, SidebarContent as a, TooltipProvider as b, SidebarGroupContent as c, SidebarInset as d, SidebarMenu as f, SidebarTrigger as g, SidebarProvider as h, Sidebar as i, SidebarGroupLabel as l, SidebarMenuItem as m, Input as n, SidebarFooter as o, SidebarMenuButton as p, Separator$1 as r, SidebarGroup as s, Button$1 as t, SidebarHeader as u, Tooltip$1 as v, createSsrRpc as w, TooltipTrigger as x, TooltipContent as y };
|
|
@@ -0,0 +1,166 @@
|
|
|
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");
|
|
44
|
+
var bundleMetadataToRow = (metadata) => {
|
|
45
|
+
const value = stripBundleArtifactMetadata(metadata);
|
|
46
|
+
if (value === void 0) return {};
|
|
47
|
+
if (!isDatabaseMetadataObject(value)) throw new DatabasePluginInputError("invalid-data");
|
|
48
|
+
return value;
|
|
49
|
+
};
|
|
50
|
+
var releaseRowToRelease = (row) => ({
|
|
51
|
+
id: row.id,
|
|
52
|
+
revision: row.revision,
|
|
53
|
+
channelId: row.channel_id,
|
|
54
|
+
platform: row.platform,
|
|
55
|
+
kind: row.kind,
|
|
56
|
+
bundleId: row.bundle_id,
|
|
57
|
+
strategy: row.strategy,
|
|
58
|
+
targetAppVersion: row.target_app_version,
|
|
59
|
+
fingerprintHash: row.fingerprint_hash,
|
|
60
|
+
enabled: row.enabled,
|
|
61
|
+
shouldForceUpdate: row.should_force_update,
|
|
62
|
+
message: row.message,
|
|
63
|
+
rolloutCohortCount: row.rollout_cohort_count,
|
|
64
|
+
targetCohorts: row.target_cohorts,
|
|
65
|
+
operation: row.operation,
|
|
66
|
+
sourceReleaseId: row.source_release_id,
|
|
67
|
+
createdAtMs: row.created_at_ms,
|
|
68
|
+
updatedAtMs: row.updated_at_ms
|
|
69
|
+
});
|
|
70
|
+
var BundleRowHydrationErrorReason = {
|
|
71
|
+
duplicatePatchId: "duplicate_patch_id",
|
|
72
|
+
orphanPatchOwner: "orphan_patch_owner",
|
|
73
|
+
orphanPatchBase: "orphan_patch_base"
|
|
74
|
+
};
|
|
75
|
+
var BundleRowHydrationError = class extends Error {
|
|
76
|
+
name = "BundleRowHydrationError";
|
|
77
|
+
reason;
|
|
78
|
+
patchId;
|
|
79
|
+
bundleId;
|
|
80
|
+
constructor({ reason, patchId, bundleId }) {
|
|
81
|
+
super(`Cannot hydrate bundle rows: ${reason} for patch "${patchId}" and bundle "${bundleId}".`);
|
|
82
|
+
this.reason = reason;
|
|
83
|
+
this.patchId = patchId;
|
|
84
|
+
this.bundleId = bundleId;
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
var bundleToRow = (bundle) => {
|
|
88
|
+
const metadata = bundleMetadataToRow(bundle.metadata);
|
|
89
|
+
return {
|
|
90
|
+
id: bundle.id,
|
|
91
|
+
platform: bundle.platform,
|
|
92
|
+
file_hash: bundle.fileHash,
|
|
93
|
+
git_commit_hash: bundle.gitCommitHash,
|
|
94
|
+
storage_uri: bundle.storageUri,
|
|
95
|
+
archive_byte_size: bundle.archiveByteSize,
|
|
96
|
+
metadata,
|
|
97
|
+
manifest_storage_uri: getManifestStorageUri(bundle),
|
|
98
|
+
manifest_file_hash: getManifestFileHash(bundle),
|
|
99
|
+
asset_base_storage_uri: getAssetBaseStorageUri(bundle)
|
|
100
|
+
};
|
|
101
|
+
};
|
|
102
|
+
var bundleToPatchRows = (bundle) => getBundlePatches(bundle).map((patch, orderIndex) => ({
|
|
103
|
+
id: `${bundle.id}:${patch.baseBundleId}`,
|
|
104
|
+
bundle_id: bundle.id,
|
|
105
|
+
base_bundle_id: patch.baseBundleId,
|
|
106
|
+
base_file_hash: patch.baseFileHash,
|
|
107
|
+
patch_file_hash: patch.patchFileHash,
|
|
108
|
+
patch_storage_uri: patch.patchStorageUri,
|
|
109
|
+
byte_size: patch.byteSize,
|
|
110
|
+
order_index: orderIndex
|
|
111
|
+
}));
|
|
112
|
+
var comparePatchRows = (left, right) => left.order_index - right.order_index || left.id.localeCompare(right.id);
|
|
113
|
+
var patchRowToArtifact = (row) => ({
|
|
114
|
+
baseBundleId: row.base_bundle_id,
|
|
115
|
+
baseFileHash: row.base_file_hash,
|
|
116
|
+
byteSize: row.byte_size,
|
|
117
|
+
patchFileHash: row.patch_file_hash,
|
|
118
|
+
patchStorageUri: row.patch_storage_uri
|
|
119
|
+
});
|
|
120
|
+
var rowToBundle = (row, patchRows = []) => {
|
|
121
|
+
const patches = patchRows.slice().sort(comparePatchRows).map(patchRowToArtifact);
|
|
122
|
+
return {
|
|
123
|
+
id: row.id,
|
|
124
|
+
platform: row.platform,
|
|
125
|
+
fileHash: row.file_hash,
|
|
126
|
+
gitCommitHash: row.git_commit_hash,
|
|
127
|
+
storageUri: row.storage_uri,
|
|
128
|
+
archiveByteSize: row.archive_byte_size,
|
|
129
|
+
metadata: stripBundleArtifactMetadata(row.metadata),
|
|
130
|
+
manifestStorageUri: row.manifest_storage_uri,
|
|
131
|
+
manifestFileHash: row.manifest_file_hash,
|
|
132
|
+
assetBaseStorageUri: row.asset_base_storage_uri,
|
|
133
|
+
patches
|
|
134
|
+
};
|
|
135
|
+
};
|
|
136
|
+
var rowsToBundles = (bundleRows, patchRows, referencedBundleRows) => {
|
|
137
|
+
const ownerIds = new Set(bundleRows.map(({ id }) => id));
|
|
138
|
+
const baseIds = new Set(ownerIds);
|
|
139
|
+
for (const row of referencedBundleRows) baseIds.add(row.id);
|
|
140
|
+
const patchIds = /* @__PURE__ */ new Set();
|
|
141
|
+
const patchesByOwner = /* @__PURE__ */ new Map();
|
|
142
|
+
for (const patch of patchRows) {
|
|
143
|
+
if (patchIds.has(patch.id)) throw new BundleRowHydrationError({
|
|
144
|
+
reason: BundleRowHydrationErrorReason.duplicatePatchId,
|
|
145
|
+
patchId: patch.id,
|
|
146
|
+
bundleId: patch.bundle_id
|
|
147
|
+
});
|
|
148
|
+
patchIds.add(patch.id);
|
|
149
|
+
if (!ownerIds.has(patch.bundle_id)) throw new BundleRowHydrationError({
|
|
150
|
+
reason: BundleRowHydrationErrorReason.orphanPatchOwner,
|
|
151
|
+
patchId: patch.id,
|
|
152
|
+
bundleId: patch.bundle_id
|
|
153
|
+
});
|
|
154
|
+
if (!baseIds.has(patch.base_bundle_id)) throw new BundleRowHydrationError({
|
|
155
|
+
reason: BundleRowHydrationErrorReason.orphanPatchBase,
|
|
156
|
+
patchId: patch.id,
|
|
157
|
+
bundleId: patch.base_bundle_id
|
|
158
|
+
});
|
|
159
|
+
const ownerPatches = patchesByOwner.get(patch.bundle_id) ?? [];
|
|
160
|
+
ownerPatches.push(patch);
|
|
161
|
+
patchesByOwner.set(patch.bundle_id, ownerPatches);
|
|
162
|
+
}
|
|
163
|
+
return bundleRows.map((row) => rowToBundle(row, patchesByOwner.get(row.id) ?? []));
|
|
164
|
+
};
|
|
165
|
+
//#endregion
|
|
166
|
+
export { releaseRowToRelease as a, bundleToRow as i, bundleMetadataToRow as n, rowsToBundles as o, bundleToPatchRows as r, DatabasePluginInputError as t };
|
|
@@ -0,0 +1,66 @@
|
|
|
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
|
|
3
|
+
function resolveStorageUriForDeletion(storageUri, storagePlugin) {
|
|
4
|
+
const protocol = new URL(storageUri).protocol.replace(":", "");
|
|
5
|
+
if (storagePlugin.protocol === protocol) return storageUri;
|
|
6
|
+
if (protocol === "http" || protocol === "https") return null;
|
|
7
|
+
throw new Error(`No storage plugin for protocol: ${protocol}`);
|
|
8
|
+
}
|
|
9
|
+
async function cleanupBundleStorage(bundle, storagePlugin) {
|
|
10
|
+
const cleanupUris = /* @__PURE__ */ new Set();
|
|
11
|
+
const addCleanupUri = (storageUri) => {
|
|
12
|
+
if (!storageUri) return;
|
|
13
|
+
const resolvedStorageUri = resolveStorageUriForDeletion(storageUri, storagePlugin);
|
|
14
|
+
if (resolvedStorageUri) cleanupUris.add(resolvedStorageUri);
|
|
15
|
+
};
|
|
16
|
+
addCleanupUri(bundle.storageUri);
|
|
17
|
+
addCleanupUri(getManifestStorageUri(bundle) ?? void 0);
|
|
18
|
+
addCleanupUri(getPatchStorageUri(bundle) ?? void 0);
|
|
19
|
+
for (const patch of getBundlePatches(bundle)) addCleanupUri(patch.patchStorageUri);
|
|
20
|
+
for (const storageUri of cleanupUris) try {
|
|
21
|
+
await storagePlugin.delete({ storageUri });
|
|
22
|
+
} catch (error) {
|
|
23
|
+
console.error("Failed to delete bundle from storage:", error);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
async function deleteBundles({ bundleIds }, { databaseClient, storagePlugin, waitForStorageCleanup = true }) {
|
|
27
|
+
const uniqueBundleIds = [...new Set(bundleIds)];
|
|
28
|
+
const { data: matchedBundles } = await databaseClient.getBundles({
|
|
29
|
+
where: { id: { in: uniqueBundleIds } },
|
|
30
|
+
limit: uniqueBundleIds.length
|
|
31
|
+
});
|
|
32
|
+
const matchedById = new Map(matchedBundles.map((bundle) => [bundle.id, bundle]));
|
|
33
|
+
const bundles = uniqueBundleIds.flatMap((bundleId) => {
|
|
34
|
+
const bundle = matchedById.get(bundleId);
|
|
35
|
+
return bundle ? [bundle] : [];
|
|
36
|
+
});
|
|
37
|
+
const missingBundleIds = uniqueBundleIds.filter((bundleId) => !matchedById.has(bundleId));
|
|
38
|
+
for (const bundle of bundles) {
|
|
39
|
+
const cleanupCandidates = [
|
|
40
|
+
bundle.storageUri,
|
|
41
|
+
getManifestStorageUri(bundle),
|
|
42
|
+
getPatchStorageUri(bundle),
|
|
43
|
+
...getBundlePatches(bundle).map((patch) => patch.patchStorageUri)
|
|
44
|
+
].filter((value) => Boolean(value));
|
|
45
|
+
for (const candidate of cleanupCandidates) resolveStorageUriForDeletion(candidate, storagePlugin);
|
|
46
|
+
}
|
|
47
|
+
if (bundles.length > 0) await databaseClient.mutate(async (mutation) => {
|
|
48
|
+
for (const bundle of bundles) await mutation.deleteBundleById(bundle.id);
|
|
49
|
+
});
|
|
50
|
+
const cleanupStorage = async () => {
|
|
51
|
+
for (const bundle of bundles) await cleanupBundleStorage(bundle, storagePlugin);
|
|
52
|
+
};
|
|
53
|
+
if (waitForStorageCleanup) await cleanupStorage();
|
|
54
|
+
else cleanupStorage().catch((error) => {
|
|
55
|
+
console.error("Failed to clean up bundle storage:", error);
|
|
56
|
+
});
|
|
57
|
+
return {
|
|
58
|
+
deletedBundleIds: bundles.map((bundle) => bundle.id),
|
|
59
|
+
missingBundleIds
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
async function deleteBundle({ bundleId }, dependencies) {
|
|
63
|
+
if ((await deleteBundles({ bundleIds: [bundleId] }, dependencies)).missingBundleIds.length > 0) throw new Error(`Bundle not found: ${bundleId}`);
|
|
64
|
+
}
|
|
65
|
+
//#endregion
|
|
66
|
+
export { deleteBundle, deleteBundles };
|
|
@@ -0,0 +1,170 @@
|
|
|
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";
|
|
3
|
+
import { t as X } from "../_libs/lucide-react.mjs";
|
|
4
|
+
import { C as cn, t as Button$1 } from "./createSsrRpc-9P0S0lJ3.mjs";
|
|
5
|
+
require_react();
|
|
6
|
+
var import_jsx_runtime = require_jsx_runtime();
|
|
7
|
+
function AlertDialog$1({ ...props }) {
|
|
8
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AlertDialogRoot, {
|
|
9
|
+
"data-slot": "alert-dialog",
|
|
10
|
+
...props
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
function AlertDialogTrigger({ ...props }) {
|
|
14
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AlertDialogTrigger$1, {
|
|
15
|
+
"data-slot": "alert-dialog-trigger",
|
|
16
|
+
...props
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
function AlertDialogPortal({ ...props }) {
|
|
20
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DialogPortal$1, {
|
|
21
|
+
"data-slot": "alert-dialog-portal",
|
|
22
|
+
...props
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
function AlertDialogOverlay({ className, ...props }) {
|
|
26
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DialogBackdrop, {
|
|
27
|
+
"data-slot": "alert-dialog-overlay",
|
|
28
|
+
className: cn("fixed inset-0 isolate z-50 bg-black/80 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0", className),
|
|
29
|
+
...props
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
function AlertDialogContent({ className, size = "default", ...props }) {
|
|
33
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(AlertDialogPortal, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(AlertDialogOverlay, {}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DialogPopup, {
|
|
34
|
+
"data-slot": "alert-dialog-content",
|
|
35
|
+
"data-size": size,
|
|
36
|
+
className: cn("group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-3 rounded-xl bg-popover p-4 text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-64 data-[size=default]:sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", className),
|
|
37
|
+
...props
|
|
38
|
+
})] });
|
|
39
|
+
}
|
|
40
|
+
function AlertDialogHeader({ className, ...props }) {
|
|
41
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
42
|
+
"data-slot": "alert-dialog-header",
|
|
43
|
+
className: cn("grid grid-rows-[auto_1fr] place-items-center gap-1 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]", className),
|
|
44
|
+
...props
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
function AlertDialogFooter({ className, ...props }) {
|
|
48
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
49
|
+
"data-slot": "alert-dialog-footer",
|
|
50
|
+
className: cn("flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end", className),
|
|
51
|
+
...props
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
function AlertDialogMedia({ className, ...props }) {
|
|
55
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
56
|
+
"data-slot": "alert-dialog-media",
|
|
57
|
+
className: cn("mb-2 inline-flex size-8 items-center justify-center rounded-md bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-4", className),
|
|
58
|
+
...props
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
function AlertDialogTitle({ className, ...props }) {
|
|
62
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DialogTitle$1, {
|
|
63
|
+
"data-slot": "alert-dialog-title",
|
|
64
|
+
className: cn("text-sm font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2", className),
|
|
65
|
+
...props
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
function AlertDialogDescription({ className, ...props }) {
|
|
69
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DialogDescription$1, {
|
|
70
|
+
"data-slot": "alert-dialog-description",
|
|
71
|
+
className: cn("text-xs/relaxed text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground", className),
|
|
72
|
+
...props
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
function AlertDialogAction({ className, ...props }) {
|
|
76
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button$1, {
|
|
77
|
+
"data-slot": "alert-dialog-action",
|
|
78
|
+
className: cn(className),
|
|
79
|
+
...props
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
function AlertDialogCancel({ className, variant = "outline", size = "default", ...props }) {
|
|
83
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DialogClose, {
|
|
84
|
+
"data-slot": "alert-dialog-cancel",
|
|
85
|
+
className: cn(className),
|
|
86
|
+
render: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button$1, {
|
|
87
|
+
variant,
|
|
88
|
+
size
|
|
89
|
+
}),
|
|
90
|
+
...props
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
function Dialog$1({ ...props }) {
|
|
94
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DialogRoot, {
|
|
95
|
+
"data-slot": "dialog",
|
|
96
|
+
...props
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
function DialogTrigger({ ...props }) {
|
|
100
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DialogTrigger$1, {
|
|
101
|
+
"data-slot": "dialog-trigger",
|
|
102
|
+
...props
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
function DialogPortal({ ...props }) {
|
|
106
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DialogPortal$1, {
|
|
107
|
+
"data-slot": "dialog-portal",
|
|
108
|
+
...props
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
function DialogOverlay({ className, ...props }) {
|
|
112
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DialogBackdrop, {
|
|
113
|
+
"data-slot": "dialog-overlay",
|
|
114
|
+
className: cn("fixed inset-0 isolate z-50 bg-black/80 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0", className),
|
|
115
|
+
...props
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
function DialogContent({ className, children, showCloseButton = true, ...props }) {
|
|
119
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(DialogPortal, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(DialogOverlay, {}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(DialogPopup, {
|
|
120
|
+
"data-slot": "dialog-content",
|
|
121
|
+
className: cn("fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-background p-4 text-xs/relaxed ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", className),
|
|
122
|
+
...props,
|
|
123
|
+
children: [children, showCloseButton && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(DialogClose, {
|
|
124
|
+
"data-slot": "dialog-close",
|
|
125
|
+
render: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button$1, {
|
|
126
|
+
variant: "ghost",
|
|
127
|
+
className: "absolute top-2 right-2",
|
|
128
|
+
size: "icon-sm"
|
|
129
|
+
}),
|
|
130
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(X, {}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
131
|
+
className: "sr-only",
|
|
132
|
+
children: "Close"
|
|
133
|
+
})]
|
|
134
|
+
})]
|
|
135
|
+
})] });
|
|
136
|
+
}
|
|
137
|
+
function DialogHeader({ className, ...props }) {
|
|
138
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
139
|
+
"data-slot": "dialog-header",
|
|
140
|
+
className: cn("flex flex-col gap-1", className),
|
|
141
|
+
...props
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
function DialogFooter({ className, showCloseButton = false, children, ...props }) {
|
|
145
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
146
|
+
"data-slot": "dialog-footer",
|
|
147
|
+
className: cn("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", className),
|
|
148
|
+
...props,
|
|
149
|
+
children: [children, showCloseButton && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DialogClose, {
|
|
150
|
+
render: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button$1, { variant: "outline" }),
|
|
151
|
+
children: "Close"
|
|
152
|
+
})]
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
function DialogTitle({ className, ...props }) {
|
|
156
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DialogTitle$1, {
|
|
157
|
+
"data-slot": "dialog-title",
|
|
158
|
+
className: cn("text-sm font-medium", className),
|
|
159
|
+
...props
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
function DialogDescription({ className, ...props }) {
|
|
163
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DialogDescription$1, {
|
|
164
|
+
"data-slot": "dialog-description",
|
|
165
|
+
className: cn("text-xs/relaxed text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground", className),
|
|
166
|
+
...props
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
//#endregion
|
|
170
|
+
export { DialogTrigger as _, AlertDialogDescription as a, AlertDialogMedia as c, Dialog$1 as d, DialogContent as f, DialogTitle as g, DialogHeader as h, AlertDialogContent as i, AlertDialogTitle as l, DialogFooter as m, AlertDialogAction as n, AlertDialogFooter as o, DialogDescription as p, AlertDialogCancel as r, AlertDialogHeader as s, AlertDialog$1 as t, AlertDialogTrigger as u };
|