@@ -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" ;
@@ -361,8 +362,8 @@ export async function* commitIter(params: CommitParams): AsyncGenerator<CommitPr
361362 if ( useXet && json . transfer !== "xet" ) {
362363 useXet = false ;
363364 }
364- let xetRefreshWriteTokenUrl : string | undefined ;
365- let xetSessionId : string | undefined ;
365+
366+ let xetParams : XetTokenParams | null = null ;
366367
367368 if ( useXet ) {
368369 // First get all the files that are already uploaded out of the way
@@ -388,16 +389,17 @@ export async function* commitIter(params: CommitParams): AsyncGenerator<CommitPr
388389 state : "uploading" ,
389390 } ;
390391 } else {
391- xetRefreshWriteTokenUrl = obj . actions . upload . href ;
392- // Also, obj.actions.upload.header: {
393- // X-Xet-Cas-Url: string;
394- // X-Xet-Access-Token: string;
395- // X-Xet-Token-Expiration: string;
396- // X-Xet-Session-Id: string;
397- // }
398392 const headers = new Headers ( obj . actions . upload . header ) ;
399- xetSessionId = headers . get ( "X-Xet-Session-Id" ) ?? undefined ;
400- // todo: use other data, like x-xet-cas-url, ...
393+
394+ xetParams = {
395+ sessionId : headers . get ( "X-Xet-Session-Id" ) ?? undefined ,
396+ casUrl : headers . get ( "X-Xet-Cas-Url" ) ?? undefined ,
397+ accessToken : headers . get ( "X-Xet-Access-Token" ) ?? undefined ,
398+ expiresAt : headers . get ( "X-Xet-Token-Expiration" )
399+ ? new Date ( parseInt ( headers . get ( "X-Xet-Token-Expiration" ) ?? "0" ) * 1000 )
400+ : undefined ,
401+ refreshWriteTokenUrl : obj . actions . upload . href ,
402+ } ;
401403 }
402404 }
403405 const source = ( async function * ( ) {
@@ -410,8 +412,8 @@ export async function* commitIter(params: CommitParams): AsyncGenerator<CommitPr
410412 yield { content : op . content , path : op . path , sha256 : obj . oid } ;
411413 }
412414 } ) ( ) ;
413- if ( xetRefreshWriteTokenUrl ) {
414- const xetRefreshWriteTokenUrlFixed = xetRefreshWriteTokenUrl ;
415+ if ( xetParams ) {
416+ const fixedXetParams = xetParams ;
415417 const sources = splitAsyncGenerator ( source , 5 ) ;
416418 yield * eventToGenerator ( ( yieldCallback , returnCallback , rejectCallback ) =>
417419 Promise . all (
@@ -421,21 +423,19 @@ export async function* commitIter(params: CommitParams): AsyncGenerator<CommitPr
421423 accessToken,
422424 hubUrl : params . hubUrl ?? HUB_URL ,
423425 repo : repoId ,
424- xetRefreshWriteTokenUrl : xetRefreshWriteTokenUrlFixed ,
425- xetSessionId,
426+ xetParams : fixedXetParams ,
426427 // todo: maybe leave empty if PR?
427428 rev : params . branch ?? "main" ,
428429 isPullRequest : params . isPullRequest ,
429430 yieldCallback : ( event ) => yieldCallback ( { ...event , state : "uploading" } ) ,
430431 } ) ) {
431432 if ( event . event === "file" ) {
432- // No need: uploading xorbs already sent a fileProgress event with progress 1
433- // yieldCallback({
434- // event: "fileProgress" as const,
435- // path: event.path,
436- // progress: 1,
437- // state: "uploading" as const,
438- // });
433+ yieldCallback ( {
434+ event : "fileProgress" as const ,
435+ path : event . path ,
436+ progress : 1 ,
437+ state : "uploading" as const ,
438+ } ) ;
439439 } else if ( event . event === "fileProgress" ) {
440440 yieldCallback ( {
441441 event : "fileProgress" as const ,
0 commit comments