@hot-updater/console 1.0.0-rc.20 → 1.0.0-rc.21
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/{ConsoleFeatureUnavailable-B9VYGA3N.js → ConsoleFeatureUnavailable-D0LPL1Gy.js} +1 -1
- package/.output/public/assets/{HashValueDisplay-D880zntR.js → HashValueDisplay-BmuB4FW-.js} +1 -1
- package/.output/public/assets/InsightsInfo--v4SC07c.js +1 -0
- package/.output/public/assets/InsightsPageHeader-dU83CAQY.js +1 -0
- package/.output/public/assets/{NotFoundPage-Dys8C0cW.js → NotFoundPage-B5mhGG2a.js} +1 -1
- package/.output/public/assets/api-D-vOVlQ4.js +1 -0
- package/.output/public/assets/api-keys-Csh8ARKU.js +1 -0
- package/.output/public/assets/api-keys-OMPUoA_A.js +1 -0
- package/.output/public/assets/arrow-left-Bwq9X1eS.js +1 -0
- package/.output/public/assets/arrow-up-right-BkOVn4if.js +1 -0
- package/.output/public/assets/{card-DzCPSRsh.js → card-C_7d6O9a.js} +1 -1
- package/.output/public/assets/console-features-api-C1jRZTGw.js +1 -0
- package/.output/public/assets/dialog-DE8wFN_P.js +1 -0
- package/.output/public/assets/{dist-Clb6cQ9l.js → dist-C7ENGzpS.js} +1 -1
- package/.output/public/assets/empty-CVd5NlQD.js +1 -0
- package/.output/public/assets/{field-Bou7shoO.js → field-C06q1iC9.js} +1 -1
- package/.output/public/assets/index-BeWlQtO6.js +11 -0
- package/.output/public/assets/{input-group-DVtWFUUF.js → input-group-Bi61biIA.js} +1 -1
- package/.output/public/assets/insights-BjnAtC0f.js +2 -0
- package/.output/public/assets/insights-D86m11yH.js +42 -0
- package/.output/public/assets/insights-DpYstMoY.js +1 -0
- package/.output/public/assets/{insights-recovery-rpc-wvdyM4LD.js → insights-recovery-rpc-BIm5_ALc.js} +1 -1
- package/.output/public/assets/{insights-usage-rpc-qUkNtrWr.js → insights-usage-rpc-VHj8vyBt.js} +1 -1
- package/.output/public/assets/insights_.distribution-ADcrX48c.js +2 -0
- package/.output/public/assets/insights_.distribution-CuuJUN6Y.js +1 -0
- package/.output/public/assets/{insights_.distribution-CItZw3-8.js → insights_.distribution-DJRjuXsO.js} +1 -1
- package/.output/public/assets/installations-BSBBzqWs.js +2 -0
- package/.output/public/assets/installations-DqIE6WcO.js +1 -0
- package/.output/public/assets/installations-UsELbDvw.js +1 -0
- package/.output/public/assets/{loader-circle-Ca7C9YY1.js → loader-circle-CnCBxzHp.js} +1 -1
- package/.output/public/assets/mutation-Csp7xUNh.js +1 -0
- package/.output/public/assets/preload-helper-B-cOmpLH.js +1 -0
- package/.output/public/assets/{refresh-cw-CVGqvy8Z.js → refresh-cw-FF1NtzlQ.js} +1 -1
- package/.output/public/assets/{routes-veKtDW39.js → routes-CoN9XHP_.js} +2 -2
- package/.output/public/assets/routes-DT1jB0Zi.js +1 -0
- package/.output/public/assets/sidebar-D8mJRF15.js +3 -0
- package/.output/public/assets/styles-Bwt7v6U5.css +2 -0
- package/.output/public/assets/table-WBgfvgXg.js +1 -0
- package/.output/public/assets/{useCompositeListItem-CF7vsfcA.js → useCompositeListItem-CloBmDwn.js} +1 -1
- package/.output/public/assets/useMutation-DO8cvsTx.js +1 -0
- package/.output/public/assets/{useOpenInteractionType-AnAMWYIY.js → useOpenInteractionType-ReGr9GzJ.js} +1 -1
- package/.output/public/assets/valueToPercent-BvPAi4bP.js +1 -0
- package/.output/server/{__23tanstack-start-server-fn-resolver-CUQLz7hs.mjs → __23tanstack-start-server-fn-resolver-DMRD4e4f.mjs} +34 -42
- package/.output/server/_libs/@tanstack/react-router+[...].mjs +3756 -4022
- package/.output/server/_libs/@tanstack/react-router-ssr-query+[...].mjs +138 -95
- package/.output/server/_libs/tanstack__history.mjs +68 -41
- package/.output/server/_libs/tanstack__query-core.mjs +1618 -309
- package/.output/server/_libs/tanstack__react-query.mjs +255 -20
- package/.output/server/_ssr/{ConsoleFeatureUnavailable-DoxET2AT.mjs → ConsoleFeatureUnavailable-Du7jNPNS.mjs} +7 -7
- package/.output/server/_ssr/{HashValueDisplay-BplboHEb.mjs → HashValueDisplay-GQvFkXoi.mjs} +2 -2
- package/.output/server/_ssr/{InsightsInfo-o2YPd5Qc.mjs → InsightsInfo-Do7QSaFR.mjs} +2 -2
- package/.output/server/_ssr/{InsightsPageHeader-NExCJL1I.mjs → InsightsPageHeader-DSUWUWRc.mjs} +6 -6
- package/.output/server/_ssr/{NotFoundPage-Cd-A8ock.mjs → NotFoundPage-DsF4Vrhg.mjs} +2 -2
- package/.output/server/_ssr/{api-B1Ro0uys.mjs → api-BEiVs0H7.mjs} +9 -8
- package/.output/server/_ssr/{api-keys-Dvvy1sem.mjs → api-keys-BrvBWGRf.mjs} +2 -2
- package/.output/server/_ssr/{api-keys-CT3HG7KT.mjs → api-keys-K5v32nf7.mjs} +8 -8
- package/.output/server/_ssr/{api-keys-rpc-b1qTTFfG.mjs → api-keys-rpc-B96bBllm.mjs} +5 -5
- package/.output/server/_ssr/{api-rpc-Cbns2MGx.mjs → api-rpc-DcUe280B.mjs} +13 -55
- package/.output/server/_ssr/{auth-rpc-DChS7m9y.mjs → auth-rpc-C68W56DP.mjs} +6 -6
- package/.output/server/_ssr/{api-C0G9MTMI.mjs → auth.server-DM1J6NwR.mjs} +2815 -1308
- package/.output/server/_ssr/{bundleActivity-D17Pb_h5.mjs → bundleActivity-CpuY9CTP.mjs} +1 -1
- package/.output/server/_ssr/{card-DMbcvlPz.mjs → card-CPAEKx0w.mjs} +1 -1
- package/.output/server/_ssr/config-nsIcsHh8.mjs +15 -0
- package/.output/server/_ssr/config.server-DDCZk3Sq.mjs +36 -0
- package/.output/server/_ssr/{console-access-KpPv5lin.mjs → console-access-Da-2Qd7q.mjs} +3 -3
- package/.output/server/_ssr/{console-features-CsbyHYfK.mjs → console-features-Dzu2iUGD.mjs} +6 -6
- package/.output/server/_ssr/{console-features-api-B-KVuo4p.mjs → console-features-api-xAsSgFa_.mjs} +6 -6
- package/.output/server/_ssr/{console-features-rpc-Djyo5740.mjs → console-features-rpc-qARGpB24.mjs} +5 -5
- package/.output/server/_ssr/{createMiddleware-B_I3Ll4M.mjs → createMiddleware-BdBf_ezN.mjs} +41 -56
- package/.output/server/_ssr/{createServerRpc-DuNm5mmo.mjs → createServerRpc-B_y2lrwA.mjs} +2 -2
- package/.output/server/_ssr/databaseJsonValue-Bhxciy7Z.mjs +68 -0
- package/.output/server/_ssr/databaseRows-DwMAjaF8.mjs +74 -0
- package/.output/server/_ssr/{dialog-cOmLTUV2.mjs → dialog-q__BJ7mQ.mjs} +1 -1
- package/.output/server/_ssr/{dist-B-r4u3Lg.mjs → dist-Cxo9ghYv.mjs} +114 -3
- package/.output/server/_ssr/{downloadBundle-CexOFoZ4.mjs → downloadBundle-BW9I-pMQ.mjs} +6 -5
- package/.output/server/_ssr/{empty-BHoY_5jt.mjs → empty-DcBTAooP.mjs} +2 -2
- package/.output/server/_ssr/{empty-plugin-adapters-B5QvGpEl.mjs → empty-plugin-adapters-CYdinE-i.mjs} +1 -1
- package/.output/server/_ssr/{field-mjhcNEXD.mjs → field-QCDBVpXA.mjs} +2 -2
- package/.output/server/_ssr/{getBundleChildren-DbDXe9wB.mjs → getBundleChildren-DIAGCF4a.mjs} +2 -2
- package/.output/server/_ssr/{input-group-96H30HWC.mjs → input-group-hCk2nUoU.mjs} +1 -1
- package/.output/server/_ssr/{insights-DgFv1NsO.mjs → insights-BfBO0RFr.mjs} +18 -18
- package/.output/server/_ssr/{insights-D359GJFL.mjs → insights-DsAU3-TB.mjs} +5 -5
- package/.output/server/_ssr/{insights-D25VDVaz.mjs → insights-RIfg447W.mjs} +2 -2
- package/.output/server/_ssr/{insights-api-ChAKrbhG.mjs → insights-api-CDn-QQHU.mjs} +5 -5
- package/.output/server/_ssr/{insights-failures-WQ-ttjOx.mjs → insights-failures-BBGMhuUr.mjs} +2 -2
- package/.output/server/_ssr/{insights-failures-rpc-BFsqlltN.mjs → insights-failures-rpc-rA2dctK2.mjs} +8 -8
- package/.output/server/_ssr/{insights-recovery-DkL6bxMW.mjs → insights-recovery-Dpk6Mfb9.mjs} +1 -1
- package/.output/server/_ssr/{insights-recovery-rpc-2P5m8F62.mjs → insights-recovery-rpc-BCaF-xSd.mjs} +11 -11
- package/.output/server/_ssr/{insights-recovery-rpc-Tj8vNC19.mjs → insights-recovery-rpc-CcgYyUHk.mjs} +5 -5
- package/.output/server/_ssr/{insights-rpc-DrkVmV9o.mjs → insights-rpc-keycmwzw.mjs} +5 -5
- package/.output/server/_ssr/{insights-search-BsalnNw-.mjs → insights-search-BRg5VsNe.mjs} +1 -1
- package/.output/server/_ssr/{insights-usage-1nVTQrLy.mjs → insights-usage-cbw9n2Fq.mjs} +1 -1
- package/.output/server/_ssr/{insights-usage-rpc-Ct_4xHhZ.mjs → insights-usage-rpc-BKgV1QDf.mjs} +8 -8
- package/.output/server/_ssr/{insights-usage-rpc-DaYIRtFK.mjs → insights-usage-rpc-D-JYachy.mjs} +5 -5
- package/.output/server/_ssr/{insightsRecovery-CpGucWN1.mjs → insightsRecovery-B7oMc8d8.mjs} +2 -2
- package/.output/server/_ssr/{insightsUsage-JYpKZAF7.mjs → insightsUsage-Oa7kk5ek.mjs} +3 -3
- package/.output/server/_ssr/{insights_.distribution-jQZEF07J.mjs → insights_.distribution-BIqOqRW0.mjs} +13 -13
- package/.output/server/_ssr/{insights_.distribution-Bcu6uYs_.mjs → insights_.distribution-CuUrDa7P.mjs} +2 -2
- package/.output/server/_ssr/{insights_.distribution-D3Csuyjw.mjs → insights_.distribution-RT_6x_ud.mjs} +5 -5
- package/.output/server/_ssr/{installations-Cxikllmx.mjs → installations-BO5CjX2z.mjs} +11 -11
- package/.output/server/_ssr/{installations-BI5kelHv.mjs → installations-BjaHiIfh.mjs} +2 -2
- package/.output/server/_ssr/{installations-B8Vh54lH.mjs → installations-Dt5luA-N.mjs} +4 -4
- package/.output/server/_ssr/{listReleases-DqU9t1l3.mjs → listReleases-BitHzOYB.mjs} +1 -1
- package/.output/server/_ssr/{router-CRkm-wHD.mjs → router-DfVAixxe.mjs} +42 -39
- package/.output/server/_ssr/{routes-CNAi0Mmv.mjs → routes-C6LstNp8.mjs} +14 -14
- package/.output/server/_ssr/{routes-B3IJo_jL.mjs → routes-Q3Uhmwwz.mjs} +11 -11
- package/.output/server/_ssr/{runtime.server-NucbYjc7.mjs → runtime.server-fL0o6I2b.mjs} +500 -413
- package/.output/server/_ssr/schema-BKY9SqaY.mjs +25 -0
- package/.output/server/_ssr/{select-BkPAJFL7.mjs → select-CUlInmjk.mjs} +1 -1
- package/.output/server/_ssr/server-C43wq9ft.mjs +8330 -0
- package/.output/server/_ssr/{sidebar-Cw1VuC7d.mjs → sidebar-DKbx2ach.mjs} +3 -3
- package/.output/server/_ssr/ssr.mjs +1 -1
- package/.output/server/_ssr/start-BXUOv_n8.mjs +4 -0
- package/.output/server/_ssr/{table-q0P9wz7x.mjs → table-NGWV8B-S.mjs} +1 -1
- package/.output/server/_ssr/{updateFailures-DMU9f0pK.mjs → updateFailures-Jwe2Baab.mjs} +3 -3
- package/.output/server/_ssr/{uuidv7-BzSO-fr-.mjs → uuidv7-C8bwiZr8.mjs} +2 -2
- package/.output/server/_tanstack-start-manifest_v-WQ5qGn8n.mjs +124 -0
- package/.output/server/index.mjs +218 -218
- package/LICENSE +13 -14
- package/README.md +16 -12
- package/lib/index.d.mts +18 -8
- package/lib/vite-internal.mjs +15 -8
- package/lib/vite.d.mts +2 -0
- package/package.json +14 -14
- package/src/components/AppSidebar.tsx +9 -0
- package/src/components/ConsoleFeatureUnavailable.tsx +1 -3
- package/src/components/features/bundles/BundleMetadata.tsx +1 -1
- package/src/components/features/bundles/RolloutCohortsDialog.tsx +1 -1
- package/src/components/features/releases/ReleaseEditorSheet.tsx +6 -6
- package/src/index.ts +27 -15
- package/src/lib/api-rpc.ts +1 -54
- package/src/lib/api.ts +8 -89
- package/src/lib/console-features.ts +5 -5
- package/src/lib/scroll-restoration.ts +1 -1
- package/src/lib/server/config.server.ts +15 -52
- package/src/lib/server/console-runtime.server.ts +84 -6
- package/src/lib/server/downloadBundle.ts +10 -6
- package/src/lib/server/releaseReachability.ts +4 -4
- package/src/lib/server/runtime.server.ts +34 -46
- package/src/routeTree.gen.ts +31 -31
- package/src/routes/api/bundles/$bundleId/download.ts +2 -2
- package/src/vite-internal.ts +17 -8
- package/src/vite.ts +2 -0
- package/.output/public/assets/InsightsInfo-By_sPjTE.js +0 -1
- package/.output/public/assets/InsightsPageHeader-9_kx_LL7.js +0 -1
- package/.output/public/assets/api-CtarlV0l.js +0 -1
- package/.output/public/assets/api-keys-DFF_QqtN.js +0 -1
- package/.output/public/assets/api-keys-evfsQ4sN.js +0 -1
- package/.output/public/assets/arrow-left-BP9D-ta_.js +0 -1
- package/.output/public/assets/arrow-up-right-CDP9Tevw.js +0 -1
- package/.output/public/assets/console-features-api-yv7rm3DX.js +0 -1
- package/.output/public/assets/dialog-BDvCy_QO.js +0 -1
- package/.output/public/assets/empty-C5x9mn_s.js +0 -1
- package/.output/public/assets/index-0eg3l8aC.js +0 -10
- package/.output/public/assets/insights-2MbdiSNv.js +0 -1
- package/.output/public/assets/insights-C6tmCZHk.js +0 -2
- package/.output/public/assets/insights-CadS_aIA.js +0 -42
- package/.output/public/assets/insights_.distribution-BhBs6PNA.js +0 -1
- package/.output/public/assets/insights_.distribution-CJUH_wAS.js +0 -2
- package/.output/public/assets/installations-CH2H7JQt.js +0 -2
- package/.output/public/assets/installations-DMeMuwsW.js +0 -1
- package/.output/public/assets/installations-DnvxI9Dt.js +0 -1
- package/.output/public/assets/mutation-x9L28_CD.js +0 -1
- package/.output/public/assets/preload-helper-BN-UkjOE.js +0 -1
- package/.output/public/assets/routes-BhK8DuZA.js +0 -1
- package/.output/public/assets/sidebar-B45aMqRm.js +0 -3
- package/.output/public/assets/styles-Dn0pK1EX.css +0 -2
- package/.output/public/assets/table-CwLnN6KX.js +0 -1
- package/.output/public/assets/useMutation-CN1ygYEr.js +0 -1
- package/.output/public/assets/valueToPercent-C-t8FT0y.js +0 -1
- package/.output/server/_ssr/auth.server-Ccqz2iVv.mjs +0 -37
- package/.output/server/_ssr/config-DMEJdhoW.mjs +0 -13
- package/.output/server/_ssr/config.server-DyypN6cQ.mjs +0 -60
- package/.output/server/_ssr/databaseRows-CXxf_VIB.mjs +0 -132
- package/.output/server/_ssr/deleteBundle-Dcc21Lbd.mjs +0 -56
- package/.output/server/_ssr/server-DKJYsaCP.mjs +0 -7442
- package/.output/server/_ssr/start-DpViQGnt.mjs +0 -4
- package/.output/server/_tanstack-start-manifest_v-Bb0gKDbb.mjs +0 -124
- package/src/lib/server/deleteBundle.ts +0 -136
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/bundleActivity-
|
|
1
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/bundleActivity-CpuY9CTP.js
|
|
2
2
|
async function getBundleActivity(model, inputs) {
|
|
3
3
|
if (inputs.length === 0) return {};
|
|
4
4
|
const releases = inputs.map((input) => ({
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import "../_runtime.mjs";
|
|
2
2
|
import { mt as require_react, pt as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
|
|
3
|
-
import { O as cn } from "./sidebar-
|
|
3
|
+
import { O as cn } from "./sidebar-DKbx2ach.mjs";
|
|
4
4
|
require_react();
|
|
5
5
|
var import_jsx_runtime = require_jsx_runtime();
|
|
6
6
|
function Card({ className, ...props }) {
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { loadConfig } from "@hot-updater/cli-tools";
|
|
2
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/config-nsIcsHh8.js
|
|
3
|
+
var config_default = async () => {
|
|
4
|
+
const config = await loadConfig(null);
|
|
5
|
+
if (config.database === void 0) throw new Error("Set database in hot-updater.config.ts: the database your server runs on, such as d1Database(...), or standaloneRepository({ baseUrl }) to reach a self-hosted server through its admin API.");
|
|
6
|
+
if (config.storage === void 0) throw new Error("Set storage in hot-updater.config.ts: where your server stores bundles, which the console reads, such as r2Storage(...).");
|
|
7
|
+
return {
|
|
8
|
+
database: config.database,
|
|
9
|
+
storage: config.storage,
|
|
10
|
+
plugins: config.plugins,
|
|
11
|
+
console: { gitUrl: config.console.gitUrl }
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
//#endregion
|
|
15
|
+
export { config_default as default };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { r as getRequest } from "./server-C43wq9ft.mjs";
|
|
2
|
+
import { requireConsoleAccess, t as resolveConsoleConfig } from "./auth.server-DM1J6NwR.mjs";
|
|
3
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/config.server-DDCZk3Sq.js
|
|
4
|
+
var configPromise = null;
|
|
5
|
+
var core = null;
|
|
6
|
+
var runtime = null;
|
|
7
|
+
var loadCachedConfig = async (request) => {
|
|
8
|
+
if (!configPromise) configPromise = resolveConsoleConfig(request).catch((error) => {
|
|
9
|
+
configPromise = null;
|
|
10
|
+
throw error;
|
|
11
|
+
});
|
|
12
|
+
return configPromise;
|
|
13
|
+
};
|
|
14
|
+
var prepareConfig = async (request = getRequest()) => {
|
|
15
|
+
try {
|
|
16
|
+
await requireConsoleAccess(request);
|
|
17
|
+
const config = await loadCachedConfig(request);
|
|
18
|
+
core ??= config.core;
|
|
19
|
+
if (!runtime) {
|
|
20
|
+
const { createConsoleRuntime } = await import("./runtime.server-fL0o6I2b.mjs");
|
|
21
|
+
runtime = createConsoleRuntime(config);
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
config,
|
|
25
|
+
core,
|
|
26
|
+
runtime,
|
|
27
|
+
storage: config.storage
|
|
28
|
+
};
|
|
29
|
+
} catch (error) {
|
|
30
|
+
if (!(error instanceof Response && (error.status === 401 || error.status === 403))) console.error("Error during configuration initialization:", error);
|
|
31
|
+
throw error;
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
var isConfigLoaded = () => Boolean(configPromise);
|
|
35
|
+
//#endregion
|
|
36
|
+
export { isConfigLoaded, prepareConfig };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/console-access-
|
|
1
|
+
import { c as createMiddleware } from "./createMiddleware-BdBf_ezN.mjs";
|
|
2
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/console-access-Da-2Qd7q.js
|
|
3
3
|
/**
|
|
4
4
|
* Refuses a caller the console does not authorize before a server function
|
|
5
5
|
* reads its input. TanStack Start runs a function's middleware before the
|
|
@@ -9,7 +9,7 @@ import { s as createMiddleware } from "./createMiddleware-B_I3Ll4M.mjs";
|
|
|
9
9
|
* `console-access.spec.ts` checks that.
|
|
10
10
|
*/
|
|
11
11
|
var consoleAccess = createMiddleware({ type: "function" }).server(async ({ next }) => {
|
|
12
|
-
const [{ getRequest }, { requireConsoleAccess }] = await Promise.all([import("./server-
|
|
12
|
+
const [{ getRequest }, { requireConsoleAccess }] = await Promise.all([import("./server-C43wq9ft.mjs").then((n) => n.t), import("./auth.server-DM1J6NwR.mjs")]);
|
|
13
13
|
await requireConsoleAccess(getRequest());
|
|
14
14
|
return next();
|
|
15
15
|
});
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/console-features-
|
|
1
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/console-features-Dzu2iUGD.js
|
|
2
2
|
/**
|
|
3
|
-
* The console's features and the server plugin each one needs. The
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
3
|
+
* The console's features and the server plugin each one needs. The console
|
|
4
|
+
* serves a feature only when its config lists the plugin, as the server runs
|
|
5
|
+
* it, and against a self-hosted server (`standaloneRepository`) only the
|
|
6
|
+
* features its admin API serves (`remote`); the rest read the database.
|
|
7
7
|
* Navigation, route guards, and server functions all read this registry. Its
|
|
8
8
|
* other halves, keyed by the same features, hold what serves each feature on
|
|
9
9
|
* the server (`server/console-feature-apis.ts`) and what each adds to pages
|
|
@@ -27,7 +27,7 @@ var consoleFeatures = {
|
|
|
27
27
|
}
|
|
28
28
|
};
|
|
29
29
|
var featureIds = Object.keys(consoleFeatures);
|
|
30
|
-
/** The features on for the plugins
|
|
30
|
+
/** The features on for the plugins the console's config lists, from where the console reads them. */
|
|
31
31
|
var resolveConsoleFeatures = (plugins, { remote }) => {
|
|
32
32
|
const installed = new Set(plugins);
|
|
33
33
|
return Object.fromEntries(featureIds.map((feature) => {
|
package/.output/server/_ssr/{console-features-api-B-KVuo4p.mjs → console-features-api-xAsSgFa_.mjs}
RENAMED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { k as createSsrRpc } from "./sidebar-
|
|
4
|
-
import {
|
|
5
|
-
import { n as consoleFeatures } from "./console-features-CsbyHYfK.mjs";
|
|
1
|
+
import { n as consoleFeatures } from "./console-features-Dzu2iUGD.mjs";
|
|
2
|
+
import { u as createServerFn } from "./createMiddleware-BdBf_ezN.mjs";
|
|
3
|
+
import { k as createSsrRpc } from "./sidebar-DKbx2ach.mjs";
|
|
4
|
+
import { t as consoleAccess } from "./console-access-Da-2Qd7q.mjs";
|
|
6
5
|
import { _ as notFound } from "../_libs/@tanstack/react-router+[...].mjs";
|
|
7
|
-
|
|
6
|
+
import { n as queryOptions, r as useQuery } from "../_libs/tanstack__react-query.mjs";
|
|
7
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/console-features-api-xAsSgFa_.js
|
|
8
8
|
/** The features this console serves, for navigation and route guards. */
|
|
9
9
|
var getConsoleFeaturesRpc = createServerFn({ method: "GET" }).middleware([consoleAccess]).handler(createSsrRpc("82ec3500e57f9e81dac6d3f3a7bd9e34915da3121429beec87b7ad153dc6eafe"));
|
|
10
10
|
var consoleFeaturesQueryKey = ["console", "features"];
|
package/.output/server/_ssr/{console-features-rpc-Djyo5740.mjs → console-features-rpc-qARGpB24.mjs}
RENAMED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { t as consoleAccess } from "./console-access-
|
|
3
|
-
import { t as createServerRpc } from "./createServerRpc-
|
|
4
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/console-features-rpc-
|
|
1
|
+
import { u as createServerFn } from "./createMiddleware-BdBf_ezN.mjs";
|
|
2
|
+
import { t as consoleAccess } from "./console-access-Da-2Qd7q.mjs";
|
|
3
|
+
import { t as createServerRpc } from "./createServerRpc-B_y2lrwA.mjs";
|
|
4
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/console-features-rpc-qARGpB24.js
|
|
5
5
|
var getConsoleFeaturesRpc_createServerFn_handler = createServerRpc({
|
|
6
6
|
id: "82ec3500e57f9e81dac6d3f3a7bd9e34915da3121429beec87b7ad153dc6eafe",
|
|
7
7
|
name: "getConsoleFeaturesRpc",
|
|
8
8
|
filename: "src/lib/console-features-rpc.ts"
|
|
9
9
|
}, (opts) => getConsoleFeaturesRpc.__executeServer(opts));
|
|
10
10
|
var getConsoleFeaturesRpc = createServerFn({ method: "GET" }).middleware([consoleAccess]).handler(getConsoleFeaturesRpc_createServerFn_handler, async () => {
|
|
11
|
-
const { prepareConfig } = await import("./config.server-
|
|
11
|
+
const { prepareConfig } = await import("./config.server-DDCZk3Sq.mjs");
|
|
12
12
|
const { runtime } = await prepareConfig();
|
|
13
13
|
return {
|
|
14
14
|
features: await runtime.features(),
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
2
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/createMiddleware-
|
|
2
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/createMiddleware-BdBf_ezN.js
|
|
3
3
|
/**
|
|
4
4
|
* Create a redirect Response understood by TanStack Router.
|
|
5
5
|
*
|
|
6
6
|
* Use from route `loader`/`beforeLoad` or server functions to trigger a
|
|
7
7
|
* navigation. If `throw: true` is set, the redirect is thrown instead of
|
|
8
|
-
* returned.
|
|
9
|
-
*
|
|
8
|
+
* returned. External `href` values are classified as full-document
|
|
9
|
+
* navigations when the router resolves the redirect.
|
|
10
10
|
*
|
|
11
11
|
* @param opts Options for the redirect. Common fields:
|
|
12
|
-
* - `href`: absolute URL for external redirects
|
|
12
|
+
* - `href`: absolute URL for external redirects.
|
|
13
13
|
* - `statusCode`: HTTP status code to use (defaults to 307).
|
|
14
14
|
* - `headers`: additional headers to include on the Response.
|
|
15
15
|
* - Standard navigation options like `to`, `params`, `search`, `replace`,
|
|
@@ -19,10 +19,6 @@ import { AsyncLocalStorage } from "node:async_hooks";
|
|
|
19
19
|
*/
|
|
20
20
|
function redirect(opts) {
|
|
21
21
|
opts.statusCode = opts.statusCode || opts.code || 307;
|
|
22
|
-
if (!opts._builtLocation && !opts.reloadDocument && typeof opts.href === "string") try {
|
|
23
|
-
new URL(opts.href);
|
|
24
|
-
opts.reloadDocument = true;
|
|
25
|
-
} catch {}
|
|
26
22
|
const headers = new Headers(opts.headers);
|
|
27
23
|
if (opts.href && headers.get("Location") === null) headers.set("Location", opts.href);
|
|
28
24
|
const response = new Response(null, {
|
|
@@ -34,16 +30,9 @@ function redirect(opts) {
|
|
|
34
30
|
return response;
|
|
35
31
|
}
|
|
36
32
|
/** Check whether a value is a TanStack Router redirect Response. */
|
|
37
|
-
/** Check whether a value is a TanStack Router redirect Response. */
|
|
38
33
|
function isRedirect(obj) {
|
|
39
34
|
return obj instanceof Response && !!obj.options;
|
|
40
35
|
}
|
|
41
|
-
/** True if value is a redirect with a resolved `href` location. */
|
|
42
|
-
/** True if value is a redirect with a resolved `href` location. */
|
|
43
|
-
function isResolvedRedirect(obj) {
|
|
44
|
-
return isRedirect(obj) && !!obj.options.href;
|
|
45
|
-
}
|
|
46
|
-
/** Parse a serialized redirect object back into a redirect Response. */
|
|
47
36
|
/** Parse a serialized redirect object back into a redirect Response. */
|
|
48
37
|
function parseRedirect(obj) {
|
|
49
38
|
if (obj !== null && typeof obj === "object" && obj.isSerializedRedirect) return redirect(obj);
|
|
@@ -55,42 +44,12 @@ var X_TSS_SERIALIZED = "x-tss-serialized";
|
|
|
55
44
|
var X_TSS_RAW_RESPONSE = "x-tss-raw";
|
|
56
45
|
/** Content-Type for multiplexed framed responses (RawStream support) */
|
|
57
46
|
var TSS_CONTENT_TYPE_FRAMED = "application/x-tss-framed";
|
|
58
|
-
/**
|
|
59
|
-
|
|
60
|
-
*/
|
|
61
|
-
var
|
|
62
|
-
JSON: 0,
|
|
63
|
-
CHUNK: 1,
|
|
64
|
-
END: 2,
|
|
65
|
-
ERROR: 3
|
|
66
|
-
};
|
|
47
|
+
/** Largest payload accepted by one framed-protocol record. */
|
|
48
|
+
var MAX_FRAME_PAYLOAD_SIZE = 16 * 1024 * 1024;
|
|
49
|
+
/** Largest number of raw streams accepted in one framed response. */
|
|
50
|
+
var MAX_FRAMED_STREAMS = 1024;
|
|
67
51
|
/** Full Content-Type header value with version parameter */
|
|
68
52
|
var TSS_CONTENT_TYPE_FRAMED_VERSIONED = `${TSS_CONTENT_TYPE_FRAMED}; v=1`;
|
|
69
|
-
function isSafeKey(key) {
|
|
70
|
-
return key !== "__proto__" && key !== "constructor" && key !== "prototype";
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Merge target and source into a new null-proto object, filtering dangerous keys.
|
|
74
|
-
*/
|
|
75
|
-
function safeObjectMerge(target, source) {
|
|
76
|
-
const result = Object.create(null);
|
|
77
|
-
if (target) {
|
|
78
|
-
for (const key of Object.keys(target)) if (isSafeKey(key)) result[key] = target[key];
|
|
79
|
-
}
|
|
80
|
-
if (source && typeof source === "object") {
|
|
81
|
-
for (const key of Object.keys(source)) if (isSafeKey(key)) result[key] = source[key];
|
|
82
|
-
}
|
|
83
|
-
return result;
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Create a null-prototype object, optionally copying from source.
|
|
87
|
-
*/
|
|
88
|
-
function createNullProtoObject(source) {
|
|
89
|
-
if (!source) return Object.create(null);
|
|
90
|
-
const obj = Object.create(null);
|
|
91
|
-
for (const key of Object.keys(source)) if (isSafeKey(key)) obj[key] = source[key];
|
|
92
|
-
return obj;
|
|
93
|
-
}
|
|
94
53
|
var GLOBAL_STORAGE_KEY = Symbol.for("tanstack-start:start-storage-context");
|
|
95
54
|
var globalObj = globalThis;
|
|
96
55
|
if (!globalObj[GLOBAL_STORAGE_KEY]) globalObj[GLOBAL_STORAGE_KEY] = new AsyncLocalStorage();
|
|
@@ -104,7 +63,6 @@ function getStartContext(opts) {
|
|
|
104
63
|
return context;
|
|
105
64
|
}
|
|
106
65
|
var getStartOptions = () => getStartContext().startOptions;
|
|
107
|
-
var getStartContextServerOnly = getStartContext;
|
|
108
66
|
function splitSetCookieString(cookiesString) {
|
|
109
67
|
if (Array.isArray(cookiesString)) return cookiesString.flatMap((c) => splitSetCookieString(c));
|
|
110
68
|
if (typeof cookiesString !== "string") return [];
|
|
@@ -161,6 +119,32 @@ function mergeHeaders(...headers) {
|
|
|
161
119
|
return acc;
|
|
162
120
|
}, new Headers());
|
|
163
121
|
}
|
|
122
|
+
function isSafeKey(key) {
|
|
123
|
+
return key !== "__proto__" && key !== "constructor" && key !== "prototype";
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Merge target and source into a new null-proto object, filtering dangerous keys.
|
|
127
|
+
*/
|
|
128
|
+
function safeObjectMerge(target, source) {
|
|
129
|
+
const result = Object.create(null);
|
|
130
|
+
if (target) {
|
|
131
|
+
for (const key of Object.keys(target)) if (isSafeKey(key)) result[key] = target[key];
|
|
132
|
+
}
|
|
133
|
+
if (source && typeof source === "object") {
|
|
134
|
+
for (const key of Object.keys(source)) if (isSafeKey(key)) result[key] = source[key];
|
|
135
|
+
}
|
|
136
|
+
return result;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Create a null-prototype object, optionally copying from source.
|
|
140
|
+
*/
|
|
141
|
+
function createNullProtoObject(source) {
|
|
142
|
+
if (!source) return Object.create(null);
|
|
143
|
+
const obj = Object.create(null);
|
|
144
|
+
for (const key of Object.keys(source)) if (isSafeKey(key)) obj[key] = source[key];
|
|
145
|
+
return obj;
|
|
146
|
+
}
|
|
147
|
+
var getStartContextServerOnly = getStartContext;
|
|
164
148
|
var createServerFn = (options, __opts) => {
|
|
165
149
|
const resolvedOptions = __opts || options || {};
|
|
166
150
|
if (typeof resolvedOptions.method === "undefined") resolvedOptions.method = "GET";
|
|
@@ -175,10 +159,10 @@ var createServerFn = (options, __opts) => {
|
|
|
175
159
|
options: resolvedOptions,
|
|
176
160
|
middleware: (middleware) => {
|
|
177
161
|
const newMiddleware = [...resolvedOptions.middleware || []];
|
|
178
|
-
middleware.
|
|
179
|
-
if (TSS_SERVER_FUNCTION_FACTORY in
|
|
180
|
-
if (
|
|
181
|
-
} else newMiddleware.push(
|
|
162
|
+
middleware.forEach((item) => {
|
|
163
|
+
if (TSS_SERVER_FUNCTION_FACTORY in item) {
|
|
164
|
+
if (item.options.middleware) newMiddleware.push(...item.options.middleware);
|
|
165
|
+
} else newMiddleware.push(item);
|
|
182
166
|
});
|
|
183
167
|
const res = createServerFn(void 0, {
|
|
184
168
|
...resolvedOptions,
|
|
@@ -220,7 +204,8 @@ var createServerFn = (options, __opts) => {
|
|
|
220
204
|
const serverContextAfterGlobalMiddlewares = startContext.contextAfterGlobalMiddlewares;
|
|
221
205
|
return await executeMiddleware(resolvedMiddleware, "server", {
|
|
222
206
|
...extractedFn,
|
|
223
|
-
|
|
207
|
+
data: opts.data,
|
|
208
|
+
method: opts.method ?? resolvedOptions.method,
|
|
224
209
|
serverFnMeta: extractedFn.serverFnMeta,
|
|
225
210
|
context: safeObjectMerge(opts.context, serverContextAfterGlobalMiddlewares),
|
|
226
211
|
request: startContext.request
|
|
@@ -382,4 +367,4 @@ var createMiddleware = (options, __opts) => {
|
|
|
382
367
|
};
|
|
383
368
|
};
|
|
384
369
|
//#endregion
|
|
385
|
-
export { safeObjectMerge as _,
|
|
370
|
+
export { safeObjectMerge as _, TSS_SERVER_FUNCTION as a, createMiddleware as c, flattenMiddlewares as d, getStartContext as f, runWithStartContext as g, mergeHeaders as h, TSS_FORMDATA_CONTEXT as i, createNullProtoObject as l, isRedirect as m, MAX_FRAME_PAYLOAD_SIZE as n, X_TSS_RAW_RESPONSE as o, getStartOptions as p, TSS_CONTENT_TYPE_FRAMED_VERSIONED as r, X_TSS_SERIALIZED as s, MAX_FRAMED_STREAMS as t, createServerFn as u };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/createServerRpc-
|
|
1
|
+
import { a as TSS_SERVER_FUNCTION } from "./createMiddleware-BdBf_ezN.mjs";
|
|
2
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/createServerRpc-B_y2lrwA.js
|
|
3
3
|
var createServerRpc = (serverFnMeta, splitImportFn) => {
|
|
4
4
|
const url = "/_serverFn/" + serverFnMeta.id;
|
|
5
5
|
return Object.assign(splitImportFn, {
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/databaseJsonValue-Bhxciy7Z.js
|
|
2
|
+
/** A bundle an operation names is not stored. */
|
|
3
|
+
var DatabaseBundleNotFoundError = class extends Error {
|
|
4
|
+
bundleId;
|
|
5
|
+
name = "DatabaseBundleNotFoundError";
|
|
6
|
+
constructor(bundleId) {
|
|
7
|
+
super(`Bundle "${bundleId}" was not found.`);
|
|
8
|
+
this.bundleId = bundleId;
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
/** A row a delete names is still referenced, such as a bundle a release uses. */
|
|
12
|
+
var DatabaseRowReferencedError = class extends Error {
|
|
13
|
+
name = "DatabaseRowReferencedError";
|
|
14
|
+
constructor() {
|
|
15
|
+
super("The database row is still referenced.");
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
/** Input a database operation refuses before touching storage. */
|
|
19
|
+
var DatabaseAdapterInputError = class extends Error {
|
|
20
|
+
code;
|
|
21
|
+
name = "DatabaseAdapterInputError";
|
|
22
|
+
constructor(code) {
|
|
23
|
+
super(`Invalid database adapter input: ${code}`);
|
|
24
|
+
this.code = code;
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
var isDatabaseJsonValue = (value) => {
|
|
28
|
+
const ancestors = /* @__PURE__ */ new WeakSet();
|
|
29
|
+
const validate = (input) => {
|
|
30
|
+
if (input === null || typeof input === "string" || typeof input === "boolean") return true;
|
|
31
|
+
if (typeof input === "number") return Number.isFinite(input);
|
|
32
|
+
if (typeof input !== "object") return false;
|
|
33
|
+
if (ancestors.has(input)) return false;
|
|
34
|
+
ancestors.add(input);
|
|
35
|
+
try {
|
|
36
|
+
if (Array.isArray(input)) {
|
|
37
|
+
if (Object.getPrototypeOf(input) !== Array.prototype) return false;
|
|
38
|
+
if (Reflect.ownKeys(input).length !== input.length + 1) return false;
|
|
39
|
+
for (let index = 0; index < input.length; index += 1) {
|
|
40
|
+
const descriptor = Object.getOwnPropertyDescriptor(input, String(index));
|
|
41
|
+
if (descriptor === void 0 || !descriptor.enumerable || !("value" in descriptor) || !validate(descriptor.value)) return false;
|
|
42
|
+
}
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
const prototype = Object.getPrototypeOf(input);
|
|
46
|
+
if (prototype !== Object.prototype && prototype !== null) return false;
|
|
47
|
+
for (const key of Reflect.ownKeys(input)) {
|
|
48
|
+
if (typeof key !== "string" || key === "__proto__") return false;
|
|
49
|
+
const descriptor = Object.getOwnPropertyDescriptor(input, key);
|
|
50
|
+
if (descriptor === void 0 || !descriptor.enumerable || !("value" in descriptor) || !validate(descriptor.value)) return false;
|
|
51
|
+
}
|
|
52
|
+
return true;
|
|
53
|
+
} finally {
|
|
54
|
+
ancestors.delete(input);
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
return validate(value);
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Whether `value` is a plain object of JSON values a store keeps as they
|
|
61
|
+
* are: no cycles, accessors, non-finite numbers, or class instances. A
|
|
62
|
+
* plugin checks a `json` field's value with it before it writes, as
|
|
63
|
+
* Insights does for an event's metadata.
|
|
64
|
+
*/
|
|
65
|
+
var isDatabaseJsonObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value) && isDatabaseJsonValue(value);
|
|
66
|
+
var isDatabaseMetadataObject = (value) => isDatabaseJsonObject(value) && (!Object.hasOwn(value, "app_version") || typeof value["app_version"] === "string");
|
|
67
|
+
//#endregion
|
|
68
|
+
export { isDatabaseMetadataObject as a, isDatabaseJsonObject as i, DatabaseBundleNotFoundError as n, DatabaseRowReferencedError as r, DatabaseAdapterInputError as t };
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { O as stripBundleArtifactMetadata, f as getBundlePatches, m as getManifestStorageUri, p as getManifestFileHash, u as getAssetBaseStorageUri } from "./dist-Cxo9ghYv.mjs";
|
|
2
|
+
import { a as isDatabaseMetadataObject, t as DatabaseAdapterInputError } from "./databaseJsonValue-Bhxciy7Z.mjs";
|
|
3
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/databaseRows-DwMAjaF8.js
|
|
4
|
+
var bundleMetadataToRow = (metadata) => {
|
|
5
|
+
const value = stripBundleArtifactMetadata(metadata);
|
|
6
|
+
if (value === void 0) return {};
|
|
7
|
+
if (!isDatabaseMetadataObject(value)) throw new DatabaseAdapterInputError("invalid-data");
|
|
8
|
+
return value;
|
|
9
|
+
};
|
|
10
|
+
var releaseRowToRelease = (row) => ({
|
|
11
|
+
id: row.id,
|
|
12
|
+
revision: row.revision,
|
|
13
|
+
channelId: row.channel_id,
|
|
14
|
+
platform: row.platform,
|
|
15
|
+
kind: row.kind,
|
|
16
|
+
bundleId: row.bundle_id,
|
|
17
|
+
strategy: row.strategy,
|
|
18
|
+
targetAppVersion: row.target_app_version,
|
|
19
|
+
fingerprintHash: row.fingerprint_hash,
|
|
20
|
+
enabled: row.enabled,
|
|
21
|
+
shouldForceUpdate: row.should_force_update,
|
|
22
|
+
message: row.message,
|
|
23
|
+
rolloutCohortCount: row.rollout_cohort_count,
|
|
24
|
+
targetCohorts: row.target_cohorts,
|
|
25
|
+
operation: row.operation,
|
|
26
|
+
sourceReleaseId: row.source_release_id,
|
|
27
|
+
createdAtMs: row.created_at_ms,
|
|
28
|
+
updatedAtMs: row.updated_at_ms
|
|
29
|
+
});
|
|
30
|
+
var bundleToRow = (bundle) => {
|
|
31
|
+
const metadata = bundleMetadataToRow(bundle.metadata);
|
|
32
|
+
return {
|
|
33
|
+
id: bundle.id,
|
|
34
|
+
platform: bundle.platform,
|
|
35
|
+
git_commit_hash: bundle.gitCommitHash,
|
|
36
|
+
metadata,
|
|
37
|
+
manifest_storage_uri: getManifestStorageUri(bundle),
|
|
38
|
+
manifest_file_hash: getManifestFileHash(bundle),
|
|
39
|
+
asset_base_storage_uri: getAssetBaseStorageUri(bundle)
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
var bundleToPatchRows = (bundle) => getBundlePatches(bundle).map((patch, orderIndex) => ({
|
|
43
|
+
id: `${bundle.id}:${patch.baseBundleId}`,
|
|
44
|
+
bundle_id: bundle.id,
|
|
45
|
+
base_bundle_id: patch.baseBundleId,
|
|
46
|
+
base_file_hash: patch.baseFileHash,
|
|
47
|
+
patch_file_hash: patch.patchFileHash,
|
|
48
|
+
patch_storage_uri: patch.patchStorageUri,
|
|
49
|
+
byte_size: patch.byteSize,
|
|
50
|
+
order_index: orderIndex
|
|
51
|
+
}));
|
|
52
|
+
var comparePatchRows = (left, right) => left.order_index - right.order_index || left.id.localeCompare(right.id);
|
|
53
|
+
var patchRowToArtifact = (row) => ({
|
|
54
|
+
baseBundleId: row.base_bundle_id,
|
|
55
|
+
baseFileHash: row.base_file_hash,
|
|
56
|
+
byteSize: row.byte_size,
|
|
57
|
+
patchFileHash: row.patch_file_hash,
|
|
58
|
+
patchStorageUri: row.patch_storage_uri
|
|
59
|
+
});
|
|
60
|
+
var rowToBundle = (row, patchRows = []) => {
|
|
61
|
+
const patches = patchRows.slice().sort(comparePatchRows).map(patchRowToArtifact);
|
|
62
|
+
return {
|
|
63
|
+
id: row.id,
|
|
64
|
+
platform: row.platform,
|
|
65
|
+
gitCommitHash: row.git_commit_hash,
|
|
66
|
+
metadata: stripBundleArtifactMetadata(row.metadata),
|
|
67
|
+
manifestStorageUri: row.manifest_storage_uri,
|
|
68
|
+
manifestFileHash: row.manifest_file_hash,
|
|
69
|
+
assetBaseStorageUri: row.asset_base_storage_uri,
|
|
70
|
+
patches
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
//#endregion
|
|
74
|
+
export { rowToBundle as i, bundleToRow as n, releaseRowToRelease as r, bundleToPatchRows as t };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "../_runtime.mjs";
|
|
2
2
|
import { $ as DialogBackdrop, G as AlertDialogRoot, J as DialogRoot, K as DialogTrigger$1, Q as DialogClose, W as AlertDialogTrigger$1, X as DialogPopup, Y as DialogPortal$1, Z as DialogDescription$1, mt as require_react, pt as require_jsx_runtime, q as DialogTitle$1 } from "../_libs/@base-ui/react+[...].mjs";
|
|
3
3
|
import { t as X } from "../_libs/lucide-react.mjs";
|
|
4
|
-
import { O as cn, t as Button$1 } from "./sidebar-
|
|
4
|
+
import { O as cn, t as Button$1 } from "./sidebar-DKbx2ach.mjs";
|
|
5
5
|
require_react();
|
|
6
6
|
var import_jsx_runtime = require_jsx_runtime();
|
|
7
7
|
function AlertDialog$1({ ...props }) {
|
|
@@ -1,4 +1,116 @@
|
|
|
1
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/dist-
|
|
1
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/dist-Cxo9ghYv.js
|
|
2
|
+
var LETTER_DASH_NUMBER = "[a-zA-Z0-9-]";
|
|
3
|
+
var NUMERIC_IDENTIFIER = String.raw`0|[1-9]\d*`;
|
|
4
|
+
var NUMERIC_IDENTIFIER_LOOSE = String.raw`\d+`;
|
|
5
|
+
var NON_NUMERIC_IDENTIFIER = String.raw`\d*[a-zA-Z-]${LETTER_DASH_NUMBER}*`;
|
|
6
|
+
var MAIN_VERSION = String.raw`(${NUMERIC_IDENTIFIER})\.(${NUMERIC_IDENTIFIER})\.(${NUMERIC_IDENTIFIER})`;
|
|
7
|
+
var MAIN_VERSION_LOOSE = String.raw`(${NUMERIC_IDENTIFIER_LOOSE})\.(${NUMERIC_IDENTIFIER_LOOSE})\.(${NUMERIC_IDENTIFIER_LOOSE})`;
|
|
8
|
+
var PRERELEASE_IDENTIFIER = `(?:${NON_NUMERIC_IDENTIFIER}|${NUMERIC_IDENTIFIER})`;
|
|
9
|
+
var PRERELEASE_IDENTIFIER_LOOSE = `(?:${NON_NUMERIC_IDENTIFIER}|${NUMERIC_IDENTIFIER_LOOSE})`;
|
|
10
|
+
var PRERELEASE = String.raw`(?:-(${PRERELEASE_IDENTIFIER}(?:\.${PRERELEASE_IDENTIFIER})*))`;
|
|
11
|
+
var PRERELEASE_LOOSE = String.raw`(?:-?(${PRERELEASE_IDENTIFIER_LOOSE}(?:\.${PRERELEASE_IDENTIFIER_LOOSE})*))`;
|
|
12
|
+
var BUILD_IDENTIFIER = `${LETTER_DASH_NUMBER}+`;
|
|
13
|
+
var BUILD = String.raw`(?:\+(${BUILD_IDENTIFIER}(?:\.${BUILD_IDENTIFIER})*))`;
|
|
14
|
+
var FULL_PLAIN = `v?${MAIN_VERSION}${PRERELEASE}?${BUILD}?`;
|
|
15
|
+
var LOOSE_PLAIN = String.raw`[v=\s]*${MAIN_VERSION_LOOSE}${PRERELEASE_LOOSE}?${BUILD}?`;
|
|
16
|
+
var XRANGE_IDENTIFIER = String.raw`${NUMERIC_IDENTIFIER}|x|X|\*`;
|
|
17
|
+
var XRANGE_IDENTIFIER_LOOSE = String.raw`${NUMERIC_IDENTIFIER_LOOSE}|x|X|\*`;
|
|
18
|
+
String.raw`[v=\s]*(${XRANGE_IDENTIFIER})(?:\.(${XRANGE_IDENTIFIER})(?:\.(${XRANGE_IDENTIFIER})(?:${PRERELEASE})?${BUILD}?)?)?`;
|
|
19
|
+
String.raw`[v=\s]*(${XRANGE_IDENTIFIER_LOOSE})(?:\.(${XRANGE_IDENTIFIER_LOOSE})(?:\.(${XRANGE_IDENTIFIER_LOOSE})(?:${PRERELEASE_LOOSE})?${BUILD}?)?)?`;
|
|
20
|
+
String.raw`(?:\^)`;
|
|
21
|
+
var COERCE_PLAIN = String.raw`(^|[^\d])(\d{1,${16}})(?:\.(\d{1,${16}}))?(?:\.(\d{1,${16}}))?`;
|
|
22
|
+
var COERCE = String.raw`${COERCE_PLAIN}(?:$|[^\d])`;
|
|
23
|
+
var COERCE_FULL = String.raw`${COERCE_PLAIN}(?:${PRERELEASE})?(?:${BUILD})?(?:$|[^\d])`;
|
|
24
|
+
function makeSafeRegexSource(source) {
|
|
25
|
+
const replacements = [
|
|
26
|
+
[String.raw`\s`, 1],
|
|
27
|
+
[String.raw`\d`, 256],
|
|
28
|
+
[LETTER_DASH_NUMBER, 250]
|
|
29
|
+
];
|
|
30
|
+
for (const [token, maximum] of replacements) source = source.split(`${token}*`).join(`${token}{0,${maximum}}`).split(`${token}+`).join(`${token}{1,${maximum}}`);
|
|
31
|
+
return source;
|
|
32
|
+
}
|
|
33
|
+
function safeRegex(source, flags) {
|
|
34
|
+
return new RegExp(makeSafeRegexSource(source), flags);
|
|
35
|
+
}
|
|
36
|
+
var FULL = safeRegex(`^${FULL_PLAIN}$`);
|
|
37
|
+
var LOOSE = safeRegex(`^${LOOSE_PLAIN}$`);
|
|
38
|
+
var NUMERIC$1 = /^\d+$/;
|
|
39
|
+
function formatComparableVersion(version) {
|
|
40
|
+
const base = `${version.major}.${version.minor}.${version.patch}`;
|
|
41
|
+
return version.prerelease?.length ? `${base}-${version.prerelease.join(".")}` : base;
|
|
42
|
+
}
|
|
43
|
+
function formatFullVersion(version) {
|
|
44
|
+
const comparable = formatComparableVersion(version);
|
|
45
|
+
return version.build?.length ? `${comparable}+${version.build.join(".")}` : comparable;
|
|
46
|
+
}
|
|
47
|
+
function parse(version, options = {}) {
|
|
48
|
+
if (typeof version !== "string") return version;
|
|
49
|
+
if (version.length > 256) throw new TypeError(`Version exceeds the maximum length of 256 characters`);
|
|
50
|
+
const match = version.trim().match(options.loose ? LOOSE : FULL);
|
|
51
|
+
if (!match) throw new TypeError(`Invalid version syntax: ${version}`);
|
|
52
|
+
const major = Number(match[1]);
|
|
53
|
+
const minor = Number(match[2]);
|
|
54
|
+
const patch = Number(match[3]);
|
|
55
|
+
if (major > Number.MAX_SAFE_INTEGER || major < 0) throw new TypeError(`Invalid major version: ${match[1]}`);
|
|
56
|
+
if (minor > Number.MAX_SAFE_INTEGER || minor < 0) throw new TypeError(`Invalid minor version: ${match[2]}`);
|
|
57
|
+
if (patch > Number.MAX_SAFE_INTEGER || patch < 0) throw new TypeError(`Invalid patch version: ${match[3]}`);
|
|
58
|
+
const prerelease = match[4] ? match[4].split(".").map((identifier) => {
|
|
59
|
+
if (NUMERIC$1.test(identifier)) {
|
|
60
|
+
const numeric = Number(identifier);
|
|
61
|
+
if (numeric >= 0 && numeric < Number.MAX_SAFE_INTEGER) return numeric;
|
|
62
|
+
}
|
|
63
|
+
return identifier;
|
|
64
|
+
}) : void 0;
|
|
65
|
+
return {
|
|
66
|
+
build: match[5]?.split("."),
|
|
67
|
+
major,
|
|
68
|
+
minor,
|
|
69
|
+
patch,
|
|
70
|
+
prerelease
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
function tryParse(version, options = {}) {
|
|
74
|
+
try {
|
|
75
|
+
return parse(version, options);
|
|
76
|
+
} catch {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
var COERCE_EXACT = safeRegex(COERCE);
|
|
81
|
+
var COERCE_FULL_EXACT = safeRegex(COERCE_FULL);
|
|
82
|
+
safeRegex(`^${PRERELEASE}$`);
|
|
83
|
+
safeRegex(`^${PRERELEASE_LOOSE}$`);
|
|
84
|
+
function normalizeFull(version, options = {}) {
|
|
85
|
+
const parsed = tryParse(version, options);
|
|
86
|
+
return parsed ? formatFullVersion(parsed) : null;
|
|
87
|
+
}
|
|
88
|
+
function coerce(value, options = {}) {
|
|
89
|
+
if (typeof value === "object") return value;
|
|
90
|
+
const input = typeof value === "number" ? String(value) : value;
|
|
91
|
+
let match = null;
|
|
92
|
+
if (options.rtl) {
|
|
93
|
+
const expression = safeRegex(options.includePrerelease ? COERCE_FULL : COERCE, "g");
|
|
94
|
+
let next;
|
|
95
|
+
while ((next = expression.exec(input)) && (!match || match.index + match[0].length !== input.length)) {
|
|
96
|
+
if (!match || next.index + next[0].length !== match.index + match[0].length) match = next;
|
|
97
|
+
expression.lastIndex = next.index + next[1].length + next[2].length;
|
|
98
|
+
}
|
|
99
|
+
} else match = (options.includePrerelease ? COERCE_FULL_EXACT : COERCE_EXACT).exec(input);
|
|
100
|
+
if (!match) return null;
|
|
101
|
+
const major = match[2];
|
|
102
|
+
return tryParse(`${major}.${match[3] || "0"}.${match[4] || "0"}${options.includePrerelease && match[5] ? `-${match[5]}` : ""}${options.includePrerelease && match[6] ? `+${match[6]}` : ""}`, options);
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* The form of an app version that the device and the server compare:
|
|
106
|
+
* `major.minor.patch` of the first version in `appVersion`, such as `1.4.0`
|
|
107
|
+
* for `v1.4`, or null when it holds none. Prerelease and build parts are
|
|
108
|
+
* dropped.
|
|
109
|
+
*/
|
|
110
|
+
function canonicalizeAppVersion(appVersion) {
|
|
111
|
+
const version = coerce(appVersion);
|
|
112
|
+
return version ? normalizeFull(version) : null;
|
|
113
|
+
}
|
|
2
114
|
var stripBundleArtifactMetadata = (metadata) => metadata;
|
|
3
115
|
var getManifestStorageUri = (bundle) => bundle.manifestStorageUri;
|
|
4
116
|
var getManifestFileHash = (bundle) => bundle.manifestFileHash;
|
|
@@ -30,7 +142,6 @@ var getPrimaryPatch = (bundle) => {
|
|
|
30
142
|
var getPatchBaseBundleId = (bundle) => getPrimaryPatch(bundle)?.baseBundleId ?? null;
|
|
31
143
|
var getPatchBaseFileHash = (bundle) => getPrimaryPatch(bundle)?.baseFileHash ?? null;
|
|
32
144
|
var getPatchFileHash = (bundle) => getPrimaryPatch(bundle)?.patchFileHash ?? null;
|
|
33
|
-
var getPatchStorageUri = (bundle) => getPrimaryPatch(bundle)?.patchStorageUri ?? null;
|
|
34
145
|
var NUMERIC_COHORT_SIZE = 1e3;
|
|
35
146
|
var DEFAULT_ROLLOUT_COHORT_COUNT = NUMERIC_COHORT_SIZE;
|
|
36
147
|
var INVALID_COHORT_ERROR_MESSAGE = `Invalid cohort. Use 1-1000 or a lowercase slug without spaces, up to 64 characters.`;
|
|
@@ -270,4 +381,4 @@ var NIL_UUID = "00000000-0000-0000-0000-000000000000";
|
|
|
270
381
|
var UUID_V7_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/;
|
|
271
382
|
var isUUIDv7 = (value) => typeof value === "string" && UUID_V7_PATTERN.test(value);
|
|
272
383
|
//#endregion
|
|
273
|
-
export { isUUIDv7 as C, parseReleaseCatalogScopeKey as D, normalizeRolloutCohortCount as E, stripBundleArtifactMetadata as O, isReleaseEligibleForCohort as S, normalizeCohortValue as T,
|
|
384
|
+
export { isUUIDv7 as C, parseReleaseCatalogScopeKey as D, normalizeRolloutCohortCount as E, stripBundleArtifactMetadata as O, isReleaseEligibleForCohort as S, normalizeCohortValue as T, getPatchBaseBundleId as _, RELEASE_CATALOG_FALLBACK_POLICY as a, getRolledOutNumericCohorts as b, decodeChannelKey as c, getBundlePatch as d, getBundlePatches as f, getNumericCohortValue as g, getNumericCohortRolloutPosition as h, NUMERIC_COHORT_SIZE as i, encodeChannelKey as l, getManifestStorageUri as m, MAX_COMPILED_CATALOG_BYTES as n, canonicalizeAppVersion as o, getManifestFileHash as p, NIL_UUID as r, createReleaseCatalogScopeKey as s, INVALID_COHORT_ERROR_MESSAGE as t, getAssetBaseStorageUri as u, getPatchBaseFileHash as v, isValidCohort as w, isCustomCohort as x, getPatchFileHash as y };
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/downloadBundle-
|
|
2
|
-
var downloadBundle = async (bundleId, { core,
|
|
1
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/downloadBundle-BW9I-pMQ.js
|
|
2
|
+
var downloadBundle = async (bundleId, { core, storage }) => {
|
|
3
3
|
const detail = await core.getBundle(bundleId);
|
|
4
4
|
if (!detail) return new Response("Bundle not found", { status: 404 });
|
|
5
5
|
const storageUri = detail.bundle.manifest_storage_uri;
|
|
6
6
|
const protocol = new URL(storageUri).protocol.replace(":", "");
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
const storageAdapter = storage.find((adapter) => adapter.protocol === protocol);
|
|
8
|
+
if (storageAdapter?.get !== void 0) {
|
|
9
|
+
const { response } = await storageAdapter.get({ storageUri });
|
|
9
10
|
if (!response) return new Response("Storage object not found", { status: 404 });
|
|
10
11
|
const headers = new Headers(response.headers);
|
|
11
12
|
headers.set("cache-control", "private, no-store");
|
|
@@ -16,7 +17,7 @@ var downloadBundle = async (bundleId, { core, storagePlugin }) => {
|
|
|
16
17
|
statusText: response.statusText
|
|
17
18
|
});
|
|
18
19
|
}
|
|
19
|
-
if (protocol !== "http" && protocol !== "https") return new Response(`No storage
|
|
20
|
+
if (protocol !== "http" && protocol !== "https") return new Response(`No storage adapter for protocol: ${protocol}`, { status: 503 });
|
|
20
21
|
return Response.redirect(storageUri, 302);
|
|
21
22
|
};
|
|
22
23
|
//#endregion
|