@hot-updater/console 1.0.0-rc.9 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.output/nitro.json +1 -1
- package/.output/public/assets/ConsoleFeatureUnavailable-jB4Loglh.js +1 -0
- package/.output/public/assets/EventDetails-B6yUsyNA.js +1 -0
- package/.output/public/assets/HashValueDisplay-BFX_kY3-.js +1 -0
- package/.output/public/assets/InsightsInfo-BNO0WznZ.js +1 -0
- package/.output/public/assets/InsightsPageHeader-B892oVml.js +1 -0
- package/.output/public/assets/NotFoundPage-DIqCpWa3.js +1 -0
- package/.output/public/assets/alert-dialog-Bbk_4-WJ.js +1 -0
- package/.output/public/assets/api-DCM0wr6O.js +1 -0
- package/.output/public/assets/api-keys-CIO9L_wu.js +1 -0
- package/.output/public/assets/api-keys-DVTL_--f.js +1 -0
- package/.output/public/assets/arrow-left-CnMYpqB7.js +1 -0
- package/.output/public/assets/arrow-up-right-BtffZA6e.js +1 -0
- package/.output/public/assets/chevron-right-BqD5wtFb.js +1 -0
- package/.output/public/assets/clipboard-DS9ucUQL.js +1 -0
- package/.output/public/assets/console-features-api-BH5m_PtQ.js +1 -0
- package/.output/public/assets/dialog-Bqbb7B0N.js +1 -0
- package/.output/public/assets/dist-LxKJB-Vu.js +1 -0
- package/.output/public/assets/empty-CuT2UhFp.js +1 -0
- package/.output/public/assets/field-BBDpjIqu.js +1 -0
- package/.output/public/assets/index-6o51GkFe.js +11 -0
- package/.output/public/assets/input-group-ja_30qaF.js +1 -0
- package/.output/public/assets/insights-CmraDzQh.js +1 -0
- package/.output/public/assets/insights-CxZ2GCYV.js +2 -0
- package/.output/public/assets/insights-api-BigAU9sZ.js +1 -0
- package/.output/public/assets/insights-usage-rpc-DYEhsCKT.js +1 -0
- package/.output/public/assets/insights-vNRCrfnS.js +42 -0
- package/.output/public/assets/insights_.distribution-ChOerfJt.js +1 -0
- package/.output/public/assets/insights_.distribution-D-e4iga8.js +1 -0
- package/.output/public/assets/insights_.distribution-DZtkibX1.js +2 -0
- package/.output/public/assets/installations-BazSJXE0.js +2 -0
- package/.output/public/assets/installations-ClHTqdAO.js +1 -0
- package/.output/public/assets/installations-DpKsBuHi.js +1 -0
- package/.output/public/assets/key-round-wS_SIZ6b.js +1 -0
- package/.output/public/assets/list-CgrYiadM.js +1 -0
- package/.output/public/assets/refresh-cw-BYgoNCco.js +1 -0
- package/.output/public/assets/remote-config-BWwHOkCK.js +1 -0
- package/.output/public/assets/remote-config-Br56BODb.js +6 -0
- package/.output/public/assets/remote-config-CXOi0LRu.js +1 -0
- package/.output/public/assets/routes-B88Erkpk.js +2 -0
- package/.output/public/assets/routes-CfzsAleC.js +1 -0
- package/.output/public/assets/search-DaTDPW25.js +1 -0
- package/.output/public/assets/select-BZZBXMkr.js +1 -0
- package/.output/public/assets/sidebar-DNVyJPfX.js +3 -0
- package/.output/public/assets/smartphone-DpTFgtKf.js +1 -0
- package/.output/public/assets/styles-DTGEAJFv.css +2 -0
- package/.output/public/assets/switch-DZ1TPwx-.js +1 -0
- package/.output/public/assets/table-Gm4qRWwE.js +1 -0
- package/.output/public/assets/tabs-C7FOEjFC.js +1 -0
- package/.output/public/assets/undo-2-CmrHjwFc.js +1 -0
- package/.output/public/assets/useCompositeListItem-9E4pj_CH.js +1 -0
- package/.output/public/assets/valueToPercent-CH8GCHaL.js +1 -0
- package/.output/server/__23tanstack-start-server-fn-resolver-BpRlos5Q.mjs +170 -0
- package/.output/server/_libs/@base-ui/react+[...].mjs +4389 -4207
- package/.output/server/_libs/@tanstack/react-router+[...].mjs +3802 -4022
- package/.output/server/_libs/@tanstack/react-router-ssr-query+[...].mjs +140 -97
- package/.output/server/_libs/lucide-react.mjs +221 -9
- package/.output/server/_libs/next-themes.mjs +1 -1
- package/.output/server/_libs/react-redux+[...].mjs +1 -1
- package/.output/server/_libs/recharts+[...].mjs +483 -901
- package/.output/server/_libs/sonner.mjs +1 -1
- package/.output/server/_libs/tanstack__history.mjs +68 -41
- package/.output/server/_libs/tanstack__query-core.mjs +2010 -309
- package/.output/server/_libs/tanstack__react-query.mjs +448 -21
- package/.output/server/_libs/verkit.mjs +102 -1
- package/.output/server/_ssr/BundleIdDisplay-x94o9rlU.mjs +13 -0
- package/.output/server/_ssr/ConsoleFeatureUnavailable-ldW8v8-q.mjs +58 -0
- package/.output/server/_ssr/EventDetails-Q8kfj9Nr.mjs +344 -0
- package/.output/server/_ssr/{HashValueDisplay-CyMmr0O9.mjs → HashValueDisplay-n1GholGS.mjs} +3 -3
- package/.output/server/_ssr/InsightsInfo-DuJFatQO.mjs +75 -0
- package/.output/server/_ssr/InsightsPageHeader-BSUX3Ye9.mjs +145 -0
- package/.output/server/_ssr/NotFoundPage-DZzOOzS3.mjs +37 -0
- package/.output/server/_ssr/{dialog-CKvQ4VIE.mjs → alert-dialog-C43Doa0I.mjs} +6 -83
- package/.output/server/_ssr/{api-keys-CzZ7Ont4.mjs → api-keys-B4sYm8dM.mjs} +48 -9
- package/.output/server/_ssr/api-keys-CEnM9fqG.mjs +5 -0
- package/.output/server/_ssr/api-keys-rpc-BIFuUgMt.mjs +52 -0
- package/.output/server/_ssr/api-oZjRn9tP.mjs +186 -0
- package/.output/server/_ssr/api-rpc-BNiFRRK8.mjs +240 -0
- package/.output/server/_ssr/{auth-BF8mbAgF.mjs → auth-UP0wXs4i.mjs} +1 -1
- package/.output/server/_ssr/{auth-rpc-DH6Bhwcz.mjs → auth-rpc-DnZqYxyq.mjs} +6 -6
- package/.output/server/_ssr/auth.server-DFpyxRDd.mjs +5374 -0
- package/.output/server/_ssr/bundleActivity-M5gzBFNg.mjs +18 -0
- package/.output/server/_ssr/config-WVX4IxSR.mjs +15 -0
- package/.output/server/_ssr/config.server-DskXCAyI.mjs +35 -0
- package/.output/server/_ssr/console-access-BJfAXknd.mjs +17 -0
- package/.output/server/_ssr/console-features-Oz0q20jJ.mjs +61 -0
- package/.output/server/_ssr/console-features-api-C9kiKvaV.mjs +43 -0
- package/.output/server/_ssr/console-features-rpc-P0GL7Z-R.mjs +19 -0
- package/.output/server/_ssr/{createServerFn-B2hcXoPM.mjs → createMiddleware-Cm6Tn0_Y.mjs} +67 -56
- package/.output/server/_ssr/{createServerRpc-DB29C_5p.mjs → createServerRpc-RLR4H-Fn.mjs} +2 -2
- package/.output/server/_ssr/databaseConfig-C5SkAyUy.mjs +5 -0
- package/.output/server/_ssr/{databaseJsonValue-d6I3nAS4.mjs → databaseJsonValue-Csbuzc9Q.mjs} +28 -5
- package/.output/server/_ssr/databaseRows-CPphvbag.mjs +73 -0
- package/.output/server/_ssr/dialog-BbYDMjdC.mjs +84 -0
- package/.output/server/_ssr/{dist-CyzPaI5v.mjs → dist-CbQbBIw-.mjs} +140 -7
- package/.output/server/_ssr/{downloadBundle-CI7JUKvC.mjs → downloadBundle-CZysjmNW.mjs} +10 -10
- package/.output/server/_ssr/empty-CVLGfxuu.mjs +60 -0
- package/.output/server/_ssr/{empty-plugin-adapters-B5QvGpEl.mjs → empty-plugin-adapters-CPtwX8a7.mjs} +1 -1
- package/.output/server/_ssr/failureReports-DKDhVsXA.mjs +33 -0
- package/.output/server/_ssr/field-asw83X0v.mjs +189 -0
- package/.output/server/_ssr/getBundleChildren-Cv9iz1As.mjs +22 -0
- package/.output/server/_ssr/{input-group-BrGSjz4S.mjs → input-group-CuYJHosb.mjs} +2 -2
- package/.output/server/_ssr/insights-B55FG5fm.mjs +14 -0
- package/.output/server/_ssr/insights-CWnHIFUV.mjs +5 -0
- package/.output/server/_ssr/insights-CpLpedFZ.mjs +2315 -0
- package/.output/server/_ssr/insights-api-sjws23WF.mjs +122 -0
- package/.output/server/_ssr/insights-errors-BjnFUyZj.mjs +34 -0
- package/.output/server/_ssr/insights-failures-rpc-BvbWvqNf.mjs +36 -0
- package/.output/server/_ssr/insights-failures-xaa41Buf.mjs +46 -0
- package/.output/server/_ssr/insights-recovery-BWQhiZaF.mjs +28 -0
- package/.output/server/_ssr/insights-recovery-rpc-GiYXdkaY.mjs +32 -0
- package/.output/server/_ssr/{insights-rpc-DDKmIrpV.mjs → insights-rpc-DP_8Rmz4.mjs} +22 -14
- package/.output/server/_ssr/insights-usage-BpBM0U0c.mjs +29 -0
- package/.output/server/_ssr/insights-usage-rpc-BiolgB8e.mjs +29 -0
- package/.output/server/_ssr/insights-usage-rpc-KStL0zOx.mjs +41 -0
- package/.output/server/_ssr/insightsUsage-CzhVjsc8.mjs +56 -0
- package/.output/server/_ssr/insights_.distribution-CVrnbP3R.mjs +7 -0
- package/.output/server/_ssr/insights_.distribution-D2HaNTAA.mjs +16 -0
- package/.output/server/_ssr/{insights_.distribution-cIsU-kHG.mjs → insights_.distribution-DN9pR422.mjs} +50 -22
- package/.output/server/_ssr/installations-BHmbbnH8.mjs +5 -0
- package/.output/server/_ssr/{installations-C5anhyP0.mjs → installations-BSCmFq8Q.mjs} +279 -367
- package/.output/server/_ssr/installations-DD1g__Nc.mjs +69 -0
- package/.output/server/_ssr/listReleases-BfUBlCHo.mjs +79 -0
- package/.output/server/_ssr/plugins-BaD1slHx.mjs +2086 -0
- package/.output/server/_ssr/release-adoption-005tQRpo.mjs +55 -0
- package/.output/server/_ssr/release-adoption-rpc-BsstqxUp.mjs +41 -0
- package/.output/server/_ssr/releaseAdoption-CtOFkwli.mjs +114 -0
- package/.output/server/_ssr/releaseManagement-DFMUnDF5.mjs +11 -0
- package/.output/server/_ssr/remote-config-C2Ee8lXO.mjs +5 -0
- package/.output/server/_ssr/remote-config-Dv1ccMo-.mjs +17 -0
- package/.output/server/_ssr/remote-config-of0lGQH8.mjs +2648 -0
- package/.output/server/_ssr/remote-config-rpc-BzX31mUS.mjs +115 -0
- package/.output/server/_ssr/rolldown-runtime-rSIU-vHC.mjs +13 -0
- package/.output/server/_ssr/{router-BuanSsRI.mjs → router-D8NuoJ_I.mjs} +107 -134
- package/.output/server/_ssr/{routes-DY-vqU6R.mjs → routes-DgvnFqDy.mjs} +195 -429
- package/.output/server/_ssr/routes-V8sDybGf.mjs +409 -0
- package/.output/server/_ssr/runtime.server-De0QVWc9.mjs +104 -0
- package/.output/server/_ssr/schema-BiAVyEj2.mjs +361 -0
- package/.output/server/_ssr/{select-DD2szs3Y.mjs → select-t3iXRwc9.mjs} +3 -3
- package/.output/server/_ssr/server-h4VxnExB.mjs +8325 -0
- package/.output/server/_ssr/{createSsrRpc-CdlfejmI.mjs → sidebar-DJcErBMo.mjs} +107 -47
- package/.output/server/_ssr/ssr.mjs +1 -1
- package/.output/server/_ssr/start-BfFbHKMK.mjs +4 -0
- package/.output/server/_ssr/switch-E-btwMGt.mjs +43 -0
- package/.output/server/_ssr/{table-CTj6n-4F.mjs → table-37Dd23TN.mjs} +2 -2
- package/.output/server/_ssr/tabs-DEFnTm95.mjs +45 -0
- package/.output/server/_ssr/updateFailures-H6pnnYK4.mjs +40 -0
- package/.output/server/_ssr/{uuidv7-D0QFkPL_.mjs → uuidv7-C88s9jWF.mjs} +2 -2
- package/.output/server/_tanstack-start-manifest_v-55AGsehh.mjs +139 -0
- package/.output/server/index.mjs +309 -211
- package/LICENSE +13 -14
- package/README.md +80 -71
- package/lib/index.d.mts +23 -11
- package/lib/vite-internal.mjs +13 -3
- package/lib/vite.d.mts +2 -0
- package/package.json +14 -14
- package/src/components/AppSidebar.tsx +69 -74
- package/src/components/ConsoleFeatureUnavailable.tsx +80 -0
- package/src/components/NotFoundPage.tsx +7 -7
- package/src/components/features/FeatureSlots.tsx +103 -0
- package/src/components/features/api-keys/apiKeysFeatureUi.tsx +15 -0
- package/src/components/features/bundles/BundleMetadata.tsx +8 -5
- package/src/components/features/bundles/RolloutCohortsDialog.tsx +1 -1
- package/src/components/features/channels/ChannelManagementDialog.tsx +8 -6
- package/src/components/features/insights/AppUsage.tsx +41 -14
- package/src/components/features/insights/BuiltinBundle.tsx +36 -0
- package/src/components/features/insights/ComparedBundlesChart.tsx +310 -0
- package/src/components/features/insights/EstimatedCount.tsx +18 -0
- package/src/components/features/insights/EventDetails.tsx +390 -26
- package/src/components/features/insights/EventHistoryCard.tsx +111 -25
- package/src/components/features/insights/EventHistoryList.tsx +1 -1
- package/src/components/features/insights/FailureReports.tsx +407 -0
- package/src/components/features/insights/InsightsControls.tsx +240 -142
- package/src/components/features/insights/InsightsErrorAlert.tsx +14 -1
- package/src/components/features/insights/InsightsOverview.tsx +601 -403
- package/src/components/features/insights/InsightsPageHeader.tsx +19 -14
- package/src/components/features/insights/InsightsPeriodSelector.tsx +67 -12
- package/src/components/features/insights/InstallationHistoryCard.tsx +65 -10
- package/src/components/features/insights/InstallationMatchesCard.tsx +1 -1
- package/src/components/features/insights/ReleaseActivity.tsx +308 -0
- package/src/components/features/insights/ReportingDevicesSummary.tsx +13 -13
- package/src/components/features/insights/RollbackButton.tsx +118 -0
- package/src/components/features/insights/UpdateFailures.tsx +382 -0
- package/src/components/features/insights/insightsFeatureUi.tsx +35 -0
- package/src/components/features/releases/ReleaseEditorSheet.tsx +27 -13
- package/src/components/features/remote-config/ConditionDialog.tsx +592 -0
- package/src/components/features/remote-config/ConditionsCard.tsx +247 -0
- package/src/components/features/remote-config/ParameterDialog.tsx +426 -0
- package/src/components/features/remote-config/ParametersCard.tsx +254 -0
- package/src/components/features/remote-config/PreviewCard.tsx +284 -0
- package/src/components/features/remote-config/PublishDialog.tsx +325 -0
- package/src/components/features/remote-config/RemoteConfigPage.tsx +353 -0
- package/src/components/features/remote-config/RuleSummary.tsx +21 -0
- package/src/components/features/remote-config/ValueInput.tsx +151 -0
- package/src/components/features/remote-config/VersionsCard.tsx +384 -0
- package/src/components/features/remote-config/remoteConfigFeatureUi.tsx +15 -0
- package/src/components/features/remote-config/useDateTimeText.ts +16 -0
- package/src/components/ui/sidebar.tsx +22 -29
- package/src/index.ts +26 -19
- package/src/lib/api-keys-api.ts +0 -28
- package/src/lib/api-keys-rpc.ts +27 -38
- package/src/lib/api-rpc.ts +125 -288
- package/src/lib/api.ts +15 -134
- package/src/lib/bundle-activity.ts +24 -4
- package/src/lib/console-access.ts +20 -0
- package/src/lib/console-features-api.ts +68 -0
- package/src/lib/console-features-rpc.ts +13 -0
- package/src/lib/console-features.ts +98 -0
- package/src/lib/insights-api.ts +56 -2
- package/src/lib/insights-errors.ts +64 -0
- package/src/lib/insights-failures-rpc.ts +36 -0
- package/src/lib/insights-failures.ts +130 -0
- package/src/lib/insights-recovery-rpc.ts +13 -17
- package/src/lib/insights-recovery.ts +12 -36
- package/src/lib/insights-retention.ts +21 -0
- package/src/lib/insights-rpc.ts +30 -12
- package/src/lib/insights-search.ts +50 -4
- package/src/lib/insights-usage-rpc.ts +15 -9
- package/src/lib/insights-usage.ts +41 -3
- package/src/lib/insights-view.ts +34 -5
- package/src/lib/release-adoption-api.ts +214 -0
- package/src/lib/release-adoption-rpc.ts +49 -0
- package/src/lib/release-adoption.ts +164 -0
- package/src/lib/remote-config-api.ts +119 -0
- package/src/lib/remote-config-draft.ts +666 -0
- package/src/lib/remote-config-rpc.ts +196 -0
- package/src/lib/scroll-restoration.ts +21 -0
- package/src/lib/server/auth.server.ts +13 -5
- package/src/lib/server/bundleActivity.ts +27 -28
- package/src/lib/server/config.server.ts +21 -76
- package/src/lib/server/console-feature-apis.ts +70 -0
- package/src/lib/server/console-runtime.server.ts +82 -38
- package/src/lib/server/downloadBundle.ts +14 -15
- package/src/lib/server/failureReports.ts +50 -0
- package/src/lib/server/getBundleChildren.ts +31 -122
- package/src/lib/server/insightsUsage.ts +52 -113
- package/src/lib/server/listReleases.ts +109 -44
- package/src/lib/server/releaseAdoption.ts +151 -0
- package/src/lib/server/releaseReachability.ts +8 -8
- package/src/lib/server/remoteConfig.ts +75 -0
- package/src/lib/server/runtime.server.ts +120 -31
- package/src/lib/server/updateFailures.ts +66 -0
- package/src/lib/use-dialog-target.ts +27 -0
- package/src/routeTree.gen.ts +44 -44
- package/src/router.tsx +3 -2
- package/src/routes/-installations-search.ts +32 -8
- package/src/routes/-releases-search.ts +76 -29
- package/src/routes/__root.tsx +7 -1
- package/src/routes/api/bundles/$bundleId/download.ts +2 -5
- package/src/routes/api-keys.tsx +5 -2
- package/src/routes/index.tsx +210 -152
- package/src/routes/insights.tsx +91 -23
- package/src/routes/insights_.distribution.tsx +50 -9
- package/src/routes/installations.tsx +97 -40
- package/src/routes/remote-config.tsx +42 -0
- package/src/styles.css +9 -0
- package/src/vite-internal.ts +15 -3
- package/src/vite.ts +2 -0
- package/.output/public/assets/HashValueDisplay-BpTc3Oyg.js +0 -1
- package/.output/public/assets/InsightsPageHeader-DC2eEst8.js +0 -1
- package/.output/public/assets/api-CdUyUqzR.js +0 -42
- package/.output/public/assets/api-keys-64PM9PwW.js +0 -1
- package/.output/public/assets/api-keys-api-BeaJnvY5.js +0 -1
- package/.output/public/assets/arrow-left-04Rh8Zgp.js +0 -1
- package/.output/public/assets/card-CYHs5FZv.js +0 -1
- package/.output/public/assets/chart-no-axes-combined-DwyMsVFW.js +0 -1
- package/.output/public/assets/createServerFn-DU71xucx.js +0 -3
- package/.output/public/assets/dialog-IVMkBRCq.js +0 -1
- package/.output/public/assets/dist-BR4GzeEu.js +0 -1
- package/.output/public/assets/field-B3CYDpjg.js +0 -1
- package/.output/public/assets/index-Cb_D1D6N.js +0 -10
- package/.output/public/assets/info-C3y9HNoU.js +0 -1
- package/.output/public/assets/input-group-nLZylhWF.js +0 -1
- package/.output/public/assets/insights-Bm9v8uO3.js +0 -2
- package/.output/public/assets/insights-DS3iO7Up.js +0 -1
- package/.output/public/assets/insights-search-Byj3g3Mp.js +0 -1
- package/.output/public/assets/insights-usage-rpc-BaGR3lgq.js +0 -1
- package/.output/public/assets/insights_.distribution-B1i6cjlQ.js +0 -1
- package/.output/public/assets/insights_.distribution-C1Wf27eB.js +0 -2
- package/.output/public/assets/installations-CkFW4fV9.js +0 -2
- package/.output/public/assets/installations-DxTaIcHD.js +0 -1
- package/.output/public/assets/lazyRouteComponent-BapzjYnb.js +0 -1
- package/.output/public/assets/list-Dqt53fWZ.js +0 -1
- package/.output/public/assets/loader-circle-CUKfUqow.js +0 -1
- package/.output/public/assets/preload-helper-ClBMtM1g.js +0 -1
- package/.output/public/assets/refresh-cw-CNE_2PnD.js +0 -1
- package/.output/public/assets/routes-Cgtvspjg.js +0 -2
- package/.output/public/assets/routes-O2r2UUN8.js +0 -1
- package/.output/public/assets/shield-check-BFcJ46kz.js +0 -1
- package/.output/public/assets/signing-BgspC-xP.js +0 -1
- package/.output/public/assets/styles-DnrWuBwd.css +0 -2
- package/.output/public/assets/table-BuWQgxJJ.js +0 -1
- package/.output/public/assets/useMutation-CSV9NCUl.js +0 -1
- package/.output/public/assets/useOpenInteractionType-D5kduCTD.js +0 -1
- package/.output/public/assets/valueToPercent-BAtcbSLk.js +0 -1
- package/.output/server/__23tanstack-start-server-fn-resolver-DBRojHaG.mjs +0 -150
- package/.output/server/_ssr/InsightsPageHeader-mtxVuZKK.mjs +0 -64
- package/.output/server/_ssr/api-BfCgYlj5.mjs +0 -332
- package/.output/server/_ssr/api-keys-api-C3oeq01R.mjs +0 -60
- package/.output/server/_ssr/api-keys-rpc-CdPFdGOx.mjs +0 -136
- package/.output/server/_ssr/api-rpc-B2E1ZIG5.mjs +0 -1399
- package/.output/server/_ssr/auth.server-CmicHh0J.mjs +0 -47
- package/.output/server/_ssr/bundle-signing-rpc-Di7-I6fE.mjs +0 -16
- package/.output/server/_ssr/bundle-signing.server-Uqt1OF49.mjs +0 -12
- package/.output/server/_ssr/bundleActivity-pBrPSG01.mjs +0 -28
- package/.output/server/_ssr/card-Bemj0dpY.mjs +0 -108
- package/.output/server/_ssr/config-Dv8qLDZ0.mjs +0 -13
- package/.output/server/_ssr/config.server-B8WsT3s0.mjs +0 -368
- package/.output/server/_ssr/databaseRows-5bCRTxm-.mjs +0 -126
- package/.output/server/_ssr/deleteBundle-8X-jq7Z7.mjs +0 -66
- package/.output/server/_ssr/field-BrQ2u0fT.mjs +0 -74
- package/.output/server/_ssr/getBundleChildren-DoL8l_AS.mjs +0 -50
- package/.output/server/_ssr/insights-BwQ-wF2a.mjs +0 -10
- package/.output/server/_ssr/insights-gr1I_dJU.mjs +0 -938
- package/.output/server/_ssr/insights-recovery-Cv6RSyeR.mjs +0 -21
- package/.output/server/_ssr/insights-recovery-rpc-DOzxfYfv.mjs +0 -37
- package/.output/server/_ssr/insights-search-1czJMZgk.mjs +0 -21
- package/.output/server/_ssr/insights-usage-rpc-4ImOq_0p.mjs +0 -184
- package/.output/server/_ssr/insights-usage-rpc-BUruODjE.mjs +0 -24
- package/.output/server/_ssr/insightsContract-B09K_Px1.mjs +0 -303
- package/.output/server/_ssr/insightsHistory-Ci4rYAgl.mjs +0 -41
- package/.output/server/_ssr/insightsRecovery-CaghWL2t.mjs +0 -113
- package/.output/server/_ssr/insightsUsage-DNIj6jxF.mjs +0 -71
- package/.output/server/_ssr/insights_.distribution-VmHuikRE.mjs +0 -10
- package/.output/server/_ssr/installations-HXMF_kKf.mjs +0 -29
- package/.output/server/_ssr/routes-Dru3IRj0.mjs +0 -37
- package/.output/server/_ssr/runtime.server-CsiKFp_Z.mjs +0 -436
- package/.output/server/_ssr/server-DJm72Kj-.mjs +0 -7468
- package/.output/server/_ssr/signing-H8Lg4lPe.mjs +0 -133
- package/.output/server/_ssr/start-DpViQGnt.mjs +0 -4
- package/.output/server/_tanstack-start-manifest_v-DsFcTLw_.mjs +0 -125
- package/src/components/features/bundles/BundleActivityChart.tsx +0 -97
- package/src/components/features/bundles/BundleInsightsSummary.tsx +0 -126
- package/src/components/features/signing/BundleSigningPage.tsx +0 -139
- package/src/lib/bundle-signing-api.ts +0 -14
- package/src/lib/bundle-signing-rpc.ts +0 -16
- package/src/lib/server/bundle-signing.server.ts +0 -23
- package/src/lib/server/deleteBundle.ts +0 -145
- package/src/lib/server/insightsHistory.ts +0 -52
- package/src/lib/server/insightsRecovery.ts +0 -187
- package/src/routes/signing.tsx +0 -37
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/bundleActivity-M5gzBFNg.js
|
|
2
|
+
async function getBundleActivity(model, inputs) {
|
|
3
|
+
if (inputs.length === 0) return {};
|
|
4
|
+
const releases = inputs.map((input) => ({
|
|
5
|
+
releaseId: input.releaseId,
|
|
6
|
+
platform: input.platform,
|
|
7
|
+
channel: input.channel
|
|
8
|
+
}));
|
|
9
|
+
const activity = await model.getReleaseActivity({ releases });
|
|
10
|
+
return Object.fromEntries(activity.data.flatMap((item) => item.release === void 0 ? [] : [[item.release.releaseId, {
|
|
11
|
+
downloads: item.metrics.downloads,
|
|
12
|
+
launched: item.metrics.applies,
|
|
13
|
+
failedLaunches: item.metrics.failedLaunches,
|
|
14
|
+
measuredAtMs: activity.measuredAtMs
|
|
15
|
+
}]]));
|
|
16
|
+
}
|
|
17
|
+
//#endregion
|
|
18
|
+
export { getBundleActivity };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { loadConfig } from "@hot-updater/cli-tools";
|
|
2
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/config-WVX4IxSR.js
|
|
3
|
+
var config_default = async () => {
|
|
4
|
+
const config = await loadConfig(null);
|
|
5
|
+
if (config.database === void 0) throw new Error("Set database in hot-updater.config.ts: the database your server runs on, such as d1Database(...), or standaloneRepository({ baseUrl }) to reach a self-hosted server through its admin API.");
|
|
6
|
+
if (config.storage === void 0) throw new Error("Set storage in hot-updater.config.ts: where your server stores bundles, which the console reads, such as r2Storage(...).");
|
|
7
|
+
return {
|
|
8
|
+
database: config.database,
|
|
9
|
+
storage: config.storage,
|
|
10
|
+
plugins: config.plugins,
|
|
11
|
+
console: { gitUrl: config.console.gitUrl }
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
//#endregion
|
|
15
|
+
export { config_default as default };
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { r as getRequest } from "./server-h4VxnExB.mjs";
|
|
2
|
+
import { requireConsoleAccess, t as resolveConsoleConfig } from "./auth.server-DFpyxRDd.mjs";
|
|
3
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/config.server-DskXCAyI.js
|
|
4
|
+
var configPromise = null;
|
|
5
|
+
var core = null;
|
|
6
|
+
var runtime = null;
|
|
7
|
+
var loadCachedConfig = async (request) => {
|
|
8
|
+
if (!configPromise) configPromise = resolveConsoleConfig(request).catch((error) => {
|
|
9
|
+
configPromise = null;
|
|
10
|
+
throw error;
|
|
11
|
+
});
|
|
12
|
+
return configPromise;
|
|
13
|
+
};
|
|
14
|
+
var prepareConfig = async (request = getRequest()) => {
|
|
15
|
+
try {
|
|
16
|
+
await requireConsoleAccess(request);
|
|
17
|
+
const config = await loadCachedConfig(request);
|
|
18
|
+
core ??= config.core;
|
|
19
|
+
if (!runtime) {
|
|
20
|
+
const { createConsoleRuntime } = await import("./runtime.server-De0QVWc9.mjs");
|
|
21
|
+
runtime = createConsoleRuntime(config);
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
config,
|
|
25
|
+
core,
|
|
26
|
+
runtime,
|
|
27
|
+
storage: config.storage
|
|
28
|
+
};
|
|
29
|
+
} catch (error) {
|
|
30
|
+
if (!(error instanceof Response && (error.status === 401 || error.status === 403))) console.error("Error during configuration initialization:", error);
|
|
31
|
+
throw error;
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
//#endregion
|
|
35
|
+
export { prepareConfig };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { c as createMiddleware } from "./createMiddleware-Cm6Tn0_Y.mjs";
|
|
2
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/console-access-BJfAXknd.js
|
|
3
|
+
/**
|
|
4
|
+
* Refuses a caller the console does not authorize before a server function
|
|
5
|
+
* reads its input. TanStack Start runs a function's middleware before the
|
|
6
|
+
* function's own validator, so an anonymous or unlisted caller gets the access
|
|
7
|
+
* check's 401 or 403, never an input error, whatever it sends. Every server
|
|
8
|
+
* function except the sign-in reads in `auth-rpc.ts` uses it, and
|
|
9
|
+
* `console-access.spec.ts` checks that.
|
|
10
|
+
*/
|
|
11
|
+
var consoleAccess = createMiddleware({ type: "function" }).server(async ({ next }) => {
|
|
12
|
+
const [{ getRequest }, { requireConsoleAccess }] = await Promise.all([import("./server-h4VxnExB.mjs").then((n) => n.t), import("./auth.server-DFpyxRDd.mjs")]);
|
|
13
|
+
await requireConsoleAccess(getRequest());
|
|
14
|
+
return next();
|
|
15
|
+
});
|
|
16
|
+
//#endregion
|
|
17
|
+
export { consoleAccess as t };
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/console-features-Oz0q20jJ.js
|
|
2
|
+
/**
|
|
3
|
+
* The console's features and the server plugin each one needs. The console
|
|
4
|
+
* serves a feature only when its config lists the plugin, as the server runs
|
|
5
|
+
* it, and against a self-hosted server (`standaloneRepository`) only the
|
|
6
|
+
* features its admin API serves (`remote`); the rest read the database.
|
|
7
|
+
* Navigation, route guards, and server functions all read this registry. Its
|
|
8
|
+
* other halves, keyed by the same features, hold what serves each feature on
|
|
9
|
+
* the server (`server/console-feature-apis.ts`) and what each adds to pages
|
|
10
|
+
* (`components/features/FeatureSlots.tsx`). Their order is the sidebar's,
|
|
11
|
+
* below Bundles.
|
|
12
|
+
*/
|
|
13
|
+
var consoleFeatures = {
|
|
14
|
+
insights: {
|
|
15
|
+
plugin: "insights",
|
|
16
|
+
label: "Insights",
|
|
17
|
+
remote: true
|
|
18
|
+
},
|
|
19
|
+
insightsAnalytics: {
|
|
20
|
+
plugin: "insights",
|
|
21
|
+
label: "Insights",
|
|
22
|
+
remote: false
|
|
23
|
+
},
|
|
24
|
+
remoteConfig: {
|
|
25
|
+
plugin: "remoteConfig",
|
|
26
|
+
label: "Remote Config",
|
|
27
|
+
remote: true
|
|
28
|
+
},
|
|
29
|
+
apiKeys: {
|
|
30
|
+
plugin: "apiKeys",
|
|
31
|
+
label: "API keys",
|
|
32
|
+
remote: false
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
var featureIds = Object.keys(consoleFeatures);
|
|
36
|
+
/** The features on for the plugins the console's config lists, from where the console reads them. */
|
|
37
|
+
var resolveConsoleFeatures = (plugins, { remote }) => {
|
|
38
|
+
const installed = new Set(plugins);
|
|
39
|
+
return Object.fromEntries(featureIds.map((feature) => {
|
|
40
|
+
const { plugin, remote: servedRemotely } = consoleFeatures[feature];
|
|
41
|
+
return [feature, installed.has(plugin) && (servedRemotely || !remote)];
|
|
42
|
+
}));
|
|
43
|
+
};
|
|
44
|
+
/** Why a feature is off: its plugin is missing, or it reads a database the console does not open. */
|
|
45
|
+
var unavailableReason = (feature, { remote }) => remote && !consoleFeatures[feature].remote ? "remote" : "plugin";
|
|
46
|
+
/**
|
|
47
|
+
* A server function refused a feature the console does not serve: the
|
|
48
|
+
* features' 404. The client recognizes it by `name`, which survives
|
|
49
|
+
* serialization where the class does not.
|
|
50
|
+
*/
|
|
51
|
+
var ConsoleFeatureUnavailableError = class extends Error {
|
|
52
|
+
name = "ConsoleFeatureUnavailableError";
|
|
53
|
+
status = 404;
|
|
54
|
+
constructor(feature, { remote }) {
|
|
55
|
+
super(unavailableReason(feature, { remote }) === "remote" ? "The console reads this from the database, and it reaches a self-hosted server through its admin API instead." : `The server runs without the ${consoleFeatures[feature].plugin}() plugin.`);
|
|
56
|
+
this.feature = feature;
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
var isConsoleFeatureUnavailableError = (error) => error instanceof Error && error.name === "ConsoleFeatureUnavailableError" && featureIds.includes(Reflect.get(error, "feature"));
|
|
60
|
+
//#endregion
|
|
61
|
+
export { unavailableReason as a, resolveConsoleFeatures as i, consoleFeatures as n, isConsoleFeatureUnavailableError as r, ConsoleFeatureUnavailableError as t };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { u as createServerFn } from "./createMiddleware-Cm6Tn0_Y.mjs";
|
|
2
|
+
import { t as consoleAccess } from "./console-access-BJfAXknd.mjs";
|
|
3
|
+
import { A as createSsrRpc } from "./sidebar-DJcErBMo.mjs";
|
|
4
|
+
import { i as useQuery, r as queryOptions } from "../_libs/tanstack__react-query.mjs";
|
|
5
|
+
import { n as consoleFeatures } from "./console-features-Oz0q20jJ.mjs";
|
|
6
|
+
import { _ as notFound } from "../_libs/@tanstack/react-router+[...].mjs";
|
|
7
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/console-features-api-C9kiKvaV.js
|
|
8
|
+
/** The features this console serves, for navigation and route guards. */
|
|
9
|
+
var getConsoleFeaturesRpc = createServerFn({ method: "GET" }).middleware([consoleAccess]).handler(createSsrRpc("82ec3500e57f9e81dac6d3f3a7bd9e34915da3121429beec87b7ad153dc6eafe"));
|
|
10
|
+
var consoleFeaturesQueryKey = ["console", "features"];
|
|
11
|
+
var consoleFeaturesQueryOptions = () => queryOptions({
|
|
12
|
+
queryKey: consoleFeaturesQueryKey,
|
|
13
|
+
queryFn: () => getConsoleFeaturesRpc(),
|
|
14
|
+
staleTime: Infinity
|
|
15
|
+
});
|
|
16
|
+
/** The features the console serves; the authorized layout loads them first. */
|
|
17
|
+
var useConsoleFeatures = () => useQuery(consoleFeaturesQueryOptions());
|
|
18
|
+
/** Whether `feature` is on; false until the features load. */
|
|
19
|
+
var useConsoleFeature = (feature) => useConsoleFeatures().data?.features[feature] === true;
|
|
20
|
+
/** The feature in a route's not-found data, when a feature guard threw it. */
|
|
21
|
+
var notFoundFeature = (data) => {
|
|
22
|
+
const feature = typeof data === "object" && data !== null ? Reflect.get(data, "feature") : void 0;
|
|
23
|
+
return typeof feature === "string" && Object.hasOwn(consoleFeatures, feature) ? feature : void 0;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* A feature route's `beforeLoad`: not found, naming the feature, when the
|
|
27
|
+
* console does not serve it. A failed features read lets the route load: the
|
|
28
|
+
* root layout answers a visitor it does not authorize, and the route's own
|
|
29
|
+
* reads report any other failure. The failure leaves the cache, which a
|
|
30
|
+
* server render sends to the browser: a refused visitor's failure is the 401
|
|
31
|
+
* or 403 Response, which the render cannot serialize.
|
|
32
|
+
*/
|
|
33
|
+
var requireConsoleFeature = async (queryClient, feature) => {
|
|
34
|
+
const featureSet = await queryClient.ensureQueryData(consoleFeaturesQueryOptions()).catch(() => {
|
|
35
|
+
queryClient.removeQueries({
|
|
36
|
+
queryKey: consoleFeaturesQueryKey,
|
|
37
|
+
exact: true
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
if (featureSet !== void 0 && !featureSet.features[feature]) throw notFound({ data: { feature } });
|
|
41
|
+
};
|
|
42
|
+
//#endregion
|
|
43
|
+
export { useConsoleFeatures as a, useConsoleFeature as i, notFoundFeature as n, requireConsoleFeature as r, consoleFeaturesQueryOptions as t };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { u as createServerFn } from "./createMiddleware-Cm6Tn0_Y.mjs";
|
|
2
|
+
import { t as consoleAccess } from "./console-access-BJfAXknd.mjs";
|
|
3
|
+
import { t as createServerRpc } from "./createServerRpc-RLR4H-Fn.mjs";
|
|
4
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/console-features-rpc-P0GL7Z-R.js
|
|
5
|
+
var getConsoleFeaturesRpc_createServerFn_handler = createServerRpc({
|
|
6
|
+
id: "82ec3500e57f9e81dac6d3f3a7bd9e34915da3121429beec87b7ad153dc6eafe",
|
|
7
|
+
name: "getConsoleFeaturesRpc",
|
|
8
|
+
filename: "src/lib/console-features-rpc.ts"
|
|
9
|
+
}, (opts) => getConsoleFeaturesRpc.__executeServer(opts));
|
|
10
|
+
var getConsoleFeaturesRpc = createServerFn({ method: "GET" }).middleware([consoleAccess]).handler(getConsoleFeaturesRpc_createServerFn_handler, async () => {
|
|
11
|
+
const { prepareConfig } = await import("./config.server-DskXCAyI.mjs");
|
|
12
|
+
const { runtime } = await prepareConfig();
|
|
13
|
+
return {
|
|
14
|
+
features: await runtime.features(),
|
|
15
|
+
remote: runtime.remote
|
|
16
|
+
};
|
|
17
|
+
});
|
|
18
|
+
//#endregion
|
|
19
|
+
export { getConsoleFeaturesRpc_createServerFn_handler };
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
2
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/
|
|
2
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/createMiddleware-Cm6Tn0_Y.js
|
|
3
3
|
/**
|
|
4
4
|
* Create a redirect Response understood by TanStack Router.
|
|
5
5
|
*
|
|
6
6
|
* Use from route `loader`/`beforeLoad` or server functions to trigger a
|
|
7
7
|
* navigation. If `throw: true` is set, the redirect is thrown instead of
|
|
8
|
-
* returned.
|
|
9
|
-
*
|
|
8
|
+
* returned. External `href` values are classified as full-document
|
|
9
|
+
* navigations when the router resolves the redirect.
|
|
10
10
|
*
|
|
11
11
|
* @param opts Options for the redirect. Common fields:
|
|
12
|
-
* - `href`: absolute URL for external redirects
|
|
12
|
+
* - `href`: absolute URL for external redirects.
|
|
13
13
|
* - `statusCode`: HTTP status code to use (defaults to 307).
|
|
14
14
|
* - `headers`: additional headers to include on the Response.
|
|
15
15
|
* - Standard navigation options like `to`, `params`, `search`, `replace`,
|
|
@@ -19,10 +19,6 @@ import { AsyncLocalStorage } from "node:async_hooks";
|
|
|
19
19
|
*/
|
|
20
20
|
function redirect(opts) {
|
|
21
21
|
opts.statusCode = opts.statusCode || opts.code || 307;
|
|
22
|
-
if (!opts._builtLocation && !opts.reloadDocument && typeof opts.href === "string") try {
|
|
23
|
-
new URL(opts.href);
|
|
24
|
-
opts.reloadDocument = true;
|
|
25
|
-
} catch {}
|
|
26
22
|
const headers = new Headers(opts.headers);
|
|
27
23
|
if (opts.href && headers.get("Location") === null) headers.set("Location", opts.href);
|
|
28
24
|
const response = new Response(null, {
|
|
@@ -34,16 +30,9 @@ function redirect(opts) {
|
|
|
34
30
|
return response;
|
|
35
31
|
}
|
|
36
32
|
/** Check whether a value is a TanStack Router redirect Response. */
|
|
37
|
-
/** Check whether a value is a TanStack Router redirect Response. */
|
|
38
33
|
function isRedirect(obj) {
|
|
39
34
|
return obj instanceof Response && !!obj.options;
|
|
40
35
|
}
|
|
41
|
-
/** True if value is a redirect with a resolved `href` location. */
|
|
42
|
-
/** True if value is a redirect with a resolved `href` location. */
|
|
43
|
-
function isResolvedRedirect(obj) {
|
|
44
|
-
return isRedirect(obj) && !!obj.options.href;
|
|
45
|
-
}
|
|
46
|
-
/** Parse a serialized redirect object back into a redirect Response. */
|
|
47
36
|
/** Parse a serialized redirect object back into a redirect Response. */
|
|
48
37
|
function parseRedirect(obj) {
|
|
49
38
|
if (obj !== null && typeof obj === "object" && obj.isSerializedRedirect) return redirect(obj);
|
|
@@ -55,42 +44,12 @@ var X_TSS_SERIALIZED = "x-tss-serialized";
|
|
|
55
44
|
var X_TSS_RAW_RESPONSE = "x-tss-raw";
|
|
56
45
|
/** Content-Type for multiplexed framed responses (RawStream support) */
|
|
57
46
|
var TSS_CONTENT_TYPE_FRAMED = "application/x-tss-framed";
|
|
58
|
-
/**
|
|
59
|
-
|
|
60
|
-
*/
|
|
61
|
-
var
|
|
62
|
-
JSON: 0,
|
|
63
|
-
CHUNK: 1,
|
|
64
|
-
END: 2,
|
|
65
|
-
ERROR: 3
|
|
66
|
-
};
|
|
47
|
+
/** Largest payload accepted by one framed-protocol record. */
|
|
48
|
+
var MAX_FRAME_PAYLOAD_SIZE = 16 * 1024 * 1024;
|
|
49
|
+
/** Largest number of raw streams accepted in one framed response. */
|
|
50
|
+
var MAX_FRAMED_STREAMS = 1024;
|
|
67
51
|
/** Full Content-Type header value with version parameter */
|
|
68
52
|
var TSS_CONTENT_TYPE_FRAMED_VERSIONED = `${TSS_CONTENT_TYPE_FRAMED}; v=1`;
|
|
69
|
-
function isSafeKey(key) {
|
|
70
|
-
return key !== "__proto__" && key !== "constructor" && key !== "prototype";
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Merge target and source into a new null-proto object, filtering dangerous keys.
|
|
74
|
-
*/
|
|
75
|
-
function safeObjectMerge(target, source) {
|
|
76
|
-
const result = Object.create(null);
|
|
77
|
-
if (target) {
|
|
78
|
-
for (const key of Object.keys(target)) if (isSafeKey(key)) result[key] = target[key];
|
|
79
|
-
}
|
|
80
|
-
if (source && typeof source === "object") {
|
|
81
|
-
for (const key of Object.keys(source)) if (isSafeKey(key)) result[key] = source[key];
|
|
82
|
-
}
|
|
83
|
-
return result;
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Create a null-prototype object, optionally copying from source.
|
|
87
|
-
*/
|
|
88
|
-
function createNullProtoObject(source) {
|
|
89
|
-
if (!source) return Object.create(null);
|
|
90
|
-
const obj = Object.create(null);
|
|
91
|
-
for (const key of Object.keys(source)) if (isSafeKey(key)) obj[key] = source[key];
|
|
92
|
-
return obj;
|
|
93
|
-
}
|
|
94
53
|
var GLOBAL_STORAGE_KEY = Symbol.for("tanstack-start:start-storage-context");
|
|
95
54
|
var globalObj = globalThis;
|
|
96
55
|
if (!globalObj[GLOBAL_STORAGE_KEY]) globalObj[GLOBAL_STORAGE_KEY] = new AsyncLocalStorage();
|
|
@@ -104,7 +63,6 @@ function getStartContext(opts) {
|
|
|
104
63
|
return context;
|
|
105
64
|
}
|
|
106
65
|
var getStartOptions = () => getStartContext().startOptions;
|
|
107
|
-
var getStartContextServerOnly = getStartContext;
|
|
108
66
|
function splitSetCookieString(cookiesString) {
|
|
109
67
|
if (Array.isArray(cookiesString)) return cookiesString.flatMap((c) => splitSetCookieString(c));
|
|
110
68
|
if (typeof cookiesString !== "string") return [];
|
|
@@ -161,6 +119,32 @@ function mergeHeaders(...headers) {
|
|
|
161
119
|
return acc;
|
|
162
120
|
}, new Headers());
|
|
163
121
|
}
|
|
122
|
+
function isSafeKey(key) {
|
|
123
|
+
return key !== "__proto__" && key !== "constructor" && key !== "prototype";
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Merge target and source into a new null-proto object, filtering dangerous keys.
|
|
127
|
+
*/
|
|
128
|
+
function safeObjectMerge(target, source) {
|
|
129
|
+
const result = Object.create(null);
|
|
130
|
+
if (target) {
|
|
131
|
+
for (const key of Object.keys(target)) if (isSafeKey(key)) result[key] = target[key];
|
|
132
|
+
}
|
|
133
|
+
if (source && typeof source === "object") {
|
|
134
|
+
for (const key of Object.keys(source)) if (isSafeKey(key)) result[key] = source[key];
|
|
135
|
+
}
|
|
136
|
+
return result;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Create a null-prototype object, optionally copying from source.
|
|
140
|
+
*/
|
|
141
|
+
function createNullProtoObject(source) {
|
|
142
|
+
if (!source) return Object.create(null);
|
|
143
|
+
const obj = Object.create(null);
|
|
144
|
+
for (const key of Object.keys(source)) if (isSafeKey(key)) obj[key] = source[key];
|
|
145
|
+
return obj;
|
|
146
|
+
}
|
|
147
|
+
var getStartContextServerOnly = getStartContext;
|
|
164
148
|
var createServerFn = (options, __opts) => {
|
|
165
149
|
const resolvedOptions = __opts || options || {};
|
|
166
150
|
if (typeof resolvedOptions.method === "undefined") resolvedOptions.method = "GET";
|
|
@@ -175,10 +159,10 @@ var createServerFn = (options, __opts) => {
|
|
|
175
159
|
options: resolvedOptions,
|
|
176
160
|
middleware: (middleware) => {
|
|
177
161
|
const newMiddleware = [...resolvedOptions.middleware || []];
|
|
178
|
-
middleware.
|
|
179
|
-
if (TSS_SERVER_FUNCTION_FACTORY in
|
|
180
|
-
if (
|
|
181
|
-
} else newMiddleware.push(
|
|
162
|
+
middleware.forEach((item) => {
|
|
163
|
+
if (TSS_SERVER_FUNCTION_FACTORY in item) {
|
|
164
|
+
if (item.options.middleware) newMiddleware.push(...item.options.middleware);
|
|
165
|
+
} else newMiddleware.push(item);
|
|
182
166
|
});
|
|
183
167
|
const res = createServerFn(void 0, {
|
|
184
168
|
...resolvedOptions,
|
|
@@ -220,7 +204,8 @@ var createServerFn = (options, __opts) => {
|
|
|
220
204
|
const serverContextAfterGlobalMiddlewares = startContext.contextAfterGlobalMiddlewares;
|
|
221
205
|
return await executeMiddleware(resolvedMiddleware, "server", {
|
|
222
206
|
...extractedFn,
|
|
223
|
-
|
|
207
|
+
data: opts.data,
|
|
208
|
+
method: opts.method ?? resolvedOptions.method,
|
|
224
209
|
serverFnMeta: extractedFn.serverFnMeta,
|
|
225
210
|
context: safeObjectMerge(opts.context, serverContextAfterGlobalMiddlewares),
|
|
226
211
|
request: startContext.request
|
|
@@ -355,5 +340,31 @@ function serverFnBaseToMiddleware(options) {
|
|
|
355
340
|
}
|
|
356
341
|
};
|
|
357
342
|
}
|
|
343
|
+
var createMiddleware = (options, __opts) => {
|
|
344
|
+
const resolvedOptions = {
|
|
345
|
+
type: "request",
|
|
346
|
+
...__opts || options
|
|
347
|
+
};
|
|
348
|
+
const setValidator = (validator) => {
|
|
349
|
+
return createMiddleware({}, Object.assign(resolvedOptions, {
|
|
350
|
+
validator,
|
|
351
|
+
inputValidator: validator
|
|
352
|
+
}));
|
|
353
|
+
};
|
|
354
|
+
return {
|
|
355
|
+
options: resolvedOptions,
|
|
356
|
+
middleware: (middleware) => {
|
|
357
|
+
return createMiddleware({}, Object.assign(resolvedOptions, { middleware }));
|
|
358
|
+
},
|
|
359
|
+
validator: setValidator,
|
|
360
|
+
inputValidator: setValidator,
|
|
361
|
+
client: (client) => {
|
|
362
|
+
return createMiddleware({}, Object.assign(resolvedOptions, { client }));
|
|
363
|
+
},
|
|
364
|
+
server: (server) => {
|
|
365
|
+
return createMiddleware({}, Object.assign(resolvedOptions, { server }));
|
|
366
|
+
}
|
|
367
|
+
};
|
|
368
|
+
};
|
|
358
369
|
//#endregion
|
|
359
|
-
export {
|
|
370
|
+
export { safeObjectMerge as _, TSS_SERVER_FUNCTION as a, createMiddleware as c, flattenMiddlewares as d, getStartContext as f, runWithStartContext as g, mergeHeaders as h, TSS_FORMDATA_CONTEXT as i, createNullProtoObject as l, isRedirect as m, MAX_FRAME_PAYLOAD_SIZE as n, X_TSS_RAW_RESPONSE as o, getStartOptions as p, TSS_CONTENT_TYPE_FRAMED_VERSIONED as r, X_TSS_SERIALIZED as s, MAX_FRAMED_STREAMS as t, createServerFn as u };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/createServerRpc-
|
|
1
|
+
import { a as TSS_SERVER_FUNCTION } from "./createMiddleware-Cm6Tn0_Y.mjs";
|
|
2
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/createServerRpc-RLR4H-Fn.js
|
|
3
3
|
var createServerRpc = (serverFnMeta, splitImportFn) => {
|
|
4
4
|
const url = "/_serverFn/" + serverFnMeta.id;
|
|
5
5
|
return Object.assign(splitImportFn, {
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/databaseConfig-C5SkAyUy.js
|
|
2
|
+
/** Whether a configured database is a self-hosted server's. */
|
|
3
|
+
var isRemoteDatabase = (value) => typeof value === "object" && value !== null && "core" in value && "fetchAdmin" in value;
|
|
4
|
+
//#endregion
|
|
5
|
+
export { isRemoteDatabase as t };
|
package/.output/server/_ssr/{databaseJsonValue-d6I3nAS4.mjs → databaseJsonValue-Csbuzc9Q.mjs}
RENAMED
|
@@ -1,9 +1,26 @@
|
|
|
1
|
-
//#region node_modules/.nitro/vite/services/ssr/assets/databaseJsonValue-
|
|
2
|
-
|
|
1
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/databaseJsonValue-Csbuzc9Q.js
|
|
2
|
+
/** A bundle an operation names is not stored. */
|
|
3
|
+
var DatabaseBundleNotFoundError = class extends Error {
|
|
4
|
+
bundleId;
|
|
5
|
+
name = "DatabaseBundleNotFoundError";
|
|
6
|
+
constructor(bundleId) {
|
|
7
|
+
super(`Bundle "${bundleId}" was not found.`);
|
|
8
|
+
this.bundleId = bundleId;
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
/** A row a delete names is still referenced, such as a bundle a release uses. */
|
|
12
|
+
var DatabaseRowReferencedError = class extends Error {
|
|
13
|
+
name = "DatabaseRowReferencedError";
|
|
14
|
+
constructor() {
|
|
15
|
+
super("The database row is still referenced.");
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
/** Input a database operation refuses before touching storage. */
|
|
19
|
+
var DatabaseAdapterInputError = class extends Error {
|
|
3
20
|
code;
|
|
4
|
-
name = "
|
|
21
|
+
name = "DatabaseAdapterInputError";
|
|
5
22
|
constructor(code) {
|
|
6
|
-
super(`Invalid database
|
|
23
|
+
super(`Invalid database adapter input: ${code}`);
|
|
7
24
|
this.code = code;
|
|
8
25
|
}
|
|
9
26
|
};
|
|
@@ -39,7 +56,13 @@ var isDatabaseJsonValue = (value) => {
|
|
|
39
56
|
};
|
|
40
57
|
return validate(value);
|
|
41
58
|
};
|
|
59
|
+
/**
|
|
60
|
+
* Whether `value` is a plain object of JSON values a store keeps as they
|
|
61
|
+
* are: no cycles, accessors, non-finite numbers, or class instances. A
|
|
62
|
+
* plugin checks a `json` field's value with it before it writes, as
|
|
63
|
+
* Insights does for an event's metadata.
|
|
64
|
+
*/
|
|
42
65
|
var isDatabaseJsonObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value) && isDatabaseJsonValue(value);
|
|
43
66
|
var isDatabaseMetadataObject = (value) => isDatabaseJsonObject(value) && (!Object.hasOwn(value, "app_version") || typeof value["app_version"] === "string");
|
|
44
67
|
//#endregion
|
|
45
|
-
export { isDatabaseMetadataObject as n,
|
|
68
|
+
export { isDatabaseMetadataObject as a, isDatabaseJsonObject as i, DatabaseBundleNotFoundError as n, DatabaseRowReferencedError as r, DatabaseAdapterInputError as t };
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { a as isDatabaseMetadataObject, t as DatabaseAdapterInputError } from "./databaseJsonValue-Csbuzc9Q.mjs";
|
|
2
|
+
import { f as getBundlePatches, m as getManifestStorageUri, p as getManifestFileHash, u as getAssetBaseStorageUri } from "./dist-CbQbBIw-.mjs";
|
|
3
|
+
//#region node_modules/.nitro/vite/services/ssr/assets/databaseRows-CPphvbag.js
|
|
4
|
+
var bundleMetadataToRow = (metadata) => {
|
|
5
|
+
if (metadata === void 0) return {};
|
|
6
|
+
if (!isDatabaseMetadataObject(metadata)) throw new DatabaseAdapterInputError("invalid-data");
|
|
7
|
+
return metadata;
|
|
8
|
+
};
|
|
9
|
+
var releaseRowToRelease = (row) => ({
|
|
10
|
+
id: row.id,
|
|
11
|
+
revision: row.revision,
|
|
12
|
+
channelId: row.channel_id,
|
|
13
|
+
platform: row.platform,
|
|
14
|
+
kind: row.kind,
|
|
15
|
+
bundleId: row.bundle_id,
|
|
16
|
+
strategy: row.strategy,
|
|
17
|
+
targetAppVersion: row.target_app_version,
|
|
18
|
+
fingerprintHash: row.fingerprint_hash,
|
|
19
|
+
enabled: row.enabled,
|
|
20
|
+
shouldForceUpdate: row.should_force_update,
|
|
21
|
+
message: row.message,
|
|
22
|
+
rolloutCohortCount: row.rollout_cohort_count,
|
|
23
|
+
targetCohorts: row.target_cohorts,
|
|
24
|
+
operation: row.operation,
|
|
25
|
+
sourceReleaseId: row.source_release_id,
|
|
26
|
+
createdAtMs: row.created_at_ms,
|
|
27
|
+
updatedAtMs: row.updated_at_ms
|
|
28
|
+
});
|
|
29
|
+
var bundleToRow = (bundle) => {
|
|
30
|
+
const metadata = bundleMetadataToRow(bundle.metadata);
|
|
31
|
+
return {
|
|
32
|
+
id: bundle.id,
|
|
33
|
+
platform: bundle.platform,
|
|
34
|
+
git_commit_hash: bundle.gitCommitHash,
|
|
35
|
+
metadata,
|
|
36
|
+
manifest_storage_uri: getManifestStorageUri(bundle),
|
|
37
|
+
manifest_file_hash: getManifestFileHash(bundle),
|
|
38
|
+
asset_base_storage_uri: getAssetBaseStorageUri(bundle)
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
var bundleToPatchRows = (bundle) => getBundlePatches(bundle).map((patch, orderIndex) => ({
|
|
42
|
+
id: `${bundle.id}:${patch.baseBundleId}`,
|
|
43
|
+
bundle_id: bundle.id,
|
|
44
|
+
base_bundle_id: patch.baseBundleId,
|
|
45
|
+
base_file_hash: patch.baseFileHash,
|
|
46
|
+
patch_file_hash: patch.patchFileHash,
|
|
47
|
+
patch_storage_uri: patch.patchStorageUri,
|
|
48
|
+
byte_size: patch.byteSize,
|
|
49
|
+
order_index: orderIndex
|
|
50
|
+
}));
|
|
51
|
+
var comparePatchRows = (left, right) => left.order_index - right.order_index || left.id.localeCompare(right.id);
|
|
52
|
+
var patchRowToArtifact = (row) => ({
|
|
53
|
+
baseBundleId: row.base_bundle_id,
|
|
54
|
+
baseFileHash: row.base_file_hash,
|
|
55
|
+
byteSize: row.byte_size,
|
|
56
|
+
patchFileHash: row.patch_file_hash,
|
|
57
|
+
patchStorageUri: row.patch_storage_uri
|
|
58
|
+
});
|
|
59
|
+
var rowToBundle = (row, patchRows = []) => {
|
|
60
|
+
const patches = patchRows.slice().sort(comparePatchRows).map(patchRowToArtifact);
|
|
61
|
+
return {
|
|
62
|
+
id: row.id,
|
|
63
|
+
platform: row.platform,
|
|
64
|
+
gitCommitHash: row.git_commit_hash,
|
|
65
|
+
metadata: row.metadata,
|
|
66
|
+
manifestStorageUri: row.manifest_storage_uri,
|
|
67
|
+
manifestFileHash: row.manifest_file_hash,
|
|
68
|
+
assetBaseStorageUri: row.asset_base_storage_uri,
|
|
69
|
+
patches
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
//#endregion
|
|
73
|
+
export { rowToBundle as i, bundleToRow as n, releaseRowToRelease as r, bundleToPatchRows as t };
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import "../_runtime.mjs";
|
|
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
|
+
import { t as X } from "../_libs/lucide-react.mjs";
|
|
4
|
+
import { k as cn, t as Button$1 } from "./sidebar-DJcErBMo.mjs";
|
|
5
|
+
require_react();
|
|
6
|
+
var import_jsx_runtime = require_jsx_runtime();
|
|
7
|
+
function Dialog$1({ ...props }) {
|
|
8
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DialogRoot, {
|
|
9
|
+
"data-slot": "dialog",
|
|
10
|
+
...props
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
function DialogTrigger({ ...props }) {
|
|
14
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DialogTrigger$1, {
|
|
15
|
+
"data-slot": "dialog-trigger",
|
|
16
|
+
...props
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
function DialogPortal({ ...props }) {
|
|
20
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DialogPortal$1, {
|
|
21
|
+
"data-slot": "dialog-portal",
|
|
22
|
+
...props
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
function DialogOverlay({ className, ...props }) {
|
|
26
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DialogBackdrop, {
|
|
27
|
+
"data-slot": "dialog-overlay",
|
|
28
|
+
className: cn("fixed inset-0 isolate z-50 bg-black/80 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0", className),
|
|
29
|
+
...props
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
function DialogContent({ className, children, showCloseButton = true, ...props }) {
|
|
33
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(DialogPortal, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(DialogOverlay, {}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(DialogPopup, {
|
|
34
|
+
"data-slot": "dialog-content",
|
|
35
|
+
className: cn("fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-background p-4 text-xs/relaxed ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", className),
|
|
36
|
+
...props,
|
|
37
|
+
children: [children, showCloseButton && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(DialogClose, {
|
|
38
|
+
"data-slot": "dialog-close",
|
|
39
|
+
render: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button$1, {
|
|
40
|
+
variant: "ghost",
|
|
41
|
+
className: "absolute top-2 right-2",
|
|
42
|
+
size: "icon-sm"
|
|
43
|
+
}),
|
|
44
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(X, {}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
45
|
+
className: "sr-only",
|
|
46
|
+
children: "Close"
|
|
47
|
+
})]
|
|
48
|
+
})]
|
|
49
|
+
})] });
|
|
50
|
+
}
|
|
51
|
+
function DialogHeader({ className, ...props }) {
|
|
52
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
53
|
+
"data-slot": "dialog-header",
|
|
54
|
+
className: cn("flex flex-col gap-1", className),
|
|
55
|
+
...props
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
function DialogFooter({ className, showCloseButton = false, children, ...props }) {
|
|
59
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
60
|
+
"data-slot": "dialog-footer",
|
|
61
|
+
className: cn("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", className),
|
|
62
|
+
...props,
|
|
63
|
+
children: [children, showCloseButton && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DialogClose, {
|
|
64
|
+
render: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button$1, { variant: "outline" }),
|
|
65
|
+
children: "Close"
|
|
66
|
+
})]
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
function DialogTitle({ className, ...props }) {
|
|
70
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DialogTitle$1, {
|
|
71
|
+
"data-slot": "dialog-title",
|
|
72
|
+
className: cn("text-sm font-medium", className),
|
|
73
|
+
...props
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
function DialogDescription({ className, ...props }) {
|
|
77
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DialogDescription$1, {
|
|
78
|
+
"data-slot": "dialog-description",
|
|
79
|
+
className: cn("text-xs/relaxed text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground", className),
|
|
80
|
+
...props
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
//#endregion
|
|
84
|
+
export { DialogHeader as a, DialogFooter as i, DialogContent as n, DialogTitle as o, DialogDescription as r, DialogTrigger as s, Dialog$1 as t };
|