@hot-updater/console 1.0.5 → 1.0.6
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-jmie-36L.mjs → __23tanstack-start-server-fn-resolver-BA6fh9rU.mjs} +40 -40
- package/.output/server/_ssr/{BundleIdDisplay-4jSO7w-V.mjs → BundleIdDisplay-BSJBddvz.mjs} +2 -2
- package/.output/server/_ssr/{ConsoleFeatureUnavailable-Br9nSv0f.mjs → ConsoleFeatureUnavailable-DC7XuIoa.mjs} +5 -5
- package/.output/server/_ssr/{EventDetails-DvEKDuRM.mjs → EventDetails-C5QPEQOi.mjs} +6 -6
- package/.output/server/_ssr/{HashValueDisplay-BEaPTxlK.mjs → HashValueDisplay-BHfbOu2V.mjs} +2 -2
- package/.output/server/_ssr/{InsightsPageHeader-lv9lVo29.mjs → InsightsPageHeader-DPMTsTtZ.mjs} +7 -8
- package/.output/server/_ssr/{NotFoundPage-_ybIUFhU.mjs → NotFoundPage-ChDbOWO4.mjs} +2 -2
- package/.output/server/_ssr/{alert-dialog-DIGB-_50.mjs → alert-dialog-5ODp5_gW.mjs} +1 -1
- package/.output/server/_ssr/{api-rsoui6JK.mjs → api-BMPSwABL.mjs} +3 -3
- package/.output/server/_ssr/{api-keys-CeyREjvb.mjs → api-keys-8DKQPJqF.mjs} +2 -2
- package/.output/server/_ssr/{api-keys-eO1EahwF.mjs → api-keys-DkrIwiLP.mjs} +7 -7
- package/.output/server/_ssr/{api-keys-rpc-B6jsUMOy.mjs → api-keys-rpc-RgxqSZaC.mjs} +3 -3
- package/.output/server/_ssr/{api-rpc-C6PKrZHs.mjs → api-rpc-BNKg9il4.mjs} +3 -3
- package/.output/server/_ssr/{auth-rpc-D1ebZxoP.mjs → auth-rpc-DAPehgWw.mjs} +4 -4
- package/.output/server/_ssr/{auth.server-BNKPJ95k.mjs → auth.server-QyPVZNlm.mjs} +154 -5
- package/.output/server/_ssr/{config.server-CDc3T2Ik.mjs → config.server-DHKEn88l.mjs} +3 -3
- package/.output/server/_ssr/{console-access-BTZBfsbE.mjs → console-access-CCNugVjZ.mjs} +2 -2
- package/.output/server/_ssr/{console-features-api-CvQD7xrZ.mjs → console-features-api-CapycAKo.mjs} +3 -3
- package/.output/server/_ssr/{console-features-rpc-4DFAhPjK.mjs → console-features-rpc-D_mNHOgz.mjs} +3 -3
- package/.output/server/_ssr/{dialog-DfjXyWGZ.mjs → dialog-C_ALhTh_.mjs} +1 -1
- package/.output/server/_ssr/{empty-CAll1ROu.mjs → empty-CuEKeW6Z.mjs} +2 -2
- package/.output/server/_ssr/{field-DXfKM72E.mjs → field-Cli6Ntli.mjs} +2 -2
- package/.output/server/_ssr/{input-group-JgNkHlo6.mjs → input-group-D_URj0xe.mjs} +1 -1
- package/.output/server/_ssr/{insights-Z9hNQzJz.mjs → insights-C0lu_zT5.mjs} +18 -18
- package/.output/server/_ssr/{insights-uzl3049G.mjs → insights-Cv_QcEnM.mjs} +2 -2
- package/.output/server/_ssr/{insights-ddfefZlb.mjs → insights-I3QzkM2P.mjs} +5 -5
- package/.output/server/_ssr/{insights-api-BHP5zN92.mjs → insights-api-CNooe2pk.mjs} +3 -3
- package/.output/server/_ssr/{insights-failures-rpc-B2Lq-cs5.mjs → insights-failures-rpc-DmPCAlXp.mjs} +4 -4
- package/.output/server/_ssr/{insights-recovery-rpc-DLDu-KiX.mjs → insights-recovery-rpc-DVUHMjrp.mjs} +3 -3
- package/.output/server/_ssr/{insights-rpc-Rg6L-Jvj.mjs → insights-rpc-CJQm05Eu.mjs} +3 -3
- package/.output/server/_ssr/{insights-search-B2u8wXrS.mjs → insights-search-B6RVM0ff.mjs} +2 -2
- package/.output/server/_ssr/{insights-usage-rpc-DdafF6eA.mjs → insights-usage-rpc-BXgFJpIw.mjs} +3 -3
- package/.output/server/_ssr/{insights-usage-rpc-DoLbrAou.mjs → insights-usage-rpc-BicJhAIl.mjs} +3 -3
- package/.output/server/_ssr/{insights_.distribution-BTVwfr_Q.mjs → insights_.distribution-BVial-44.mjs} +5 -5
- package/.output/server/_ssr/{insights_.distribution-6PcJu9QZ.mjs → insights_.distribution-B_Sds3TS.mjs} +2 -2
- package/.output/server/_ssr/{insights_.distribution-PtyLQdMn.mjs → insights_.distribution-CzvDHWvd.mjs} +11 -11
- package/.output/server/_ssr/{installations-DVhWilEc.mjs → installations-CWJkXC9Z.mjs} +2 -2
- package/.output/server/_ssr/{installations-CXNxcPvc.mjs → installations-Ca0LmXu4.mjs} +4 -4
- package/.output/server/_ssr/{installations-v4nw05I-.mjs → installations-D-HIsMvO.mjs} +10 -10
- package/.output/server/_ssr/{release-adoption-rpc-DRG07Y07.mjs → release-adoption-rpc-C-cGGd6e.mjs} +5 -5
- package/.output/server/_ssr/{remote-config-CCpkJZD6.mjs → remote-config-CsU5khV1.mjs} +15 -15
- package/.output/server/_ssr/{remote-config-H5FfUxiR.mjs → remote-config-Cvq4twKS.mjs} +2 -2
- package/.output/server/_ssr/{remote-config-Dt7E5KSB.mjs → remote-config-DMQAOhIi.mjs} +2 -2
- package/.output/server/_ssr/{remote-config-rpc-DmxSUh2f.mjs → remote-config-rpc-CmXAVF2N.mjs} +3 -3
- package/.output/server/_ssr/{router-DzoZ6RiZ.mjs → router-oqfZrY8-.mjs} +13 -13
- package/.output/server/_ssr/{routes-BcCBFt_B.mjs → routes-Cx51rdIn.mjs} +14 -14
- package/.output/server/_ssr/{routes-hBT2gLcc.mjs → routes-ZJdz2hWw.mjs} +8 -8
- package/.output/server/_ssr/{select-B-_QqBKv.mjs → select-DVyj4bC2.mjs} +1 -1
- package/.output/server/_ssr/{server-DLJxXUG3.mjs → server-FnyRjW5z.mjs} +2 -2
- package/.output/server/_ssr/{sidebar-CvkhVxly.mjs → sidebar-BrtgeSwJ.mjs} +2 -2
- package/.output/server/_ssr/ssr.mjs +1 -1
- package/.output/server/_ssr/{switch-CcliGpYm.mjs → switch-CypdZk9Q.mjs} +2 -2
- package/.output/server/_ssr/{table-BQwxbG7k.mjs → table-JgLKbtrb.mjs} +1 -1
- package/.output/server/_ssr/{tabs-CyNj4x4I.mjs → tabs-BpUr6C7g.mjs} +2 -2
- package/.output/server/index.mjs +71 -71
- package/package.json +7 -7
- package/src/components/features/insights/BuiltinBundle.tsx +2 -3
|
@@ -6,7 +6,7 @@ import { n as createUUIDv7After, t as createUUIDv7 } from "./uuidv7-C88s9jWF.mjs
|
|
|
6
6
|
import { a as normalize, i as defineTable, n as compare, o as normalizeRange, r as defineAggregate, s as parseRange } from "./schema-BiAVyEj2.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-QyPVZNlm.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);
|
|
@@ -3098,7 +3098,7 @@ var createEngine = (database, { plugins = [], now = Date.now } = {}) => {
|
|
|
3098
3098
|
dispose: () => engine.dispose()
|
|
3099
3099
|
};
|
|
3100
3100
|
};
|
|
3101
|
-
var HOT_UPDATER_SERVER_VERSION = "1.0.
|
|
3101
|
+
var HOT_UPDATER_SERVER_VERSION = "1.0.6";
|
|
3102
3102
|
/**
|
|
3103
3103
|
* `/version` on both mounts. The admin mount also lists the ids of the
|
|
3104
3104
|
* plugins the server runs, sorted; apps never learn which plugins a server
|
|
@@ -3379,6 +3379,11 @@ async function resolveAssets(plan, resolveFileUrl) {
|
|
|
3379
3379
|
const resolvedEntries = entries.filter((entry) => entry !== null);
|
|
3380
3380
|
return { assets: Object.fromEntries(resolvedEntries.map((entry) => entry.asset)) };
|
|
3381
3381
|
}
|
|
3382
|
+
/**
|
|
3383
|
+
* Legacy: artifact protocol v1. Signs a URL for every file of the target, which grows with the
|
|
3384
|
+
* Bundle's file count; apps whose SDK predates protocol v2 still ask for it.
|
|
3385
|
+
* Remove with the `/artifacts/v1` route once no supported app uses it.
|
|
3386
|
+
*/
|
|
3382
3387
|
async function resolveManifestArtifacts({ currentBundle, resolveFileUrl, readStorageText, targetBundle }) {
|
|
3383
3388
|
const manifestStorageUri = targetBundle ? getManifestStorageUri(targetBundle) : null;
|
|
3384
3389
|
const manifestFileHash = targetBundle ? getManifestFileHash(targetBundle) : null;
|
|
@@ -3412,6 +3417,98 @@ async function resolveManifestArtifacts({ currentBundle, resolveFileUrl, readSto
|
|
|
3412
3417
|
...archiveUrl ? { archiveUrl } : {}
|
|
3413
3418
|
};
|
|
3414
3419
|
}
|
|
3420
|
+
/** The target's manifest and its plan, or null for a Bundle without one. */
|
|
3421
|
+
async function loadTargetPlan({ currentBundle, readStorageText, targetBundle }) {
|
|
3422
|
+
const manifestStorageUri = getManifestStorageUri(targetBundle);
|
|
3423
|
+
const manifestFileHash = getManifestFileHash(targetBundle);
|
|
3424
|
+
const assetBaseStorageUri = getAssetBaseStorageUri(targetBundle);
|
|
3425
|
+
if (!manifestStorageUri || !manifestFileHash || !assetBaseStorageUri) return null;
|
|
3426
|
+
const targetManifest = await fetchBundleManifest(manifestStorageUri, readStorageText);
|
|
3427
|
+
if (!targetManifest) return null;
|
|
3428
|
+
return {
|
|
3429
|
+
manifestFileHash,
|
|
3430
|
+
manifestStorageUri,
|
|
3431
|
+
plan: createManifestArtifactPlan({
|
|
3432
|
+
assetBaseStorageUri,
|
|
3433
|
+
currentBundle,
|
|
3434
|
+
targetBundle,
|
|
3435
|
+
targetManifest
|
|
3436
|
+
}),
|
|
3437
|
+
targetManifest
|
|
3438
|
+
};
|
|
3439
|
+
}
|
|
3440
|
+
/**
|
|
3441
|
+
* Artifact protocol v2: the manifest, the archive, and the one Hermes patch,
|
|
3442
|
+
* but no URL per file. A device asks {@link resolveManifestArtifactFiles}
|
|
3443
|
+
* for the files it downloads one by one, so signing and the response stay
|
|
3444
|
+
* the same size however many files the Bundle has.
|
|
3445
|
+
*/
|
|
3446
|
+
async function resolveManifestArtifactsV2({ currentBundle, resolveFileUrl, readStorageText, targetBundle }) {
|
|
3447
|
+
const target = await loadTargetPlan({
|
|
3448
|
+
currentBundle,
|
|
3449
|
+
readStorageText,
|
|
3450
|
+
targetBundle
|
|
3451
|
+
});
|
|
3452
|
+
if (!target) return null;
|
|
3453
|
+
const manifestUrl = await resolveFileUrl(target.manifestStorageUri);
|
|
3454
|
+
if (!manifestUrl) return null;
|
|
3455
|
+
const patched = target.plan.assets.find((asset) => asset.patch !== null);
|
|
3456
|
+
let patch;
|
|
3457
|
+
if (patched?.patch && !(patched.file.byteSize !== null && patched.patch.byteSize !== null && patched.patch.byteSize >= patched.file.byteSize)) try {
|
|
3458
|
+
const patchUrl = await resolveFileUrl(patched.patch.storageUri);
|
|
3459
|
+
if (patchUrl) patch = {
|
|
3460
|
+
algorithm: "bsdiff",
|
|
3461
|
+
assetPath: patched.assetPath,
|
|
3462
|
+
baseBundleId: patched.patch.baseBundleId,
|
|
3463
|
+
baseFileHash: patched.patch.baseFileHash,
|
|
3464
|
+
patchFileHash: patched.patch.patchFileHash,
|
|
3465
|
+
patchUrl,
|
|
3466
|
+
...patched.patch.byteSize === null ? {} : { byteSize: patched.patch.byteSize }
|
|
3467
|
+
};
|
|
3468
|
+
} catch {}
|
|
3469
|
+
let archiveUrl = null;
|
|
3470
|
+
const archive = target.targetManifest.archive;
|
|
3471
|
+
if (archive && isContentAddressedAssetFileHash(archive.downloadFileHash) && (asByteSize(archive.downloadByteSize) ?? 0) > 0 && (asByteSize(archive.tarByteSize) ?? 0) > 0) try {
|
|
3472
|
+
archiveUrl = await resolveFileUrl(getBundleArchiveStorageUri({
|
|
3473
|
+
manifestStorageUri: target.manifestStorageUri,
|
|
3474
|
+
bundleId: targetBundle.id
|
|
3475
|
+
}));
|
|
3476
|
+
} catch {}
|
|
3477
|
+
return {
|
|
3478
|
+
artifactProtocolVersion: 2,
|
|
3479
|
+
manifestFileHash: target.manifestFileHash,
|
|
3480
|
+
manifestUrl,
|
|
3481
|
+
...archiveUrl ? { archiveUrl } : {},
|
|
3482
|
+
...patch ? { patch } : {}
|
|
3483
|
+
};
|
|
3484
|
+
}
|
|
3485
|
+
/**
|
|
3486
|
+
* Download URLs for the files a device downloads one by one. Only paths the
|
|
3487
|
+
* target's manifest names are signed, at most
|
|
3488
|
+
* {@link ARTIFACT_FILES_REQUEST_LIMIT}; null when any path is unknown or a
|
|
3489
|
+
* URL cannot be resolved.
|
|
3490
|
+
*/
|
|
3491
|
+
async function resolveManifestArtifactFiles({ paths, resolveFileUrl, readStorageText, targetBundle }) {
|
|
3492
|
+
if (paths.length === 0 || paths.length > 100 || new Set(paths).size !== paths.length) return null;
|
|
3493
|
+
const target = await loadTargetPlan({
|
|
3494
|
+
currentBundle: null,
|
|
3495
|
+
readStorageText,
|
|
3496
|
+
targetBundle
|
|
3497
|
+
});
|
|
3498
|
+
if (!target) return null;
|
|
3499
|
+
const planned = new Map(target.plan.assets.map((asset) => [asset.assetPath, asset]));
|
|
3500
|
+
const requested = paths.map((path) => planned.get(path));
|
|
3501
|
+
if (requested.some((asset) => asset === void 0)) return null;
|
|
3502
|
+
const files = await Promise.all(requested.map(async (asset) => {
|
|
3503
|
+
const url = await resolveFileUrl(asset.file.storageUri);
|
|
3504
|
+
if (!url) return null;
|
|
3505
|
+
const file = { url };
|
|
3506
|
+
if (asset.file.compression) file.compression = asset.file.compression;
|
|
3507
|
+
return [asset.assetPath, file];
|
|
3508
|
+
}));
|
|
3509
|
+
if (files.some((file) => file === null)) return null;
|
|
3510
|
+
return { files: Object.fromEntries(files.filter((file) => file !== null)) };
|
|
3511
|
+
}
|
|
3415
3512
|
/** A compiled segment as a range: its version when it holds exactly one. */
|
|
3416
3513
|
var segmentRange = ({ lower, upper }) => lower?.inclusive && upper?.inclusive && lower.version === upper.version ? lower.version : [lower === null ? "" : `${lower.inclusive ? ">=" : ">"}${lower.version}`, upper === null ? "" : `${upper.inclusive ? "<=" : "<"}${upper.version}`].join(" ").trim() || "*";
|
|
3417
3514
|
/**
|
|
@@ -3535,20 +3632,33 @@ var createCoreReads = (db, storage) => {
|
|
|
3535
3632
|
const row = await db.findOne("release_catalogs", { scope_key: scopeKey });
|
|
3536
3633
|
return projectReleaseCatalogRow(row === null ? null : toCatalogRow(row), input, scopeKey);
|
|
3537
3634
|
},
|
|
3538
|
-
async
|
|
3635
|
+
getArtifactInfo: (async (targetBundleId, currentBundleId, artifactProtocolVersion) => {
|
|
3539
3636
|
const { readStorageText } = storage;
|
|
3540
|
-
if (artifactProtocolVersion !== 1 || readStorageText === void 0) return null;
|
|
3637
|
+
if (artifactProtocolVersion !== 1 && artifactProtocolVersion !== 2 || readStorageText === void 0) return null;
|
|
3541
3638
|
const withCurrent = currentBundleId !== NIL_UUID;
|
|
3542
3639
|
const [[target, current], patch] = await Promise.all([db.findByKeys("bundles", withCurrent ? [{ id: targetBundleId }, { id: currentBundleId }] : [{ id: targetBundleId }]), withCurrent ? db.findOne("bundle_patches", {
|
|
3543
3640
|
bundle_id: targetBundleId,
|
|
3544
3641
|
base_bundle_id: currentBundleId
|
|
3545
3642
|
}) : null]);
|
|
3546
3643
|
if (target === null || target === void 0) return null;
|
|
3547
|
-
|
|
3644
|
+
const input = {
|
|
3548
3645
|
currentBundle: current ? rowToBundle(toBundleRow(current)) : null,
|
|
3549
3646
|
readStorageText,
|
|
3550
3647
|
resolveFileUrl: storage.resolveFileUrl,
|
|
3551
3648
|
targetBundle: rowToBundle(toBundleRow(target), patch === null ? [] : [toPatchRow(patch)])
|
|
3649
|
+
};
|
|
3650
|
+
return artifactProtocolVersion === 2 ? resolveManifestArtifactsV2(input) : resolveManifestArtifacts(input);
|
|
3651
|
+
}),
|
|
3652
|
+
async getArtifactFiles(bundleId, paths) {
|
|
3653
|
+
const { readStorageText } = storage;
|
|
3654
|
+
if (readStorageText === void 0) return null;
|
|
3655
|
+
const row = await db.findOne("bundles", { id: bundleId });
|
|
3656
|
+
if (row === null) return null;
|
|
3657
|
+
return resolveManifestArtifactFiles({
|
|
3658
|
+
paths,
|
|
3659
|
+
readStorageText,
|
|
3660
|
+
resolveFileUrl: storage.resolveFileUrl,
|
|
3661
|
+
targetBundle: rowToBundle(toBundleRow(row))
|
|
3552
3662
|
});
|
|
3553
3663
|
},
|
|
3554
3664
|
async getBundle(id) {
|
|
@@ -4861,6 +4971,7 @@ var ADMIN_ROUTES = [
|
|
|
4861
4971
|
];
|
|
4862
4972
|
var CATALOG_CONTENT_TYPE = "application/vnd.hot-updater.release-catalog+json; version=1";
|
|
4863
4973
|
var ARTIFACT_CONTENT_TYPE = "application/vnd.hot-updater.artifact+json; version=1";
|
|
4974
|
+
var ARTIFACT_V2_CONTENT_TYPE = "application/vnd.hot-updater.artifact+json; version=2";
|
|
4864
4975
|
var ORIGIN_CACHE_TTL_MS = 5e3;
|
|
4865
4976
|
var ORIGIN_CACHE_MAX_ENTRIES = 128;
|
|
4866
4977
|
/** Marks the 404 of a scope that has no catalog. */
|
|
@@ -4883,6 +4994,18 @@ var CATALOG_CACHE_CONTROL = "public, max-age=0, s-maxage=5";
|
|
|
4883
4994
|
* `Cache-Control`.
|
|
4884
4995
|
*/
|
|
4885
4996
|
var CATALOG_CDN_CACHE_CONTROL = "public, max-age=5, stale-while-revalidate=5, stale-if-error=0";
|
|
4997
|
+
/** The paths of an artifact files request, or null when malformed. */
|
|
4998
|
+
var readArtifactFilePaths = async (request) => {
|
|
4999
|
+
let body;
|
|
5000
|
+
try {
|
|
5001
|
+
body = await request.json();
|
|
5002
|
+
} catch {
|
|
5003
|
+
return null;
|
|
5004
|
+
}
|
|
5005
|
+
const paths = body?.paths;
|
|
5006
|
+
if (!Array.isArray(paths) || paths.length === 0 || paths.length > 100 || !paths.every((path) => typeof path === "string" && path.length > 0) || new Set(paths).size !== paths.length) return null;
|
|
5007
|
+
return paths;
|
|
5008
|
+
};
|
|
4886
5009
|
var privateNotFound = () => Response.json({ error: "Not found" }, {
|
|
4887
5010
|
status: 404,
|
|
4888
5011
|
headers: { "cache-control": "private, no-store" }
|
|
@@ -5003,6 +5126,30 @@ var createReleaseCatalogRouteHandlers = () => {
|
|
|
5003
5126
|
if (invalid) return invalid;
|
|
5004
5127
|
return catalogResponse(await loadCatalog(`fingerprint:${JSON.stringify(input)}`, () => core.getReleaseCatalog(input)), request);
|
|
5005
5128
|
},
|
|
5129
|
+
artifactV2: async (params, _request, { core }) => {
|
|
5130
|
+
const info = await core.getArtifactInfo(requireRouteParam(params, "targetBundleId"), requireRouteParam(params, "currentBundleId"), 2);
|
|
5131
|
+
if (info === null) return privateNotFound();
|
|
5132
|
+
return new Response(JSON.stringify(info), {
|
|
5133
|
+
status: 200,
|
|
5134
|
+
headers: {
|
|
5135
|
+
"cache-control": "private, no-store",
|
|
5136
|
+
"content-type": ARTIFACT_V2_CONTENT_TYPE
|
|
5137
|
+
}
|
|
5138
|
+
});
|
|
5139
|
+
},
|
|
5140
|
+
artifactFilesV2: async (params, request, { core }) => {
|
|
5141
|
+
const paths = await readArtifactFilePaths(request);
|
|
5142
|
+
if (paths === null) return badRequest(`paths must be 1 to 100 unique strings`);
|
|
5143
|
+
const files = await core.getArtifactFiles(requireRouteParam(params, "targetBundleId"), paths);
|
|
5144
|
+
if (files === null) return privateNotFound();
|
|
5145
|
+
return new Response(JSON.stringify(files), {
|
|
5146
|
+
status: 200,
|
|
5147
|
+
headers: {
|
|
5148
|
+
"cache-control": "private, no-store",
|
|
5149
|
+
"content-type": ARTIFACT_V2_CONTENT_TYPE
|
|
5150
|
+
}
|
|
5151
|
+
});
|
|
5152
|
+
},
|
|
5006
5153
|
artifactV1: async (params, _request, { core }) => {
|
|
5007
5154
|
const info = await core.getArtifactInfo(requireRouteParam(params, "targetBundleId"), requireRouteParam(params, "currentBundleId"), 1);
|
|
5008
5155
|
if (info === null) return privateNotFound();
|
|
@@ -5150,6 +5297,8 @@ function createHotUpdaterHandlers({ api, clientPolicy, endpoints = [], plugins =
|
|
|
5150
5297
|
addClientRoute("GET", "/release-catalogs/app-version/:platform/:channelKey/:appVersion", "appVersionReleaseCatalog");
|
|
5151
5298
|
addClientRoute("GET", "/release-catalogs/fingerprint/:platform/:channelKey/:fingerprintHash", "fingerprintReleaseCatalog");
|
|
5152
5299
|
addClientRoute("GET", "/artifacts/v1/:targetBundleId/from/:currentBundleId", "artifactV1");
|
|
5300
|
+
addClientRoute("GET", "/artifacts/v2/:targetBundleId/from/:currentBundleId", "artifactV2");
|
|
5301
|
+
addClientRoute("POST", "/artifacts/v2/:targetBundleId/files", "artifactFilesV2");
|
|
5153
5302
|
const adminRouter = createRouter();
|
|
5154
5303
|
const addAdminRoute = mount(adminRouter, true);
|
|
5155
5304
|
addAdminRoute("GET", "/version", "adminVersion");
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { i 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 { i as getRequest } from "./server-FnyRjW5z.mjs";
|
|
2
|
+
import { requireConsoleAccess, t as resolveConsoleConfig } from "./auth.server-QyPVZNlm.mjs";
|
|
3
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/config.server-DHKEn88l.js
|
|
4
4
|
var configPromise = null;
|
|
5
5
|
var core = null;
|
|
6
6
|
var runtime = null;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { c as createMiddleware } from "./createMiddleware-B1iPez7u.mjs";
|
|
2
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/console-access-
|
|
2
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/console-access-CCNugVjZ.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-B1iPez7u.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-FnyRjW5z.mjs").then((n) => n.t), import("./auth.server-QyPVZNlm.mjs")]);
|
|
13
13
|
await requireConsoleAccess(getRequest());
|
|
14
14
|
return next();
|
|
15
15
|
});
|
package/.output/server/_ssr/{console-features-api-CvQD7xrZ.mjs → console-features-api-CapycAKo.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-B1iPez7u.mjs";
|
|
3
|
-
import { A as createSsrRpc } from "./sidebar-
|
|
4
|
-
import { t as consoleAccess } from "./console-access-
|
|
3
|
+
import { A as createSsrRpc } from "./sidebar-BrtgeSwJ.mjs";
|
|
4
|
+
import { t as consoleAccess } from "./console-access-CCNugVjZ.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-CapycAKo.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-4DFAhPjK.mjs → console-features-rpc-D_mNHOgz.mjs}
RENAMED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { u as createServerFn } from "./createMiddleware-B1iPez7u.mjs";
|
|
2
|
-
import { t as consoleAccess } from "./console-access-
|
|
2
|
+
import { t as consoleAccess } from "./console-access-CCNugVjZ.mjs";
|
|
3
3
|
import { t as createServerRpc } from "./createServerRpc-BaDJLGBx.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-D_mNHOgz.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-DHKEn88l.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-BrtgeSwJ.mjs";
|
|
5
5
|
require_react();
|
|
6
6
|
var import_jsx_runtime = require_jsx_runtime();
|
|
7
7
|
function Dialog$1({ ...props }) {
|
|
@@ -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-BrtgeSwJ.mjs";
|
|
4
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/empty-CuEKeW6Z.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-BrtgeSwJ.mjs";
|
|
5
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/field-Cli6Ntli.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-BrtgeSwJ.mjs";
|
|
5
5
|
require_react();
|
|
6
6
|
var import_jsx_runtime = require_jsx_runtime();
|
|
7
7
|
function Textarea({ className, ...props }) {
|
|
@@ -2,33 +2,33 @@ import { i as __toESM } from "../_runtime.mjs";
|
|
|
2
2
|
import { u as createServerFn } from "./createMiddleware-B1iPez7u.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-BrtgeSwJ.mjs";
|
|
6
|
+
import { t as consoleAccess } from "./console-access-CCNugVjZ.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-CuEKeW6Z.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-Cli6Ntli.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-5ODp5_gW.mjs";
|
|
12
|
+
import { a as TableHeader, i as TableHead, n as TableBody, o as TableRow, r as TableCell, t as Table } from "./table-JgLKbtrb.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 { r as comparedBundleIds, t as InfoTooltip } from "./insights-search-
|
|
20
|
-
import { i as useFailureReportsQuery, l as useInsightsRetention, r as keepsTwelveMonths, t as DEFAULT_INSIGHTS_RETENTION, u as useUpdateFailuresQuery } from "./insights-api-
|
|
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 { r as comparedBundleIds, t as InfoTooltip } from "./insights-search-B6RVM0ff.mjs";
|
|
20
|
+
import { i as useFailureReportsQuery, l as useInsightsRetention, r as keepsTwelveMonths, t as DEFAULT_INSIGHTS_RETENTION, u as useUpdateFailuresQuery } from "./insights-api-CNooe2pk.mjs";
|
|
21
|
+
import { t as Route } from "./insights-I3QzkM2P.mjs";
|
|
22
|
+
import { i as TabsTrigger, n as TabsContent, r as TabsList, t as Tabs$1 } from "./tabs-BpUr6C7g.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-DVyj4bC2.mjs";
|
|
24
|
+
import { i as InputGroupInput, n as InputGroupAddon, r as InputGroupButton, t as InputGroup } from "./input-group-D_URj0xe.mjs";
|
|
25
|
+
import { i as useChannelsQuery, l as usePreflightReleaseMutation, m as useUpdateReleaseMutation } from "./api-BMPSwABL.mjs";
|
|
26
|
+
import { t as BundleIdDisplay } from "./BundleIdDisplay-BSJBddvz.mjs";
|
|
27
|
+
import { n as getAppUsageReportRpc, t as Progress$1 } from "./insights-usage-rpc-BicJhAIl.mjs";
|
|
28
|
+
import { i as InsightsPeriodSelector, n as InsightsErrorAlert, o as UsagePeriodSelector, r as InsightsPageHeader } from "./InsightsPageHeader-DPMTsTtZ.mjs";
|
|
29
|
+
import { i as HttpResponseBody, n as EventTimestamp, o as useInsightsTimeFormat, t as EventBundleTransition } from "./EventDetails-C5QPEQOi.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-C0lu_zT5.js
|
|
32
32
|
var import_react = /* @__PURE__ */ __toESM(require_react());
|
|
33
33
|
var import_jsx_runtime = require_jsx_runtime();
|
|
34
34
|
var THEMES = {
|
|
@@ -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-DC7XuIoa.mjs";
|
|
2
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/insights-Cv_QcEnM.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 "./insights-search-
|
|
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-CapycAKo.mjs";
|
|
3
|
+
import { a as validateInsightsSearch } from "./insights-search-B6RVM0ff.mjs";
|
|
4
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/insights-I3QzkM2P.js
|
|
5
|
+
var $$splitComponentImporter = () => import("./insights-C0lu_zT5.mjs");
|
|
6
|
+
var $$splitNotFoundComponentImporter = () => import("./insights-Cv_QcEnM.mjs");
|
|
7
7
|
var Route = createFileRoute("/insights")({
|
|
8
8
|
beforeLoad: ({ context }) => requireConsoleFeature(context.queryClient, "insightsAnalytics"),
|
|
9
9
|
notFoundComponent: lazyRouteComponent($$splitNotFoundComponentImporter, "notFoundComponent"),
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { u as createServerFn } from "./createMiddleware-B1iPez7u.mjs";
|
|
2
|
-
import { A as createSsrRpc } from "./sidebar-
|
|
3
|
-
import { t as consoleAccess } from "./console-access-
|
|
2
|
+
import { A as createSsrRpc } from "./sidebar-BrtgeSwJ.mjs";
|
|
3
|
+
import { t as consoleAccess } from "./console-access-CCNugVjZ.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-CNooe2pk.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-B1iPez7u.mjs";
|
|
2
|
-
import { t as consoleAccess } from "./console-access-
|
|
2
|
+
import { t as consoleAccess } from "./console-access-CCNugVjZ.mjs";
|
|
3
3
|
import { t as createServerRpc } from "./createServerRpc-BaDJLGBx.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-DmPCAlXp.js
|
|
7
7
|
var getUpdateFailuresRpc_createServerFn_handler = createServerRpc({
|
|
8
8
|
id: "0d1dacdd1e5ee6b100e5c142fb9af03602b6f2c6fe6af79312b36c223d7f8f97",
|
|
9
9
|
name: "getUpdateFailuresRpc",
|
|
@@ -11,7 +11,7 @@ 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-DHKEn88l.mjs"),
|
|
15
15
|
import("./updateFailures-H6pnnYK4.mjs"),
|
|
16
16
|
import("./runtime.server-De0QVWc9.mjs")
|
|
17
17
|
]);
|
|
@@ -25,7 +25,7 @@ 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-DHKEn88l.mjs"),
|
|
29
29
|
import("./failureReports-DKDhVsXA.mjs"),
|
|
30
30
|
import("./runtime.server-De0QVWc9.mjs")
|
|
31
31
|
]);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { u as createServerFn } from "./createMiddleware-B1iPez7u.mjs";
|
|
2
|
-
import { t as consoleAccess } from "./console-access-
|
|
2
|
+
import { t as consoleAccess } from "./console-access-CCNugVjZ.mjs";
|
|
3
3
|
import { t as createServerRpc } from "./createServerRpc-BaDJLGBx.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-DVUHMjrp.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,7 +21,7 @@ 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-DHKEn88l.mjs"),
|
|
25
25
|
import("./bundleActivity-M5gzBFNg.mjs"),
|
|
26
26
|
import("./runtime.server-De0QVWc9.mjs")
|
|
27
27
|
]);
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { u as createServerFn } from "./createMiddleware-B1iPez7u.mjs";
|
|
2
|
-
import { t as consoleAccess } from "./console-access-
|
|
2
|
+
import { t as consoleAccess } from "./console-access-CCNugVjZ.mjs";
|
|
3
3
|
import { t as createServerRpc } from "./createServerRpc-BaDJLGBx.mjs";
|
|
4
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/insights-rpc-
|
|
4
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/insights-rpc-CJQm05Eu.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-DHKEn88l.mjs"), import("./runtime.server-De0QVWc9.mjs")]);
|
|
8
8
|
const { runtime } = await prepareConfig();
|
|
9
9
|
return requireFeature(runtime, "insights");
|
|
10
10
|
};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { i as __toESM } from "../_runtime.mjs";
|
|
2
2
|
import { _t as require_react, gt as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
|
|
3
3
|
import { O as Info } from "../_libs/lucide-react.mjs";
|
|
4
|
-
import { D as TooltipTrigger, T as TooltipContent, t as Button$1, w as Tooltip$1 } from "./sidebar-
|
|
4
|
+
import { D as TooltipTrigger, T as TooltipContent, t as Button$1, w as Tooltip$1 } from "./sidebar-BrtgeSwJ.mjs";
|
|
5
5
|
import { C as isUUIDv7 } from "./dist-CbQbBIw-.mjs";
|
|
6
6
|
import { r as extractTimestampFromUUIDv7 } from "./uuidv7-C88s9jWF.mjs";
|
|
7
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/insights-search-
|
|
7
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/insights-search-B6RVM0ff.js
|
|
8
8
|
var import_react = /* @__PURE__ */ __toESM(require_react());
|
|
9
9
|
var import_jsx_runtime = require_jsx_runtime();
|
|
10
10
|
function InfoTooltip({ label, children }) {
|
package/.output/server/_ssr/{insights-usage-rpc-DdafF6eA.mjs → insights-usage-rpc-BXgFJpIw.mjs}
RENAMED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { u as createServerFn } from "./createMiddleware-B1iPez7u.mjs";
|
|
2
|
-
import { t as consoleAccess } from "./console-access-
|
|
2
|
+
import { t as consoleAccess } from "./console-access-CCNugVjZ.mjs";
|
|
3
3
|
import { t as createServerRpc } from "./createServerRpc-BaDJLGBx.mjs";
|
|
4
4
|
import { t as readAppUsageInput } from "./insights-usage-BpBM0U0c.mjs";
|
|
5
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/insights-usage-rpc-
|
|
5
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/insights-usage-rpc-BXgFJpIw.js
|
|
6
6
|
var getAppUsageReportRpc_createServerFn_handler = createServerRpc({
|
|
7
7
|
id: "8a98cd9c178e4a54185d62c25a95f09d3d59850c43d3f5baa1563e1614ad942e",
|
|
8
8
|
name: "getAppUsageReportRpc",
|
|
@@ -18,7 +18,7 @@ var getAppUsageReportRpc = createServerFn({ method: "GET" }).middleware([console
|
|
|
18
18
|
};
|
|
19
19
|
}).handler(getAppUsageReportRpc_createServerFn_handler, async ({ data }) => {
|
|
20
20
|
const [{ prepareConfig }, { getAppUsageReport }, { requireFeature }] = await Promise.all([
|
|
21
|
-
import("./config.server-
|
|
21
|
+
import("./config.server-DHKEn88l.mjs"),
|
|
22
22
|
import("./insightsUsage-CzhVjsc8.mjs"),
|
|
23
23
|
import("./runtime.server-De0QVWc9.mjs")
|
|
24
24
|
]);
|
package/.output/server/_ssr/{insights-usage-rpc-DoLbrAou.mjs → insights-usage-rpc-BicJhAIl.mjs}
RENAMED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { u as createServerFn } from "./createMiddleware-B1iPez7u.mjs";
|
|
2
2
|
import { D as ProgressTrack$1, E as ProgressIndicator$1, O as ProgressRoot, gt as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
|
|
3
|
-
import { A as createSsrRpc, k as cn } from "./sidebar-
|
|
4
|
-
import { t as consoleAccess } from "./console-access-
|
|
3
|
+
import { A as createSsrRpc, k as cn } from "./sidebar-BrtgeSwJ.mjs";
|
|
4
|
+
import { t as consoleAccess } from "./console-access-CCNugVjZ.mjs";
|
|
5
5
|
import { t as readAppUsageInput } from "./insights-usage-BpBM0U0c.mjs";
|
|
6
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/insights-usage-rpc-
|
|
6
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/insights-usage-rpc-BicJhAIl.js
|
|
7
7
|
var import_jsx_runtime = require_jsx_runtime();
|
|
8
8
|
function Progress$1({ className, children, value, ...props }) {
|
|
9
9
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(ProgressRoot, {
|
|
@@ -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 { i as validateDistributionSearch } from "./insights-search-
|
|
4
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/insights_.distribution-
|
|
5
|
-
var $$splitComponentImporter = () => import("./insights_.distribution-
|
|
6
|
-
var $$splitNotFoundComponentImporter = () => import("./insights_.distribution-
|
|
2
|
+
import { r as requireConsoleFeature } from "./console-features-api-CapycAKo.mjs";
|
|
3
|
+
import { i as validateDistributionSearch } from "./insights-search-B6RVM0ff.mjs";
|
|
4
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/insights_.distribution-BVial-44.js
|
|
5
|
+
var $$splitComponentImporter = () => import("./insights_.distribution-CzvDHWvd.mjs");
|
|
6
|
+
var $$splitNotFoundComponentImporter = () => import("./insights_.distribution-B_Sds3TS.mjs");
|
|
7
7
|
/** How a distribution row's bundle reads aloud. */
|
|
8
8
|
/** The bundle an app version's native build shipped, by its ID. */
|
|
9
9
|
var Route = createFileRoute("/insights_/distribution")({
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { t as ConsoleFeatureUnavailable } from "./ConsoleFeatureUnavailable-
|
|
2
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/insights_.distribution-
|
|
1
|
+
import { t as ConsoleFeatureUnavailable } from "./ConsoleFeatureUnavailable-DC7XuIoa.mjs";
|
|
2
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/insights_.distribution-B_Sds3TS.js
|
|
3
3
|
/** How a distribution row's bundle reads aloud. */
|
|
4
4
|
/** The bundle an app version's native build shipped, by its ID. */
|
|
5
5
|
var SplitNotFoundComponent = ConsoleFeatureUnavailable;
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { gt as require_jsx_runtime } from "../_libs/@base-ui/react+[...].mjs";
|
|
2
2
|
import { $ as ArrowLeft, X as ArrowUpRight, m as RotateCw } from "../_libs/lucide-react.mjs";
|
|
3
|
-
import { C as Skeleton, O as buttonVariants, t as Button$1 } from "./sidebar-
|
|
3
|
+
import { C as Skeleton, O as buttonVariants, t as Button$1 } from "./sidebar-BrtgeSwJ.mjs";
|
|
4
4
|
import { h as Link } from "../_libs/@tanstack/react-router+[...].mjs";
|
|
5
5
|
import { i as useQuery } from "../_libs/tanstack__react-query.mjs";
|
|
6
|
-
import { i as EmptyHeader, o as EmptyTitle, r as EmptyDescription, t as Empty } from "./empty-
|
|
7
|
-
import { a as Badge, d as CardTitle, f as Field, g as FieldLabel, i as AlertTitle, l as CardFooter, o as Card, r as AlertDescription, s as CardContent, t as Alert, u as CardHeader } from "./field-
|
|
8
|
-
import { a as validateInsightsSearch, t as InfoTooltip } from "./insights-search-
|
|
9
|
-
import { l as useInsightsRetention, r as keepsTwelveMonths } from "./insights-api-
|
|
10
|
-
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-
|
|
11
|
-
import { t as BundleIdDisplay } from "./BundleIdDisplay-
|
|
12
|
-
import { n as getAppUsageReportRpc, t as Progress$1 } from "./insights-usage-rpc-
|
|
13
|
-
import { n as InsightsErrorAlert, o as UsagePeriodSelector, r as InsightsPageHeader, t as BuiltinBundleBadge } from "./InsightsPageHeader-
|
|
14
|
-
import { t as Route } from "./insights_.distribution-
|
|
15
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/insights_.distribution-
|
|
6
|
+
import { i as EmptyHeader, o as EmptyTitle, r as EmptyDescription, t as Empty } from "./empty-CuEKeW6Z.mjs";
|
|
7
|
+
import { a as Badge, d as CardTitle, f as Field, g as FieldLabel, i as AlertTitle, l as CardFooter, o as Card, r as AlertDescription, s as CardContent, t as Alert, u as CardHeader } from "./field-Cli6Ntli.mjs";
|
|
8
|
+
import { a as validateInsightsSearch, t as InfoTooltip } from "./insights-search-B6RVM0ff.mjs";
|
|
9
|
+
import { l as useInsightsRetention, r as keepsTwelveMonths } from "./insights-api-CNooe2pk.mjs";
|
|
10
|
+
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-DVyj4bC2.mjs";
|
|
11
|
+
import { t as BundleIdDisplay } from "./BundleIdDisplay-BSJBddvz.mjs";
|
|
12
|
+
import { n as getAppUsageReportRpc, t as Progress$1 } from "./insights-usage-rpc-BicJhAIl.mjs";
|
|
13
|
+
import { n as InsightsErrorAlert, o as UsagePeriodSelector, r as InsightsPageHeader, t as BuiltinBundleBadge } from "./InsightsPageHeader-DPMTsTtZ.mjs";
|
|
14
|
+
import { t as Route } from "./insights_.distribution-BVial-44.mjs";
|
|
15
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/insights_.distribution-CzvDHWvd.js
|
|
16
16
|
var import_jsx_runtime = require_jsx_runtime();
|
|
17
17
|
var PAGE_SIZE = 20;
|
|
18
18
|
var dates = new Intl.DateTimeFormat("en", {
|