UNPKG

@loaders.gl/json

Version:

Framework-independent loader for JSON and streaming JSON formats

46 lines (40 loc) 1.33 kB
// loaders.gl // SPDX-License-Identifier: MIT // Copyright (c) vis.gl contributors // Copyright Foursquare, Inc 20222 import { type WriterWithEncoder, type WriterOptions, concatenateArrayBuffersAsync } from '@loaders.gl/loader-utils'; import type {Table, TableBatch} from '@loaders.gl/schema'; import {encodeTableAsGeojsonInBatches} from './lib/encoders/geojson-encoder'; export type GeoJSONWriterOptions = WriterOptions & { geojson?: { featureArray?: boolean; geometryColumn?: number | null; }; chunkSize?: number; }; export const GeoJSONWriter = { id: 'geojson', version: 'latest', module: 'geojson', name: 'GeoJSON', extensions: ['geojson'], mimeTypes: ['application/geo+json'], text: true, options: { geojson: { featureArray: false, geometryColumn: null } }, async encode(table: Table, options: GeoJSONWriterOptions): Promise<ArrayBuffer> { const tableIterator = [table] as TableBatch[]; const batches = encodeTableAsGeojsonInBatches(tableIterator, options); return await concatenateArrayBuffersAsync(batches); }, encodeInBatches: (tableIterator: AsyncIterable<TableBatch> | Iterable<TableBatch>, options) => encodeTableAsGeojsonInBatches(tableIterator, options) } as const satisfies WriterWithEncoder<Table, TableBatch, GeoJSONWriterOptions>;