@hot-updater/console 1.0.0-rc.43 → 1.0.0-rc.45
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/server/{__23tanstack-start-server-fn-resolver-XXISQe-w.mjs → __23tanstack-start-server-fn-resolver-C0h6DK_U.mjs} +42 -42
- package/.output/server/_ssr/{BundleIdDisplay-GuWx7PnC.mjs → BundleIdDisplay-B8E4-KIb.mjs} +2 -2
- package/.output/server/_ssr/{ConsoleFeatureUnavailable-CLHW0XYS.mjs → ConsoleFeatureUnavailable-CLAxmo9g.mjs} +5 -5
- package/.output/server/_ssr/{EventDetails-BurQ13vD.mjs → EventDetails-fGBIXtCe.mjs} +6 -6
- package/.output/server/_ssr/{HashValueDisplay-CnoWq0tm.mjs → HashValueDisplay-CtsZtLyz.mjs} +2 -2
- package/.output/server/_ssr/{InsightsInfo-CBgTYn8Y.mjs → InsightsInfo-DlF_lwhy.mjs} +2 -2
- package/.output/server/_ssr/{InsightsPageHeader-CkYuMORK.mjs → InsightsPageHeader-4B_g0hVn.mjs} +5 -5
- package/.output/server/_ssr/{NotFoundPage-DkxohVS3.mjs → NotFoundPage-HINeToCG.mjs} +2 -2
- package/.output/server/_ssr/{alert-dialog-A05ThCUq.mjs → alert-dialog-CUeMgQKB.mjs} +1 -1
- package/.output/server/_ssr/{api-w7bi8VCz.mjs → api-BphkK30h.mjs} +3 -3
- package/.output/server/_ssr/{api-keys-C1Kk_ppp.mjs → api-keys-CqR1G4fm.mjs} +2 -2
- package/.output/server/_ssr/{api-keys-DBv3vPrm.mjs → api-keys-PiiUNQrT.mjs} +7 -7
- package/.output/server/_ssr/{api-keys-rpc-CbXQX_ye.mjs → api-keys-rpc-BgRzoMP_.mjs} +3 -3
- package/.output/server/_ssr/{api-rpc-CokUvWiG.mjs → api-rpc-Bp_Q1uGk.mjs} +4 -4
- package/.output/server/_ssr/{auth-rpc-foAvEMHg.mjs → auth-rpc-UBCEATLW.mjs} +4 -4
- package/.output/server/_ssr/{auth.server-D_ta0yBD.mjs → auth.server-DSfSRv6p.mjs} +53 -108
- package/.output/server/_ssr/{config.server-CArx4MWv.mjs → config.server-CEcVwRTe.mjs} +4 -4
- package/.output/server/_ssr/{console-access-Bcux5b3Z.mjs → console-access-BwNhhy0-.mjs} +2 -2
- package/.output/server/_ssr/{console-features-api-p1jIYQEr.mjs → console-features-api-SEIn5EnF.mjs} +3 -3
- package/.output/server/_ssr/{console-features-rpc-AUdVUeez.mjs → console-features-rpc-Bbdi61DN.mjs} +3 -3
- package/.output/server/_ssr/{dialog-DDQuZKZh.mjs → dialog-BDGms7PY.mjs} +1 -1
- package/.output/server/_ssr/{downloadBundle-DViuIa9U.mjs → downloadBundle-CZysjmNW.mjs} +2 -2
- package/.output/server/_ssr/{empty-XPy-Sc6a.mjs → empty-l-c_8ees.mjs} +2 -2
- package/.output/server/_ssr/{field-C22GMktN.mjs → field-DLPzSOw6.mjs} +2 -2
- package/.output/server/_ssr/{input-group-BNnXqA2r.mjs → input-group-BhcEyj98.mjs} +1 -1
- package/.output/server/_ssr/{insights-D4lKL06-.mjs → insights-7TkDWycN.mjs} +2 -2
- package/.output/server/_ssr/{insights-B388r33R.mjs → insights-MGN_o5hB.mjs} +5 -5
- package/.output/server/_ssr/{insights-MaC5AwH_.mjs → insights-U_zP_3ok.mjs} +18 -18
- package/.output/server/_ssr/{insights-api-gYQ6tmn7.mjs → insights-api-CfWBAG05.mjs} +3 -3
- package/.output/server/_ssr/{insights-failures-rpc-BJ9KIF8r.mjs → insights-failures-rpc-BhFJsf9E.mjs} +6 -6
- package/.output/server/_ssr/{insights-recovery-rpc-DnStdFhV.mjs → insights-recovery-rpc-D4mGZhop.mjs} +4 -4
- package/.output/server/_ssr/{insights-rpc-APJnyiBi.mjs → insights-rpc-DMHktHYz.mjs} +3 -3
- package/.output/server/_ssr/{insights-usage-rpc-9vltaEY8.mjs → insights-usage-rpc-D3vXoIPv.mjs} +4 -4
- package/.output/server/_ssr/{insights-usage-rpc-D6xAeyFM.mjs → insights-usage-rpc-DzDuZ24N.mjs} +3 -3
- package/.output/server/_ssr/{insights_.distribution-CgG2GqzB.mjs → insights_.distribution-BJTV7hDh.mjs} +5 -5
- package/.output/server/_ssr/{insights_.distribution-BkT-5kT8.mjs → insights_.distribution-DrHS7rnX.mjs} +2 -2
- package/.output/server/_ssr/{insights_.distribution-D9UMjFvG.mjs → insights_.distribution-QIRzPdq8.mjs} +11 -11
- package/.output/server/_ssr/{installations-D4K0I6c9.mjs → installations-DCksfWjU.mjs} +2 -2
- package/.output/server/_ssr/{installations-DDXWCsUX.mjs → installations-DZ1P6wkv.mjs} +4 -4
- package/.output/server/_ssr/{installations-C5D2qgjz.mjs → installations-T0E9Qamp.mjs} +10 -10
- package/.output/server/_ssr/{runtime.server-BoE9GFjQ.mjs → plugins-3wxZQEn5.mjs} +539 -88
- package/.output/server/_ssr/{release-adoption-rpc-CXIyrYOI.mjs → release-adoption-rpc-BO20pY2N.mjs} +6 -6
- package/.output/server/_ssr/{remote-config-Dea9Rpr3.mjs → remote-config-B7_NBmLN.mjs} +2 -2
- package/.output/server/_ssr/{remote-config-BUNHH7tV.mjs → remote-config-C5UgULrl.mjs} +15 -15
- package/.output/server/_ssr/{remote-config-DVj-UAtW.mjs → remote-config-lANxuYr_.mjs} +2 -2
- package/.output/server/_ssr/{remote-config-rpc-DCo71pd-.mjs → remote-config-rpc-1aDU2dtm.mjs} +4 -4
- package/.output/server/_ssr/{router-BTQPCdoU.mjs → router-BYebb7aQ.mjs} +14 -14
- package/.output/server/_ssr/{routes-nHGXir4U.mjs → routes-BCJrmZER.mjs} +8 -8
- package/.output/server/_ssr/{routes-C-jLihQx.mjs → routes-BHKSTaum.mjs} +13 -13
- package/.output/server/_ssr/runtime.server-DLrq5UBB.mjs +104 -0
- package/.output/server/_ssr/{select-DYcpGuq2.mjs → select-DdLG1qd_.mjs} +1 -1
- package/.output/server/_ssr/{server-D3zvqaQV.mjs → server-CjT9jgc8.mjs} +2 -2
- package/.output/server/_ssr/{sidebar-BHoagIeX.mjs → sidebar-BHokxLBL.mjs} +2 -2
- package/.output/server/_ssr/ssr.mjs +1 -1
- package/.output/server/_ssr/{switch-BBHOnmnl.mjs → switch-CWKdNVzQ.mjs} +2 -2
- package/.output/server/_ssr/{table-BJrrSHUQ.mjs → table-B8z0fLEM.mjs} +1 -1
- package/.output/server/_ssr/{tabs-CkVadpLX.mjs → tabs-DrdTcJ5o.mjs} +2 -2
- package/.output/server/index.mjs +106 -106
- package/README.md +3 -2
- package/package.json +7 -7
- package/src/lib/api-keys-rpc.ts +1 -1
- package/src/lib/insights-api.ts +1 -1
- package/src/lib/insights-failures.ts +1 -1
- package/src/lib/insights-rpc.ts +1 -1
- package/src/lib/insights-view.ts +1 -1
- package/src/lib/remote-config-draft.ts +1 -1
- package/src/lib/remote-config-rpc.ts +2 -2
- package/src/lib/server/bundleActivity.ts +1 -1
- package/src/lib/server/console-feature-apis.ts +3 -3
- package/src/lib/server/console-runtime.server.ts +5 -5
- package/src/lib/server/downloadBundle.ts +3 -5
- package/src/lib/server/failureReports.ts +1 -1
- package/src/lib/server/insightsUsage.ts +1 -1
- package/src/lib/server/releaseAdoption.ts +1 -1
- package/src/lib/server/remoteConfig.ts +1 -1
- package/src/lib/server/updateFailures.ts +1 -1
- package/.output/server/_ssr/remote-config-BzCPVSO1.mjs +0 -522
|
@@ -6,7 +6,7 @@ import { a as normalize, i as defineTable, n as compare, o as normalizeRange, r
|
|
|
6
6
|
import { n as createUUIDv7After, t as createUUIDv7 } from "./uuidv7-ctA_XVZA.mjs";
|
|
7
7
|
import { t as isRemoteDatabase } from "./databaseConfig-C5SkAyUy.mjs";
|
|
8
8
|
import { r as rangesIntersect } from "../_libs/verkit.mjs";
|
|
9
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/auth.server-
|
|
9
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/auth.server-DSfSRv6p.js
|
|
10
10
|
var SHA256_FILE_HASH_RE = /^[0-9a-f]{64}$/;
|
|
11
11
|
var isContentAddressedAssetFileHash = (value) => {
|
|
12
12
|
return typeof value === "string" && SHA256_FILE_HASH_RE.test(value);
|
|
@@ -516,29 +516,6 @@ var ReleaseCatalogMutationError = class extends Error {
|
|
|
516
516
|
this.code = code;
|
|
517
517
|
}
|
|
518
518
|
};
|
|
519
|
-
var decodeBase64Url = (value) => {
|
|
520
|
-
try {
|
|
521
|
-
const base64 = value.replaceAll("-", "+").replaceAll("_", "/");
|
|
522
|
-
const binary = atob(base64.padEnd(Math.ceil(base64.length / 4) * 4, "="));
|
|
523
|
-
return new TextDecoder(void 0, { fatal: true }).decode(Uint8Array.from(binary, (character) => character.charCodeAt(0)));
|
|
524
|
-
} catch {
|
|
525
|
-
return null;
|
|
526
|
-
}
|
|
527
|
-
};
|
|
528
|
-
var parseStorageDownloadPath = (path) => {
|
|
529
|
-
const match = /^\/storage\/([^/]+)\/([^/]+)$/.exec(path);
|
|
530
|
-
if (!match) return null;
|
|
531
|
-
const storageUri = decodeBase64Url(match[1]);
|
|
532
|
-
if (storageUri === null) return null;
|
|
533
|
-
try {
|
|
534
|
-
return {
|
|
535
|
-
signature: decodeURIComponent(match[2]),
|
|
536
|
-
storageUri
|
|
537
|
-
};
|
|
538
|
-
} catch {
|
|
539
|
-
return null;
|
|
540
|
-
}
|
|
541
|
-
};
|
|
542
519
|
var DatabaseConstraintError = class extends Error {
|
|
543
520
|
reason;
|
|
544
521
|
model;
|
|
@@ -3134,7 +3111,7 @@ var createEngine = (database, { plugins = [], now = Date.now } = {}) => {
|
|
|
3134
3111
|
dispose: () => engine.dispose()
|
|
3135
3112
|
};
|
|
3136
3113
|
};
|
|
3137
|
-
var HOT_UPDATER_SERVER_VERSION = "1.0.0-rc.
|
|
3114
|
+
var HOT_UPDATER_SERVER_VERSION = "1.0.0-rc.45";
|
|
3138
3115
|
/**
|
|
3139
3116
|
* `/version` on both mounts. The admin mount also lists the ids of the
|
|
3140
3117
|
* plugins the server runs, sorted; apps never learn which plugins a server
|
|
@@ -4924,6 +4901,22 @@ var privateNotFound = () => Response.json({ error: "Not found" }, {
|
|
|
4924
4901
|
status: 404,
|
|
4925
4902
|
headers: { "cache-control": "private, no-store" }
|
|
4926
4903
|
});
|
|
4904
|
+
var badRequest = (error) => Response.json({ error }, {
|
|
4905
|
+
status: 400,
|
|
4906
|
+
headers: { "cache-control": "private, no-store" }
|
|
4907
|
+
});
|
|
4908
|
+
/**
|
|
4909
|
+
* A 400 for a catalog path whose scope is malformed, such as a channel name
|
|
4910
|
+
* where its base64url key belongs; null for a well-formed scope.
|
|
4911
|
+
*/
|
|
4912
|
+
var invalidScope = (input) => {
|
|
4913
|
+
try {
|
|
4914
|
+
createReleaseCatalogScopeKey(input);
|
|
4915
|
+
return null;
|
|
4916
|
+
} catch (error) {
|
|
4917
|
+
return badRequest(error instanceof Error ? error.message : "Invalid Release Catalog scope");
|
|
4918
|
+
}
|
|
4919
|
+
};
|
|
4927
4920
|
/**
|
|
4928
4921
|
* A scope with no catalog yet, such as a store version before its first
|
|
4929
4922
|
* OTA release: cached like a catalog, so its update checks don't all reach
|
|
@@ -5002,16 +4995,15 @@ var createReleaseCatalogRouteHandlers = () => {
|
|
|
5002
4995
|
appVersionReleaseCatalog: async (params, request, { core }) => {
|
|
5003
4996
|
const rawAppVersion = requireRouteParam(params, "appVersion");
|
|
5004
4997
|
const appVersion = canonicalizeAppVersion(rawAppVersion);
|
|
5005
|
-
if (appVersion === null || appVersion !== rawAppVersion) return
|
|
5006
|
-
status: 400,
|
|
5007
|
-
headers: { "cache-control": "private, no-store" }
|
|
5008
|
-
});
|
|
4998
|
+
if (appVersion === null || appVersion !== rawAppVersion) return badRequest("Invalid app version");
|
|
5009
4999
|
const input = {
|
|
5010
5000
|
appVersion,
|
|
5011
5001
|
channelKey: requireRouteParam(params, "channelKey"),
|
|
5012
5002
|
platform: requirePlatformParam(params),
|
|
5013
5003
|
strategy: "APP_VERSION"
|
|
5014
5004
|
};
|
|
5005
|
+
const invalid = invalidScope(input);
|
|
5006
|
+
if (invalid) return invalid;
|
|
5015
5007
|
return catalogResponse(await loadCatalog(`app-version:${JSON.stringify(input)}`, () => core.getReleaseCatalog(input)), request);
|
|
5016
5008
|
},
|
|
5017
5009
|
fingerprintReleaseCatalog: async (params, request, { core }) => {
|
|
@@ -5021,6 +5013,8 @@ var createReleaseCatalogRouteHandlers = () => {
|
|
|
5021
5013
|
platform: requirePlatformParam(params),
|
|
5022
5014
|
strategy: "FINGERPRINT"
|
|
5023
5015
|
};
|
|
5016
|
+
const invalid = invalidScope(input);
|
|
5017
|
+
if (invalid) return invalid;
|
|
5024
5018
|
return catalogResponse(await loadCatalog(`fingerprint:${JSON.stringify(input)}`, () => core.getReleaseCatalog(input)), request);
|
|
5025
5019
|
},
|
|
5026
5020
|
artifactV1: async (params, _request, { core }) => {
|
|
@@ -5098,8 +5092,8 @@ var errorResponse = (error, status) => Response.json({ error }, {
|
|
|
5098
5092
|
headers: { "cache-control": "private, no-store" },
|
|
5099
5093
|
status
|
|
5100
5094
|
});
|
|
5101
|
-
/** `/version`
|
|
5102
|
-
var PUBLIC_CLIENT_ROUTES = /* @__PURE__ */ new Set(["version"
|
|
5095
|
+
/** `/version` never passes through the client policy. */
|
|
5096
|
+
var PUBLIC_CLIENT_ROUTES = /* @__PURE__ */ new Set(["version"]);
|
|
5103
5097
|
var routesOf = Symbol.for("@hot-updater/server/routes");
|
|
5104
5098
|
var withVary = (response, varyHeaders) => {
|
|
5105
5099
|
const cacheControl = response.headers.get("cache-control") ?? "";
|
|
@@ -5144,26 +5138,11 @@ var createRequestHandler = ({ api, clientPolicy, privateResponses = false, route
|
|
|
5144
5138
|
});
|
|
5145
5139
|
}
|
|
5146
5140
|
};
|
|
5147
|
-
|
|
5148
|
-
const token = params.token;
|
|
5149
|
-
const signature = params.signature;
|
|
5150
|
-
if (!token || !signature) return errorResponse("Not found", 404);
|
|
5151
|
-
const response = await downloadStorageObject(token, signature);
|
|
5152
|
-
if (!response) return errorResponse("Not found", 404);
|
|
5153
|
-
const headers = new Headers(response.headers);
|
|
5154
|
-
if (!headers.has("cache-control")) headers.set("cache-control", "public, max-age=31536000, immutable");
|
|
5155
|
-
return new Response(response.body, {
|
|
5156
|
-
headers,
|
|
5157
|
-
status: response.status,
|
|
5158
|
-
statusText: response.statusText
|
|
5159
|
-
});
|
|
5160
|
-
};
|
|
5161
|
-
function createHotUpdaterHandlers({ api, clientPolicy, downloadStorageObject, endpoints = [], plugins = [] }) {
|
|
5141
|
+
function createHotUpdaterHandlers({ api, clientPolicy, endpoints = [], plugins = [] }) {
|
|
5162
5142
|
const routeHandlers = {
|
|
5163
5143
|
...createVersionRouteHandlers(plugins),
|
|
5164
5144
|
...createReleaseCatalogRouteHandlers(),
|
|
5165
|
-
...createAdminRouteHandlers()
|
|
5166
|
-
...downloadStorageObject === void 0 ? {} : { downloadStorageObject: createDownloadStorageRouteHandler(downloadStorageObject) }
|
|
5145
|
+
...createAdminRouteHandlers()
|
|
5167
5146
|
};
|
|
5168
5147
|
const routes = [];
|
|
5169
5148
|
const shapes = /* @__PURE__ */ new Map();
|
|
@@ -5182,7 +5161,6 @@ function createHotUpdaterHandlers({ api, clientPolicy, downloadStorageObject, en
|
|
|
5182
5161
|
const clientRouter = createRouter();
|
|
5183
5162
|
const addClientRoute = mount(clientRouter, false);
|
|
5184
5163
|
addClientRoute("GET", "/version", "version");
|
|
5185
|
-
if (downloadStorageObject !== void 0) addClientRoute("GET", "/storage/:token/:signature", "downloadStorageObject");
|
|
5186
5164
|
addClientRoute("GET", "/release-catalogs/app-version/:platform/:channelKey/:appVersion", "appVersionReleaseCatalog");
|
|
5187
5165
|
addClientRoute("GET", "/release-catalogs/fingerprint/:platform/:channelKey/:fingerprintHash", "fingerprintReleaseCatalog");
|
|
5188
5166
|
addClientRoute("GET", "/artifacts/v1/:targetBundleId/from/:currentBundleId", "artifactV1");
|
|
@@ -5212,33 +5190,23 @@ function createHotUpdaterHandlers({ api, clientPolicy, downloadStorageObject, en
|
|
|
5212
5190
|
Object.defineProperty(handlers, routesOf, { value: Object.freeze(routes) });
|
|
5213
5191
|
return Object.freeze(handlers);
|
|
5214
5192
|
}
|
|
5193
|
+
/** A URL devices download from, which only an absolute HTTP(S) URL can be. */
|
|
5215
5194
|
var assertRemoteUrl = (value) => {
|
|
5216
|
-
|
|
5217
|
-
|
|
5195
|
+
let protocol;
|
|
5196
|
+
try {
|
|
5197
|
+
protocol = new URL(value).protocol;
|
|
5198
|
+
} catch {}
|
|
5199
|
+
if (protocol !== "http:" && protocol !== "https:") throw new Error("Storage getDownloadUrl must resolve to an absolute HTTP(S) URL.");
|
|
5218
5200
|
return value;
|
|
5219
5201
|
};
|
|
5220
5202
|
var getStorageProtocol = (storageUri) => new URL(storageUri).protocol.replace(":", "");
|
|
5221
5203
|
var isRemoteUrlProtocol = (protocol) => protocol === "http" || protocol === "https";
|
|
5222
|
-
|
|
5223
|
-
|
|
5224
|
-
|
|
5225
|
-
|
|
5226
|
-
|
|
5227
|
-
|
|
5228
|
-
const leftBytes = new TextEncoder().encode(left);
|
|
5229
|
-
const rightBytes = new TextEncoder().encode(right);
|
|
5230
|
-
let difference = leftBytes.length ^ rightBytes.length;
|
|
5231
|
-
const length = Math.max(leftBytes.length, rightBytes.length);
|
|
5232
|
-
for (let index = 0; index < length; index += 1) difference |= (leftBytes[index] ?? 0) ^ (rightBytes[index] ?? 0);
|
|
5233
|
-
return difference === 0;
|
|
5234
|
-
};
|
|
5235
|
-
var createStorageAccess = (storageAdapters) => {
|
|
5236
|
-
const protocols = /* @__PURE__ */ new Set();
|
|
5237
|
-
for (const storage of storageAdapters) {
|
|
5238
|
-
if (protocols.has(storage.protocol)) throw new Error(`Multiple storage adapters handle protocol: ${storage.protocol}`);
|
|
5239
|
-
protocols.add(storage.protocol);
|
|
5240
|
-
}
|
|
5241
|
-
const findStorage = (protocol) => storageAdapters.find((item) => item.protocol === protocol);
|
|
5204
|
+
/**
|
|
5205
|
+
* Reads and download URLs over the server's storage, for the URIs of its
|
|
5206
|
+
* protocol; an HTTP(S) URI is used as it is.
|
|
5207
|
+
*/
|
|
5208
|
+
var createStorageAccess = (storageAdapter) => {
|
|
5209
|
+
const findStorage = (protocol) => storageAdapter.protocol === protocol ? storageAdapter : void 0;
|
|
5242
5210
|
const readStorageResponse = async (storageUri) => {
|
|
5243
5211
|
const protocol = getStorageProtocol(storageUri);
|
|
5244
5212
|
const storage = findStorage(protocol);
|
|
@@ -5262,38 +5230,12 @@ var createStorageAccess = (storageAdapters) => {
|
|
|
5262
5230
|
}
|
|
5263
5231
|
if (!storage.getDownloadUrl) return null;
|
|
5264
5232
|
const { url: downloadUrl } = await storage.getDownloadUrl({ storageUri });
|
|
5265
|
-
|
|
5266
|
-
return assertRemoteUrl(downloadUrl);
|
|
5267
|
-
} catch (error) {
|
|
5268
|
-
if (/^[a-z][a-z\d+.-]*:/i.test(downloadUrl)) throw error;
|
|
5269
|
-
}
|
|
5270
|
-
return resolveDownloadPath(downloadUrl, storageUri);
|
|
5233
|
+
return assertRemoteUrl(downloadUrl);
|
|
5271
5234
|
};
|
|
5272
5235
|
const readStorageText = async (storageUri) => {
|
|
5273
5236
|
return (await readStorageResponse(storageUri))?.text() ?? null;
|
|
5274
5237
|
};
|
|
5275
5238
|
return {
|
|
5276
|
-
downloadStorageObject: storageAdapters.some((storage) => storage.getDownloadUrl !== void 0) ? async (storageUriToken, encodedSignature) => {
|
|
5277
|
-
const requestedPath = `/storage/${storageUriToken}/${encodedSignature}`;
|
|
5278
|
-
const requested = parseStorageDownloadPath(requestedPath);
|
|
5279
|
-
if (!requested) return null;
|
|
5280
|
-
let storage;
|
|
5281
|
-
try {
|
|
5282
|
-
storage = findStorage(getStorageProtocol(requested.storageUri));
|
|
5283
|
-
} catch {
|
|
5284
|
-
return null;
|
|
5285
|
-
}
|
|
5286
|
-
if (!storage?.getDownloadUrl || !storage.get) return null;
|
|
5287
|
-
const { url: downloadUrl } = await storage.getDownloadUrl({ storageUri: requested.storageUri });
|
|
5288
|
-
try {
|
|
5289
|
-
new URL(downloadUrl);
|
|
5290
|
-
return null;
|
|
5291
|
-
} catch {
|
|
5292
|
-
if (/^[a-z][a-z\d+.-]*:/i.test(downloadUrl)) return null;
|
|
5293
|
-
}
|
|
5294
|
-
if (!tokensEqual(downloadUrl, requestedPath)) return null;
|
|
5295
|
-
return (await storage.get({ storageUri: requested.storageUri })).response;
|
|
5296
|
-
} : void 0,
|
|
5297
5239
|
readStorageText,
|
|
5298
5240
|
resolveFileUrl
|
|
5299
5241
|
};
|
|
@@ -5313,17 +5255,21 @@ var databaseOf = (value) => {
|
|
|
5313
5255
|
}
|
|
5314
5256
|
throw new HotUpdaterConfigError("database must be a Hot Updater 1.0 database, such as kyselyAdapter(...) or postgres(...). Upgrade the provider package that created it.");
|
|
5315
5257
|
};
|
|
5316
|
-
/**
|
|
5258
|
+
/** The configured storage, when it is a storage adapter. */
|
|
5259
|
+
var storageOf = (value) => {
|
|
5260
|
+
if (isRecord(value) && typeof value.name === "string" && typeof value.protocol === "string") return value;
|
|
5261
|
+
throw new HotUpdaterConfigError("storage must be a storage adapter, such as s3Storage(...): the one hot-updater.config.ts uploads with.");
|
|
5262
|
+
};
|
|
5263
|
+
/** `"public"`, or nothing. */
|
|
5317
5264
|
var isPublic = (value) => {
|
|
5318
5265
|
if (value === void 0) return false;
|
|
5319
5266
|
if (value === "public") return true;
|
|
5320
|
-
throw new HotUpdaterConfigError(
|
|
5267
|
+
throw new HotUpdaterConfigError("clientAccess must be \"public\"; to protect client routes, add a plugin that provides clientAuth to plugins.");
|
|
5321
5268
|
};
|
|
5322
5269
|
function createHotUpdater(options) {
|
|
5323
|
-
for (const key of ["authorityId", "catalogId"]) if (Object.hasOwn(options, key)) throw new TypeError(`Remove ${key} from createHotUpdater options. Catalog identity is managed internally.`);
|
|
5324
5270
|
const database = databaseOf(options.database);
|
|
5325
|
-
const storage =
|
|
5326
|
-
const {
|
|
5271
|
+
const storage = storageOf(options.storage);
|
|
5272
|
+
const { readStorageText, resolveFileUrl } = createStorageAccess(storage);
|
|
5327
5273
|
const publicClients = isPublic(options.clientAccess);
|
|
5328
5274
|
const configured = Object.freeze([...options.plugins ?? []]);
|
|
5329
5275
|
const plugins = assemblePlugins(configured, database, { storage: {
|
|
@@ -5342,7 +5288,6 @@ function createHotUpdater(options) {
|
|
|
5342
5288
|
const handlers = createHotUpdaterHandlers({
|
|
5343
5289
|
api: { core: plugins.core },
|
|
5344
5290
|
...clientPolicy === void 0 ? {} : { clientPolicy },
|
|
5345
|
-
downloadStorageObject,
|
|
5346
5291
|
endpoints: plugins.endpoints,
|
|
5347
5292
|
plugins: Object.keys(plugins.api)
|
|
5348
5293
|
});
|
|
@@ -5351,7 +5296,7 @@ function createHotUpdater(options) {
|
|
|
5351
5296
|
adapterName: database.name,
|
|
5352
5297
|
get handlers() {
|
|
5353
5298
|
if (!serving) {
|
|
5354
|
-
|
|
5299
|
+
assertStorageOperations(storage, ["get", "getDownloadUrl"]);
|
|
5355
5300
|
serving = true;
|
|
5356
5301
|
}
|
|
5357
5302
|
return handlers;
|
|
@@ -5383,7 +5328,7 @@ function createHotUpdater(options) {
|
|
|
5383
5328
|
*/
|
|
5384
5329
|
var assemble = (database, storage, plugins) => createHotUpdater({
|
|
5385
5330
|
database,
|
|
5386
|
-
storage
|
|
5331
|
+
storage,
|
|
5387
5332
|
plugins,
|
|
5388
5333
|
...plugins.some((plugin) => plugin.provides?.clientAuth) ? {} : { clientAccess: "public" }
|
|
5389
5334
|
});
|
|
@@ -5404,7 +5349,7 @@ var resolveConsoleConfig = async (request) => {
|
|
|
5404
5349
|
...gitUrl,
|
|
5405
5350
|
database,
|
|
5406
5351
|
core: database.core,
|
|
5407
|
-
storage
|
|
5352
|
+
storage,
|
|
5408
5353
|
plugins: checked.plugins
|
|
5409
5354
|
};
|
|
5410
5355
|
}
|
|
@@ -5413,7 +5358,7 @@ var resolveConsoleConfig = async (request) => {
|
|
|
5413
5358
|
...gitUrl,
|
|
5414
5359
|
database,
|
|
5415
5360
|
core: server.core,
|
|
5416
|
-
storage
|
|
5361
|
+
storage,
|
|
5417
5362
|
plugins: server.plugins,
|
|
5418
5363
|
api: server.api
|
|
5419
5364
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { r as getRequest } from "./server-
|
|
2
|
-
import { requireConsoleAccess, t as resolveConsoleConfig } from "./auth.server-
|
|
3
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/config.server-
|
|
1
|
+
import { r as getRequest } from "./server-CjT9jgc8.mjs";
|
|
2
|
+
import { requireConsoleAccess, t as resolveConsoleConfig } from "./auth.server-DSfSRv6p.mjs";
|
|
3
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/config.server-CEcVwRTe.js
|
|
4
4
|
var configPromise = null;
|
|
5
5
|
var core = null;
|
|
6
6
|
var runtime = null;
|
|
@@ -17,7 +17,7 @@ var prepareConfig = async (request = getRequest()) => {
|
|
|
17
17
|
const config = await loadCachedConfig(request);
|
|
18
18
|
core ??= config.core;
|
|
19
19
|
if (!runtime) {
|
|
20
|
-
const { createConsoleRuntime } = await import("./runtime.server-
|
|
20
|
+
const { createConsoleRuntime } = await import("./runtime.server-DLrq5UBB.mjs");
|
|
21
21
|
runtime = createConsoleRuntime(config);
|
|
22
22
|
}
|
|
23
23
|
return {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { c as createMiddleware } from "./createMiddleware-Cm6Tn0_Y.mjs";
|
|
2
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/console-access-
|
|
2
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/console-access-BwNhhy0-.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 { c as createMiddleware } from "./createMiddleware-Cm6Tn0_Y.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-CjT9jgc8.mjs").then((n) => n.t), import("./auth.server-DSfSRv6p.mjs")]);
|
|
13
13
|
await requireConsoleAccess(getRequest());
|
|
14
14
|
return next();
|
|
15
15
|
});
|
package/.output/server/_ssr/{console-features-api-p1jIYQEr.mjs → console-features-api-SEIn5EnF.mjs}
RENAMED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { n as consoleFeatures } from "./console-features-Oz0q20jJ.mjs";
|
|
2
2
|
import { u as createServerFn } from "./createMiddleware-Cm6Tn0_Y.mjs";
|
|
3
|
-
import { A as createSsrRpc } from "./sidebar-
|
|
4
|
-
import { t as consoleAccess } from "./console-access-
|
|
3
|
+
import { A as createSsrRpc } from "./sidebar-BHokxLBL.mjs";
|
|
4
|
+
import { t as consoleAccess } from "./console-access-BwNhhy0-.mjs";
|
|
5
5
|
import { _ as notFound } from "../_libs/@tanstack/react-router+[...].mjs";
|
|
6
6
|
import { i as useQuery, r as queryOptions } from "../_libs/tanstack__react-query.mjs";
|
|
7
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/console-features-api-
|
|
7
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/console-features-api-SEIn5EnF.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-AUdVUeez.mjs → console-features-rpc-Bbdi61DN.mjs}
RENAMED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { u as createServerFn } from "./createMiddleware-Cm6Tn0_Y.mjs";
|
|
2
|
-
import { t as consoleAccess } from "./console-access-
|
|
2
|
+
import { t as consoleAccess } from "./console-access-BwNhhy0-.mjs";
|
|
3
3
|
import { t as createServerRpc } from "./createServerRpc-RLR4H-Fn.mjs";
|
|
4
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/console-features-rpc-
|
|
4
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/console-features-rpc-Bbdi61DN.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-CEcVwRTe.mjs");
|
|
12
12
|
const { runtime } = await prepareConfig();
|
|
13
13
|
return {
|
|
14
14
|
features: await runtime.features(),
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "../_runtime.mjs";
|
|
2
2
|
import { $ as DialogPopup, Q as DialogPortal$1, X as DialogTitle$1, Y as DialogTrigger$1, Z as DialogRoot, _t as require_react, et as DialogDescription$1, gt as require_jsx_runtime, nt as DialogBackdrop, tt as DialogClose } from "../_libs/@base-ui/react+[...].mjs";
|
|
3
3
|
import { t as X } from "../_libs/lucide-react.mjs";
|
|
4
|
-
import { k as cn, t as Button$1 } from "./sidebar-
|
|
4
|
+
import { k as cn, t as Button$1 } from "./sidebar-BHokxLBL.mjs";
|
|
5
5
|
require_react();
|
|
6
6
|
var import_jsx_runtime = require_jsx_runtime();
|
|
7
7
|
function Dialog$1({ ...props }) {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/downloadBundle-
|
|
1
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/downloadBundle-CZysjmNW.js
|
|
2
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
|
-
const storageAdapter = storage.
|
|
7
|
+
const storageAdapter = storage.protocol === protocol ? storage : void 0;
|
|
8
8
|
if (storageAdapter?.get !== void 0) {
|
|
9
9
|
const { response } = await storageAdapter.get({ storageUri });
|
|
10
10
|
if (!response) return new Response("Storage object not found", { status: 404 });
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { gt as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
|
|
2
2
|
import { t as cva } from "../_libs/class-variance-authority+clsx.mjs";
|
|
3
|
-
import { k as cn } from "./sidebar-
|
|
4
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/empty-
|
|
3
|
+
import { k as cn } from "./sidebar-BHokxLBL.mjs";
|
|
4
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/empty-l-c_8ees.js
|
|
5
5
|
var import_jsx_runtime = require_jsx_runtime();
|
|
6
6
|
function Empty({ className, ...props }) {
|
|
7
7
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { i as __toESM } from "../_runtime.mjs";
|
|
2
2
|
import { _t as require_react, gt as require_jsx_runtime, ht as mergeProps, rt as useRender } from "../_libs/@base-ui/react+[...].mjs";
|
|
3
3
|
import { t as cva } from "../_libs/class-variance-authority+clsx.mjs";
|
|
4
|
-
import { k as cn } from "./sidebar-
|
|
5
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/field-
|
|
4
|
+
import { k as cn } from "./sidebar-BHokxLBL.mjs";
|
|
5
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/field-DLPzSOw6.js
|
|
6
6
|
var import_react = /* @__PURE__ */ __toESM(require_react());
|
|
7
7
|
var import_jsx_runtime = require_jsx_runtime();
|
|
8
8
|
function Card({ className, ...props }) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "../_runtime.mjs";
|
|
2
2
|
import { _t as require_react, gt as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
|
|
3
3
|
import { t as cva } from "../_libs/class-variance-authority+clsx.mjs";
|
|
4
|
-
import { k as cn, n as Input, t as Button$1 } from "./sidebar-
|
|
4
|
+
import { k as cn, n as Input, t as Button$1 } from "./sidebar-BHokxLBL.mjs";
|
|
5
5
|
require_react();
|
|
6
6
|
var import_jsx_runtime = require_jsx_runtime();
|
|
7
7
|
function Textarea({ className, ...props }) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { t as ConsoleFeatureUnavailable } from "./ConsoleFeatureUnavailable-
|
|
2
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/insights-
|
|
1
|
+
import { t as ConsoleFeatureUnavailable } from "./ConsoleFeatureUnavailable-CLAxmo9g.mjs";
|
|
2
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/insights-7TkDWycN.js
|
|
3
3
|
var SplitNotFoundComponent = ConsoleFeatureUnavailable;
|
|
4
4
|
//#endregion
|
|
5
5
|
export { SplitNotFoundComponent as notFoundComponent };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { f as lazyRouteComponent, p as createFileRoute } from "../_libs/@tanstack/react-router+[...].mjs";
|
|
2
|
-
import { r as requireConsoleFeature } from "./console-features-api-
|
|
3
|
-
import { a as validateInsightsSearch } from "./InsightsInfo-
|
|
4
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/insights-
|
|
5
|
-
var $$splitComponentImporter = () => import("./insights-
|
|
6
|
-
var $$splitNotFoundComponentImporter = () => import("./insights-
|
|
2
|
+
import { r as requireConsoleFeature } from "./console-features-api-SEIn5EnF.mjs";
|
|
3
|
+
import { a as validateInsightsSearch } from "./InsightsInfo-DlF_lwhy.mjs";
|
|
4
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/insights-MGN_o5hB.js
|
|
5
|
+
var $$splitComponentImporter = () => import("./insights-U_zP_3ok.mjs");
|
|
6
|
+
var $$splitNotFoundComponentImporter = () => import("./insights-7TkDWycN.mjs");
|
|
7
7
|
var Route = createFileRoute("/insights")({
|
|
8
8
|
beforeLoad: ({ context }) => requireConsoleFeature(context.queryClient, "insightsAnalytics"),
|
|
9
9
|
notFoundComponent: lazyRouteComponent($$splitNotFoundComponentImporter, "notFoundComponent"),
|
|
@@ -2,33 +2,33 @@ import { i as __toESM } from "../_runtime.mjs";
|
|
|
2
2
|
import { u as createServerFn } from "./createMiddleware-Cm6Tn0_Y.mjs";
|
|
3
3
|
import { C as ScrollAreaScrollbar, S as ScrollAreaThumb, T as ScrollAreaRoot, _ as ComboboxList$1, _t as require_react, b as ComboboxTrigger$1, d as ComboboxRoot, f as ComboboxEmpty$1, g as ComboboxPortal, gt as require_jsx_runtime, h as ComboboxPositioner, m as ComboboxPopup, p as ComboboxItem$1, u as ComboboxItemIndicator, v as ComboboxClear$1, w as ScrollAreaViewport, x as ScrollAreaCorner, y as ComboboxInput$1 } from "../_libs/@base-ui/react+[...].mjs";
|
|
4
4
|
import { E as List, G as Check, H as ChevronRight, I as Copy, W as ChevronDown, X as ArrowUpRight, Z as ArrowRight, g as RefreshCw, h as RotateCcw, i as TriangleAlert, m as RotateCw, r as Undo2, t as X } from "../_libs/lucide-react.mjs";
|
|
5
|
-
import { A as createSsrRpc, C as Skeleton, O as buttonVariants, a as SheetContent, c as SheetTitle, i as Sheet, k as cn, l as SheetTrigger, n as Input, o as SheetDescription, r as Separator$1, s as SheetHeader, t as Button$1 } from "./sidebar-
|
|
6
|
-
import { t as consoleAccess } from "./console-access-
|
|
5
|
+
import { A as createSsrRpc, C as Skeleton, O as buttonVariants, a as SheetContent, c as SheetTitle, i as Sheet, k as cn, l as SheetTrigger, n as Input, o as SheetDescription, r as Separator$1, s as SheetHeader, t as Button$1 } from "./sidebar-BHokxLBL.mjs";
|
|
6
|
+
import { t as consoleAccess } from "./console-access-BwNhhy0-.mjs";
|
|
7
7
|
import { h as Link } from "../_libs/@tanstack/react-router+[...].mjs";
|
|
8
8
|
import { a as useQueries, i as useQuery, s as useQueryClient } from "../_libs/tanstack__react-query.mjs";
|
|
9
|
-
import { i as EmptyHeader, n as EmptyContent, o as EmptyTitle, r as EmptyDescription, t as Empty } from "./empty-
|
|
10
|
-
import { a as Badge, c as CardDescription, d as CardTitle, f as Field, g as FieldLabel, h as FieldGroup, i as AlertTitle, l as CardFooter, o as Card, r as AlertDescription, s as CardContent, t as Alert, u as CardHeader } from "./field-
|
|
11
|
-
import { a as AlertDialogDescription, i as AlertDialogContent, l as AlertDialogTitle, n as AlertDialogAction, o as AlertDialogFooter, r as AlertDialogCancel, s as AlertDialogHeader, t as AlertDialog$1 } from "./alert-dialog-
|
|
12
|
-
import { a as TableHeader, i as TableHead, n as TableBody, o as TableRow, r as TableCell, t as Table } from "./table-
|
|
9
|
+
import { i as EmptyHeader, n as EmptyContent, o as EmptyTitle, r as EmptyDescription, t as Empty } from "./empty-l-c_8ees.mjs";
|
|
10
|
+
import { a as Badge, c as CardDescription, d as CardTitle, f as Field, g as FieldLabel, h as FieldGroup, i as AlertTitle, l as CardFooter, o as Card, r as AlertDescription, s as CardContent, t as Alert, u as CardHeader } from "./field-DLPzSOw6.mjs";
|
|
11
|
+
import { a as AlertDialogDescription, i as AlertDialogContent, l as AlertDialogTitle, n as AlertDialogAction, o as AlertDialogFooter, r as AlertDialogCancel, s as AlertDialogHeader, t as AlertDialog$1 } from "./alert-dialog-CUeMgQKB.mjs";
|
|
12
|
+
import { a as TableHeader, i as TableHead, n as TableBody, o as TableRow, r as TableCell, t as Table } from "./table-B8z0fLEM.mjs";
|
|
13
13
|
import { n as toast } from "../_libs/sonner.mjs";
|
|
14
14
|
import { r as recoveryWindows, t as insightsPeriodEnd } from "./insights-recovery-BWQhiZaF.mjs";
|
|
15
15
|
import { a as failureReasonLabel, i as failureRate, o as failureStageLabel, r as failureDetailParts, s as formatRate, t as checkFailureRate } from "./insights-failures-xaa41Buf.mjs";
|
|
16
16
|
import { t as groupFailureReports } from "./insights-errors-BjnFUyZj.mjs";
|
|
17
17
|
import { n as usageMetrics } from "./insights-usage-BpBM0U0c.mjs";
|
|
18
18
|
import { a as readBundleEventsInput, i as readAdoptionReleasesInput, n as crashRateOf, o as recommendsRollback, r as readAdoptionReleaseInput, t as CRASH_RATE_THRESHOLD } from "./release-adoption-005tQRpo.mjs";
|
|
19
|
-
import { i as useFailureReportsQuery, l as useInsightsRetention, r as keepsTwelveMonths, t as DEFAULT_INSIGHTS_RETENTION, u as useUpdateFailuresQuery } from "./insights-api-
|
|
20
|
-
import { r as comparedBundleIds, t as InsightsInfo } from "./InsightsInfo-
|
|
21
|
-
import { t as Route } from "./insights-
|
|
22
|
-
import { i as TabsTrigger, n as TabsContent, r as TabsList, t as Tabs$1 } from "./tabs-
|
|
23
|
-
import { a as SelectItem, i as SelectGroup, n as Select$1, o as SelectTrigger, r as SelectContent, s as SelectValue, t as PlatformIcon } from "./select-
|
|
24
|
-
import { i as InputGroupInput, n as InputGroupAddon, r as InputGroupButton, t as InputGroup } from "./input-group-
|
|
25
|
-
import { i as useChannelsQuery, l as usePreflightReleaseMutation, m as useUpdateReleaseMutation } from "./api-
|
|
26
|
-
import { t as BundleIdDisplay } from "./BundleIdDisplay-
|
|
27
|
-
import { n as getAppUsageReportRpc, t as Progress$1 } from "./insights-usage-rpc-
|
|
28
|
-
import { i as InsightsPeriodSelector, n as InsightsErrorAlert, o as UsagePeriodSelector, r as InsightsPageHeader } from "./InsightsPageHeader-
|
|
29
|
-
import { i as HttpResponseBody, n as EventTimestamp, o as useInsightsTimeFormat, t as EventBundleTransition } from "./EventDetails-
|
|
19
|
+
import { i as useFailureReportsQuery, l as useInsightsRetention, r as keepsTwelveMonths, t as DEFAULT_INSIGHTS_RETENTION, u as useUpdateFailuresQuery } from "./insights-api-CfWBAG05.mjs";
|
|
20
|
+
import { r as comparedBundleIds, t as InsightsInfo } from "./InsightsInfo-DlF_lwhy.mjs";
|
|
21
|
+
import { t as Route } from "./insights-MGN_o5hB.mjs";
|
|
22
|
+
import { i as TabsTrigger, n as TabsContent, r as TabsList, t as Tabs$1 } from "./tabs-DrdTcJ5o.mjs";
|
|
23
|
+
import { a as SelectItem, i as SelectGroup, n as Select$1, o as SelectTrigger, r as SelectContent, s as SelectValue, t as PlatformIcon } from "./select-DdLG1qd_.mjs";
|
|
24
|
+
import { i as InputGroupInput, n as InputGroupAddon, r as InputGroupButton, t as InputGroup } from "./input-group-BhcEyj98.mjs";
|
|
25
|
+
import { i as useChannelsQuery, l as usePreflightReleaseMutation, m as useUpdateReleaseMutation } from "./api-BphkK30h.mjs";
|
|
26
|
+
import { t as BundleIdDisplay } from "./BundleIdDisplay-B8E4-KIb.mjs";
|
|
27
|
+
import { n as getAppUsageReportRpc, t as Progress$1 } from "./insights-usage-rpc-DzDuZ24N.mjs";
|
|
28
|
+
import { i as InsightsPeriodSelector, n as InsightsErrorAlert, o as UsagePeriodSelector, r as InsightsPageHeader } from "./InsightsPageHeader-4B_g0hVn.mjs";
|
|
29
|
+
import { i as HttpResponseBody, n as EventTimestamp, o as useInsightsTimeFormat, t as EventBundleTransition } from "./EventDetails-fGBIXtCe.mjs";
|
|
30
30
|
import { a as CartesianGrid, i as Line, l as ResponsiveContainer, n as YAxis, o as ReferenceLine, r as XAxis, s as Tooltip, t as LineChart } from "../_libs/recharts+[...].mjs";
|
|
31
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/insights-
|
|
31
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/insights-U_zP_3ok.js
|
|
32
32
|
var import_react = /* @__PURE__ */ __toESM(require_react());
|
|
33
33
|
var import_jsx_runtime = require_jsx_runtime();
|
|
34
34
|
var THEMES = {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { u as createServerFn } from "./createMiddleware-Cm6Tn0_Y.mjs";
|
|
2
|
-
import { A as createSsrRpc } from "./sidebar-
|
|
3
|
-
import { t as consoleAccess } from "./console-access-
|
|
2
|
+
import { A as createSsrRpc } from "./sidebar-BHokxLBL.mjs";
|
|
3
|
+
import { t as consoleAccess } from "./console-access-BwNhhy0-.mjs";
|
|
4
4
|
import { i as useQuery, t as useInfiniteQuery } from "../_libs/tanstack__react-query.mjs";
|
|
5
5
|
import { c as readUpdateFailuresInput } from "./insights-failures-xaa41Buf.mjs";
|
|
6
6
|
import { n as readFailureReportsInput } from "./insights-errors-BjnFUyZj.mjs";
|
|
7
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/insights-api-
|
|
7
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/insights-api-CfWBAG05.js
|
|
8
8
|
var getUpdateFailuresRpc = createServerFn({ method: "GET" }).middleware([consoleAccess]).validator(readUpdateFailuresInput).handler(createSsrRpc("0d1dacdd1e5ee6b100e5c142fb9af03602b6f2c6fe6af79312b36c223d7f8f97"));
|
|
9
9
|
var listFailureReportsRpc = createServerFn({ method: "GET" }).middleware([consoleAccess]).validator(readFailureReportsInput).handler(createSsrRpc("b4388826a9b515fb4d2113270aa8ded1c50ba13d7f07ac2b268c41396e87d0a3"));
|
|
10
10
|
/** `insights()`'s defaults, for a server that does not report its periods. */
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { u as createServerFn } from "./createMiddleware-Cm6Tn0_Y.mjs";
|
|
2
|
-
import { t as consoleAccess } from "./console-access-
|
|
2
|
+
import { t as consoleAccess } from "./console-access-BwNhhy0-.mjs";
|
|
3
3
|
import { t as createServerRpc } from "./createServerRpc-RLR4H-Fn.mjs";
|
|
4
4
|
import { c as readUpdateFailuresInput } from "./insights-failures-xaa41Buf.mjs";
|
|
5
5
|
import { n as readFailureReportsInput } from "./insights-errors-BjnFUyZj.mjs";
|
|
6
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/insights-failures-rpc-
|
|
6
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/insights-failures-rpc-BhFJsf9E.js
|
|
7
7
|
var getUpdateFailuresRpc_createServerFn_handler = createServerRpc({
|
|
8
8
|
id: "0d1dacdd1e5ee6b100e5c142fb9af03602b6f2c6fe6af79312b36c223d7f8f97",
|
|
9
9
|
name: "getUpdateFailuresRpc",
|
|
@@ -11,9 +11,9 @@ var getUpdateFailuresRpc_createServerFn_handler = createServerRpc({
|
|
|
11
11
|
}, (opts) => getUpdateFailuresRpc.__executeServer(opts));
|
|
12
12
|
var getUpdateFailuresRpc = createServerFn({ method: "GET" }).middleware([consoleAccess]).validator(readUpdateFailuresInput).handler(getUpdateFailuresRpc_createServerFn_handler, async ({ data }) => {
|
|
13
13
|
const [{ prepareConfig }, { getUpdateFailuresReport }, { requireFeature }] = await Promise.all([
|
|
14
|
-
import("./config.server-
|
|
14
|
+
import("./config.server-CEcVwRTe.mjs"),
|
|
15
15
|
import("./updateFailures-H6pnnYK4.mjs"),
|
|
16
|
-
import("./runtime.server-
|
|
16
|
+
import("./runtime.server-DLrq5UBB.mjs")
|
|
17
17
|
]);
|
|
18
18
|
const { runtime } = await prepareConfig();
|
|
19
19
|
return getUpdateFailuresReport(await requireFeature(runtime, "insights"), data);
|
|
@@ -25,9 +25,9 @@ var listFailureReportsRpc_createServerFn_handler = createServerRpc({
|
|
|
25
25
|
}, (opts) => listFailureReportsRpc.__executeServer(opts));
|
|
26
26
|
var listFailureReportsRpc = createServerFn({ method: "GET" }).middleware([consoleAccess]).validator(readFailureReportsInput).handler(listFailureReportsRpc_createServerFn_handler, async ({ data }) => {
|
|
27
27
|
const [{ prepareConfig }, { listFailureReports }, { requireFeature }] = await Promise.all([
|
|
28
|
-
import("./config.server-
|
|
28
|
+
import("./config.server-CEcVwRTe.mjs"),
|
|
29
29
|
import("./failureReports-DKDhVsXA.mjs"),
|
|
30
|
-
import("./runtime.server-
|
|
30
|
+
import("./runtime.server-DLrq5UBB.mjs")
|
|
31
31
|
]);
|
|
32
32
|
const { runtime } = await prepareConfig();
|
|
33
33
|
return listFailureReports(await requireFeature(runtime, "insights"), data);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { u as createServerFn } from "./createMiddleware-Cm6Tn0_Y.mjs";
|
|
2
|
-
import { t as consoleAccess } from "./console-access-
|
|
2
|
+
import { t as consoleAccess } from "./console-access-BwNhhy0-.mjs";
|
|
3
3
|
import { t as createServerRpc } from "./createServerRpc-RLR4H-Fn.mjs";
|
|
4
4
|
import { n as readRecoveryInput } from "./insights-recovery-BWQhiZaF.mjs";
|
|
5
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/insights-recovery-rpc-
|
|
5
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/insights-recovery-rpc-D4mGZhop.js
|
|
6
6
|
function readBundleActivityInput(inputs) {
|
|
7
7
|
if (!Array.isArray(inputs) || inputs.length > 20) throw new Error("Choose up to 20 bundles.");
|
|
8
8
|
return inputs.map((input) => {
|
|
@@ -21,9 +21,9 @@ var getBundleActivityRpc_createServerFn_handler = createServerRpc({
|
|
|
21
21
|
}, (opts) => getBundleActivityRpc.__executeServer(opts));
|
|
22
22
|
var getBundleActivityRpc = createServerFn({ method: "GET" }).middleware([consoleAccess]).validator(readBundleActivityInput).handler(getBundleActivityRpc_createServerFn_handler, async ({ data }) => {
|
|
23
23
|
const [{ prepareConfig }, { getBundleActivity }, { requireFeature }] = await Promise.all([
|
|
24
|
-
import("./config.server-
|
|
24
|
+
import("./config.server-CEcVwRTe.mjs"),
|
|
25
25
|
import("./bundleActivity-M5gzBFNg.mjs"),
|
|
26
|
-
import("./runtime.server-
|
|
26
|
+
import("./runtime.server-DLrq5UBB.mjs")
|
|
27
27
|
]);
|
|
28
28
|
const { runtime } = await prepareConfig();
|
|
29
29
|
return getBundleActivity(await requireFeature(runtime, "insightsAnalytics"), data);
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { u as createServerFn } from "./createMiddleware-Cm6Tn0_Y.mjs";
|
|
2
|
-
import { t as consoleAccess } from "./console-access-
|
|
2
|
+
import { t as consoleAccess } from "./console-access-BwNhhy0-.mjs";
|
|
3
3
|
import { t as createServerRpc } from "./createServerRpc-RLR4H-Fn.mjs";
|
|
4
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/insights-rpc-
|
|
4
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/insights-rpc-DMHktHYz.js
|
|
5
5
|
/** The Insights reads, once the console's access check and the feature guard pass. */
|
|
6
6
|
var insightsReads = async () => {
|
|
7
|
-
const [{ prepareConfig }, { requireFeature }] = await Promise.all([import("./config.server-
|
|
7
|
+
const [{ prepareConfig }, { requireFeature }] = await Promise.all([import("./config.server-CEcVwRTe.mjs"), import("./runtime.server-DLrq5UBB.mjs")]);
|
|
8
8
|
const { runtime } = await prepareConfig();
|
|
9
9
|
return requireFeature(runtime, "insights");
|
|
10
10
|
};
|