license import { util } from '@tensorflow/tfjs-core' ; import { FileChunkIterator , FileChunkIteratorOptions } from './file_chunk_iterator' ; /**
 * Provide a stream of chunks from a URL.
 *
 * Note this class first downloads the entire file into memory before providing
 * the first element from the stream.  This is because the Fetch API does not
 * yet reliably provide a reader stream for the response body.
 */ export async function urlChunkIterator ( url , options = { } , fetchFunc ? ) { let urlString ; let requestInit ; if ( ( typeof url ) === 'string' ) { urlString = url as string ; } else { urlString = ( url as Request ) . url ; requestInit = getRequestInitFromRequest ( url as Request ) ; } const response = await ( fetchFunc || util . fetch ) ( urlString , requestInit ) ; if ( response . ok ) { const uint8Array = new Uint8Array ( await response . arrayBuffer ( ) ) ; return new FileChunkIterator ( uint8Array , options ) ; } else { throw new Error ( response . statusText ) ; } } const getRequestInitFromRequest = ( request ) => { const init = { method : request . method , headers : request . headers , body : request . body , mode : request . mode , credentials : request . credentials , cache : request . cache , redirect : request . redirect , referrer : request . referrer , integrity : request . integrity , } ; return init ; } ;