@hot-updater/console 1.2.0-rc.1 → 1.2.0-rc.3
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/StoreSubmission-ViTkW4eJ.js +1 -0
- package/.output/public/assets/{index-BWU6owTG.js → index-CqP5HPV6.js} +2 -2
- package/.output/public/assets/{native-builds-c4BpOLAe.js → native-builds-D6rldpSh.js} +2 -2
- package/.output/public/assets/native-builds-DAy2678K.js +1 -0
- package/.output/public/assets/{native-builds_._buildId-D_Spjl10.js → native-builds_._buildId-DD58_Phd.js} +1 -1
- package/.output/public/assets/{native-builds_._buildId-DtoXD8rz.js → native-builds_._buildId-DvQDKnUQ.js} +2 -2
- package/.output/public/assets/{styles-Ccxthuz1.css → styles-uK-0vUMk.css} +1 -1
- package/.output/server/{__23tanstack-start-server-fn-resolver-CygMPYHZ.mjs → __23tanstack-start-server-fn-resolver-DJQS4eWX.mjs} +46 -46
- package/.output/server/_libs/@tanstack/react-router-ssr-query+[...].mjs +1 -1
- package/.output/server/_ssr/{BundleIdDisplay-DOPz4pUS.mjs → BundleIdDisplay-LdRkYdnN.mjs} +2 -2
- package/.output/server/_ssr/{ConsoleFeatureUnavailable-Xb1JKqcc.mjs → ConsoleFeatureUnavailable-BN-FZ8eG.mjs} +6 -6
- package/.output/server/_ssr/{EventDetails-D7MejFCN.mjs → EventDetails-B77sWxgh.mjs} +6 -6
- package/.output/server/_ssr/{HashValueDisplay-Dd-wu5rY.mjs → HashValueDisplay-C4Vs4cmO.mjs} +2 -2
- package/.output/server/_ssr/{InsightsPageHeader-CWf1n4Vt.mjs → InsightsPageHeader-Dx4jJ7X0.mjs} +6 -6
- package/.output/server/_ssr/{NotFoundPage-C5rFdUpg.mjs → NotFoundPage-DB5cXeVZ.mjs} +2 -2
- package/.output/server/_ssr/{RolloutPercentageBadge-g0Bhfl3M.mjs → RolloutPercentageBadge-vmwE8iae.mjs} +3 -3
- package/.output/server/_ssr/{StoreSubmission-JZ2Zltak.mjs → StoreSubmission-DE4vgy5B.mjs} +5 -5
- package/.output/server/_ssr/{alert-dialog-CvNvTvIJ.mjs → alert-dialog-DxboqQmd.mjs} +1 -1
- package/.output/server/_ssr/{api-0vtwA5vY.mjs → api-cvzOLlTy.mjs} +3 -3
- package/.output/server/_ssr/{api-keys-yFlQDwQF.mjs → api-keys-C3QCQvpV.mjs} +2 -2
- package/.output/server/_ssr/{api-keys-D5dyA4D1.mjs → api-keys-CrbGr02t.mjs} +8 -8
- package/.output/server/_ssr/{api-keys-rpc-BOIUHhDi.mjs → api-keys-rpc-BcTQzRLj.mjs} +3 -3
- package/.output/server/_ssr/{api-rpc-COeFOpYi.mjs → api-rpc-B48nsUak.mjs} +3 -3
- package/.output/server/_ssr/{auth-rpc-D1ss2GUI.mjs → auth-rpc-C0gtG9nJ.mjs} +4 -4
- package/.output/server/_ssr/{auth.server-DYS1OJ6P.mjs → auth.server-B0JikHOQ.mjs} +2 -2
- package/.output/server/_ssr/{badge-CEdVRgyl.mjs → badge-oO-0mLsr.mjs} +1 -1
- package/.output/server/_ssr/{config.server-NnMFjMFX.mjs → config.server-CJVHGJtr.mjs} +3 -3
- package/.output/server/_ssr/{console-access-33BNlH97.mjs → console-access-4TW5Af_n.mjs} +2 -2
- package/.output/server/_ssr/{console-features-api-v1fSycue.mjs → console-features-api-DfzZRyXa.mjs} +5 -5
- package/.output/server/_ssr/{console-features-rpc-C7XNVqm0.mjs → console-features-rpc-DqNpa3U9.mjs} +3 -3
- package/.output/server/_ssr/{dialog-C8CS8RMt.mjs → dialog-DsuMZ5oh.mjs} +1 -1
- package/.output/server/_ssr/{empty-CkdEAvCY.mjs → empty-r4kJO91t.mjs} +2 -2
- package/.output/server/_ssr/{field-CW08sZXd.mjs → field-DfXmt9CS.mjs} +2 -2
- package/.output/server/_ssr/{input-group-D-TpFPuG.mjs → input-group-BCO7zTpU.mjs} +1 -1
- package/.output/server/_ssr/{insights-CYeBl8N9.mjs → insights-CRu5FUj8.mjs} +5 -5
- package/.output/server/_ssr/{insights-CMyzPs8l.mjs → insights-Csqlj6u7.mjs} +19 -19
- package/.output/server/_ssr/{insights-DAi9KknT.mjs → insights-DrrhPDER.mjs} +2 -2
- package/.output/server/_ssr/{insights-api-BFARQ5ct.mjs → insights-api-NW5VCXqg.mjs} +3 -3
- package/.output/server/_ssr/{insights-failures-rpc-Q4WNNJkU.mjs → insights-failures-rpc-CoFrAOK9.mjs} +4 -4
- package/.output/server/_ssr/{insights-recovery-rpc-CY5RYJKa.mjs → insights-recovery-rpc-sud_FyGW.mjs} +3 -3
- package/.output/server/_ssr/{insights-rpc-BO7_evvs.mjs → insights-rpc-Ce2Isz9q.mjs} +3 -3
- package/.output/server/_ssr/{insights-search-DKfxgHD3.mjs → insights-search-B0O3YoO2.mjs} +2 -2
- package/.output/server/_ssr/{insights-usage-rpc-B4czku50.mjs → insights-usage-rpc-C-cS2F9s.mjs} +3 -3
- package/.output/server/_ssr/{insights-usage-rpc-CUCTFska.mjs → insights-usage-rpc-Cwf1t4aW.mjs} +3 -3
- package/.output/server/_ssr/{insights_.distribution-BRrbZN1X.mjs → insights_.distribution--3aR6Kpy.mjs} +5 -5
- package/.output/server/_ssr/{insights_.distribution-BDeUhZGj.mjs → insights_.distribution-D52TkQ2V.mjs} +2 -2
- package/.output/server/_ssr/{insights_.distribution-C2MXpzKd.mjs → insights_.distribution-DIkh5VqM.mjs} +13 -13
- package/.output/server/_ssr/{installations-DxGZEC5G.mjs → installations-Bu4Lb0x9.mjs} +11 -11
- package/.output/server/_ssr/{installations-BjLMgBoH.mjs → installations-C818mFCp.mjs} +2 -2
- package/.output/server/_ssr/{installations-BVk7okiY.mjs → installations-DftevpDt.mjs} +4 -4
- package/.output/server/_ssr/{native-builds-CdlyAldW.mjs → native-builds-CWjU--fI.mjs} +23 -82
- package/.output/server/_ssr/{native-builds-CSCgFB21.mjs → native-builds-DOASMwGh.mjs} +2 -2
- package/.output/server/_ssr/{native-builds_._buildId-CMp1h8dT.mjs → native-builds_._buildId-CTytnLBB.mjs} +2 -2
- package/.output/server/_ssr/{native-builds_._buildId-GHpGaYyE.mjs → native-builds_._buildId-D4lYJLIU.mjs} +9 -9
- package/.output/server/_ssr/{release-adoption-rpc-BJXZvtoQ.mjs → release-adoption-rpc-OizwttJD.mjs} +5 -5
- package/.output/server/_ssr/{remote-config-DlyyohL2.mjs → remote-config-DZu7gJLL.mjs} +2 -2
- package/.output/server/_ssr/{remote-config-XdYuByHz.mjs → remote-config-DaBgnVnL.mjs} +2 -2
- package/.output/server/_ssr/{remote-config-DjsEl270.mjs → remote-config-Dypc_nuk.mjs} +17 -17
- package/.output/server/_ssr/{remote-config-rpc-GMLPb-90.mjs → remote-config-rpc-DOfPhqli.mjs} +3 -3
- package/.output/server/_ssr/{router-vpxd56RW.mjs → router-BkRbvels.mjs} +20 -20
- package/.output/server/_ssr/{routes-DyEM4b3x.mjs → routes-BeTsUkNX.mjs} +10 -10
- package/.output/server/_ssr/{routes-dQe3XhiS.mjs → routes-D9JnXVWL.mjs} +17 -17
- package/.output/server/_ssr/{schema-migration-rpc-BfGzEK_o.mjs → schema-migration-rpc-B2VGxRY6.mjs} +3 -3
- package/.output/server/_ssr/{select-DM1uwtk9.mjs → select-Cywc0NmT.mjs} +1 -1
- package/.output/server/_ssr/{server-BUUKNSPI.mjs → server-Ds-fU1zf.mjs} +3 -3
- package/.output/server/_ssr/{sidebar-DB2YQlok.mjs → sidebar-t0NiN0-2.mjs} +2 -2
- package/.output/server/_ssr/ssr.mjs +1 -1
- package/.output/server/_ssr/{switch-DLD58zLy.mjs → switch-D1T38CnM.mjs} +2 -2
- package/.output/server/_ssr/{table-P4TnAZhl.mjs → table-L9ZQgxNF.mjs} +1 -1
- package/.output/server/_ssr/{tabs-B7ZeLicF.mjs → tabs-BiByrAnU.mjs} +2 -2
- package/.output/server/{_tanstack-start-manifest_v-C-KC63Zq.mjs → _tanstack-start-manifest_v-B5nsO5L4.mjs} +9 -9
- package/.output/server/index.mjs +157 -157
- package/package.json +7 -7
- package/src/components/features/native-builds/CopyableText.tsx +5 -2
- package/src/components/features/native-builds/ImportBuild.tsx +7 -31
- package/src/components/features/native-builds/NativeBuildsTable.tsx +3 -5
- package/.output/public/assets/StoreSubmission-JpngSvHS.js +0 -1
- package/.output/public/assets/native-builds-BswZazmc.js +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/native-builds-
|
|
2
|
-
import{n as e,r as t,t as n}from"./preload-helper-B44EvKhG.js";import{n as r}from"./-native-builds-search-C-TGpFAm.js";var i=t(`/native-builds`)({component:e(()=>n(()=>import(`./native-builds-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/native-builds-DAy2678K.js","assets/sidebar-Di9SN47G.js","assets/preload-helper-B44EvKhG.js","assets/link-DTEyW70e.js","assets/select-CBIU0_M1.js","assets/useCompositeListItem-JmyDfo3-.js","assets/check-CXVR3s3X.js","assets/arrow-up-right-DK8Zdg40.js","assets/native-builds-BOC71grI.js","assets/relativeTime-YQt84dYr.js","assets/uuidv7-zXMtwR9Q.js","assets/chevron-right-BoUXo82O.js","assets/download-Cf24LBde.js","assets/-native-builds-search-C-TGpFAm.js","assets/refresh-cw-B9HHjLej.js","assets/StoreSubmission-ViTkW4eJ.js","assets/copy-DsuLj3oj.js","assets/badge-DWFcDWho.js","assets/dist-CPlO6ko9.js","assets/api-P2g8dCNg.js","assets/useMutation-DbYw7boA.js","assets/PlatformIcon-BBWQlWm9.js","assets/dialog-CNUPxNxH.js","assets/table-Bpy3SvSo.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{n as e,r as t,t as n}from"./preload-helper-B44EvKhG.js";import{n as r}from"./-native-builds-search-C-TGpFAm.js";var i=t(`/native-builds`)({component:e(()=>n(()=>import(`./native-builds-DAy2678K.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23])),`component`),validateSearch:r});export{i as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{$ as e,Fn as t,In as n,Wr as r,ir as i,p as a}from"./sidebar-Di9SN47G.js";import{t as o}from"./link-DTEyW70e.js";import{a as s}from"./preload-helper-B44EvKhG.js";import{t as c}from"./arrow-up-right-DK8Zdg40.js";import{a as l,c as u,f as d,i as ee,n as f,o as p,p as m,r as h,s as g}from"./native-builds-BOC71grI.js";import{t as _}from"./chevron-right-BoUXo82O.js";import{a as v,i as y,n as te,o as ne,r as re,t as ie}from"./select-CBIU0_M1.js";import{t as ae}from"./download-Cf24LBde.js";import{r as oe}from"./-native-builds-search-C-TGpFAm.js";import{t as b}from"./refresh-cw-B9HHjLej.js";import{a as x,i as S,r as C,t as w}from"./StoreSubmission-ViTkW4eJ.js";import{a as T,f as E,i as D,n as O,o as k,r as A,s as j,t as M}from"./badge-DWFcDWho.js";import{t as N}from"./native-builds-D6rldpSh.js";import{t as P}from"./PlatformIcon-BBWQlWm9.js";import{a as F,n as I,o as L,r as R,s as z,t as se}from"./dialog-CNUPxNxH.js";import{f as B,i as V}from"./api-P2g8dCNg.js";import{a as H,i as U,n as W,o as G,r as K,t as ce}from"./table-Bpy3SvSo.js";var le=i(`file-up`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M12 12v6`,key:`3ahymv`}],[`path`,{d:`m15 15-3-3-3 3`,key:`15xj92`}]]),ue=i(`hard-drive-download`,[[`path`,{d:`M12 2v8`,key:`1q4o3n`}],[`path`,{d:`m16 6-4 4-4-4`,key:`6wukr`}],[`rect`,{width:`20`,height:`8`,x:`2`,y:`14`,rx:`2`,key:`w68u3i`}],[`path`,{d:`M6 18h.01`,key:`uhywen`}],[`path`,{d:`M10 18h.01`,key:`h775k`}]]),q=r(),J=`npx hot-updater native-build import <file>`,Y=`https://hot-updater.dev/docs/guides/native-build#import-a-build-made-elsewhere`;function de(){return(0,q.jsxs)(se,{children:[(0,q.jsxs)(z,{render:(0,q.jsx)(t,{"aria-label":`Import a build`,className:`min-h-11 sm:min-h-7`,size:`sm`,variant:`outline`}),children:[(0,q.jsx)(le,{"data-icon":`inline-start`}),(0,q.jsx)(`span`,{className:`hidden sm:inline`,children:`Import a build`})]}),(0,q.jsxs)(I,{className:`sm:max-w-lg`,children:[(0,q.jsxs)(F,{children:[(0,q.jsx)(L,{children:`Import a build`}),(0,q.jsx)(R,{children:`Track an .ipa, .aab, .apk or .app built elsewhere as a patch base.`})]}),(0,q.jsx)(x,{label:`the import command`,value:J,wrap:!0}),(0,q.jsxs)(`a`,{className:n({className:`min-h-11 w-full sm:min-h-8 sm:w-fit`,variant:`outline`}),href:Y,rel:`noreferrer`,target:`_blank`,children:[`Import guide`,(0,q.jsx)(c,{"data-icon":`inline-end`})]})]})]})}var fe=`https://hot-updater.dev/docs/guides/native-build#register-a-build`,pe=6;function me({channel:e,paged:r,onClearChannel:i,onNewest:a}){return(0,q.jsx)(G,{children:(0,q.jsx)(K,{className:`h-44 text-center text-muted-foreground`,colSpan:pe,children:(0,q.jsxs)(`div`,{className:`mx-auto flex max-w-sm flex-col items-center gap-2 whitespace-normal`,children:[(0,q.jsx)(ue,{"aria-hidden":`true`,className:`size-5`}),r?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`p`,{className:`font-medium text-foreground`,children:`No more native builds`}),(0,q.jsx)(t,{className:`mt-1 min-h-11 sm:min-h-8`,onClick:a,variant:`outline`,children:`Show the newest builds`})]}):e===void 0?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`p`,{className:`font-medium text-foreground`,children:`No native builds`}),(0,q.jsxs)(`p`,{children:[`Build one with`,` `,(0,q.jsx)(`code`,{className:`font-mono text-xs`,children:`native-build android`}),` `,`or `,(0,q.jsx)(`code`,{className:`font-mono text-xs`,children:`native-build ios`}),`, or import one built elsewhere:`]}),(0,q.jsx)(`div`,{className:`w-full text-left`,children:(0,q.jsx)(x,{label:`the import command`,value:J,wrap:!0})}),(0,q.jsxs)(`a`,{className:n({className:`mt-1 min-h-11 sm:min-h-8`,variant:`outline`}),href:fe,rel:`noreferrer`,target:`_blank`,children:[`Native build guide`,(0,q.jsx)(c,{"data-icon":`inline-end`})]}),(0,q.jsxs)(`a`,{className:n({className:`min-h-11 sm:min-h-8`,variant:`outline`}),href:Y,rel:`noreferrer`,target:`_blank`,children:[`Import guide`,(0,q.jsx)(c,{"data-icon":`inline-end`})]})]}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`p`,{className:`font-medium text-foreground`,children:[`No native build embeds `,(0,q.jsx)(`span`,{translate:`no`,children:e})]}),(0,q.jsx)(`p`,{children:`A build embeds the channel it was built on. Build one on this channel, or list every channel's builds.`}),(0,q.jsx)(t,{className:`mt-1 min-h-11 sm:min-h-8`,onClick:i,variant:`outline`,children:`Show all channels`})]})]})})})}function he(){return Array.from({length:3},(t,n)=>(0,q.jsxs)(G,{children:[(0,q.jsxs)(K,{className:`space-y-2 py-3`,children:[n===0?(0,q.jsx)(`span`,{className:`sr-only`,children:`Loading native builds`}):null,(0,q.jsx)(e,{className:`h-3.5 w-40`}),(0,q.jsx)(e,{className:`h-3 w-24`})]}),(0,q.jsx)(K,{className:`hidden md:table-cell`,children:(0,q.jsx)(e,{className:`h-5 w-20`})}),(0,q.jsx)(K,{className:`hidden xl:table-cell`,children:(0,q.jsx)(e,{className:`h-3.5 w-28`})}),(0,q.jsx)(K,{className:`hidden xl:table-cell`,children:(0,q.jsx)(e,{className:`h-3.5 w-14`})}),(0,q.jsx)(K,{className:`hidden sm:table-cell`,children:(0,q.jsx)(e,{className:`h-3.5 w-20`})}),(0,q.jsx)(K,{children:(0,q.jsx)(e,{className:`ml-auto h-6 w-16`})})]},n))}function ge({build:e,onChannel:t}){let r=s(),i=g(e),a=ee(e),c=`${u(e.platform)} ${h[e.artifact_kind].label}`;return(0,q.jsxs)(G,{className:`cursor-pointer`,onClick:()=>void r({to:`/native-builds/$buildId`,params:{buildId:e.id}}),children:[(0,q.jsx)(K,{className:`py-3 whitespace-normal`,children:(0,q.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1`,children:[(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[(0,q.jsx)(P,{className:`size-3.5 shrink-0 text-muted-foreground`,platform:e.platform}),(0,q.jsx)(o,{className:`font-medium underline-offset-4 hover:underline`,onClick:e=>e.stopPropagation(),params:{buildId:e.id},to:`/native-builds/$buildId`,children:c}),(0,q.jsx)(`span`,{className:`text-xs text-muted-foreground tabular-nums`,children:f(e.byte_size)}),(0,q.jsx)(w,{build:e,withTime:!0})]}),(0,q.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-x-1.5 text-xs text-muted-foreground`,children:[(0,q.jsx)(`span`,{children:i.label}),e.fingerprint_hash===null?(0,q.jsx)(`span`,{className:`font-mono text-foreground`,translate:`no`,children:i.value}):(0,q.jsx)(S,{label:`fingerprint`,length:12,value:e.fingerprint_hash}),e.build_number?(0,q.jsxs)(`span`,{className:`tabular-nums`,translate:`no`,children:[`· build `,e.build_number]}):null,(0,q.jsxs)(`span`,{className:`md:hidden`,translate:`no`,children:[`· `,a]}),e.git_commit_hash===null?null:(0,q.jsxs)(`span`,{className:`inline-flex items-center gap-1 xl:hidden`,children:[`· commit `,(0,q.jsx)(C,{hash:e.git_commit_hash})]})]}),(0,q.jsxs)(`div`,{className:`text-xs text-muted-foreground xl:hidden`,children:[`Built-in bundle`,` `,(0,q.jsx)(`span`,{className:`font-mono [overflow-wrap:anywhere] text-foreground`,translate:`no`,children:e.min_bundle_id})]})]})}),(0,q.jsx)(K,{className:`hidden md:table-cell`,children:(0,q.jsx)(`button`,{"aria-label":`Show the builds that embed ${a}`,className:`rounded-md text-left focus-visible:ring-2 focus-visible:ring-ring focus-visible:outline-none`,onClick:e=>{e.stopPropagation(),t(a)},type:`button`,children:(0,q.jsx)(M,{className:`whitespace-nowrap`,translate:`no`,variant:`outline`,children:a})})}),(0,q.jsx)(K,{className:`hidden xl:table-cell`,children:(0,q.jsx)(`span`,{className:`font-mono text-xs text-muted-foreground`,translate:`no`,children:e.min_bundle_id})}),(0,q.jsx)(K,{className:`hidden xl:table-cell`,children:(0,q.jsx)(C,{hash:e.git_commit_hash})}),(0,q.jsx)(K,{className:`hidden sm:table-cell`,children:(0,q.jsx)(d,{uuid:e.id})}),(0,q.jsx)(K,{className:`text-right`,children:(0,q.jsxs)(`a`,{"aria-label":`Download ${p(e)}`,className:n({className:`min-h-11 sm:min-h-7`,size:`sm`,variant:`outline`}),download:!0,href:l(e.id),onClick:e=>e.stopPropagation(),children:[(0,q.jsx)(ae,{"data-icon":`inline-start`}),`Download`]})})]})}function X({builds:e,channel:n,paged:r,onChannel:i,onPage:a}){let o=e.data?.data,{next:s,previous:c}=e.data??{};return e.isError?(0,q.jsx)(`div`,{className:`p-4`,children:(0,q.jsxs)(O,{variant:`destructive`,children:[(0,q.jsx)(E,{}),(0,q.jsx)(T,{children:`Native builds couldn't be loaded`}),(0,q.jsx)(D,{children:`Check your connection and try again.`}),(0,q.jsx)(A,{children:(0,q.jsxs)(t,{onClick:()=>void e.refetch(),size:`xs`,variant:`outline`,children:[(0,q.jsx)(b,{"data-icon":`inline-start`}),`Retry`]})})]})}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(ce,{"aria-busy":e.isPlaceholderData,"aria-label":`Native builds`,children:[(0,q.jsx)(H,{children:(0,q.jsxs)(G,{children:[(0,q.jsx)(U,{children:`Build`}),(0,q.jsx)(U,{className:`hidden md:table-cell`,children:`Channel`}),(0,q.jsx)(U,{className:`hidden xl:table-cell`,children:`Built-in bundle`}),(0,q.jsx)(U,{className:`hidden xl:table-cell`,children:`Commit`}),(0,q.jsx)(U,{className:`hidden sm:table-cell`,children:`Created`}),(0,q.jsx)(U,{className:`text-right`,children:(0,q.jsx)(`span`,{className:`sr-only`,children:`Actions`})})]})}),(0,q.jsx)(W,{children:e.isLoading?(0,q.jsx)(he,{}):o?.length===0?(0,q.jsx)(me,{channel:n,onClearChannel:()=>i(void 0),onNewest:()=>a({}),paged:r}):o?.map(e=>(0,q.jsx)(ge,{build:e,onChannel:i},e.id))})]}),s!==void 0||c!==void 0?(0,q.jsxs)(`nav`,{"aria-label":`Native build pages`,className:`flex items-center justify-end gap-2 border-t px-4 py-2`,children:[(0,q.jsxs)(t,{className:`min-h-11 sm:min-h-7`,disabled:c===void 0||e.isPlaceholderData,onClick:()=>a({after:c}),size:`sm`,variant:`ghost`,children:[(0,q.jsx)(m,{"data-icon":`inline-start`}),`Newer`]}),(0,q.jsxs)(t,{className:`min-h-11 sm:min-h-7`,disabled:s===void 0||e.isPlaceholderData,onClick:()=>a({before:s}),size:`sm`,variant:`ghost`,children:[`Older`,(0,q.jsx)(_,{"data-icon":`inline-end`})]})]}):null]})}var Z=`all`,Q=`channel:`,$=e=>`${Q}${e}`;function _e({search:e,onSearchChange:n}){let{channel:r,before:i,after:o}=e,s=B(e),c=V(),l=c.data?.map(({name:e})=>e)??[],u=r===void 0||l.includes(r)?l:[r,...l],d=e=>n(e===void 0?{}:{channel:e});return(0,q.jsxs)(`div`,{className:`flex h-svh min-h-0 flex-col`,children:[(0,q.jsxs)(`header`,{className:`sticky top-0 z-10 flex shrink-0 flex-wrap items-center gap-x-3 gap-y-1 border-b bg-background px-3 py-3 sm:min-h-12 sm:flex-nowrap sm:bg-card/70 sm:px-4 sm:backdrop-blur-sm`,children:[(0,q.jsx)(a,{className:`-ml-1 size-11 lg:size-7`}),(0,q.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,q.jsx)(oe,{"aria-hidden":`true`,className:`size-3.5 text-muted-foreground`}),(0,q.jsx)(`h1`,{className:`text-sm font-medium`,children:`Native builds`})]}),(0,q.jsx)(`p`,{className:`basis-full pl-12 text-xs text-muted-foreground sm:basis-auto sm:pl-0`,children:`Store and test builds, each the built-in bundle its OTAs patch from.`})]}),(0,q.jsx)(`div`,{className:`min-h-0 min-w-0 flex-1 overflow-y-auto bg-muted/5 p-3 sm:p-6`,children:(0,q.jsxs)(k,{className:`mx-auto w-full max-w-6xl overflow-hidden shadow-sm`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-2 border-b px-4 py-3`,children:[(0,q.jsxs)(ie,{items:[{label:`All channels`,value:Z},...u.map(e=>({label:e,value:$(e)}))],onOpenChange:e=>{e&&c.refetch()},onValueChange:e=>d(e?.startsWith(Q)?e.slice(8):void 0),value:r===void 0?Z:$(r),children:[(0,q.jsx)(v,{"aria-label":`Channel`,className:`h-11 min-w-0 flex-1 text-xs sm:h-8 sm:w-48 sm:flex-none`,children:(0,q.jsx)(ne,{})}),(0,q.jsx)(te,{children:(0,q.jsxs)(re,{children:[(0,q.jsx)(y,{value:Z,children:`All channels`}),u.map(e=>(0,q.jsx)(y,{translate:`no`,value:$(e),children:e},e))]})})]}),(0,q.jsx)(`div`,{className:`ml-auto`,children:(0,q.jsx)(de,{})}),(0,q.jsx)(t,{"aria-label":`Refresh native builds`,className:`size-11 sm:size-7`,disabled:s.isLoading,onClick:()=>void s.refetch(),size:`icon-sm`,variant:`ghost`,children:(0,q.jsx)(b,{"aria-hidden":`true`})})]}),(0,q.jsx)(j,{className:`p-0`,children:(0,q.jsx)(X,{builds:s,channel:r,onChannel:d,onPage:e=>n({...r===void 0?{}:{channel:r},...e}),paged:i!==void 0||o!==void 0})})]})})]})}function ve(){let e=N.useSearch(),t=N.useNavigate();return(0,q.jsx)(_e,{onSearchChange:e=>void t({search:e}),search:e})}export{ve as component};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{$ as e,Fn as t,In as n,Ln as r,Wr as i,ii as a,ir as o,p as s,ti as c}from"./sidebar-Di9SN47G.js";import{t as l}from"./link-DTEyW70e.js";import{t as u}from"./arrow-up-right-DK8Zdg40.js";import{a as d,c as f,f as p,n as m,o as ee,p as te,r as ne,s as re,t as ie,u as ae}from"./native-builds-BOC71grI.js";import{t as oe}from"./chevron-right-BoUXo82O.js";import{n as se,t as h}from"./native-builds_._buildId-DtoXD8rz.js";import{t as ce}from"./download-Cf24LBde.js";import{n as le,t as ue}from"./history-DqHlgSuV.js";import{r as de}from"./-native-builds-search-C-TGpFAm.js";import{t as fe}from"./refresh-cw-B9HHjLej.js";import{a as g,i as pe,n as _,r as me,t as he}from"./StoreSubmission-JpngSvHS.js";import{a as v,d as y,f as b,i as x,n as S,o as C,r as ge,s as w,t as T,u as E}from"./badge-DWFcDWho.js";import{r as _e}from"./uuidv7-zXMtwR9Q.js";import{a as D,i as O,n as k,o as A,r as j,t as M}from"./empty-B3Uwdd6k.js";import{t as ve}from"./PlatformIcon-BBWQlWm9.js";import{d as ye,l as be,u as xe}from"./api-P2g8dCNg.js";import{a as N,i as P,n as F,o as I,r as L,t as R}from"./table-Bpy3SvSo.js";import{t as Se}from"./RolloutPercentageBadge-Cxogpi8F.js";var Ce=o(`package-open`,[[`path`,{d:`M12 22v-9`,key:`x3hkom`}],[`path`,{d:`M15.17 2.21a1.67 1.67 0 0 1 1.63 0L21 4.57a1.93 1.93 0 0 1 0 3.36L8.82 14.79a1.655 1.655 0 0 1-1.64 0L3 12.43a1.93 1.93 0 0 1 0-3.36z`,key:`2ntwy6`}],[`path`,{d:`M20 13v3.87a2.06 2.06 0 0 1-1.11 1.83l-6 3.08a1.93 1.93 0 0 1-1.78 0l-6-3.08A2.06 2.06 0 0 1 4 16.87V13`,key:`1pmm1c`}],[`path`,{d:`M21 12.43a1.93 1.93 0 0 0 0-3.36L8.83 2.2a1.64 1.64 0 0 0-1.63 0L3 4.57a1.93 1.93 0 0 0 0 3.36l12.18 6.86a1.636 1.636 0 0 0 1.63 0z`,key:`12ttoo`}]]),z=i();function B({label:e,children:t}){return(0,z.jsxs)(`div`,{className:`grid gap-1 sm:grid-cols-[10rem_minmax(0,1fr)] sm:gap-4`,children:[(0,z.jsx)(`dt`,{className:`text-xs font-medium text-muted-foreground`,children:e}),(0,z.jsx)(`dd`,{className:`min-w-0 text-sm`,children:t})]})}function we({detail:e}){let{build:t,newestInScope:n}=e;return n===null?null:n.id===t.id?(0,z.jsxs)(`div`,{className:`flex items-start gap-2 rounded-md border bg-muted/40 p-3 text-xs`,children:[(0,z.jsx)(se,{"aria-hidden":`true`,className:`mt-0.5 size-3.5 shrink-0 text-muted-foreground`}),(0,z.jsxs)(`p`,{children:[(0,z.jsx)(`span`,{className:`font-medium`,children:`Current baseline.`}),` New deploys to this scope add a patch from this build's bundle.`]})]}):(0,z.jsxs)(`div`,{className:`flex items-start gap-2 rounded-md border bg-muted/40 p-3 text-xs`,children:[(0,z.jsx)(ue,{"aria-hidden":`true`,className:`mt-0.5 size-3.5 shrink-0 text-muted-foreground`}),(0,z.jsxs)(`p`,{children:[(0,z.jsx)(`span`,{className:`font-medium`,children:`Superseded`}),` by`,` `,(0,z.jsxs)(l,{className:`inline-flex items-center gap-0.5 font-medium underline underline-offset-4`,params:{buildId:n.id},to:`/native-builds/$buildId`,children:[f(n.platform),` `,ne[n.artifact_kind].label,` ·`,` `,(0,z.jsx)(p,{uuid:n.id}),(0,z.jsx)(u,{"aria-hidden":`true`,className:`size-3`})]}),`. New deploys patch from that build, so this one gets no new patches.`]})]})}function Te({detail:e}){let{build:t,builtInBundle:n,channel:r}=e,i=re(t),a=n?.childCount??0;return(0,z.jsxs)(C,{className:`overflow-hidden shadow-sm`,children:[(0,z.jsx)(E,{className:`border-b px-4 py-3`,children:(0,z.jsx)(y,{className:`text-sm`,children:(0,z.jsx)(`h2`,{children:`Built-in bundle`})})}),(0,z.jsxs)(w,{className:`flex flex-col gap-4 p-4 sm:p-6`,children:[(0,z.jsxs)(`dl`,{className:`flex flex-col gap-3`,children:[(0,z.jsx)(B,{label:`Bundle ID`,children:(0,z.jsx)(`span`,{className:`break-all font-mono text-xs`,translate:`no`,children:t.min_bundle_id})}),(0,z.jsx)(B,{label:`OTAs patching from it`,children:(0,z.jsx)(`span`,{className:`tabular-nums`,children:a===1?`1 bundle`:`${a} bundles`})}),(0,z.jsx)(B,{label:`Scope`,children:(0,z.jsxs)(`span`,{className:`flex flex-wrap items-center gap-1.5`,children:[(0,z.jsx)(l,{"aria-label":`Show the builds that embed ${r}`,search:{channel:r},to:`/native-builds`,children:(0,z.jsx)(T,{translate:`no`,variant:`outline`,children:r})}),(0,z.jsx)(`span`,{className:`text-xs`,children:f(t.platform)}),(0,z.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[`· `,i.label]}),t.fingerprint_hash===null?(0,z.jsx)(`span`,{className:`font-mono text-xs`,translate:`no`,children:i.value}):(0,z.jsx)(pe,{label:`fingerprint`,length:12,value:t.fingerprint_hash})]})}),t.build_number?(0,z.jsx)(B,{label:`Build number`,children:(0,z.jsx)(`span`,{className:`font-mono text-xs tabular-nums`,translate:`no`,children:t.build_number})}):null,_(t)?(0,z.jsx)(B,{label:`Store`,children:(0,z.jsx)(he,{build:t,withTime:!0})}):null,(0,z.jsx)(B,{label:`Commit`,children:(0,z.jsx)(me,{hash:t.git_commit_hash})}),(0,z.jsx)(B,{label:`Created`,children:(0,z.jsx)(p,{format:`both`,uuid:t.id})})]}),(0,z.jsx)(we,{detail:e}),(0,z.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`A store or test install of this build runs this bundle until its first OTA. That OTA downloads as a patch from this bundle when one exists, and as the full bundle otherwise.`})]})]})}var Ee=a(c(),1),V=(e=>(e[e.Border=-1]=`Border`,e[e.Data=0]=`Data`,e[e.Function=1]=`Function`,e[e.Position=2]=`Position`,e[e.Timing=3]=`Timing`,e[e.Alignment=4]=`Alignment`,e))(V||{}),De=[0,1],Oe=[1,0],ke=[2,3],Ae=[3,2],je={L:De,M:Oe,Q:ke,H:Ae},Me=/^\d*$/,Ne=/^[A-Z0-9 $%*+./:-]*$/,H=`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:`,U=1,W=40,Pe=3,Fe=3,G=40,Ie=10,Le=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],Re=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]],ze=class{constructor(e,t,n,r){if(this.version=e,this.ecc=t,e<U||e>W)throw RangeError(`Version value out of range`);if(r<-1||r>7)throw RangeError(`Mask value out of range`);this.size=e*4+17;let i=Array.from({length:this.size}).fill(!1);for(let e=0;e<this.size;e++)this.modules.push(i.slice()),this.types.push(i.map(()=>0));this.drawFunctionPatterns();let a=this.addEccAndInterleave(n);if(this.drawCodewords(a),r===-1){let e=1e9;for(let t=0;t<8;t++){this.applyMask(t),this.drawFormatBits(t);let n=this.getPenaltyScore();n<e&&(r=t,e=n),this.applyMask(t)}}this.mask=r,this.applyMask(r),this.drawFormatBits(r)}size;mask;modules=[];types=[];getModule(e,t){return e>=0&&e<this.size&&t>=0&&t<this.size&&this.modules[t][e]}drawFunctionPatterns(){for(let e=0;e<this.size;e++)this.setFunctionModule(6,e,e%2==0,V.Timing),this.setFunctionModule(e,6,e%2==0,V.Timing);this.drawFinderPattern(3,3),this.drawFinderPattern(this.size-4,3),this.drawFinderPattern(3,this.size-4);let e=this.getAlignmentPatternPositions(),t=e.length;for(let n=0;n<t;n++)for(let r=0;r<t;r++)n===0&&r===0||n===0&&r===t-1||n===t-1&&r===0||this.drawAlignmentPattern(e[n],e[r]);this.drawFormatBits(0),this.drawVersion()}drawFormatBits(e){let t=this.ecc[1]<<3|e,n=t;for(let e=0;e<10;e++)n=n<<1^(n>>>9)*1335;let r=(t<<10|n)^21522;for(let e=0;e<=5;e++)this.setFunctionModule(8,e,q(r,e));this.setFunctionModule(8,7,q(r,6)),this.setFunctionModule(8,8,q(r,7)),this.setFunctionModule(7,8,q(r,8));for(let e=9;e<15;e++)this.setFunctionModule(14-e,8,q(r,e));for(let e=0;e<8;e++)this.setFunctionModule(this.size-1-e,8,q(r,e));for(let e=8;e<15;e++)this.setFunctionModule(8,this.size-15+e,q(r,e));this.setFunctionModule(8,this.size-8,!0)}drawVersion(){if(this.version<7)return;let e=this.version;for(let t=0;t<12;t++)e=e<<1^(e>>>11)*7973;let t=this.version<<12|e;for(let e=0;e<18;e++){let n=q(t,e),r=this.size-11+e%3,i=Math.floor(e/3);this.setFunctionModule(r,i,n),this.setFunctionModule(i,r,n)}}drawFinderPattern(e,t){for(let n=-4;n<=4;n++)for(let r=-4;r<=4;r++){let i=Math.max(Math.abs(r),Math.abs(n)),a=e+r,o=t+n;a>=0&&a<this.size&&o>=0&&o<this.size&&this.setFunctionModule(a,o,i!==2&&i!==4,V.Position)}}drawAlignmentPattern(e,t){for(let n=-2;n<=2;n++)for(let r=-2;r<=2;r++)this.setFunctionModule(e+r,t+n,Math.max(Math.abs(r),Math.abs(n))!==1,V.Alignment)}setFunctionModule(e,t,n,r=V.Function){this.modules[t][e]=n,this.types[t][e]=r}addEccAndInterleave(e){let t=this.version,n=this.ecc;if(e.length!==X(t,n))throw RangeError(`Invalid argument`);let r=Re[n[0]][t],i=Le[n[0]][t],a=Math.floor(Y(t)/8),o=r-a%r,s=Math.floor(a/r),c=[],l=Qe(i);for(let t=0,n=0;t<r;t++){let r=e.slice(n,n+s-i+(t<o?0:1));n+=r.length;let a=$e(r,l);t<o&&r.push(0),c.push(r.concat(a))}let u=[];for(let e=0;e<c[0].length;e++)c.forEach((t,n)=>{(e!==s-i||n>=o)&&u.push(t[e])});return u}drawCodewords(e){if(e.length!==Math.floor(Y(this.version)/8))throw RangeError(`Invalid argument`);let t=0;for(let n=this.size-1;n>=1;n-=2){n===6&&(n=5);for(let r=0;r<this.size;r++)for(let i=0;i<2;i++){let a=n-i,o=n+1&2?r:this.size-1-r;!this.types[o][a]&&t<e.length*8&&(this.modules[o][a]=q(e[t>>>3],7-(t&7)),t++)}}}applyMask(e){if(e<0||e>7)throw RangeError(`Mask value out of range`);for(let t=0;t<this.size;t++)for(let n=0;n<this.size;n++){let r;switch(e){case 0:r=(n+t)%2==0;break;case 1:r=t%2==0;break;case 2:r=n%3==0;break;case 3:r=(n+t)%3==0;break;case 4:r=(Math.floor(n/3)+Math.floor(t/2))%2==0;break;case 5:r=n*t%2+n*t%3==0;break;case 6:r=(n*t%2+n*t%3)%2==0;break;case 7:r=((n+t)%2+n*t%3)%2==0;break;default:throw Error(`Unreachable`)}!this.types[t][n]&&r&&(this.modules[t][n]=!this.modules[t][n])}}getPenaltyScore(){let e=0;for(let t=0;t<this.size;t++){let n=!1,r=0,i=[0,0,0,0,0,0,0];for(let a=0;a<this.size;a++)this.modules[t][a]===n?(r++,r===5?e+=Pe:r>5&&e++):(this.finderPenaltyAddHistory(r,i),n||(e+=this.finderPenaltyCountPatterns(i)*G),n=this.modules[t][a],r=1);e+=this.finderPenaltyTerminateAndCount(n,r,i)*G}for(let t=0;t<this.size;t++){let n=!1,r=0,i=[0,0,0,0,0,0,0];for(let a=0;a<this.size;a++)this.modules[a][t]===n?(r++,r===5?e+=Pe:r>5&&e++):(this.finderPenaltyAddHistory(r,i),n||(e+=this.finderPenaltyCountPatterns(i)*G),n=this.modules[a][t],r=1);e+=this.finderPenaltyTerminateAndCount(n,r,i)*G}for(let t=0;t<this.size-1;t++)for(let n=0;n<this.size-1;n++){let r=this.modules[t][n];r===this.modules[t][n+1]&&r===this.modules[t+1][n]&&r===this.modules[t+1][n+1]&&(e+=Fe)}let t=0;for(let e of this.modules)t=e.reduce((e,t)=>e+ +!!t,t);let n=this.size*this.size,r=Math.ceil(Math.abs(t*20-n*10)/n)-1;return e+=r*Ie,e}getAlignmentPatternPositions(){if(this.version===1)return[];{let e=Math.floor(this.version/7)+2,t=this.version===32?26:Math.ceil((this.version*4+4)/(e*2-2))*2,n=[6];for(let r=this.size-7;n.length<e;r-=t)n.splice(1,0,r);return n}}finderPenaltyCountPatterns(e){let t=e[1],n=t>0&&e[2]===t&&e[3]===t*3&&e[4]===t&&e[5]===t;return(n&&e[0]>=t*4&&e[6]>=t?1:0)+(n&&e[6]>=t*4&&e[0]>=t?1:0)}finderPenaltyTerminateAndCount(e,t,n){return e&&(this.finderPenaltyAddHistory(t,n),t=0),t+=this.size,this.finderPenaltyAddHistory(t,n),this.finderPenaltyCountPatterns(n)}finderPenaltyAddHistory(e,t){t[0]===0&&(e+=this.size),t.pop(),t.unshift(e)}};function K(e,t,n){if(t<0||t>31||e>>>t)throw RangeError(`Value out of range`);for(let r=t-1;r>=0;r--)n.push(e>>>r&1)}function q(e,t){return(e>>>t&1)!=0}var J=class{constructor(e,t,n){if(this.mode=e,this.numChars=t,this.bitData=n,t<0)throw RangeError(`Invalid argument`);this.bitData=n.slice()}getData(){return this.bitData.slice()}},Be=[1,10,12,14],Ve=[2,9,11,13],He=[4,8,16,16];function Ue(e,t){return e[Math.floor((t+7)/17)+1]}function We(e){let t=[];for(let n of e)K(n,8,t);return new J(He,e.length,t)}function Ge(e){if(!Je(e))throw RangeError(`String contains non-numeric characters`);let t=[];for(let n=0;n<e.length;){let r=Math.min(e.length-n,3);K(Number.parseInt(e.substring(n,n+r),10),r*3+1,t),n+=r}return new J(Be,e.length,t)}function Ke(e){if(!Ye(e))throw RangeError(`String contains unencodable characters in alphanumeric mode`);let t=[],n;for(n=0;n+2<=e.length;n+=2){let r=H.indexOf(e.charAt(n))*45;r+=H.indexOf(e.charAt(n+1)),K(r,11,t)}return n<e.length&&K(H.indexOf(e.charAt(n)),6,t),new J(Ve,e.length,t)}function qe(e){return e===``?[]:Je(e)?[Ge(e)]:Ye(e)?[Ke(e)]:[We(Ze(e))]}function Je(e){return Me.test(e)}function Ye(e){return Ne.test(e)}function Xe(e,t){let n=0;for(let r of e){let e=Ue(r.mode,t);if(r.numChars>=1<<e)return 1/0;n+=4+e+r.bitData.length}return n}function Ze(e){e=encodeURI(e);let t=[];for(let n=0;n<e.length;n++)e.charAt(n)===`%`?(t.push(Number.parseInt(e.substring(n+1,n+3),16)),n+=2):t.push(e.charCodeAt(n));return t}function Y(e){if(e<U||e>W)throw RangeError(`Version number out of range`);let t=(16*e+128)*e+64;if(e>=2){let n=Math.floor(e/7)+2;t-=(25*n-10)*n-55,e>=7&&(t-=36)}return t}function X(e,t){return Math.floor(Y(e)/8)-Le[t[0]][e]*Re[t[0]][e]}function Qe(e){if(e<1||e>255)throw RangeError(`Degree out of range`);let t=[];for(let n=0;n<e-1;n++)t.push(0);t.push(1);let n=1;for(let r=0;r<e;r++){for(let e=0;e<t.length;e++)t[e]=Z(t[e],n),e+1<t.length&&(t[e]^=t[e+1]);n=Z(n,2)}return t}function $e(e,t){let n=t.map(e=>0);for(let r of e){let e=r^n.shift();n.push(0),t.forEach((t,r)=>n[r]^=Z(t,e))}return n}function Z(e,t){if(e>>>8||t>>>8)throw RangeError(`Byte out of range`);let n=0;for(let r=7;r>=0;r--)n=n<<1^(n>>>7)*285,n^=(t>>>r&1)*e;return n}function et(e,t,n=1,r=40,i=-1,a=!0){if(!(U<=n&&n<=r&&r<=W)||i<-1||i>7)throw RangeError(`Invalid value`);let o,s;for(o=n;;o++){let n=X(o,t)*8,i=Xe(e,o);if(i<=n){s=i;break}if(o>=r)throw RangeError(`Data too long`)}for(let e of[Oe,ke,Ae])a&&s<=X(o,e)*8&&(t=e);let c=[];for(let t of e){K(t.mode[0],4,c),K(t.numChars,Ue(t.mode,o),c);for(let e of t.getData())c.push(e)}let l=X(o,t)*8;K(0,Math.min(4,l-c.length),c),K(0,(8-c.length%8)%8,c);for(let e=236;c.length<l;e^=253)K(e,8,c);let u=Array.from({length:Math.ceil(c.length/8)},()=>0);return c.forEach((e,t)=>u[t>>>3]|=e<<7-(t&7)),new ze(o,t,u,i)}function tt(e,t){let{ecc:n=`L`,boostEcc:r=!1,minVersion:i=1,maxVersion:a=40,maskPattern:o=-1,border:s=1}=t||{},c=typeof e==`string`?qe(e):Array.isArray(e)?[We(e)]:void 0;if(!c)throw Error(`uqr only supports encoding string and binary data, but got: ${typeof e}`);let l=et(c,je[n],i,a,o,r),u=nt({version:l.version,maskPattern:l.mask,size:l.size,data:l.modules,types:l.types},s);return t?.invert&&(u.data=u.data.map(e=>e.map(e=>!e))),t?.onEncoded?.(u),u}function nt(e,t=1){if(!t)return e;let{size:n}=e,r=n+t*2;e.size=r,e.data.forEach(e=>{for(let n=0;n<t;n++)e.unshift(!1),e.push(!1)});for(let n=0;n<t;n++)e.data.unshift(Array.from({length:r},e=>!1)),e.data.push(Array.from({length:r},e=>!1));let i=V.Border;e.types.forEach(e=>{for(let n=0;n<t;n++)e.unshift(i),e.push(i)});for(let n=0;n<t;n++)e.types.unshift(Array.from({length:r},e=>i)),e.types.push(Array.from({length:r},e=>i));return e}var rt=e=>{let{data:t,size:n}=tt(e,{ecc:`M`,border:4}),r=``;return t.forEach((e,t)=>e.forEach((e,n)=>{e&&(r+=`M${n} ${t}h1v1h-1z`)})),{size:n,path:r}};function it({value:e,label:t,className:n}){let{size:i,path:a}=(0,Ee.useMemo)(()=>rt(e),[e]);return(0,z.jsxs)(`svg`,{"aria-label":t,className:r(`aspect-square rounded-md`,n),role:`img`,shapeRendering:`crispEdges`,viewBox:`0 0 ${i} ${i}`,children:[(0,z.jsx)(`rect`,{fill:`#fff`,height:i,width:i}),(0,z.jsx)(`path`,{d:a,fill:`#000`})]})}var Q={ipa:`The .ipa installs only on devices its signing profile allows (development or ad hoc); an App Store export reaches testers through TestFlight.`,aab:`The .aab installs through Google Play or bundletool, not from the file.`},at={apk:`Scan with an Android phone's camera, then open the APK to install it.`,ipa:`Scan to download. ${Q.ipa}`,aab:`Scan to download. ${Q.aab}`,app:`Scan to download the .app.zip on a Mac.`};function ot({build:t}){let n=xe(t.id,!0),r=n.data?.url;if(r===null){let e=Q[t.artifact_kind];return(0,z.jsxs)(`div`,{className:`flex flex-col gap-2 text-xs text-muted-foreground`,children:[(0,z.jsx)(`p`,{children:`This storage gives no download link a phone can open without signing in, so there is no QR code. Download the build here, or open this page on the phone signed in to the console.`}),e?(0,z.jsx)(`p`,{children:e}):null]})}return(0,z.jsxs)(`div`,{className:`flex flex-col items-center gap-2`,children:[r===void 0?n.isError?(0,z.jsxs)(S,{variant:`destructive`,children:[(0,z.jsx)(b,{}),(0,z.jsx)(v,{children:`The download link couldn't be created`}),(0,z.jsx)(x,{children:n.error.message})]}):(0,z.jsx)(e,{className:`size-48`}):(0,z.jsx)(it,{className:`size-48`,label:`Download ${ee(t)}`,value:r}),(0,z.jsx)(`p`,{className:`max-w-56 text-center text-xs text-muted-foreground`,children:at[t.artifact_kind]})]})}function $({build:e}){return(0,z.jsx)(`span`,{className:`font-mono text-foreground`,translate:`no`,children:e.submitted_version??`this build`})}function st({build:e}){switch(e.artifact_kind){case`apk`:return(0,z.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-2`,children:[(0,z.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`On an emulator or a phone over USB, download the APK and install it:`}),(0,z.jsx)(g,{label:`the install command`,value:ie(e)})]});case`app`:return(0,z.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-2`,children:[(0,z.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`It runs only in the iOS Simulator. Install it on the booted one:`}),(0,z.jsx)(g,{label:`the install command`,value:ae(e)})]});case`aab`:return _(e)?(0,z.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Submitted to Google Play internal testing as`,` `,(0,z.jsx)($,{build:e}),`. Testers get it once its release is rolled out; on an app Play Console hasn't published, the release is a draft you roll out in Play Console.`]}):(0,z.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-2`,children:[(0,z.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`For testers, build and release to internal testing:`}),(0,z.jsx)(g,{label:`the Google Play command`,value:`npx hot-updater google-play upload`})]});case`ipa`:return _(e)?(0,z.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`On TestFlight as `,(0,z.jsx)($,{build:e}),`.`]}):(0,z.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-2`,children:[(0,z.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Over USB, Xcode or Apple Configurator installs it. For testers:`}),(0,z.jsx)(g,{label:`the TestFlight command`,value:`npx hot-updater testflight`})]})}}function ct({build:e}){let t=ee(e);return(0,z.jsxs)(C,{className:`overflow-hidden shadow-sm`,children:[(0,z.jsx)(E,{className:`border-b px-4 py-3`,children:(0,z.jsx)(y,{className:`text-sm`,children:(0,z.jsx)(`h2`,{children:`Install`})})}),(0,z.jsxs)(w,{className:`grid gap-6 p-4 sm:grid-cols-[12rem_minmax(0,1fr)] sm:p-6`,children:[(0,z.jsx)(ot,{build:e}),(0,z.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-4`,children:[(0,z.jsx)(st,{build:e}),(0,z.jsxs)(`a`,{className:n({className:`h-auto min-h-11 w-full min-w-0 py-2 whitespace-normal sm:min-h-8 sm:w-fit`,variant:`outline`}),download:!0,href:d(e.id),children:[(0,z.jsx)(ce,{"data-icon":`inline-start`}),(0,z.jsxs)(`span`,{className:`text-left [overflow-wrap:anywhere]`,children:[`Download `,t]})]})]})]})]})}var lt=`https://hot-updater.dev/docs/guides/bundle-diffing#first-ota-update`;function ut({detail:r,page:i,onPage:a}){let o=i.before!==void 0||i.after!==void 0,s=ye(r.build.min_bundle_id,i,o),c=o?s.data:r.patches,{next:d,previous:f}=c??{};return(0,z.jsxs)(C,{className:`overflow-hidden shadow-sm`,id:`patches`,children:[(0,z.jsx)(E,{className:`border-b px-4 py-3`,children:(0,z.jsx)(y,{className:`text-sm`,children:(0,z.jsx)(`h2`,{children:`Patches from this build`})})}),(0,z.jsxs)(w,{className:`p-0`,children:[o&&s.isError?(0,z.jsx)(`div`,{className:`p-4`,children:(0,z.jsxs)(S,{variant:`destructive`,children:[(0,z.jsx)(b,{}),(0,z.jsx)(v,{children:`Patches couldn't be loaded`}),(0,z.jsx)(x,{children:s.error.message}),(0,z.jsx)(ge,{children:(0,z.jsxs)(t,{onClick:()=>void s.refetch(),size:`xs`,variant:`outline`,children:[(0,z.jsx)(fe,{"data-icon":`inline-start`}),`Retry`]})})]})}):c===void 0?(0,z.jsxs)(`div`,{className:`flex flex-col gap-2 p-4`,children:[(0,z.jsx)(`span`,{className:`sr-only`,children:`Loading patches`}),(0,z.jsx)(e,{className:`h-4 w-full`}),(0,z.jsx)(e,{className:`h-4 w-2/3`})]}):c.data.length===0?o?(0,z.jsxs)(M,{className:`py-10`,children:[(0,z.jsx)(O,{children:(0,z.jsx)(A,{children:`No more patches`})}),(0,z.jsx)(t,{className:`min-h-11 sm:min-h-8`,onClick:()=>a({}),variant:`outline`,children:`Show the newest patches`})]}):(0,z.jsxs)(M,{className:`py-10`,children:[(0,z.jsxs)(O,{children:[(0,z.jsx)(D,{variant:`icon`,children:(0,z.jsx)(le,{})}),(0,z.jsx)(A,{children:`No patches from this build`}),(0,z.jsxs)(j,{children:[`A deploy adds a patch from this build's bundle while it is its scope's newest build and the deploy config turns patches on, with `,(0,z.jsx)(`code`,{className:`font-mono`,children:`patch`}),` in`,` `,(0,z.jsx)(`code`,{className:`font-mono`,children:`hot-updater.config.ts`}),`.`]})]}),(0,z.jsx)(k,{children:(0,z.jsxs)(`a`,{className:n({className:`min-h-11 sm:min-h-8`,variant:`outline`}),href:lt,rel:`noreferrer`,target:`_blank`,children:[`Bundle diffing guide`,(0,z.jsx)(u,{"data-icon":`inline-end`})]})})]}):(0,z.jsxs)(R,{"aria-busy":o&&s.isPlaceholderData,"aria-label":`Patches from this build`,className:`table-fixed`,children:[(0,z.jsx)(N,{children:(0,z.jsxs)(I,{children:[(0,z.jsx)(P,{children:`Target bundle`}),(0,z.jsx)(P,{className:`w-28`,children:`Patch size`}),(0,z.jsx)(P,{className:`hidden w-32 sm:table-cell`,children:`Created`})]})}),(0,z.jsx)(F,{children:c.data.map(e=>(0,z.jsxs)(I,{children:[(0,z.jsx)(L,{className:`py-3 whitespace-normal`,children:(0,z.jsx)(l,{className:`block font-mono text-xs [overflow-wrap:anywhere] underline-offset-4 hover:underline`,search:{bundleId:e.bundleId},title:e.bundleId,to:`/`,translate:`no`,children:e.bundleId})}),(0,z.jsx)(L,{className:`text-xs tabular-nums`,children:m(e.byteSize)}),(0,z.jsx)(L,{className:`hidden sm:table-cell`,children:(0,z.jsx)(p,{uuid:e.bundleId})})]},e.bundleId))})]}),d!==void 0||f!==void 0?(0,z.jsxs)(`nav`,{"aria-label":`Patch pages`,className:`flex items-center justify-end gap-2 border-t px-4 py-2`,children:[(0,z.jsxs)(t,{className:`min-h-11 sm:min-h-7`,disabled:f===void 0||o&&s.isPlaceholderData,onClick:()=>a({after:f}),size:`sm`,variant:`ghost`,children:[(0,z.jsx)(te,{"data-icon":`inline-start`}),`Newer`]}),(0,z.jsxs)(t,{className:`min-h-11 sm:min-h-7`,disabled:d===void 0||o&&s.isPlaceholderData,onClick:()=>a({before:d}),size:`sm`,variant:`ghost`,children:[`Older`,(0,z.jsx)(oe,{"data-icon":`inline-end`})]})]}):null]})]})}var dt=(e,t)=>{let n=e.data.find(e=>e.bundleId===t);if(n!==void 0)return{kind:`patch`,byteSize:n.byteSize};let r=e.data.at(-1)?.bundleId;return e.next!==void 0&&r!==void 0&&t<r?{kind:`unknown`}:{kind:`full`}};function ft({download:e}){switch(e.kind){case`patch`:return(0,z.jsxs)(`span`,{className:`text-xs`,children:[`Patch`,` `,(0,z.jsxs)(`span`,{className:`text-muted-foreground tabular-nums`,children:[`(`,m(e.byteSize),`)`]})]});case`full`:return(0,z.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Full bundle`});case`unknown`:return(0,z.jsx)(`a`,{className:`text-xs underline-offset-4 hover:underline`,href:`#patches`,children:`See patches`})}}function pt({detail:e}){let{servedNow:t,patches:r,catalogScopeKey:i}=e,a=(0,z.jsxs)(l,{className:`inline-flex items-center gap-0.5 underline-offset-4 hover:underline`,search:{scopeKey:i},to:`/`,children:[`All releases in this scope`,(0,z.jsx)(u,{"aria-hidden":`true`,className:`size-3`})]});return(0,z.jsxs)(C,{className:`overflow-hidden shadow-sm`,children:[(0,z.jsx)(E,{className:`border-b px-4 py-3`,children:(0,z.jsx)(y,{className:`text-sm`,children:(0,z.jsx)(`h2`,{children:`Served now`})})}),(0,z.jsx)(w,{className:`p-0`,children:t.length===0?(0,z.jsxs)(M,{className:`py-10`,children:[(0,z.jsxs)(O,{children:[(0,z.jsx)(D,{variant:`icon`,children:(0,z.jsx)(Ce,{})}),(0,z.jsx)(A,{children:`No OTA for this build yet`}),(0,z.jsxs)(j,{children:[`No release in this build's scope is newer than its built-in bundle. Deploy one with`,` `,(0,z.jsx)(`code`,{className:`font-mono`,children:`hot-updater deploy`}),`, and it shows here.`]})]}),(0,z.jsx)(k,{children:(0,z.jsx)(l,{className:n({className:`min-h-11 sm:min-h-8`,variant:`outline`}),search:{scopeKey:i},to:`/`,children:`All releases in this scope`})})]}):(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(R,{"aria-label":`Served now`,className:`table-fixed`,children:[(0,z.jsx)(N,{children:(0,z.jsxs)(I,{children:[(0,z.jsx)(P,{children:`Bundle`}),(0,z.jsx)(P,{className:`hidden w-40 md:table-cell`,children:`Rollout`}),(0,z.jsx)(P,{className:`hidden w-32 sm:table-cell`,children:`Created`}),(0,z.jsx)(P,{className:`w-32`,children:`First OTA download`})]})}),(0,z.jsx)(F,{children:t.map(e=>{let t=e.bundleId,n=e.rolloutCohortCount/_e*100;return(0,z.jsxs)(I,{children:[(0,z.jsx)(L,{className:`py-3 whitespace-normal`,children:(0,z.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1`,children:[(0,z.jsx)(l,{className:`font-mono text-xs [overflow-wrap:anywhere] underline-offset-4 hover:underline`,search:{releaseId:e.releaseId},title:t,to:`/`,translate:`no`,children:t}),e.message?(0,z.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e.message}):null]})}),(0,z.jsx)(L,{className:`hidden md:table-cell`,children:(0,z.jsxs)(`div`,{className:`flex flex-wrap gap-1`,children:[e.targetCohorts.length>0?(0,z.jsx)(T,{variant:`secondary`,children:e.targetCohorts.length===1?`1 cohort`:`${e.targetCohorts.length} cohorts`}):(0,z.jsx)(Se,{percentage:n}),e.shouldForceUpdate?(0,z.jsx)(T,{variant:`outline`,children:`Forced`}):null]})}),(0,z.jsx)(L,{className:`hidden sm:table-cell`,children:(0,z.jsx)(p,{uuid:t})}),(0,z.jsx)(L,{children:(0,z.jsx)(ft,{download:dt(r,t)})})]},e.releaseId)})})]}),(0,z.jsxs)(`p`,{className:`border-t px-4 py-3 text-xs text-muted-foreground`,children:[`What the update check serves an install of this build now, newest first: not the history. `,a]})]})})]})}function mt({buildId:r,search:i,onSearchChange:a}){let o=be(r),c=o.data,u={...i.patchesBefore===void 0?{}:{before:i.patchesBefore},...i.patchesAfter===void 0?{}:{after:i.patchesAfter}};return(0,z.jsxs)(`div`,{className:`flex h-svh min-h-0 flex-col`,children:[(0,z.jsxs)(`header`,{className:`sticky top-0 z-10 flex shrink-0 items-center gap-x-2 border-b bg-background px-3 py-3 sm:min-h-12 sm:bg-card/70 sm:px-4 sm:backdrop-blur-sm`,children:[(0,z.jsx)(s,{className:`-ml-1 size-11 lg:size-7`}),(0,z.jsxs)(l,{className:n({className:`min-h-11 sm:min-h-7`,size:`sm`,variant:`ghost`}),to:`/native-builds`,children:[(0,z.jsx)(te,{"data-icon":`inline-start`}),`Native builds`]}),c?(0,z.jsxs)(`h1`,{className:`flex min-w-0 items-center gap-1.5 text-sm font-medium`,children:[(0,z.jsx)(ve,{className:`size-3.5 shrink-0 text-muted-foreground`,platform:c.build.platform}),(0,z.jsxs)(`span`,{className:`min-w-0 [overflow-wrap:anywhere]`,children:[f(c.build.platform),` `,ne[c.build.artifact_kind].label,` ·`,` `,(0,z.jsx)(`span`,{translate:`no`,children:c.channel})]}),(0,z.jsx)(`span`,{className:`hidden text-xs font-normal text-muted-foreground tabular-nums sm:inline`,children:m(c.build.byte_size)})]}):(0,z.jsx)(`h1`,{className:`sr-only`,children:`Native build`})]}),(0,z.jsx)(`div`,{className:`min-h-0 min-w-0 flex-1 overflow-y-auto bg-muted/5 p-3 sm:p-6`,children:(0,z.jsx)(`div`,{className:`mx-auto flex w-full max-w-5xl flex-col gap-4 sm:gap-6`,children:o.isError?(0,z.jsxs)(S,{variant:`destructive`,children:[(0,z.jsx)(b,{}),(0,z.jsx)(v,{children:`The native build couldn't be loaded`}),(0,z.jsx)(x,{children:o.error.message}),(0,z.jsx)(ge,{children:(0,z.jsxs)(t,{onClick:()=>void o.refetch(),size:`xs`,variant:`outline`,children:[(0,z.jsx)(fe,{"data-icon":`inline-start`}),`Retry`]})})]}):c===void 0?(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`span`,{className:`sr-only`,children:`Loading the native build`}),(0,z.jsx)(e,{className:`h-56 w-full rounded-xl`}),(0,z.jsx)(e,{className:`h-64 w-full rounded-xl`})]}):c===null?(0,z.jsxs)(M,{className:`border py-16`,children:[(0,z.jsxs)(O,{children:[(0,z.jsx)(D,{variant:`icon`,children:(0,z.jsx)(de,{})}),(0,z.jsx)(A,{children:`Native build not found`}),(0,z.jsxs)(j,{children:[`No native build has this ID. It may have been deleted with`,` `,(0,z.jsx)(`code`,{className:`font-mono`,children:`native-build delete`}),`, or be from another console.`]})]}),(0,z.jsx)(k,{children:(0,z.jsx)(l,{className:n({className:`min-h-11 sm:min-h-8`,variant:`outline`}),to:`/native-builds`,children:`Show all native builds`})})]}):(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(ct,{build:c.build}),(0,z.jsx)(Te,{detail:c}),(0,z.jsx)(pt,{detail:c}),(0,z.jsx)(ut,{detail:c,onPage:e=>a({...e.before===void 0?{}:{patchesBefore:e.before},...e.after===void 0?{}:{patchesAfter:e.after}}),page:u})]})})})]})}function ht(){let{buildId:e}=h.useParams(),t=h.useSearch(),n=h.useNavigate();return(0,z.jsx)(mt,{buildId:e,onSearchChange:e=>void n({search:e,replace:!0}),search:t})}export{ht as component};
|
|
1
|
+
import{$ as e,Fn as t,In as n,Ln as r,Wr as i,ii as a,ir as o,p as s,ti as c}from"./sidebar-Di9SN47G.js";import{t as l}from"./link-DTEyW70e.js";import{t as u}from"./arrow-up-right-DK8Zdg40.js";import{a as d,c as f,f as p,n as m,o as ee,p as te,r as ne,s as re,t as ie,u as ae}from"./native-builds-BOC71grI.js";import{t as oe}from"./chevron-right-BoUXo82O.js";import{n as se,t as h}from"./native-builds_._buildId-DvQDKnUQ.js";import{t as ce}from"./download-Cf24LBde.js";import{n as le,t as ue}from"./history-DqHlgSuV.js";import{r as de}from"./-native-builds-search-C-TGpFAm.js";import{t as fe}from"./refresh-cw-B9HHjLej.js";import{a as g,i as pe,n as _,r as me,t as he}from"./StoreSubmission-ViTkW4eJ.js";import{a as v,d as y,f as b,i as x,n as S,o as C,r as ge,s as w,t as T,u as E}from"./badge-DWFcDWho.js";import{r as _e}from"./uuidv7-zXMtwR9Q.js";import{a as D,i as O,n as k,o as A,r as j,t as M}from"./empty-B3Uwdd6k.js";import{t as ve}from"./PlatformIcon-BBWQlWm9.js";import{d as ye,l as be,u as xe}from"./api-P2g8dCNg.js";import{a as N,i as P,n as F,o as I,r as L,t as R}from"./table-Bpy3SvSo.js";import{t as Se}from"./RolloutPercentageBadge-Cxogpi8F.js";var Ce=o(`package-open`,[[`path`,{d:`M12 22v-9`,key:`x3hkom`}],[`path`,{d:`M15.17 2.21a1.67 1.67 0 0 1 1.63 0L21 4.57a1.93 1.93 0 0 1 0 3.36L8.82 14.79a1.655 1.655 0 0 1-1.64 0L3 12.43a1.93 1.93 0 0 1 0-3.36z`,key:`2ntwy6`}],[`path`,{d:`M20 13v3.87a2.06 2.06 0 0 1-1.11 1.83l-6 3.08a1.93 1.93 0 0 1-1.78 0l-6-3.08A2.06 2.06 0 0 1 4 16.87V13`,key:`1pmm1c`}],[`path`,{d:`M21 12.43a1.93 1.93 0 0 0 0-3.36L8.83 2.2a1.64 1.64 0 0 0-1.63 0L3 4.57a1.93 1.93 0 0 0 0 3.36l12.18 6.86a1.636 1.636 0 0 0 1.63 0z`,key:`12ttoo`}]]),z=i();function B({label:e,children:t}){return(0,z.jsxs)(`div`,{className:`grid gap-1 sm:grid-cols-[10rem_minmax(0,1fr)] sm:gap-4`,children:[(0,z.jsx)(`dt`,{className:`text-xs font-medium text-muted-foreground`,children:e}),(0,z.jsx)(`dd`,{className:`min-w-0 text-sm`,children:t})]})}function we({detail:e}){let{build:t,newestInScope:n}=e;return n===null?null:n.id===t.id?(0,z.jsxs)(`div`,{className:`flex items-start gap-2 rounded-md border bg-muted/40 p-3 text-xs`,children:[(0,z.jsx)(se,{"aria-hidden":`true`,className:`mt-0.5 size-3.5 shrink-0 text-muted-foreground`}),(0,z.jsxs)(`p`,{children:[(0,z.jsx)(`span`,{className:`font-medium`,children:`Current baseline.`}),` New deploys to this scope add a patch from this build's bundle.`]})]}):(0,z.jsxs)(`div`,{className:`flex items-start gap-2 rounded-md border bg-muted/40 p-3 text-xs`,children:[(0,z.jsx)(ue,{"aria-hidden":`true`,className:`mt-0.5 size-3.5 shrink-0 text-muted-foreground`}),(0,z.jsxs)(`p`,{children:[(0,z.jsx)(`span`,{className:`font-medium`,children:`Superseded`}),` by`,` `,(0,z.jsxs)(l,{className:`inline-flex items-center gap-0.5 font-medium underline underline-offset-4`,params:{buildId:n.id},to:`/native-builds/$buildId`,children:[f(n.platform),` `,ne[n.artifact_kind].label,` ·`,` `,(0,z.jsx)(p,{uuid:n.id}),(0,z.jsx)(u,{"aria-hidden":`true`,className:`size-3`})]}),`. New deploys patch from that build, so this one gets no new patches.`]})]})}function Te({detail:e}){let{build:t,builtInBundle:n,channel:r}=e,i=re(t),a=n?.childCount??0;return(0,z.jsxs)(C,{className:`overflow-hidden shadow-sm`,children:[(0,z.jsx)(E,{className:`border-b px-4 py-3`,children:(0,z.jsx)(y,{className:`text-sm`,children:(0,z.jsx)(`h2`,{children:`Built-in bundle`})})}),(0,z.jsxs)(w,{className:`flex flex-col gap-4 p-4 sm:p-6`,children:[(0,z.jsxs)(`dl`,{className:`flex flex-col gap-3`,children:[(0,z.jsx)(B,{label:`Bundle ID`,children:(0,z.jsx)(`span`,{className:`break-all font-mono text-xs`,translate:`no`,children:t.min_bundle_id})}),(0,z.jsx)(B,{label:`OTAs patching from it`,children:(0,z.jsx)(`span`,{className:`tabular-nums`,children:a===1?`1 bundle`:`${a} bundles`})}),(0,z.jsx)(B,{label:`Scope`,children:(0,z.jsxs)(`span`,{className:`flex flex-wrap items-center gap-1.5`,children:[(0,z.jsx)(l,{"aria-label":`Show the builds that embed ${r}`,search:{channel:r},to:`/native-builds`,children:(0,z.jsx)(T,{translate:`no`,variant:`outline`,children:r})}),(0,z.jsx)(`span`,{className:`text-xs`,children:f(t.platform)}),(0,z.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[`· `,i.label]}),t.fingerprint_hash===null?(0,z.jsx)(`span`,{className:`font-mono text-xs`,translate:`no`,children:i.value}):(0,z.jsx)(pe,{label:`fingerprint`,length:12,value:t.fingerprint_hash})]})}),t.build_number?(0,z.jsx)(B,{label:`Build number`,children:(0,z.jsx)(`span`,{className:`font-mono text-xs tabular-nums`,translate:`no`,children:t.build_number})}):null,_(t)?(0,z.jsx)(B,{label:`Store`,children:(0,z.jsx)(he,{build:t,withTime:!0})}):null,(0,z.jsx)(B,{label:`Commit`,children:(0,z.jsx)(me,{hash:t.git_commit_hash})}),(0,z.jsx)(B,{label:`Created`,children:(0,z.jsx)(p,{format:`both`,uuid:t.id})})]}),(0,z.jsx)(we,{detail:e}),(0,z.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`A store or test install of this build runs this bundle until its first OTA. That OTA downloads as a patch from this bundle when one exists, and as the full bundle otherwise.`})]})]})}var Ee=a(c(),1),V=(e=>(e[e.Border=-1]=`Border`,e[e.Data=0]=`Data`,e[e.Function=1]=`Function`,e[e.Position=2]=`Position`,e[e.Timing=3]=`Timing`,e[e.Alignment=4]=`Alignment`,e))(V||{}),De=[0,1],Oe=[1,0],ke=[2,3],Ae=[3,2],je={L:De,M:Oe,Q:ke,H:Ae},Me=/^\d*$/,Ne=/^[A-Z0-9 $%*+./:-]*$/,H=`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:`,U=1,W=40,Pe=3,Fe=3,G=40,Ie=10,Le=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],Re=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]],ze=class{constructor(e,t,n,r){if(this.version=e,this.ecc=t,e<U||e>W)throw RangeError(`Version value out of range`);if(r<-1||r>7)throw RangeError(`Mask value out of range`);this.size=e*4+17;let i=Array.from({length:this.size}).fill(!1);for(let e=0;e<this.size;e++)this.modules.push(i.slice()),this.types.push(i.map(()=>0));this.drawFunctionPatterns();let a=this.addEccAndInterleave(n);if(this.drawCodewords(a),r===-1){let e=1e9;for(let t=0;t<8;t++){this.applyMask(t),this.drawFormatBits(t);let n=this.getPenaltyScore();n<e&&(r=t,e=n),this.applyMask(t)}}this.mask=r,this.applyMask(r),this.drawFormatBits(r)}size;mask;modules=[];types=[];getModule(e,t){return e>=0&&e<this.size&&t>=0&&t<this.size&&this.modules[t][e]}drawFunctionPatterns(){for(let e=0;e<this.size;e++)this.setFunctionModule(6,e,e%2==0,V.Timing),this.setFunctionModule(e,6,e%2==0,V.Timing);this.drawFinderPattern(3,3),this.drawFinderPattern(this.size-4,3),this.drawFinderPattern(3,this.size-4);let e=this.getAlignmentPatternPositions(),t=e.length;for(let n=0;n<t;n++)for(let r=0;r<t;r++)n===0&&r===0||n===0&&r===t-1||n===t-1&&r===0||this.drawAlignmentPattern(e[n],e[r]);this.drawFormatBits(0),this.drawVersion()}drawFormatBits(e){let t=this.ecc[1]<<3|e,n=t;for(let e=0;e<10;e++)n=n<<1^(n>>>9)*1335;let r=(t<<10|n)^21522;for(let e=0;e<=5;e++)this.setFunctionModule(8,e,q(r,e));this.setFunctionModule(8,7,q(r,6)),this.setFunctionModule(8,8,q(r,7)),this.setFunctionModule(7,8,q(r,8));for(let e=9;e<15;e++)this.setFunctionModule(14-e,8,q(r,e));for(let e=0;e<8;e++)this.setFunctionModule(this.size-1-e,8,q(r,e));for(let e=8;e<15;e++)this.setFunctionModule(8,this.size-15+e,q(r,e));this.setFunctionModule(8,this.size-8,!0)}drawVersion(){if(this.version<7)return;let e=this.version;for(let t=0;t<12;t++)e=e<<1^(e>>>11)*7973;let t=this.version<<12|e;for(let e=0;e<18;e++){let n=q(t,e),r=this.size-11+e%3,i=Math.floor(e/3);this.setFunctionModule(r,i,n),this.setFunctionModule(i,r,n)}}drawFinderPattern(e,t){for(let n=-4;n<=4;n++)for(let r=-4;r<=4;r++){let i=Math.max(Math.abs(r),Math.abs(n)),a=e+r,o=t+n;a>=0&&a<this.size&&o>=0&&o<this.size&&this.setFunctionModule(a,o,i!==2&&i!==4,V.Position)}}drawAlignmentPattern(e,t){for(let n=-2;n<=2;n++)for(let r=-2;r<=2;r++)this.setFunctionModule(e+r,t+n,Math.max(Math.abs(r),Math.abs(n))!==1,V.Alignment)}setFunctionModule(e,t,n,r=V.Function){this.modules[t][e]=n,this.types[t][e]=r}addEccAndInterleave(e){let t=this.version,n=this.ecc;if(e.length!==X(t,n))throw RangeError(`Invalid argument`);let r=Re[n[0]][t],i=Le[n[0]][t],a=Math.floor(Y(t)/8),o=r-a%r,s=Math.floor(a/r),c=[],l=Qe(i);for(let t=0,n=0;t<r;t++){let r=e.slice(n,n+s-i+(t<o?0:1));n+=r.length;let a=$e(r,l);t<o&&r.push(0),c.push(r.concat(a))}let u=[];for(let e=0;e<c[0].length;e++)c.forEach((t,n)=>{(e!==s-i||n>=o)&&u.push(t[e])});return u}drawCodewords(e){if(e.length!==Math.floor(Y(this.version)/8))throw RangeError(`Invalid argument`);let t=0;for(let n=this.size-1;n>=1;n-=2){n===6&&(n=5);for(let r=0;r<this.size;r++)for(let i=0;i<2;i++){let a=n-i,o=n+1&2?r:this.size-1-r;!this.types[o][a]&&t<e.length*8&&(this.modules[o][a]=q(e[t>>>3],7-(t&7)),t++)}}}applyMask(e){if(e<0||e>7)throw RangeError(`Mask value out of range`);for(let t=0;t<this.size;t++)for(let n=0;n<this.size;n++){let r;switch(e){case 0:r=(n+t)%2==0;break;case 1:r=t%2==0;break;case 2:r=n%3==0;break;case 3:r=(n+t)%3==0;break;case 4:r=(Math.floor(n/3)+Math.floor(t/2))%2==0;break;case 5:r=n*t%2+n*t%3==0;break;case 6:r=(n*t%2+n*t%3)%2==0;break;case 7:r=((n+t)%2+n*t%3)%2==0;break;default:throw Error(`Unreachable`)}!this.types[t][n]&&r&&(this.modules[t][n]=!this.modules[t][n])}}getPenaltyScore(){let e=0;for(let t=0;t<this.size;t++){let n=!1,r=0,i=[0,0,0,0,0,0,0];for(let a=0;a<this.size;a++)this.modules[t][a]===n?(r++,r===5?e+=Pe:r>5&&e++):(this.finderPenaltyAddHistory(r,i),n||(e+=this.finderPenaltyCountPatterns(i)*G),n=this.modules[t][a],r=1);e+=this.finderPenaltyTerminateAndCount(n,r,i)*G}for(let t=0;t<this.size;t++){let n=!1,r=0,i=[0,0,0,0,0,0,0];for(let a=0;a<this.size;a++)this.modules[a][t]===n?(r++,r===5?e+=Pe:r>5&&e++):(this.finderPenaltyAddHistory(r,i),n||(e+=this.finderPenaltyCountPatterns(i)*G),n=this.modules[a][t],r=1);e+=this.finderPenaltyTerminateAndCount(n,r,i)*G}for(let t=0;t<this.size-1;t++)for(let n=0;n<this.size-1;n++){let r=this.modules[t][n];r===this.modules[t][n+1]&&r===this.modules[t+1][n]&&r===this.modules[t+1][n+1]&&(e+=Fe)}let t=0;for(let e of this.modules)t=e.reduce((e,t)=>e+ +!!t,t);let n=this.size*this.size,r=Math.ceil(Math.abs(t*20-n*10)/n)-1;return e+=r*Ie,e}getAlignmentPatternPositions(){if(this.version===1)return[];{let e=Math.floor(this.version/7)+2,t=this.version===32?26:Math.ceil((this.version*4+4)/(e*2-2))*2,n=[6];for(let r=this.size-7;n.length<e;r-=t)n.splice(1,0,r);return n}}finderPenaltyCountPatterns(e){let t=e[1],n=t>0&&e[2]===t&&e[3]===t*3&&e[4]===t&&e[5]===t;return(n&&e[0]>=t*4&&e[6]>=t?1:0)+(n&&e[6]>=t*4&&e[0]>=t?1:0)}finderPenaltyTerminateAndCount(e,t,n){return e&&(this.finderPenaltyAddHistory(t,n),t=0),t+=this.size,this.finderPenaltyAddHistory(t,n),this.finderPenaltyCountPatterns(n)}finderPenaltyAddHistory(e,t){t[0]===0&&(e+=this.size),t.pop(),t.unshift(e)}};function K(e,t,n){if(t<0||t>31||e>>>t)throw RangeError(`Value out of range`);for(let r=t-1;r>=0;r--)n.push(e>>>r&1)}function q(e,t){return(e>>>t&1)!=0}var J=class{constructor(e,t,n){if(this.mode=e,this.numChars=t,this.bitData=n,t<0)throw RangeError(`Invalid argument`);this.bitData=n.slice()}getData(){return this.bitData.slice()}},Be=[1,10,12,14],Ve=[2,9,11,13],He=[4,8,16,16];function Ue(e,t){return e[Math.floor((t+7)/17)+1]}function We(e){let t=[];for(let n of e)K(n,8,t);return new J(He,e.length,t)}function Ge(e){if(!Je(e))throw RangeError(`String contains non-numeric characters`);let t=[];for(let n=0;n<e.length;){let r=Math.min(e.length-n,3);K(Number.parseInt(e.substring(n,n+r),10),r*3+1,t),n+=r}return new J(Be,e.length,t)}function Ke(e){if(!Ye(e))throw RangeError(`String contains unencodable characters in alphanumeric mode`);let t=[],n;for(n=0;n+2<=e.length;n+=2){let r=H.indexOf(e.charAt(n))*45;r+=H.indexOf(e.charAt(n+1)),K(r,11,t)}return n<e.length&&K(H.indexOf(e.charAt(n)),6,t),new J(Ve,e.length,t)}function qe(e){return e===``?[]:Je(e)?[Ge(e)]:Ye(e)?[Ke(e)]:[We(Ze(e))]}function Je(e){return Me.test(e)}function Ye(e){return Ne.test(e)}function Xe(e,t){let n=0;for(let r of e){let e=Ue(r.mode,t);if(r.numChars>=1<<e)return 1/0;n+=4+e+r.bitData.length}return n}function Ze(e){e=encodeURI(e);let t=[];for(let n=0;n<e.length;n++)e.charAt(n)===`%`?(t.push(Number.parseInt(e.substring(n+1,n+3),16)),n+=2):t.push(e.charCodeAt(n));return t}function Y(e){if(e<U||e>W)throw RangeError(`Version number out of range`);let t=(16*e+128)*e+64;if(e>=2){let n=Math.floor(e/7)+2;t-=(25*n-10)*n-55,e>=7&&(t-=36)}return t}function X(e,t){return Math.floor(Y(e)/8)-Le[t[0]][e]*Re[t[0]][e]}function Qe(e){if(e<1||e>255)throw RangeError(`Degree out of range`);let t=[];for(let n=0;n<e-1;n++)t.push(0);t.push(1);let n=1;for(let r=0;r<e;r++){for(let e=0;e<t.length;e++)t[e]=Z(t[e],n),e+1<t.length&&(t[e]^=t[e+1]);n=Z(n,2)}return t}function $e(e,t){let n=t.map(e=>0);for(let r of e){let e=r^n.shift();n.push(0),t.forEach((t,r)=>n[r]^=Z(t,e))}return n}function Z(e,t){if(e>>>8||t>>>8)throw RangeError(`Byte out of range`);let n=0;for(let r=7;r>=0;r--)n=n<<1^(n>>>7)*285,n^=(t>>>r&1)*e;return n}function et(e,t,n=1,r=40,i=-1,a=!0){if(!(U<=n&&n<=r&&r<=W)||i<-1||i>7)throw RangeError(`Invalid value`);let o,s;for(o=n;;o++){let n=X(o,t)*8,i=Xe(e,o);if(i<=n){s=i;break}if(o>=r)throw RangeError(`Data too long`)}for(let e of[Oe,ke,Ae])a&&s<=X(o,e)*8&&(t=e);let c=[];for(let t of e){K(t.mode[0],4,c),K(t.numChars,Ue(t.mode,o),c);for(let e of t.getData())c.push(e)}let l=X(o,t)*8;K(0,Math.min(4,l-c.length),c),K(0,(8-c.length%8)%8,c);for(let e=236;c.length<l;e^=253)K(e,8,c);let u=Array.from({length:Math.ceil(c.length/8)},()=>0);return c.forEach((e,t)=>u[t>>>3]|=e<<7-(t&7)),new ze(o,t,u,i)}function tt(e,t){let{ecc:n=`L`,boostEcc:r=!1,minVersion:i=1,maxVersion:a=40,maskPattern:o=-1,border:s=1}=t||{},c=typeof e==`string`?qe(e):Array.isArray(e)?[We(e)]:void 0;if(!c)throw Error(`uqr only supports encoding string and binary data, but got: ${typeof e}`);let l=et(c,je[n],i,a,o,r),u=nt({version:l.version,maskPattern:l.mask,size:l.size,data:l.modules,types:l.types},s);return t?.invert&&(u.data=u.data.map(e=>e.map(e=>!e))),t?.onEncoded?.(u),u}function nt(e,t=1){if(!t)return e;let{size:n}=e,r=n+t*2;e.size=r,e.data.forEach(e=>{for(let n=0;n<t;n++)e.unshift(!1),e.push(!1)});for(let n=0;n<t;n++)e.data.unshift(Array.from({length:r},e=>!1)),e.data.push(Array.from({length:r},e=>!1));let i=V.Border;e.types.forEach(e=>{for(let n=0;n<t;n++)e.unshift(i),e.push(i)});for(let n=0;n<t;n++)e.types.unshift(Array.from({length:r},e=>i)),e.types.push(Array.from({length:r},e=>i));return e}var rt=e=>{let{data:t,size:n}=tt(e,{ecc:`M`,border:4}),r=``;return t.forEach((e,t)=>e.forEach((e,n)=>{e&&(r+=`M${n} ${t}h1v1h-1z`)})),{size:n,path:r}};function it({value:e,label:t,className:n}){let{size:i,path:a}=(0,Ee.useMemo)(()=>rt(e),[e]);return(0,z.jsxs)(`svg`,{"aria-label":t,className:r(`aspect-square rounded-md`,n),role:`img`,shapeRendering:`crispEdges`,viewBox:`0 0 ${i} ${i}`,children:[(0,z.jsx)(`rect`,{fill:`#fff`,height:i,width:i}),(0,z.jsx)(`path`,{d:a,fill:`#000`})]})}var Q={ipa:`The .ipa installs only on devices its signing profile allows (development or ad hoc); an App Store export reaches testers through TestFlight.`,aab:`The .aab installs through Google Play or bundletool, not from the file.`},at={apk:`Scan with an Android phone's camera, then open the APK to install it.`,ipa:`Scan to download. ${Q.ipa}`,aab:`Scan to download. ${Q.aab}`,app:`Scan to download the .app.zip on a Mac.`};function ot({build:t}){let n=xe(t.id,!0),r=n.data?.url;if(r===null){let e=Q[t.artifact_kind];return(0,z.jsxs)(`div`,{className:`flex flex-col gap-2 text-xs text-muted-foreground`,children:[(0,z.jsx)(`p`,{children:`This storage gives no download link a phone can open without signing in, so there is no QR code. Download the build here, or open this page on the phone signed in to the console.`}),e?(0,z.jsx)(`p`,{children:e}):null]})}return(0,z.jsxs)(`div`,{className:`flex flex-col items-center gap-2`,children:[r===void 0?n.isError?(0,z.jsxs)(S,{variant:`destructive`,children:[(0,z.jsx)(b,{}),(0,z.jsx)(v,{children:`The download link couldn't be created`}),(0,z.jsx)(x,{children:n.error.message})]}):(0,z.jsx)(e,{className:`size-48`}):(0,z.jsx)(it,{className:`size-48`,label:`Download ${ee(t)}`,value:r}),(0,z.jsx)(`p`,{className:`max-w-56 text-center text-xs text-muted-foreground`,children:at[t.artifact_kind]})]})}function $({build:e}){return(0,z.jsx)(`span`,{className:`font-mono text-foreground`,translate:`no`,children:e.submitted_version??`this build`})}function st({build:e}){switch(e.artifact_kind){case`apk`:return(0,z.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-2`,children:[(0,z.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`On an emulator or a phone over USB, download the APK and install it:`}),(0,z.jsx)(g,{label:`the install command`,value:ie(e)})]});case`app`:return(0,z.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-2`,children:[(0,z.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`It runs only in the iOS Simulator. Install it on the booted one:`}),(0,z.jsx)(g,{label:`the install command`,value:ae(e)})]});case`aab`:return _(e)?(0,z.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Submitted to Google Play internal testing as`,` `,(0,z.jsx)($,{build:e}),`. Testers get it once its release is rolled out; on an app Play Console hasn't published, the release is a draft you roll out in Play Console.`]}):(0,z.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-2`,children:[(0,z.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`For testers, build and release to internal testing:`}),(0,z.jsx)(g,{label:`the Google Play command`,value:`npx hot-updater google-play upload`})]});case`ipa`:return _(e)?(0,z.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`On TestFlight as `,(0,z.jsx)($,{build:e}),`.`]}):(0,z.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-2`,children:[(0,z.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Over USB, Xcode or Apple Configurator installs it. For testers:`}),(0,z.jsx)(g,{label:`the TestFlight command`,value:`npx hot-updater testflight`})]})}}function ct({build:e}){let t=ee(e);return(0,z.jsxs)(C,{className:`overflow-hidden shadow-sm`,children:[(0,z.jsx)(E,{className:`border-b px-4 py-3`,children:(0,z.jsx)(y,{className:`text-sm`,children:(0,z.jsx)(`h2`,{children:`Install`})})}),(0,z.jsxs)(w,{className:`grid gap-6 p-4 sm:grid-cols-[12rem_minmax(0,1fr)] sm:p-6`,children:[(0,z.jsx)(ot,{build:e}),(0,z.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-4`,children:[(0,z.jsx)(st,{build:e}),(0,z.jsxs)(`a`,{className:n({className:`h-auto min-h-11 w-full min-w-0 py-2 whitespace-normal sm:min-h-8 sm:w-fit`,variant:`outline`}),download:!0,href:d(e.id),children:[(0,z.jsx)(ce,{"data-icon":`inline-start`}),(0,z.jsxs)(`span`,{className:`text-left [overflow-wrap:anywhere]`,children:[`Download `,t]})]})]})]})]})}var lt=`https://hot-updater.dev/docs/guides/bundle-diffing#first-ota-update`;function ut({detail:r,page:i,onPage:a}){let o=i.before!==void 0||i.after!==void 0,s=ye(r.build.min_bundle_id,i,o),c=o?s.data:r.patches,{next:d,previous:f}=c??{};return(0,z.jsxs)(C,{className:`overflow-hidden shadow-sm`,id:`patches`,children:[(0,z.jsx)(E,{className:`border-b px-4 py-3`,children:(0,z.jsx)(y,{className:`text-sm`,children:(0,z.jsx)(`h2`,{children:`Patches from this build`})})}),(0,z.jsxs)(w,{className:`p-0`,children:[o&&s.isError?(0,z.jsx)(`div`,{className:`p-4`,children:(0,z.jsxs)(S,{variant:`destructive`,children:[(0,z.jsx)(b,{}),(0,z.jsx)(v,{children:`Patches couldn't be loaded`}),(0,z.jsx)(x,{children:s.error.message}),(0,z.jsx)(ge,{children:(0,z.jsxs)(t,{onClick:()=>void s.refetch(),size:`xs`,variant:`outline`,children:[(0,z.jsx)(fe,{"data-icon":`inline-start`}),`Retry`]})})]})}):c===void 0?(0,z.jsxs)(`div`,{className:`flex flex-col gap-2 p-4`,children:[(0,z.jsx)(`span`,{className:`sr-only`,children:`Loading patches`}),(0,z.jsx)(e,{className:`h-4 w-full`}),(0,z.jsx)(e,{className:`h-4 w-2/3`})]}):c.data.length===0?o?(0,z.jsxs)(M,{className:`py-10`,children:[(0,z.jsx)(O,{children:(0,z.jsx)(A,{children:`No more patches`})}),(0,z.jsx)(t,{className:`min-h-11 sm:min-h-8`,onClick:()=>a({}),variant:`outline`,children:`Show the newest patches`})]}):(0,z.jsxs)(M,{className:`py-10`,children:[(0,z.jsxs)(O,{children:[(0,z.jsx)(D,{variant:`icon`,children:(0,z.jsx)(le,{})}),(0,z.jsx)(A,{children:`No patches from this build`}),(0,z.jsxs)(j,{children:[`A deploy adds a patch from this build's bundle while it is its scope's newest build and the deploy config turns patches on, with `,(0,z.jsx)(`code`,{className:`font-mono`,children:`patch`}),` in`,` `,(0,z.jsx)(`code`,{className:`font-mono`,children:`hot-updater.config.ts`}),`.`]})]}),(0,z.jsx)(k,{children:(0,z.jsxs)(`a`,{className:n({className:`min-h-11 sm:min-h-8`,variant:`outline`}),href:lt,rel:`noreferrer`,target:`_blank`,children:[`Bundle diffing guide`,(0,z.jsx)(u,{"data-icon":`inline-end`})]})})]}):(0,z.jsxs)(R,{"aria-busy":o&&s.isPlaceholderData,"aria-label":`Patches from this build`,className:`table-fixed`,children:[(0,z.jsx)(N,{children:(0,z.jsxs)(I,{children:[(0,z.jsx)(P,{children:`Target bundle`}),(0,z.jsx)(P,{className:`w-28`,children:`Patch size`}),(0,z.jsx)(P,{className:`hidden w-32 sm:table-cell`,children:`Created`})]})}),(0,z.jsx)(F,{children:c.data.map(e=>(0,z.jsxs)(I,{children:[(0,z.jsx)(L,{className:`py-3 whitespace-normal`,children:(0,z.jsx)(l,{className:`block font-mono text-xs [overflow-wrap:anywhere] underline-offset-4 hover:underline`,search:{bundleId:e.bundleId},title:e.bundleId,to:`/`,translate:`no`,children:e.bundleId})}),(0,z.jsx)(L,{className:`text-xs tabular-nums`,children:m(e.byteSize)}),(0,z.jsx)(L,{className:`hidden sm:table-cell`,children:(0,z.jsx)(p,{uuid:e.bundleId})})]},e.bundleId))})]}),d!==void 0||f!==void 0?(0,z.jsxs)(`nav`,{"aria-label":`Patch pages`,className:`flex items-center justify-end gap-2 border-t px-4 py-2`,children:[(0,z.jsxs)(t,{className:`min-h-11 sm:min-h-7`,disabled:f===void 0||o&&s.isPlaceholderData,onClick:()=>a({after:f}),size:`sm`,variant:`ghost`,children:[(0,z.jsx)(te,{"data-icon":`inline-start`}),`Newer`]}),(0,z.jsxs)(t,{className:`min-h-11 sm:min-h-7`,disabled:d===void 0||o&&s.isPlaceholderData,onClick:()=>a({before:d}),size:`sm`,variant:`ghost`,children:[`Older`,(0,z.jsx)(oe,{"data-icon":`inline-end`})]})]}):null]})]})}var dt=(e,t)=>{let n=e.data.find(e=>e.bundleId===t);if(n!==void 0)return{kind:`patch`,byteSize:n.byteSize};let r=e.data.at(-1)?.bundleId;return e.next!==void 0&&r!==void 0&&t<r?{kind:`unknown`}:{kind:`full`}};function ft({download:e}){switch(e.kind){case`patch`:return(0,z.jsxs)(`span`,{className:`text-xs`,children:[`Patch`,` `,(0,z.jsxs)(`span`,{className:`text-muted-foreground tabular-nums`,children:[`(`,m(e.byteSize),`)`]})]});case`full`:return(0,z.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:`Full bundle`});case`unknown`:return(0,z.jsx)(`a`,{className:`text-xs underline-offset-4 hover:underline`,href:`#patches`,children:`See patches`})}}function pt({detail:e}){let{servedNow:t,patches:r,catalogScopeKey:i}=e,a=(0,z.jsxs)(l,{className:`inline-flex items-center gap-0.5 underline-offset-4 hover:underline`,search:{scopeKey:i},to:`/`,children:[`All releases in this scope`,(0,z.jsx)(u,{"aria-hidden":`true`,className:`size-3`})]});return(0,z.jsxs)(C,{className:`overflow-hidden shadow-sm`,children:[(0,z.jsx)(E,{className:`border-b px-4 py-3`,children:(0,z.jsx)(y,{className:`text-sm`,children:(0,z.jsx)(`h2`,{children:`Served now`})})}),(0,z.jsx)(w,{className:`p-0`,children:t.length===0?(0,z.jsxs)(M,{className:`py-10`,children:[(0,z.jsxs)(O,{children:[(0,z.jsx)(D,{variant:`icon`,children:(0,z.jsx)(Ce,{})}),(0,z.jsx)(A,{children:`No OTA for this build yet`}),(0,z.jsxs)(j,{children:[`No release in this build's scope is newer than its built-in bundle. Deploy one with`,` `,(0,z.jsx)(`code`,{className:`font-mono`,children:`hot-updater deploy`}),`, and it shows here.`]})]}),(0,z.jsx)(k,{children:(0,z.jsx)(l,{className:n({className:`min-h-11 sm:min-h-8`,variant:`outline`}),search:{scopeKey:i},to:`/`,children:`All releases in this scope`})})]}):(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(R,{"aria-label":`Served now`,className:`table-fixed`,children:[(0,z.jsx)(N,{children:(0,z.jsxs)(I,{children:[(0,z.jsx)(P,{children:`Bundle`}),(0,z.jsx)(P,{className:`hidden w-40 md:table-cell`,children:`Rollout`}),(0,z.jsx)(P,{className:`hidden w-32 sm:table-cell`,children:`Created`}),(0,z.jsx)(P,{className:`w-32`,children:`First OTA download`})]})}),(0,z.jsx)(F,{children:t.map(e=>{let t=e.bundleId,n=e.rolloutCohortCount/_e*100;return(0,z.jsxs)(I,{children:[(0,z.jsx)(L,{className:`py-3 whitespace-normal`,children:(0,z.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-1`,children:[(0,z.jsx)(l,{className:`font-mono text-xs [overflow-wrap:anywhere] underline-offset-4 hover:underline`,search:{releaseId:e.releaseId},title:t,to:`/`,translate:`no`,children:t}),e.message?(0,z.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e.message}):null]})}),(0,z.jsx)(L,{className:`hidden md:table-cell`,children:(0,z.jsxs)(`div`,{className:`flex flex-wrap gap-1`,children:[e.targetCohorts.length>0?(0,z.jsx)(T,{variant:`secondary`,children:e.targetCohorts.length===1?`1 cohort`:`${e.targetCohorts.length} cohorts`}):(0,z.jsx)(Se,{percentage:n}),e.shouldForceUpdate?(0,z.jsx)(T,{variant:`outline`,children:`Forced`}):null]})}),(0,z.jsx)(L,{className:`hidden sm:table-cell`,children:(0,z.jsx)(p,{uuid:t})}),(0,z.jsx)(L,{children:(0,z.jsx)(ft,{download:dt(r,t)})})]},e.releaseId)})})]}),(0,z.jsxs)(`p`,{className:`border-t px-4 py-3 text-xs text-muted-foreground`,children:[`What the update check serves an install of this build now, newest first: not the history. `,a]})]})})]})}function mt({buildId:r,search:i,onSearchChange:a}){let o=be(r),c=o.data,u={...i.patchesBefore===void 0?{}:{before:i.patchesBefore},...i.patchesAfter===void 0?{}:{after:i.patchesAfter}};return(0,z.jsxs)(`div`,{className:`flex h-svh min-h-0 flex-col`,children:[(0,z.jsxs)(`header`,{className:`sticky top-0 z-10 flex shrink-0 items-center gap-x-2 border-b bg-background px-3 py-3 sm:min-h-12 sm:bg-card/70 sm:px-4 sm:backdrop-blur-sm`,children:[(0,z.jsx)(s,{className:`-ml-1 size-11 lg:size-7`}),(0,z.jsxs)(l,{className:n({className:`min-h-11 sm:min-h-7`,size:`sm`,variant:`ghost`}),to:`/native-builds`,children:[(0,z.jsx)(te,{"data-icon":`inline-start`}),`Native builds`]}),c?(0,z.jsxs)(`h1`,{className:`flex min-w-0 items-center gap-1.5 text-sm font-medium`,children:[(0,z.jsx)(ve,{className:`size-3.5 shrink-0 text-muted-foreground`,platform:c.build.platform}),(0,z.jsxs)(`span`,{className:`min-w-0 [overflow-wrap:anywhere]`,children:[f(c.build.platform),` `,ne[c.build.artifact_kind].label,` ·`,` `,(0,z.jsx)(`span`,{translate:`no`,children:c.channel})]}),(0,z.jsx)(`span`,{className:`hidden text-xs font-normal text-muted-foreground tabular-nums sm:inline`,children:m(c.build.byte_size)})]}):(0,z.jsx)(`h1`,{className:`sr-only`,children:`Native build`})]}),(0,z.jsx)(`div`,{className:`min-h-0 min-w-0 flex-1 overflow-y-auto bg-muted/5 p-3 sm:p-6`,children:(0,z.jsx)(`div`,{className:`mx-auto flex w-full max-w-5xl flex-col gap-4 sm:gap-6`,children:o.isError?(0,z.jsxs)(S,{variant:`destructive`,children:[(0,z.jsx)(b,{}),(0,z.jsx)(v,{children:`The native build couldn't be loaded`}),(0,z.jsx)(x,{children:o.error.message}),(0,z.jsx)(ge,{children:(0,z.jsxs)(t,{onClick:()=>void o.refetch(),size:`xs`,variant:`outline`,children:[(0,z.jsx)(fe,{"data-icon":`inline-start`}),`Retry`]})})]}):c===void 0?(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(`span`,{className:`sr-only`,children:`Loading the native build`}),(0,z.jsx)(e,{className:`h-56 w-full rounded-xl`}),(0,z.jsx)(e,{className:`h-64 w-full rounded-xl`})]}):c===null?(0,z.jsxs)(M,{className:`border py-16`,children:[(0,z.jsxs)(O,{children:[(0,z.jsx)(D,{variant:`icon`,children:(0,z.jsx)(de,{})}),(0,z.jsx)(A,{children:`Native build not found`}),(0,z.jsxs)(j,{children:[`No native build has this ID. It may have been deleted with`,` `,(0,z.jsx)(`code`,{className:`font-mono`,children:`native-build delete`}),`, or be from another console.`]})]}),(0,z.jsx)(k,{children:(0,z.jsx)(l,{className:n({className:`min-h-11 sm:min-h-8`,variant:`outline`}),to:`/native-builds`,children:`Show all native builds`})})]}):(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(ct,{build:c.build}),(0,z.jsx)(Te,{detail:c}),(0,z.jsx)(pt,{detail:c}),(0,z.jsx)(ut,{detail:c,onPage:e=>a({...e.before===void 0?{}:{patchesBefore:e.before},...e.after===void 0?{}:{patchesAfter:e.after}}),page:u})]})})})]})}function ht(){let{buildId:e}=h.useParams(),t=h.useSearch(),n=h.useNavigate();return(0,z.jsx)(mt,{buildId:e,onSearchChange:e=>void n({search:e,replace:!0}),search:t})}export{ht as component};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/native-builds_._buildId-
|
|
2
|
-
import{ir as e}from"./sidebar-Di9SN47G.js";import{n as t,r as n,t as r}from"./preload-helper-B44EvKhG.js";import{t as i}from"./-native-builds-search-C-TGpFAm.js";var a=e(`circle-check`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),o=n(`/native-builds_/$buildId`)({component:t(()=>r(()=>import(`./native-builds_._buildId-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/native-builds_._buildId-DD58_Phd.js","assets/sidebar-Di9SN47G.js","assets/link-DTEyW70e.js","assets/arrow-up-right-DK8Zdg40.js","assets/native-builds-BOC71grI.js","assets/relativeTime-YQt84dYr.js","assets/uuidv7-zXMtwR9Q.js","assets/chevron-right-BoUXo82O.js","assets/download-Cf24LBde.js","assets/history-DqHlgSuV.js","assets/-native-builds-search-C-TGpFAm.js","assets/refresh-cw-B9HHjLej.js","assets/StoreSubmission-ViTkW4eJ.js","assets/copy-DsuLj3oj.js","assets/badge-DWFcDWho.js","assets/dist-CPlO6ko9.js","assets/api-P2g8dCNg.js","assets/useMutation-DbYw7boA.js","assets/PlatformIcon-BBWQlWm9.js","assets/RolloutPercentageBadge-Cxogpi8F.js","assets/empty-B3Uwdd6k.js","assets/table-Bpy3SvSo.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{ir as e}from"./sidebar-Di9SN47G.js";import{n as t,r as n,t as r}from"./preload-helper-B44EvKhG.js";import{t as i}from"./-native-builds-search-C-TGpFAm.js";var a=e(`circle-check`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),o=n(`/native-builds_/$buildId`)({component:t(()=>r(()=>import(`./native-builds_._buildId-DD58_Phd.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21])),`component`),validateSearch:i});export{a as n,o as t};
|