@@ -22,6 +22,7 @@ import { eventToGenerator } from "../utils/eventToGenerator";
2222import { base64FromBytes } from "../utils/base64FromBytes" ;
2323import { isFrontend } from "../utils/isFrontend" ;
2424import { createBlobs } from "../utils/createBlobs" ;
25+ import type { XetTokenParams } from "../utils/uploadShards" ;
2526import { uploadShards } from "../utils/uploadShards" ;
2627import { splitAsyncGenerator } from "../utils/splitAsyncGenerator" ;
2728import { SplicedBlob } from "../utils/SplicedBlob" ;
@@ -350,8 +351,8 @@ export async function* commitIter(params: CommitParams): AsyncGenerator<CommitPr
350351 if ( useXet && json . transfer !== "xet" ) {
351352 useXet = false ;
352353 }
353- let xetRefreshWriteTokenUrl : string | undefined ;
354- let xetSessionId : string | undefined ;
354+
355+ let xetParams : XetTokenParams | null = null ;
355356
356357 if ( useXet ) {
357358 // First get all the files that are already uploaded out of the way
@@ -377,16 +378,17 @@ export async function* commitIter(params: CommitParams): AsyncGenerator<CommitPr
377378 state : "uploading" ,
378379 } ;
379380 } else {
380- xetRefreshWriteTokenUrl = obj . actions . upload . href ;
381- // Also, obj.actions.upload.header: {
382- // X-Xet-Cas-Url: string;
383- // X-Xet-Access-Token: string;
384- // X-Xet-Token-Expiration: string;
385- // X-Xet-Session-Id: string;
386- // }
387381 const headers = new Headers ( obj . actions . upload . header ) ;
388- xetSessionId = headers . get ( "X-Xet-Session-Id" ) ?? undefined ;
389- // todo: use other data, like x-xet-cas-url, ...
382+
383+ xetParams = {
384+ sessionId : headers . get ( "X-Xet-Session-Id" ) ?? undefined ,
385+ casUrl : headers . get ( "X-Xet-Cas-Url" ) ?? undefined ,
386+ accessToken : headers . get ( "X-Xet-Access-Token" ) ?? undefined ,
387+ expiresAt : headers . get ( "X-Xet-Token-Expiration" )
388+ ? new Date ( parseInt ( headers . get ( "X-Xet-Token-Expiration" ) ?? "0" ) * 1000 )
389+ : undefined ,
390+ refreshWriteTokenUrl : obj . actions . upload . href ,
391+ } ;
390392 }
391393 }
392394 const source = ( async function * ( ) {
@@ -399,8 +401,8 @@ export async function* commitIter(params: CommitParams): AsyncGenerator<CommitPr
399401 yield { content : op . content , path : op . path , sha256 : obj . oid } ;
400402 }
401403 } ) ( ) ;
402- if ( xetRefreshWriteTokenUrl ) {
403- const xetRefreshWriteTokenUrlFixed = xetRefreshWriteTokenUrl ;
404+ if ( xetParams ) {
405+ const fixedXetParams = xetParams ;
404406 const sources = splitAsyncGenerator ( source , 5 ) ;
405407 yield * eventToGenerator ( ( yieldCallback , returnCallback , rejectCallback ) =>
406408 Promise . all (
@@ -410,21 +412,19 @@ export async function* commitIter(params: CommitParams): AsyncGenerator<CommitPr
410412 accessToken,
411413 hubUrl : params . hubUrl ?? HUB_URL ,
412414 repo : repoId ,
413- xetRefreshWriteTokenUrl : xetRefreshWriteTokenUrlFixed ,
414- xetSessionId,
415+ xetParams : fixedXetParams ,
415416 // todo: maybe leave empty if PR?
416417 rev : params . branch ?? "main" ,
417418 isPullRequest : params . isPullRequest ,
418419 yieldCallback : ( event ) => yieldCallback ( { ...event , state : "uploading" } ) ,
419420 } ) ) {
420421 if ( event . event === "file" ) {
421- // No need: uploading xorbs already sent a fileProgress event with progress 1
422- // yieldCallback({
423- // event: "fileProgress" as const,
424- // path: event.path,
425- // progress: 1,
426- // state: "uploading" as const,
427- // });
422+ yieldCallback ( {
423+ event : "fileProgress" as const ,
424+ path : event . path ,
425+ progress : 1 ,
426+ state : "uploading" as const ,
427+ } ) ;
428428 } else if ( event . event === "fileProgress" ) {
429429 yieldCallback ( {
430430 event : "fileProgress" as const ,
0 commit comments