UNPKG

@loaders.gl/core

Version:

The core API for working with loaders.gl loaders and writers

37 lines (36 loc) 1.36 kB
// loaders.gl // SPDX-License-Identifier: MIT // Copyright (c) vis.gl contributors import { makeStringIterator } from "./make-string-iterator.js"; import { makeArrayBufferIterator } from "./make-array-buffer-iterator.js"; import { makeBlobIterator } from "./make-blob-iterator.js"; import { makeStreamIterator } from "./make-stream-iterator.js"; import { isBlob, isReadableStream, isResponse } from "../../javascript-utils/is-type.js"; /** * Returns an iterator that breaks its input into chunks and yields them one-by-one. * @param data * @param options * @returns * This function can e.g. be used to enable data sources that can only be read atomically * (such as `Blob` and `File` via `FileReader`) to still be parsed in batches. */ export function makeIterator(data, options) { if (typeof data === 'string') { // Note: Converts string chunks to binary return makeStringIterator(data, options); } if (data instanceof ArrayBuffer) { return makeArrayBufferIterator(data, options); } if (isBlob(data)) { return makeBlobIterator(data, options); } if (isReadableStream(data)) { return makeStreamIterator(data, options); } if (isResponse(data)) { const response = data; return makeStreamIterator(response.body, options); } throw new Error('makeIterator'); }