UNPKG

@loaders.gl/json

Version:

Framework-independent loader for JSON and streaming JSON formats

36 lines 1.41 kB
// loaders.gl // SPDX-License-Identifier: MIT // Copyright (c) vis.gl contributors import { TableBatchBuilder } from '@loaders.gl/schema-utils'; import { makeLineIterator, makeNumberedLineIterator, makeTextDecoderIterator, toArrayBufferIterator } from '@loaders.gl/loader-utils'; export async function* parseNDJSONInBatches(binaryAsyncIterator, options) { const textIterator = makeTextDecoderIterator(toArrayBufferIterator(binaryAsyncIterator)); const lineIterator = makeLineIterator(textIterator); const numberedLineIterator = makeNumberedLineIterator(lineIterator); const schema = null; const shape = 'row-table'; // @ts-ignore const tableBatchBuilder = new TableBatchBuilder(schema, { ...(options?.core || options), shape }); for await (const { counter, line } of numberedLineIterator) { try { const row = JSON.parse(line); tableBatchBuilder.addRow(row); tableBatchBuilder.chunkComplete(line); const batch = tableBatchBuilder.getFullBatch(); if (batch) { yield batch; } } catch (error) { throw new Error(`NDJSONLoader: failed to parse JSON on line ${counter}`); } } const batch = tableBatchBuilder.getFinalBatch(); if (batch) { yield batch; } } //# sourceMappingURL=parse-ndjson-in-batches.js.map