diff --git a/modules/arrow/package.json b/modules/arrow/package.json index a085dadeb2..bfd1926efb 100644 --- a/modules/arrow/package.json +++ b/modules/arrow/package.json @@ -32,6 +32,10 @@ "types": "./dist/index.d.ts", "import": "./dist/index.js", "require": "./dist/index.cjs" + }, + "./exports/*": { + "types": "./dist/exports/*.d.ts", + "import": "./dist/exports/*.js" } }, "sideEffects": false, diff --git a/modules/arrow/src/arrow-loader.ts b/modules/arrow/src/arrow-loader.ts index 73c566329b..467958242e 100644 --- a/modules/arrow/src/arrow-loader.ts +++ b/modules/arrow/src/arrow-loader.ts @@ -2,59 +2,12 @@ // SPDX-License-Identifier: MIT // Copyright (c) vis.gl contributors -import type {Loader, LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils'; -import type { - ArrayRowTable, - ArrowTableBatch, - ColumnarTable, - ObjectRowTable -} from '@loaders.gl/schema'; -import type {ArrowTable} from './lib/arrow-table'; -import {parseArrowSync} from './parsers/parse-arrow-sync'; -import {parseArrowInBatches} from './parsers/parse-arrow-in-batches'; +import type {LoaderWithParser} from '@loaders.gl/loader-utils'; +import type {Table, ArrowTableBatch} from '@loaders.gl/schema'; +import {parseArrowSync, parseArrowInBatches} from './lib/parsers/parse-arrow'; -// __VERSION__ is injected by babel-plugin-version-inline -// @ts-ignore TS2304: Cannot find name '__VERSION__'. -const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest'; - -/** ArrowLoader options */ -export type ArrowLoaderOptions = LoaderOptions & { - /** ArrowLoader options */ - arrow?: { - /** Shape of returned data */ - shape: 'arrow-table' | 'columnar-table' | 'array-row-table' | 'object-row-table'; - /** Debounce time between batches (prevent excessive numbers of small batches) */ - batchDebounceMs?: number; - /** Override the URL to the worker bundle (by default loads from unpkg.com) */ - workerUrl?: string; - }; -}; - -/** ArrowJS table loader */ -export const ArrowWorkerLoader = { - dataType: null as unknown as ArrowTable, - batchType: null as never, - - name: 'Apache Arrow', - id: 'arrow', - module: 'arrow', - version: VERSION, - // worker: true, - category: 'table', - extensions: ['arrow', 'feather'], - mimeTypes: [ - 'application/vnd.apache.arrow.file', - 'application/vnd.apache.arrow.stream', - 'application/octet-stream' - ], - binary: true, - tests: ['ARROW'], - options: { - arrow: { - shape: 'columnar-table' - } - } -} as const satisfies Loader; +import type {ArrowLoaderOptions} from './exports/arrow-loader'; +import {ArrowWorkerLoader} from './exports/arrow-loader'; /** ArrowJS table loader */ export const ArrowLoader = { @@ -64,8 +17,4 @@ export const ArrowLoader = { parseSync: (arraybuffer: ArrayBuffer, options?: ArrowLoaderOptions) => parseArrowSync(arraybuffer, options?.arrow), parseInBatches: parseArrowInBatches -} as const satisfies LoaderWithParser< - ArrowTable | ColumnarTable | ObjectRowTable | ArrayRowTable, - ArrowTableBatch, - ArrowLoaderOptions ->; +} as const satisfies LoaderWithParser; diff --git a/modules/arrow/src/arrow-writer.ts b/modules/arrow/src/arrow-writer.ts index 47af50de62..b67b7335c9 100644 --- a/modules/arrow/src/arrow-writer.ts +++ b/modules/arrow/src/arrow-writer.ts @@ -1,7 +1,7 @@ // import type {} from '@loaders.gl/loader-utils'; import type {WriterWithEncoder, WriterOptions} from '@loaders.gl/loader-utils'; -import {ColumnarTable, encodeArrowSync} from './lib/encode-arrow'; +import {ColumnarTable, encodeArrowSync} from './lib/encoders/encode-arrow'; // __VERSION__ is injected by babel-plugin-version-inline // @ts-ignore TS2304: Cannot find name '__VERSION__'. diff --git a/modules/arrow/src/exports/arrow-loader.ts b/modules/arrow/src/exports/arrow-loader.ts new file mode 100644 index 0000000000..406b996906 --- /dev/null +++ b/modules/arrow/src/exports/arrow-loader.ts @@ -0,0 +1,49 @@ +// loaders.gl +// SPDX-License-Identifier: MIT +// Copyright (c) vis.gl contributors + +import type {Loader, LoaderOptions} from '@loaders.gl/loader-utils'; +import type {ArrowTable} from '../schema/arrow-table-type'; + +// __VERSION__ is injected by babel-plugin-version-inline +// @ts-ignore TS2304: Cannot find name '__VERSION__'. +const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest'; + +/** ArrowLoader options */ +export type ArrowLoaderOptions = LoaderOptions & { + /** ArrowLoader options */ + arrow?: { + /** Shape of returned data */ + shape: 'arrow-table' | 'columnar-table' | 'array-row-table' | 'object-row-table'; + /** Debounce time between batches (prevent excessive numbers of small batches) */ + batchDebounceMs?: number; + /** Override the URL to the worker bundle (by default loads from unpkg.com) */ + workerUrl?: string; + }; +}; + +/** ArrowJS table loader */ +export const ArrowWorkerLoader = { + dataType: null as unknown as ArrowTable, + batchType: null as never, + + name: 'Apache Arrow', + id: 'arrow', + module: 'arrow', + version: VERSION, + // worker: true, + category: 'table', + extensions: ['arrow', 'feather'], + mimeTypes: [ + 'application/vnd.apache.arrow.file', + 'application/vnd.apache.arrow.stream', + 'application/octet-stream' + ], + binary: true, + tests: ['ARROW'], + options: { + arrow: { + shape: 'columnar-table' + } + } +} as const satisfies Loader; diff --git a/modules/arrow/src/exports/geoarrow-loader.ts b/modules/arrow/src/exports/geoarrow-loader.ts new file mode 100644 index 0000000000..725d8e5e30 --- /dev/null +++ b/modules/arrow/src/exports/geoarrow-loader.ts @@ -0,0 +1,24 @@ +// loaders.gl +// SPDX-License-Identifier: MIT +// Copyright (c) vis.gl contributors + +import type {Loader, LoaderOptions} from '@loaders.gl/loader-utils'; +import {ArrowWorkerLoader} from './arrow-loader'; +import type {BinaryGeometry} from '@loaders.gl/schema'; +import type {ArrowTable, ArrowTableBatch} from '../schema/arrow-table-type'; + +export type GeoArrowLoaderOptions = LoaderOptions & { + arrow?: { + shape?: 'arrow-table' | 'binary-geometry'; + }; +}; + +/** ArrowJS table loader */ +export const GeoArrowWorkerLoader = { + ...ArrowWorkerLoader, + options: { + arrow: { + shape: 'arrow-table' + } + } +} as const satisfies Loader; diff --git a/modules/arrow/src/geoarrow-loader.ts b/modules/arrow/src/geoarrow-loader.ts index e30059ecd2..a56529989c 100644 --- a/modules/arrow/src/geoarrow-loader.ts +++ b/modules/arrow/src/geoarrow-loader.ts @@ -2,28 +2,12 @@ // SPDX-License-Identifier: MIT // Copyright (c) vis.gl contributors -import type {Loader, LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils'; -import {ArrowWorkerLoader} from './arrow-loader'; -import type {GeoJSONTable, GeoJSONTableBatch, BinaryGeometry} from '@loaders.gl/schema'; -import type {ArrowTable, ArrowTableBatch} from './lib/arrow-table'; -import {parseGeoArrowSync} from './parsers/parse-geoarrow-sync'; -import {parseGeoArrowInBatches} from './parsers/parse-geoarrow-in-batches'; - -export type GeoArrowLoaderOptions = LoaderOptions & { - arrow?: { - shape?: 'arrow-table' | 'binary-geometry'; - }; -}; - -/** ArrowJS table loader */ -export const GeoArrowWorkerLoader = { - ...ArrowWorkerLoader, - options: { - arrow: { - shape: 'arrow-table' - } - } -} as const satisfies Loader; +import type {LoaderWithParser} from '@loaders.gl/loader-utils'; +import type {GeoJSONTable, GeoJSONTableBatch} from '@loaders.gl/schema'; +import type {ArrowTable, ArrowTableBatch} from './schema/arrow-table-type'; +import {parseGeoArrowSync, parseGeoArrowInBatches} from './lib/parsers/parse-geoarrow'; +import type {GeoArrowLoaderOptions} from './exports/geoarrow-loader'; +import {GeoArrowWorkerLoader} from './exports/geoarrow-loader'; /** * GeoArrowLoader loads an Apache Arrow table, parses GeoArrow type extension data diff --git a/modules/arrow/src/geoarrow-writer.ts b/modules/arrow/src/geoarrow-writer.ts index 2d2cbed594..63aadee0a5 100644 --- a/modules/arrow/src/geoarrow-writer.ts +++ b/modules/arrow/src/geoarrow-writer.ts @@ -2,7 +2,7 @@ import type {WriterWithEncoder, WriterOptions} from '@loaders.gl/loader-utils'; import {GeoJSONTable, BinaryGeometry} from '@loaders.gl/schema'; -import {encodeGeoArrowSync} from './lib/encode-geoarrow'; +import {encodeGeoArrowSync} from './lib/encoders/encode-geoarrow'; // __VERSION__ is injected by babel-plugin-version-inline // @ts-ignore TS2304: Cannot find name '__VERSION__'. diff --git a/modules/arrow/src/index.ts b/modules/arrow/src/index.ts index 1988c243be..d396004d37 100644 --- a/modules/arrow/src/index.ts +++ b/modules/arrow/src/index.ts @@ -2,35 +2,33 @@ // SPDX-License-Identifier: MIT // Copyright (c) vis.gl contributors -import type {ArrowLoaderOptions} from './arrow-loader'; -import {TableBatchBuilder} from '@loaders.gl/schema'; -import {ArrowTableBatchAggregator} from './lib/arrow-table-batch'; +// Types +export type {ArrowTable, ArrowTableBatch} from './schema/arrow-table-type'; +export {VECTOR_TYPES} from './lib/types'; +import {ArrowTableBatchAggregator} from './schema/arrow-table-batch'; // Make the ArrowBatch type available +import {TableBatchBuilder} from '@loaders.gl/schema'; TableBatchBuilder.ArrowBatch = ArrowTableBatchAggregator; -// TYPES - -export {getArrowType} from './schema/arrow-type-utils'; - -// SCHEMA - -// Types -export type {ArrowTable, ArrowTableBatch} from './lib/arrow-table'; -export {VECTOR_TYPES} from './types'; - // Arrow loader / Writer -export type {ArrowLoaderOptions}; -export {ArrowLoader, ArrowWorkerLoader} from './arrow-loader'; +export type {ArrowLoaderOptions} from './exports/arrow-loader'; +export {ArrowWorkerLoader} from './exports/arrow-loader'; +export {ArrowLoader} from './arrow-loader'; export {ArrowWriter} from './arrow-writer'; // Geoarrow loader -export {GeoArrowLoader, GeoArrowWorkerLoader} from './geoarrow-loader'; +export {GeoArrowWorkerLoader} from './exports/geoarrow-loader'; +export {GeoArrowLoader} from './geoarrow-loader'; // Schema utils export { + convertArrowToSchema, + convertSchemaToArrow, + + // DETAILED FUNCTIONS serializeArrowSchema, deserializeArrowSchema, serializeArrowMetadata, @@ -39,7 +37,11 @@ export { deserializeArrowField, serializeArrowType, deserializeArrowType -} from './schema/convert-arrow-schema'; +} from './lib//tables/convert-arrow-schema'; + +// Table utils +export {convertArrowToTable} from './lib/tables/convert-arrow-to-table'; +export {convertTableToArrow} from './lib/tables/convert-table-to-arrow'; // EXPERIMENTAL @@ -51,19 +53,17 @@ export type {GeoArrowEncoding} from '@loaders.gl/gis'; export type { BinaryDataFromGeoArrow, BinaryGeometriesFromArrowOptions -} from './geoarrow/convert-geoarrow-to-binary-geometry'; +} from './lib/geoarrow/convert-geoarrow-to-binary-geometry'; export { getBinaryGeometryTemplate, getBinaryGeometriesFromArrow, getTriangleIndices, getMeanCentersFromBinaryGeometries -} from './geoarrow/convert-geoarrow-to-binary-geometry'; - -export {updateBoundsFromGeoArrowSamples} from './geoarrow/get-arrow-bounds'; +} from './lib/geoarrow/convert-geoarrow-to-binary-geometry'; -export {parseGeometryFromArrow} from './geoarrow/convert-geoarrow-to-geojson-geometry'; +export {updateBoundsFromGeoArrowSamples} from './lib/geoarrow/get-arrow-bounds'; -export {convertArrowToGeoJSONTable} from './tables/convert-arrow-to-geojson-table'; +export {parseGeometryFromArrow} from './lib/geoarrow/convert-geoarrow-to-geojson-geometry'; // EXPERIMENTAL WORKER export {hardClone} from './workers/hard-clone'; diff --git a/modules/arrow/src/lib/encode-arrow.ts b/modules/arrow/src/lib/encoders/encode-arrow.ts similarity index 100% rename from modules/arrow/src/lib/encode-arrow.ts rename to modules/arrow/src/lib/encoders/encode-arrow.ts diff --git a/modules/arrow/src/lib/encode-geoarrow.ts b/modules/arrow/src/lib/encoders/encode-geoarrow.ts similarity index 100% rename from modules/arrow/src/lib/encode-geoarrow.ts rename to modules/arrow/src/lib/encoders/encode-geoarrow.ts diff --git a/modules/arrow/src/geoarrow/convert-geoarrow-to-binary-geometry.ts b/modules/arrow/src/lib/geoarrow/convert-geoarrow-to-binary-geometry.ts similarity index 100% rename from modules/arrow/src/geoarrow/convert-geoarrow-to-binary-geometry.ts rename to modules/arrow/src/lib/geoarrow/convert-geoarrow-to-binary-geometry.ts diff --git a/modules/arrow/src/geoarrow/convert-geoarrow-to-geojson-geometry.ts b/modules/arrow/src/lib/geoarrow/convert-geoarrow-to-geojson-geometry.ts similarity index 100% rename from modules/arrow/src/geoarrow/convert-geoarrow-to-geojson-geometry.ts rename to modules/arrow/src/lib/geoarrow/convert-geoarrow-to-geojson-geometry.ts diff --git a/modules/arrow/src/geoarrow/get-arrow-bounds.ts b/modules/arrow/src/lib/geoarrow/get-arrow-bounds.ts similarity index 100% rename from modules/arrow/src/geoarrow/get-arrow-bounds.ts rename to modules/arrow/src/lib/geoarrow/get-arrow-bounds.ts diff --git a/modules/arrow/src/parsers/parse-arrow-in-batches.ts b/modules/arrow/src/lib/parsers/parse-arrow.ts similarity index 78% rename from modules/arrow/src/parsers/parse-arrow-in-batches.ts rename to modules/arrow/src/lib/parsers/parse-arrow.ts index c54dcbc6c9..9d141bae42 100644 --- a/modules/arrow/src/parsers/parse-arrow-in-batches.ts +++ b/modules/arrow/src/lib/parsers/parse-arrow.ts @@ -2,13 +2,19 @@ // SPDX-License-Identifier: MIT // Copyright (c) vis.gl contributors -import type {ArrowTableBatch} from '../lib/arrow-table'; import * as arrow from 'apache-arrow'; -import {ArrowLoaderOptions} from '../arrow-loader'; -// import {isIterable} from '@loaders.gl/core'; +import type {Table} from '@loaders.gl/schema'; +import type {ArrowTableBatch} from '../../schema/arrow-table-type'; +import {ArrowLoaderOptions} from '../../exports/arrow-loader'; +import {convertArrowToTable} from '../tables/convert-arrow-to-table'; + +/** Parses arrow to a loaders.gl table. Defaults to `arrow-table` */ +export function parseArrowSync(arrayBuffer, options?: {shape?: Table['shape']}): Table { + const shape = options?.shape || 'arrow-table'; + const arrowTable = arrow.tableFromIPC([new Uint8Array(arrayBuffer)]); + return convertArrowToTable(arrowTable, shape); +} -/** - */ export function parseArrowInBatches( asyncIterator: AsyncIterable | Iterable, options?: ArrowLoaderOptions diff --git a/modules/arrow/src/lib/parsers/parse-geoarrow.ts b/modules/arrow/src/lib/parsers/parse-geoarrow.ts new file mode 100644 index 0000000000..ce24878b28 --- /dev/null +++ b/modules/arrow/src/lib/parsers/parse-geoarrow.ts @@ -0,0 +1,32 @@ +// loaders.gl +// SPDX-License-Identifier: MIT +// Copyright (c) vis.gl contributors + +import type {GeoJSONTable, GeoJSONTableBatch} from '@loaders.gl/schema'; +import type {ArrowTable, ArrowTableBatch} from '../../schema/arrow-table-type'; +import {parseArrowSync, parseArrowInBatches} from './parse-arrow'; +import {convertArrowToTable} from '../tables/convert-arrow-to-table'; + +// Parses arrow to a columnar table +export function parseGeoArrowSync( + arrayBuffer, + options?: {shape?: 'arrow-table' | 'geojson-table' | 'binary-geometry'} +): ArrowTable | GeoJSONTable { + // | BinaryGeometry + const table = parseArrowSync(arrayBuffer, {shape: 'arrow-table'}) as ArrowTable; + switch (options?.shape) { + case 'geojson-table': + return convertArrowToTable(table.data, 'geojson-table'); + default: + return table; + } +} + +/** + */ +export function parseGeoArrowInBatches( + asyncIterator: AsyncIterable | Iterable +): AsyncIterable { + // | BinaryGeometry + return parseArrowInBatches(asyncIterator); +} diff --git a/modules/arrow/src/schema/convert-arrow-schema.ts b/modules/arrow/src/lib/tables/convert-arrow-schema.ts similarity index 95% rename from modules/arrow/src/schema/convert-arrow-schema.ts rename to modules/arrow/src/lib/tables/convert-arrow-schema.ts index 18820522b1..167f35221c 100644 --- a/modules/arrow/src/schema/convert-arrow-schema.ts +++ b/modules/arrow/src/lib/tables/convert-arrow-schema.ts @@ -5,6 +5,16 @@ import type {DataType, Field, Schema, SchemaMetadata} from '@loaders.gl/schema'; import * as arrow from 'apache-arrow'; +/** Convert Apache Arrow Schema (class instance) to a serialized Schema (plain data) */ +export function convertArrowToSchema(arrowSchema: arrow.Schema): Schema { + return serializeArrowSchema(arrowSchema); +} + +/** Convert Apache Arrow Schema (class instance) to a serialized Schema (plain data) */ +export function convertSchemaToArrow(schema: Schema): arrow.Schema { + return deserializeArrowSchema(schema); +} + /** Convert Apache Arrow Schema (class instance) to a serialized Schema (plain data) */ export function serializeArrowSchema(arrowSchema: arrow.Schema): Schema { return { diff --git a/modules/arrow/src/lib/tables/convert-arrow-to-table.ts b/modules/arrow/src/lib/tables/convert-arrow-to-table.ts new file mode 100644 index 0000000000..2861a490c4 --- /dev/null +++ b/modules/arrow/src/lib/tables/convert-arrow-to-table.ts @@ -0,0 +1,144 @@ +// loaders.gl +// SPDX-License-Identifier: MIT +// Copyright (c) vis.gl contributors + +import * as arrow from 'apache-arrow'; +import type { + Table, + ArrayRowTable, + ColumnarTable, + ObjectRowTable, + GeoJSONTable, + Feature +} from '@loaders.gl/schema'; +import type {ArrowTable} from '../../schema/arrow-table-type'; + +import {convertTable} from '@loaders.gl/schema'; +import {getGeometryColumnsFromSchema} from '@loaders.gl/gis'; +import {convertArrowToSchema} from '../tables/convert-arrow-schema'; +import {parseGeometryFromArrow} from '../geoarrow/convert-geoarrow-to-geojson-geometry'; + +/** + * Convert an Apache Arrow table to a loaders.gl Table + * @note Currently does not convert schema + */ +export function convertArrowToTable(arrow: arrow.Table, shape: 'arrow-table'): ArrowTable; +export function convertArrowToTable(arrow: arrow.Table, shape: 'columnar-table'): ColumnarTable; +export function convertArrowToTable(arrow: arrow.Table, shape: 'object-row-table'): ObjectRowTable; +export function convertArrowToTable(arrow: arrow.Table, shape: 'array-row-table'): ArrayRowTable; +export function convertArrowToTable(arrow: arrow.Table, shape: 'geojson-table'): GeoJSONTable; +export function convertArrowToTable(arrow: arrow.Table, shape: 'columnar-table'): ColumnarTable; +export function convertArrowToTable(arrow: arrow.Table, shape: Table['shape']): Table; + +/** + * Convert an Apache Arrow table to a loaders.gl Table + * @note Currently does not convert schema + */ +export function convertArrowToTable(arrowTable: arrow.Table, shape: Table['shape']): Table { + switch (shape) { + case 'arrow-table': + return convertArrowToArrowTable(arrowTable); + case 'array-row-table': + return convertArrowToArrayRowTable(arrowTable); + case 'object-row-table': + return convertArrowToObjectRowTable(arrowTable); + case 'columnar-table': + return convertArrowToColumnarTable(arrowTable); + case 'geojson-table': + return convertArrowToGeoJSONTable(arrowTable); + default: + throw new Error(shape); + } +} + +/** + * Wrap an apache arrow table in a loaders.gl table wrapper. + * From this additional conversions are available. + * @param arrowTable + * @returns + */ +function convertArrowToArrowTable(arrowTable: arrow.Table): ArrowTable { + return { + shape: 'arrow-table', + schema: convertArrowToSchema(arrowTable.schema), + data: arrowTable + }; +} + +function convertArrowToArrayRowTable(arrowTable: arrow.Table): Table { + const columnarTable = convertArrowToColumnarTable(arrowTable); + return convertTable(columnarTable, 'array-row-table'); +} + +function convertArrowToObjectRowTable(arrowTable: arrow.Table): Table { + const columnarTable = convertArrowToColumnarTable(arrowTable); + return convertTable(columnarTable, 'object-row-table'); +} + +/** + * Convert an Apache Arrow table to a ColumnarTable + * @note Currently does not convert schema + */ +function convertArrowToColumnarTable(arrowTable: arrow.Table): ColumnarTable { + // TODO - avoid calling `getColumn` on columns we are not interested in? + // Add options object? + + const columns: ColumnarTable['data'] = {}; + + for (const field of arrowTable.schema.fields) { + // This (is intended to) coalesce all record batches into a single typed array + const arrowColumn = arrowTable.getChild(field.name); + const values = arrowColumn?.toArray(); + columns[field.name] = values; + } + + const schema = convertArrowToSchema(arrowTable.schema); + + return { + shape: 'columnar-table', + schema, + data: columns + }; +} + +/** + * Convert an Apache Arrow table to a GeoJSONTable + * @note Currently does not convert schema + */ +function convertArrowToGeoJSONTable(arrowTable: arrow.Table): GeoJSONTable { + const schema = convertArrowToSchema(arrowTable.schema); + const geometryColumns = getGeometryColumnsFromSchema(schema); + + // get encoding from geometryColumns['geometry'] + const encoding = geometryColumns.geometry.encoding; + + const features: Feature[] = []; + + // Remove geometry columns + const propertyColumnNames = arrowTable.schema.fields + .map((field) => field.name) + // TODO - this deletes all geometry columns + .filter((name) => !(name in geometryColumns)); + const propertiesTable = arrowTable.select(propertyColumnNames); + + const arrowGeometryColumn = arrowTable.getChild('geometry'); + + for (let row = 0; row < arrowTable.numRows; row++) { + // get the geometry value from arrow geometry column + // Note that type can vary + const arrowGeometry = arrowGeometryColumn?.get(row); + // parse arrow geometry to geojson feature + const feature = parseGeometryFromArrow(arrowGeometry, encoding); + if (feature) { + const properties = propertiesTable.get(row)?.toJSON() || {}; + features.push({type: 'Feature', geometry: feature, properties}); + } + } + + return { + shape: 'geojson-table', + type: 'FeatureCollection', + schema, + features + }; +} diff --git a/modules/arrow/src/lib/tables/convert-table-to-arrow.ts b/modules/arrow/src/lib/tables/convert-table-to-arrow.ts new file mode 100644 index 0000000000..54192e8c75 --- /dev/null +++ b/modules/arrow/src/lib/tables/convert-table-to-arrow.ts @@ -0,0 +1,72 @@ +// loaders.gl +// SPDX-License-Identifier: MIT +// Copyright (c) vis.gl contributors + +import * as arrow from 'apache-arrow'; +import {Table, getTableLength, getTableNumCols, getTableCellAt} from '@loaders.gl/schema'; +import {deserializeArrowSchema} from '../tables/convert-arrow-schema'; + +/** + * * Convert a loaders.gl Table to an Apache Arrow Table + * @param mesh + * @param metadata + * @param batchSize + * @returns + */ +export function convertTableToArrow(table: Table, options?: {batchSize?: number}): arrow.Table { + switch (table.shape) { + case 'arrow-table': + return table.data as arrow.Table; + + case 'columnar-table': + // TODO - optimized implementation is possible + // return convertColumnarTableToArrow(table, options); + + // fall through + + default: + const arrowBatchIterator = makeTableToArrowBatchesIterator(table, options); + return new arrow.Table(arrowBatchIterator); + } +} + +export function* makeTableToArrowBatchesIterator( + table: Table, + options?: {batchSize?: number} +): IterableIterator { + const arrowSchema = deserializeArrowSchema(table.schema!); + + const length = getTableLength(table); + const numColumns = getTableNumCols(table); + const batchSize = options?.batchSize || length; + + const builders = arrowSchema?.fields.map((arrowField) => arrow.makeBuilder(arrowField)); + const structField = new arrow.Struct(arrowSchema.fields); + + let batchLength = 0; + for (let rowIndex = 0; rowIndex < length; rowIndex++) { + for (let columnIndex = 0; columnIndex < numColumns; ++columnIndex) { + const value = getTableCellAt(table, rowIndex, columnIndex); + + const builder = builders[columnIndex]; + builder.append(value); + batchLength++; + + if (batchLength >= batchSize) { + const datas = builders.map((builder) => builder.flush()); + const structData = new arrow.Data(structField, 0, batchLength, 0, undefined, datas); + yield new arrow.RecordBatch(arrowSchema, structData); + batchLength = 0; + } + } + } + + if (batchLength > 0) { + const datas = builders.map((builder) => builder.flush()); + const structData = new arrow.Data(structField, 0, batchLength, 0, undefined, datas); + yield new arrow.RecordBatch(arrowSchema, structData); + batchLength = 0; + } + + builders.map((builder) => builder.finish()); +} diff --git a/modules/arrow/src/types.ts b/modules/arrow/src/lib/types.ts similarity index 100% rename from modules/arrow/src/types.ts rename to modules/arrow/src/lib/types.ts diff --git a/modules/arrow/src/parsers/parse-arrow-sync.ts b/modules/arrow/src/parsers/parse-arrow-sync.ts deleted file mode 100644 index 231faa92dc..0000000000 --- a/modules/arrow/src/parsers/parse-arrow-sync.ts +++ /dev/null @@ -1,44 +0,0 @@ -// loaders.gl -// SPDX-License-Identifier: MIT -// Copyright (c) vis.gl contributors - -import type {ArrayRowTable, ColumnarTable, ObjectRowTable} from '@loaders.gl/schema'; -import type {ArrowTable} from '../lib/arrow-table'; -import {convertTable} from '@loaders.gl/schema'; -import * as arrow from 'apache-arrow'; -import {convertArrowToColumnarTable} from '../tables/convert-arrow-to-columnar-table'; -import {serializeArrowSchema} from '../schema/convert-arrow-schema'; - -// Parses arrow to a columnar table -export function parseArrowSync( - arrayBuffer, - options?: {shape?: 'arrow-table' | 'columnar-table' | 'object-row-table' | 'array-row-table'} -): ArrowTable | ColumnarTable | ObjectRowTable | ArrayRowTable { - const apacheArrowTable = arrow.tableFromIPC([new Uint8Array(arrayBuffer)]); - const arrowTable: ArrowTable = { - shape: 'arrow-table', - schema: serializeArrowSchema(apacheArrowTable.schema), - data: apacheArrowTable - }; - - const shape = options?.shape || 'arrow-table'; - switch (shape) { - case 'arrow-table': - return arrowTable; - - case 'columnar-table': - return convertArrowToColumnarTable(arrowTable); - - case 'object-row-table': - let columnarTable = convertArrowToColumnarTable(arrowTable); - return convertTable(columnarTable, 'object-row-table'); - - case 'array-row-table': - columnarTable = convertArrowToColumnarTable(arrowTable); - return convertTable(columnarTable, 'array-row-table'); - - default: - // TODO - throw new Error(shape); - } -} diff --git a/modules/arrow/src/parsers/parse-geoarrow-in-batches.ts b/modules/arrow/src/parsers/parse-geoarrow-in-batches.ts deleted file mode 100644 index 531a03e309..0000000000 --- a/modules/arrow/src/parsers/parse-geoarrow-in-batches.ts +++ /dev/null @@ -1,16 +0,0 @@ -// loaders.gl -// SPDX-License-Identifier: MIT -// Copyright (c) vis.gl contributors - -import type {GeoJSONTableBatch} from '@loaders.gl/schema'; -import type {ArrowTableBatch} from '../lib/arrow-table'; -import {parseArrowInBatches} from './parse-arrow-in-batches'; - -/** - */ -export function parseGeoArrowInBatches( - asyncIterator: AsyncIterable | Iterable -): AsyncIterable { - // | BinaryGeometry - return parseArrowInBatches(asyncIterator); -} diff --git a/modules/arrow/src/parsers/parse-geoarrow-sync.ts b/modules/arrow/src/parsers/parse-geoarrow-sync.ts deleted file mode 100644 index 5dabeb033d..0000000000 --- a/modules/arrow/src/parsers/parse-geoarrow-sync.ts +++ /dev/null @@ -1,23 +0,0 @@ -// loaders.gl -// SPDX-License-Identifier: MIT -// Copyright (c) vis.gl contributors - -import type {GeoJSONTable} from '@loaders.gl/schema'; -import type {ArrowTable} from '../lib/arrow-table'; -import {parseArrowSync} from './parse-arrow-sync'; -import {convertArrowToGeoJSONTable} from '../tables/convert-arrow-to-geojson-table'; - -// Parses arrow to a columnar table -export function parseGeoArrowSync( - arrayBuffer, - options?: {shape?: 'arrow-table' | 'geojson-table' | 'binary-geometry'} -): ArrowTable | GeoJSONTable { - // | BinaryGeometry - const table = parseArrowSync(arrayBuffer, {shape: 'arrow-table'}) as ArrowTable; - switch (options?.shape) { - case 'geojson-table': - return convertArrowToGeoJSONTable(table); - default: - return table; - } -} diff --git a/modules/arrow/src/lib/arrow-table-batch.ts b/modules/arrow/src/schema/arrow-table-batch.ts similarity index 93% rename from modules/arrow/src/lib/arrow-table-batch.ts rename to modules/arrow/src/schema/arrow-table-batch.ts index 856b5a34c7..75bcf49b53 100644 --- a/modules/arrow/src/lib/arrow-table-batch.ts +++ b/modules/arrow/src/schema/arrow-table-batch.ts @@ -3,9 +3,10 @@ // Copyright (c) vis.gl contributors import {ColumnarTableBatchAggregator} from '@loaders.gl/schema'; -import type {ArrowTableBatch} from './arrow-table'; +import type {ArrowTableBatch} from './arrow-table-type'; import * as arrow from 'apache-arrow'; +/** @note Should be part of @loaders.gl/schema - kept separate to avoid hard arrow dependency */ export class ArrowTableBatchAggregator extends ColumnarTableBatchAggregator { arrowSchema: arrow.Schema | null; diff --git a/modules/arrow/src/lib/arrow-table.ts b/modules/arrow/src/schema/arrow-table-type.ts similarity index 79% rename from modules/arrow/src/lib/arrow-table.ts rename to modules/arrow/src/schema/arrow-table-type.ts index a9ea9a3451..33a838072a 100644 --- a/modules/arrow/src/lib/arrow-table.ts +++ b/modules/arrow/src/schema/arrow-table-type.ts @@ -8,6 +8,7 @@ import type * as arrow from 'apache-arrow'; /** * A table organized as an Apache Arrow table * @note This is a variant of the type from loaders.gl/schema + * @note Should be part of @loaders.gl/schema - kept separate to avoid hard arrow dependency */ export type ArrowTable = { shape: 'arrow-table'; @@ -18,6 +19,7 @@ export type ArrowTable = { /** * Batch for a table organized as an Apache Arrow table * @note This is a variant of the type from loaders.gl/schema + * @note Should be part of @loaders.gl/schema - kept separate to avoid hard arrow dependency */ export type ArrowTableBatch = Batch & { shape: 'arrow-table'; diff --git a/modules/arrow/src/schema/arrow-type-utils.ts b/modules/arrow/src/schema/arrow-type-utils.ts deleted file mode 100644 index 9ffcf85bf1..0000000000 --- a/modules/arrow/src/schema/arrow-type-utils.ts +++ /dev/null @@ -1,55 +0,0 @@ -// loaders.gl -// SPDX-License-Identifier: MIT -// Copyright (c) vis.gl contributors - -import type {TypedArray} from '@loaders.gl/schema'; -import * as arrow from 'apache-arrow'; - -/** Return an Apache Arrow Type instance that corresponds to the type of the elements in the supplied Typed Array */ -export function getArrowType(array: TypedArray): arrow.DataType { - switch (array.constructor) { - case Int8Array: - return new arrow.Int8(); - case Uint8Array: - return new arrow.Uint8(); - case Int16Array: - return new arrow.Int16(); - case Uint16Array: - return new arrow.Uint16(); - case Int32Array: - return new arrow.Int32(); - case Uint32Array: - return new arrow.Uint32(); - case Float32Array: - return new arrow.Float32(); - case Float64Array: - return new arrow.Float64(); - default: - throw new Error('array type not supported'); - } -} - -/* -export function getArrowVector(array: TypedArray): AbstractVector { - switch (array.constructor) { - case Int8Array: - return Int8Vector.from(array); - case Uint8Array: - return Uint8Vector.from(array); - case Int16Array: - return Int16Vector.from(array); - case Uint16Array: - return Uint16Vector.from(array); - case Int32Array: - return Int32Vector.from(array); - case Uint32Array: - return Uint32Vector.from(array); - case Float32Array: - return Float32Vector.from(array); - case Float64Array: - return Float64Vector.from(array); - default: - throw new Error('array type not supported'); - } -} -*/ diff --git a/modules/arrow/src/tables/convert-arrow-to-columnar-table.ts b/modules/arrow/src/tables/convert-arrow-to-columnar-table.ts deleted file mode 100644 index 3815b16c2a..0000000000 --- a/modules/arrow/src/tables/convert-arrow-to-columnar-table.ts +++ /dev/null @@ -1,31 +0,0 @@ -// loaders.gl -// SPDX-License-Identifier: MIT -// Copyright (c) vis.gl contributors - -import type {ColumnarTable} from '@loaders.gl/schema'; -import type {ArrowTable} from '../lib/arrow-table'; - -/** - * Convert an Apache Arrow table to a ColumnarTable - * @note Currently does not convert schema - */ -export function convertArrowToColumnarTable(table: ArrowTable): ColumnarTable { - // TODO - avoid calling `getColumn` on columns we are not interested in? - // Add options object? - - const arrowTable = table.data; - const columnarTable = {}; - - for (const field of arrowTable.schema.fields) { - // This (is intended to) coalesce all record batches into a single typed array - const arrowColumn = arrowTable.getChild(field.name); - const values = arrowColumn?.toArray(); - columnarTable[field.name] = values; - } - - return { - shape: 'columnar-table', - schema: table.schema, - data: columnarTable - }; -} diff --git a/modules/arrow/src/tables/convert-arrow-to-geojson-table.ts b/modules/arrow/src/tables/convert-arrow-to-geojson-table.ts deleted file mode 100644 index ae85a2b097..0000000000 --- a/modules/arrow/src/tables/convert-arrow-to-geojson-table.ts +++ /dev/null @@ -1,66 +0,0 @@ -// loaders.gl -// SPDX-License-Identifier: MIT -// Copyright (c) vis.gl contributors - -import type {Feature, GeoJSONTable} from '@loaders.gl/schema'; -import * as arrow from 'apache-arrow'; -import type {ArrowTable} from '../lib/arrow-table'; -import {serializeArrowSchema, parseGeometryFromArrow} from '@loaders.gl/arrow'; -import {getGeometryColumnsFromSchema} from '@loaders.gl/gis'; - -/** - * Wrap an apache arrow table in a loaders.gl table wrapper. - * From this additional conversions are available. - * @param arrowTable - * @returns - */ -export function convertApacheArrowToArrowTable(arrowTable: arrow.Table): ArrowTable { - return { - shape: 'arrow-table', - schema: serializeArrowSchema(arrowTable.schema), - data: arrowTable - }; -} - -/** - * Convert an Apache Arrow table to a GeoJSONTable - * @note Currently does not convert schema - */ -export function convertArrowToGeoJSONTable(table: ArrowTable): GeoJSONTable { - const arrowTable = table.data; - const schema = serializeArrowSchema(arrowTable.schema); - const geometryColumns = getGeometryColumnsFromSchema(schema); - - // get encoding from geometryColumns['geometry'] - const encoding = geometryColumns.geometry.encoding; - - const features: Feature[] = []; - - // Remove geometry columns - const propertyColumnNames = arrowTable.schema.fields - .map((field) => field.name) - // TODO - this deletes all geometry columns - .filter((name) => !(name in geometryColumns)); - const propertiesTable = arrowTable.select(propertyColumnNames); - - const arrowGeometryColumn = arrowTable.getChild('geometry'); - - for (let row = 0; row < arrowTable.numRows; row++) { - // get the geometry value from arrow geometry column - // Note that type can vary - const arrowGeometry = arrowGeometryColumn?.get(row); - // parse arrow geometry to geojson feature - const feature = parseGeometryFromArrow(arrowGeometry, encoding); - if (feature) { - const properties = propertiesTable.get(row)?.toJSON() || {}; - features.push({type: 'Feature', geometry: feature, properties}); - } - } - - return { - shape: 'geojson-table', - type: 'FeatureCollection', - schema: table.schema, - features - }; -} diff --git a/modules/arrow/src/tables/convert-columnar-to-row-table.ts b/modules/arrow/src/tables/convert-columnar-to-row-table.ts deleted file mode 100644 index 343a5d3a8e..0000000000 --- a/modules/arrow/src/tables/convert-columnar-to-row-table.ts +++ /dev/null @@ -1,31 +0,0 @@ -// loaders.gl -// SPDX-License-Identifier: MIT -// Copyright (c) vis.gl contributors - -import type {ColumnarTable, ObjectRowTable} from '@loaders.gl/schema'; - -/** - * - * @note - should be part of schema module - */ -export function convertColumnarToRowFormatTable(columnarTable: ColumnarTable): ObjectRowTable { - const tableKeys = Object.keys(columnarTable); - const tableRowsCount = columnarTable[tableKeys[0]].length; - - const rowFormatTable: {}[] = []; - - for (let index = 0; index < tableRowsCount; index++) { - const tableItem = {}; - for (let keyIndex = 0; keyIndex < tableKeys.length; keyIndex++) { - const fieldName = tableKeys[keyIndex]; - tableItem[fieldName] = columnarTable[fieldName][index]; - } - rowFormatTable.push(tableItem); - } - - return { - shape: 'object-row-table', - schema: columnarTable.schema, - data: rowFormatTable - }; -} diff --git a/modules/arrow/src/tables/convert-table-to-arrow.ts b/modules/arrow/src/tables/convert-table-to-arrow.ts deleted file mode 100644 index df4c4dc2c1..0000000000 --- a/modules/arrow/src/tables/convert-table-to-arrow.ts +++ /dev/null @@ -1,61 +0,0 @@ -// loaders.gl -// SPDX-License-Identifier: MIT -// Copyright (c) vis.gl contributors - -// import { -// Table as ApacheArrowTable, -// Schema as ApacheArrowSchema, -// RecordBatch, -// FixedSizeList, -// Field, -// Data, -// FixedSizeListVector -// } from 'apache-arrow/Arrow.dom'; -// import {AbstractVector} from 'apache-arrow/vector'; - -// import {Table} from '../../types/category-table'; -// import {getArrowType, getArrowVector} from './arrow-type-utils'; -// import {makeMeshAttributeMetadata} from './deduce-mesh-schema'; -// import {getTableLength, getTableNumCols} from './table-accessors'; - -/** - * * Convert a loaders.gl Mesh to an Apache Arrow Table - * @param mesh - * @param metadata - * @param batchSize - * @returns - * -export function convertTableToArrow(table: Table, options?: {batchSize?: number}): ArrowTable { - const vectors: AbstractVector[] = []; - const fields: Field[] = []; - - const length = getTableLength(table); - const batchSize = options?.batchSize || length; - - const recordBatches: RecordBatch[] = []; - for (let i = 0; i < length; i += batchSize) { - for (let columnIndex = 0; columnIndex < getTableNumCols(table); ++columnIndex) { - const field_ = table.schema.fields[columnIndex]; - const column = getTableColumnAt(table, columnIndex, i, batchSize); - const type = getArrowType(column); - const vector = getArrowVector(column); - const listType = new FixedSizeList(size, new Field('value', type)); - const field = new Field(field_.name, listType, false, makeMeshAttributeMetadata(attribute)); - const data = new Data(listType, 0, value.length / size, 0, undefined, [vector]); - const listVector = new FixedSizeListVector(data); - vectors.push(listVector); - fields.push(field); - } - - for (const attributeKey in table.columns) { - const attribute = mesh.attributes[attributeKey]; - const {value, size = 1} = attribute; - } - - const schema = new ApacheArrowSchema(fields, table?.schema?.metadata || new Map()); - const recordBatch = new RecordBatch(schema, vectors[0].length, vectors); - const apacheArrowTable = new ApacheArrowTable(schema, recordBatch); - - return apacheArrowTable; -} -*/ diff --git a/modules/arrow/src/workers/triangulation-worker.ts b/modules/arrow/src/workers/triangulation-worker.ts index 7eb7dbd4f4..2f586f5d53 100644 --- a/modules/arrow/src/workers/triangulation-worker.ts +++ b/modules/arrow/src/workers/triangulation-worker.ts @@ -8,7 +8,7 @@ import { getTriangleIndices, getBinaryGeometriesFromArrow, BinaryDataFromGeoArrow -} from '../geoarrow/convert-geoarrow-to-binary-geometry'; +} from '../lib/geoarrow/convert-geoarrow-to-binary-geometry'; import type { TriangulationWorkerInput, TriangulateInput, diff --git a/modules/arrow/test/arrow-loader.spec.ts b/modules/arrow/test/arrow-loader.spec.ts index 807aa3048c..d682b7e911 100644 --- a/modules/arrow/test/arrow-loader.spec.ts +++ b/modules/arrow/test/arrow-loader.spec.ts @@ -18,15 +18,14 @@ import { parseInBatches } from '@loaders.gl/core'; -const ArrowWorkerLoader = ArrowLoader; - -// Small Arrow Sample Files -const ARROW_SIMPLE = '@loaders.gl/arrow/test/data/simple.arrow'; -const ARROW_DICTIONARY = '@loaders.gl/arrow/test/data/dictionary.arrow'; -const ARROW_STRUCT = '@loaders.gl/arrow/test/data/struct.arrow'; +import { + ARROW_SIMPLE, + ARROW_DICTIONARY, + ARROW_STRUCT, + ARROW_BIOGRID_NODES +} from './data/arrow/test-cases'; -// Bigger, batched sample file -const ARROW_BIOGRID_NODES = '@loaders.gl/arrow/test/data/biogrid-nodes.arrow'; +const ArrowWorkerLoader = ArrowLoader; setLoaderOptions({ _workerType: 'test' diff --git a/modules/arrow/test/data/biogrid-nodes.arrow b/modules/arrow/test/data/arrow/biogrid-nodes.arrow similarity index 100% rename from modules/arrow/test/data/biogrid-nodes.arrow rename to modules/arrow/test/data/arrow/biogrid-nodes.arrow diff --git a/modules/arrow/test/data/dictionary.arrow b/modules/arrow/test/data/arrow/dictionary.arrow similarity index 100% rename from modules/arrow/test/data/dictionary.arrow rename to modules/arrow/test/data/arrow/dictionary.arrow diff --git a/modules/arrow/test/data/simple.arrow b/modules/arrow/test/data/arrow/simple.arrow similarity index 100% rename from modules/arrow/test/data/simple.arrow rename to modules/arrow/test/data/arrow/simple.arrow diff --git a/modules/arrow/test/data/struct.arrow b/modules/arrow/test/data/arrow/struct.arrow similarity index 100% rename from modules/arrow/test/data/struct.arrow rename to modules/arrow/test/data/arrow/struct.arrow diff --git a/modules/arrow/test/data/arrow/test-cases.ts b/modules/arrow/test/data/arrow/test-cases.ts new file mode 100644 index 0000000000..2382386711 --- /dev/null +++ b/modules/arrow/test/data/arrow/test-cases.ts @@ -0,0 +1,30 @@ +// loaders.gl +// SPDX-License-Identifier: MIT +// Copyright (c) vis.gl contributors + +// Small Arrow Sample Files +export const ARROW_SIMPLE = '@loaders.gl/arrow/test/data/arrow/simple.arrow'; +export const ARROW_DICTIONARY = '@loaders.gl/arrow/test/data/arrow/dictionary.arrow'; +export const ARROW_STRUCT = '@loaders.gl/arrow/test/data/arrow/struct.arrow'; + +// Bigger, batched sample file +export const ARROW_BIOGRID_NODES = '@loaders.gl/arrow/test/data/arrow/biogrid-nodes.arrow'; + +export const ARROW_TEST_CASES = [ + { + title: 'simple.arrow', + filename: ARROW_SIMPLE + }, + // { + // title: 'dictionary.arrow', + // filename: ARROW_DICTIONARY + // }, + { + title: 'struct.arrow', + filename: ARROW_STRUCT + }, + { + title: 'biogrid-nodes.arrow', + filename: ARROW_BIOGRID_NODES + } +] as const; diff --git a/modules/arrow/test/data/geoarrow/test-cases.ts b/modules/arrow/test/data/geoarrow/test-cases.ts index 93f6778a3e..33d678844f 100644 --- a/modules/arrow/test/data/geoarrow/test-cases.ts +++ b/modules/arrow/test/data/geoarrow/test-cases.ts @@ -1,3 +1,7 @@ +// loaders.gl +// SPDX-License-Identifier: MIT +// Copyright (c) vis.gl contributors + import {FeatureCollection} from '@loaders.gl/schema'; export const GEOARROW_POINT_FILE = '@loaders.gl/arrow/test/data/geoarrow/point.arrow'; diff --git a/modules/arrow/test/index.ts b/modules/arrow/test/index.ts index 38180058de..b48769a20c 100644 --- a/modules/arrow/test/index.ts +++ b/modules/arrow/test/index.ts @@ -9,6 +9,7 @@ import './geoarrow/convert-geoarrow-to-binary-geometry.spec'; import './geoarrow/convert-geoarrow-to-geojson.spec'; import './geoarrow/get-arrow-bounds.spec'; -import './tables/convert-arrow-to-geojson-table.spec'; +import './tables/convert-arrow-to-table.spec'; +import './tables/convert-geojson-to-arrow-table.spec'; import './triangulate-on-worker.spec'; diff --git a/modules/arrow/test/tables/convert-arrow-to-table.spec.ts b/modules/arrow/test/tables/convert-arrow-to-table.spec.ts new file mode 100644 index 0000000000..bdffa1792a --- /dev/null +++ b/modules/arrow/test/tables/convert-arrow-to-table.spec.ts @@ -0,0 +1,24 @@ +// loaders.gl +// SPDX-License-Identifier: MIT +// Copyright (c) vis.gl contributors + +import test from 'tape-promise/tape'; +import {ARROW_SIMPLE} from '../data/arrow/test-cases'; + +import {fetchFile, parse} from '@loaders.gl/core'; +import {ArrowLoader, convertTableToArrow} from '@loaders.gl/arrow'; + +test('ArrowLoader#shapes', async (t) => { + for (const testCase of [{filename: ARROW_SIMPLE}]) { + const response = await fetchFile(testCase.filename); + const table = await parse(response, ArrowLoader, {arrow: {shape: 'object-row-table'}}); + + // @ts-expect-error + t.ok(table.shape === 'object-row-table', 'shape is object-row-table'); + + const arrowTable = convertTableToArrow(table); + + t.ok(arrowTable); + } + t.end(); +}); diff --git a/modules/arrow/test/tables/convert-arrow-to-geojson-table.spec.ts b/modules/arrow/test/tables/convert-geojson-to-arrow-table.spec.ts similarity index 100% rename from modules/arrow/test/tables/convert-arrow-to-geojson-table.spec.ts rename to modules/arrow/test/tables/convert-geojson-to-arrow-table.spec.ts diff --git a/modules/schema/src/index.ts b/modules/schema/src/index.ts index a1bdf7a7e7..28f6e27bcc 100644 --- a/modules/schema/src/index.ts +++ b/modules/schema/src/index.ts @@ -51,6 +51,7 @@ export { getTableLength, getTableNumCols, getTableCell, + getTableCellAt, getTableRowShape, getTableColumnIndex, getTableColumnName, diff --git a/modules/schema/src/lib/table/arrow-api/arrow-like-interface.ts b/modules/schema/src/lib/table/arrow-api/arrow-like-interface.ts new file mode 100644 index 0000000000..e367274375 --- /dev/null +++ b/modules/schema/src/lib/table/arrow-api/arrow-like-interface.ts @@ -0,0 +1,84 @@ +// loaders.gl +// SPDX-License-Identifier: MIT +// Copyright (c) vis.gl contributors + +import {DataType} from './arrow-like-type'; + +/** + * ArrowJS `Field` API-compatible class for row-based tables + * https://loaders.gl/arrowjs/docs/api-reference/field + * A field holds name, nullable, and metadata information about a table "column" + * A Schema is essentially a list of fields + */ +export interface Field { + name: string; + type: DataType; + nullable: boolean; + metadata: Map; + + // constructor( + // name: string, + // type: DataType, + // nullable?, + // metadata? + // ); + + typeId(): number; + + clone(): Field; + + compareTo(other: this): boolean; + + toString(); +} + +export interface Schema { + fields: Field[]; + metadata: Map; + + // constructor( + // fields: Field[] , + // metadata: Map + // ) + + // TODO - arrow only seems to compare fields, not metadata + compareTo(other: Schema): boolean; + + select(...columnNames: string[]): Schema; + + selectAt(...columnIndices: number[]): Schema; + + assign(schemaOrFields: Schema | Field[]): Schema; +} + +export interface ArrowLikeVector { + table: Table; + columnName: string; + + // constructor(table: Table, columnName: string); + + get(rowIndex: number): unknown; + toArray(): ArrayLike; +} + +/** + * Class that provides an API similar to Apache Arrow Table class + * Forwards methods directly if the underlying table is Arrow, otherwise calls accessor functions + */ +export interface Table { + schema: Schema; + + // constructor(table: Table); + + data: any; + + numCols: number; + + length(): number; + + getChild(columnName: string): ArrowLikeVector; + + // getChildAt(columnIndex: number): ArrowLikeVector { + // return + // } +} diff --git a/modules/schema/src/lib/table/simple-table/convert-table.ts b/modules/schema/src/lib/table/simple-table/convert-table.ts index 9e62f02b5f..3c441c19f2 100644 --- a/modules/schema/src/lib/table/simple-table/convert-table.ts +++ b/modules/schema/src/lib/table/simple-table/convert-table.ts @@ -121,27 +121,29 @@ export function makeObjectRowTable(table: Table): ObjectRowTable { }; } -/** /** * * @note - should be part of schema module + * export function convertColumnarToRowFormatTable(columnarTable: ColumnarTable): ObjectRowTable { - const tableKeys = ; + const tableKeys = Object.keys(columnarTable); const tableRowsCount = columnarTable[tableKeys[0]].length; - const objectRows: ObjectRowTable['data'] = []; + const rowFormatTable: {}[] = []; for (let index = 0; index < tableRowsCount; index++) { - const objectRow = {}; - for (const fieldName of Object.keys(columnarTable.data)) { - objectRow[fieldName] = columnarTable[fieldName][index]; + const tableItem = {}; + for (let keyIndex = 0; keyIndex < tableKeys.length; keyIndex++) { + const fieldName = tableKeys[keyIndex]; + tableItem[fieldName] = columnarTable[fieldName][index]; } - objectRows.push(objectRow); + rowFormatTable.push(tableItem); } return { shape: 'object-row-table', - data: objectRows + schema: columnarTable.schema, + data: rowFormatTable }; } - */ +*/ diff --git a/tsconfig.build.tsbuildinfo b/tsconfig.build.tsbuildinfo index 684ba650b2..162e85920d 100644 --- a/tsconfig.build.tsbuildinfo +++ b/tsconfig.build.tsbuildinfo @@ -1 +1 @@ -{"root":["./modules/3d-tiles/src/3d-tiles-archive-loader.ts","./modules/3d-tiles/src/cesium-ion-loader.ts","./modules/3d-tiles/src/index.ts","./modules/3d-tiles/src/tile-3d-subtree-loader.ts","./modules/3d-tiles/src/tile-3d-writer.ts","./modules/3d-tiles/src/tiles-3d-loader.ts","./modules/3d-tiles/src/types.ts","./modules/3d-tiles/src/3d-tiles-archive/3d-tiles-archive-archive.ts","./modules/3d-tiles/src/3d-tiles-archive/3d-tiles-archive-parser.ts","./modules/3d-tiles/src/lib/constants.ts","./modules/3d-tiles/src/lib/classes/tile-3d-batch-table-hierarchy.ts","./modules/3d-tiles/src/lib/classes/tile-3d-batch-table.ts","./modules/3d-tiles/src/lib/classes/tile-3d-feature-table.ts","./modules/3d-tiles/src/lib/classes/helpers/tile-3d-accessor-utils.ts","./modules/3d-tiles/src/lib/encoders/encode-3d-tile-batched-model.ts","./modules/3d-tiles/src/lib/encoders/encode-3d-tile-composite.ts","./modules/3d-tiles/src/lib/encoders/encode-3d-tile-instanced-model.ts","./modules/3d-tiles/src/lib/encoders/encode-3d-tile-point-cloud.ts","./modules/3d-tiles/src/lib/encoders/encode-3d-tile.ts","./modules/3d-tiles/src/lib/encoders/helpers/encode-3d-tile-header.ts","./modules/3d-tiles/src/lib/ion/ion.ts","./modules/3d-tiles/src/lib/parsers/parse-3d-tile-batched-model.ts","./modules/3d-tiles/src/lib/parsers/parse-3d-tile-composite.ts","./modules/3d-tiles/src/lib/parsers/parse-3d-tile-gltf.ts","./modules/3d-tiles/src/lib/parsers/parse-3d-tile-header.ts","./modules/3d-tiles/src/lib/parsers/parse-3d-tile-instanced-model.ts","./modules/3d-tiles/src/lib/parsers/parse-3d-tile-point-cloud.ts","./modules/3d-tiles/src/lib/parsers/parse-3d-tile.ts","./modules/3d-tiles/src/lib/parsers/helpers/normalize-3d-tile-colors.ts","./modules/3d-tiles/src/lib/parsers/helpers/normalize-3d-tile-normals.ts","./modules/3d-tiles/src/lib/parsers/helpers/normalize-3d-tile-positions.ts","./modules/3d-tiles/src/lib/parsers/helpers/parse-3d-implicit-tiles.ts","./modules/3d-tiles/src/lib/parsers/helpers/parse-3d-tile-gltf-view.ts","./modules/3d-tiles/src/lib/parsers/helpers/parse-3d-tile-header.ts","./modules/3d-tiles/src/lib/parsers/helpers/parse-3d-tile-subtree.ts","./modules/3d-tiles/src/lib/parsers/helpers/parse-3d-tile-tables.ts","./modules/3d-tiles/src/lib/parsers/helpers/parse-utils.ts","./modules/3d-tiles/src/lib/utils/version.ts","./modules/3d-tiles/src/lib/utils/obb/s2-corners-to-obb.ts","./modules/3d-tiles/src/lib/utils/s2/index.ts","./modules/3d-tiles/src/lib/utils/s2/s2-geometry-functions.ts","./modules/3d-tiles/src/lib/utils/s2/s2-token-functions.ts","./modules/3d-tiles/src/lib/utils/s2/converters/s2-to-boundary.ts","./modules/3d-tiles/src/lib/utils/s2/converters/s2-to-obb-points.ts","./modules/3d-tiles/src/lib/utils/s2/converters/s2-to-region.ts","./modules/3d-tiles/src/lib/utils/s2/s2geometry/s2-cell-utils.ts","./modules/3d-tiles/src/lib/utils/s2/s2geometry/s2-geometry.ts","./modules/arrow/src/arrow-loader.ts","./modules/arrow/src/arrow-writer.ts","./modules/arrow/src/geoarrow-loader.ts","./modules/arrow/src/geoarrow-writer.ts","./modules/arrow/src/index.ts","./modules/arrow/src/triangulate-on-worker.ts","./modules/arrow/src/types.ts","./modules/arrow/src/geoarrow/convert-geoarrow-to-binary-geometry.ts","./modules/arrow/src/geoarrow/convert-geoarrow-to-geojson-geometry.ts","./modules/arrow/src/geoarrow/get-arrow-bounds.ts","./modules/arrow/src/lib/arrow-table-batch.ts","./modules/arrow/src/lib/arrow-table.ts","./modules/arrow/src/lib/encode-arrow.ts","./modules/arrow/src/lib/encode-geoarrow.ts","./modules/arrow/src/parsers/parse-arrow-in-batches.ts","./modules/arrow/src/parsers/parse-arrow-sync.ts","./modules/arrow/src/parsers/parse-geoarrow-in-batches.ts","./modules/arrow/src/parsers/parse-geoarrow-sync.ts","./modules/arrow/src/schema/arrow-type-utils.ts","./modules/arrow/src/schema/convert-arrow-schema.ts","./modules/arrow/src/tables/convert-arrow-to-columnar-table.ts","./modules/arrow/src/tables/convert-arrow-to-geojson-table.ts","./modules/arrow/src/tables/convert-columnar-to-row-table.ts","./modules/arrow/src/tables/convert-table-to-arrow.ts","./modules/arrow/src/workers/arrow-worker.ts","./modules/arrow/src/workers/hard-clone.ts","./modules/arrow/src/workers/triangulation-worker-node.ts","./modules/arrow/src/workers/triangulation-worker.ts","./modules/bson/src/bson-loader.ts","./modules/bson/src/bson-writer.ts","./modules/bson/src/index.ts","./modules/bson/src/lib/encoders/encode-bson.ts","./modules/bson/src/lib/parsers/parse-bson.ts","./modules/compression/src/compress-on-worker.ts","./modules/compression/src/index.ts","./modules/compression/src/types.ts","./modules/compression/src/brotli/decode.ts","./modules/compression/src/lib/brotli-compression.ts","./modules/compression/src/lib/compression.ts","./modules/compression/src/lib/deflate-compression.ts","./modules/compression/src/lib/gzip-compression.ts","./modules/compression/src/lib/lz4-compression.ts","./modules/compression/src/lib/lzo-compression.ts","./modules/compression/src/lib/no-compression.ts","./modules/compression/src/lib/snappy-compression.ts","./modules/compression/src/lib/zstd-compression.ts","./modules/compression/src/workers/compression-worker-node.ts","./modules/compression/src/workers/compression-worker.ts","./modules/copc/src/copc-source.ts","./modules/copc/src/index.ts","./modules/core/src/index.ts","./modules/core/src/null-loader.ts","./modules/core/src/core-addons/write-file-browser.ts","./modules/core/src/iterators/batch-iterators/timed-batch-iterator.ts","./modules/core/src/iterators/make-iterator/make-array-buffer-iterator.ts","./modules/core/src/iterators/make-iterator/make-blob-iterator.ts","./modules/core/src/iterators/make-iterator/make-iterator.ts","./modules/core/src/iterators/make-iterator/make-stream-iterator.ts","./modules/core/src/iterators/make-iterator/make-string-iterator.ts","./modules/core/src/iterators/make-stream/make-stream.ts","./modules/core/src/javascript-utils/is-type.ts","./modules/core/src/lib/common.ts","./modules/core/src/lib/init.ts","./modules/core/src/lib/api/create-data-source.ts","./modules/core/src/lib/api/encode-table.ts","./modules/core/src/lib/api/encode.ts","./modules/core/src/lib/api/load-in-batches.ts","./modules/core/src/lib/api/load.ts","./modules/core/src/lib/api/loader-options.ts","./modules/core/src/lib/api/parse-in-batches.ts","./modules/core/src/lib/api/parse-sync.ts","./modules/core/src/lib/api/parse.ts","./modules/core/src/lib/api/register-loaders.ts","./modules/core/src/lib/api/select-loader.ts","./modules/core/src/lib/api/select-source.ts","./modules/core/src/lib/fetch/fetch-error-message.ts","./modules/core/src/lib/fetch/fetch-error.ts","./modules/core/src/lib/fetch/fetch-file.ts","./modules/core/src/lib/fetch/read-array-buffer.ts","./modules/core/src/lib/filesystems/browser-filesystem.ts","./modules/core/src/lib/filesystems/read-array-buffer.ts","./modules/core/src/lib/loader-utils/check-errors.ts","./modules/core/src/lib/loader-utils/get-data.ts","./modules/core/src/lib/loader-utils/get-fetch-function.ts","./modules/core/src/lib/loader-utils/loader-context.ts","./modules/core/src/lib/loader-utils/loggers.ts","./modules/core/src/lib/loader-utils/normalize-loader.ts","./modules/core/src/lib/loader-utils/option-defaults.ts","./modules/core/src/lib/loader-utils/option-utils.ts","./modules/core/src/lib/progress/fetch-progress.ts","./modules/core/src/lib/utils/mime-type-utils.ts","./modules/core/src/lib/utils/resource-utils.ts","./modules/core/src/lib/utils/response-utils.ts","./modules/core/src/lib/utils/url-utils.ts","./modules/core/src/workers/null-worker-node.ts","./modules/core/src/workers/null-worker.ts","./modules/crypto/src/index.ts","./modules/crypto/src/types.ts","./modules/crypto/src/lib/crc32-hash.ts","./modules/crypto/src/lib/crc32c-hash.ts","./modules/crypto/src/lib/crypto-hash.ts","./modules/crypto/src/lib/hash.ts","./modules/crypto/src/lib/md5-hash.ts","./modules/crypto/src/lib/node-hash.ts","./modules/crypto/src/lib/sha256-hash.ts","./modules/crypto/src/lib/algorithms/crc32.ts","./modules/crypto/src/lib/algorithms/crc32c.ts","./modules/crypto/src/lib/algorithms/md5-wasm.ts","./modules/crypto/src/lib/utils/base64-utils.ts","./modules/crypto/src/lib/utils/digest-utils.ts","./modules/crypto/src/workers/crypto-worker-node.ts","./modules/crypto/src/workers/crypto-worker.ts","./modules/csv/src/csv-loader.ts","./modules/csv/src/csv-writer.ts","./modules/csv/src/index.ts","./modules/csv/src/lib/encoders/encode-csv.ts","./modules/csv/src/papaparse/async-iterator-streamer.ts","./modules/csv/src/papaparse/papaparse.ts","./modules/draco/src/draco-loader.ts","./modules/draco/src/draco-writer.ts","./modules/draco/src/index.ts","./modules/draco/src/draco3d/draco3d-types.ts","./modules/draco/src/lib/draco-builder.ts","./modules/draco/src/lib/draco-module-loader.ts","./modules/draco/src/lib/draco-parser.ts","./modules/draco/src/lib/draco-types.ts","./modules/draco/src/lib/utils/get-draco-schema.ts","./modules/draco/src/lib/utils/version.ts","./modules/draco/src/workers/draco-worker-node.ts","./modules/draco/src/workers/draco-worker.ts","./modules/draco/src/workers/draco-writer-worker-node.ts","./modules/draco/src/workers/draco-writer-worker.ts","./modules/excel/src/excel-loader.ts","./modules/excel/src/index.ts","./modules/excel/src/lib/encode-excel.ts","./modules/excel/src/lib/parse-excel.ts","./modules/excel/src/workers/excel-worker.ts","./modules/flatgeobuf/src/flatgeobuf-loader.ts","./modules/flatgeobuf/src/floatgeobuf-source.ts","./modules/flatgeobuf/src/index.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/column-meta.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/config.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/constants.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/crs-meta.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/dumptree.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/feature.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/flat-geobuf.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/generic.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/geojson.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/header-meta.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/header.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/http-reader.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/index.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/logger.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/packedrtree.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/flat-geobuf/column-type.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/flat-geobuf/column.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/flat-geobuf/crs.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/flat-geobuf/feature.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/flat-geobuf/geometry-type.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/flat-geobuf/geometry.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/flat-geobuf/header.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/generic/feature.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/generic/featurecollection.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/generic/geometry.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/generic/header.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/generic/index.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/geojson/feature.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/geojson/featurecollection.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/geojson/geometry.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/geojson/index.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/streams/utils.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/types/jsts.d.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/types/slice.d.ts","./modules/flatgeobuf/src/lib/binary-geometries.ts","./modules/flatgeobuf/src/lib/get-schema-from-fgb-header.ts","./modules/flatgeobuf/src/lib/parse-flatgeobuf.ts","./modules/flatgeobuf/src/workers/flatgeobuf-worker.ts","./modules/geopackage/src/geopackage-loader.ts","./modules/geopackage/src/index.ts","./modules/geopackage/src/lib/parse-geopackage.ts","./modules/geopackage/src/lib/types.ts","./modules/geopackage/src/workers/geopackage-worker.ts","./modules/geotiff/src/geotiff-loader.ts","./modules/geotiff/src/index.ts","./modules/geotiff/src/loaders.ts","./modules/geotiff/src/types.ts","./modules/geotiff/src/lib/load-geotiff.ts","./modules/geotiff/src/lib/tiff-pixel-source.ts","./modules/geotiff/src/lib/ome/load-ome-tiff.ts","./modules/geotiff/src/lib/ome/ome-indexers.ts","./modules/geotiff/src/lib/ome/ome-utils.ts","./modules/geotiff/src/lib/ome/omexml.ts","./modules/geotiff/src/lib/ome/utils.ts","./modules/geotiff/src/lib/utils/tiff-utils.ts","./modules/gis/src/index.ts","./modules/gis/src/lib/binary-features/binary-to-geojson.ts","./modules/gis/src/lib/binary-features/extract-geometry-info.ts","./modules/gis/src/lib/binary-features/flat-geojson-to-binary-types.ts","./modules/gis/src/lib/binary-features/flat-geojson-to-binary.ts","./modules/gis/src/lib/binary-features/geojson-to-binary.ts","./modules/gis/src/lib/binary-features/geojson-to-flat-geojson.ts","./modules/gis/src/lib/binary-features/transform.ts","./modules/gis/src/lib/geo/geoarrow-metadata.ts","./modules/gis/src/lib/geo/geoparquet-metadata-schema.ts","./modules/gis/src/lib/geo/geoparquet-metadata.ts","./modules/gis/src/lib/tables/convert-table-to-geojson.ts","./modules/gltf/src/glb-loader.ts","./modules/gltf/src/glb-writer.ts","./modules/gltf/src/gltf-loader.ts","./modules/gltf/src/gltf-writer.ts","./modules/gltf/src/index.ts","./modules/gltf/src/lib/api/gltf-extensions.ts","./modules/gltf/src/lib/api/gltf-scenegraph.ts","./modules/gltf/src/lib/api/normalize-gltf-v1.ts","./modules/gltf/src/lib/api/post-process-gltf.ts","./modules/gltf/src/lib/encoders/encode-glb.ts","./modules/gltf/src/lib/encoders/encode-gltf.ts","./modules/gltf/src/lib/extensions/ext_mesh_features.ts","./modules/gltf/src/lib/extensions/ext_meshopt_compression.ts","./modules/gltf/src/lib/extensions/ext_structural_metadata.ts","./modules/gltf/src/lib/extensions/ext_texture_webp.ts","./modules/gltf/src/lib/extensions/khr_binary_gltf.ts","./modules/gltf/src/lib/extensions/khr_draco_mesh_compression.ts","./modules/gltf/src/lib/extensions/khr_texture_basisu.ts","./modules/gltf/src/lib/extensions/khr_texture_transform.ts","./modules/gltf/src/lib/extensions/deprecated/ext_feature_metadata.ts","./modules/gltf/src/lib/extensions/deprecated/khr_lights_punctual.ts","./modules/gltf/src/lib/extensions/deprecated/khr_materials_unlit.ts","./modules/gltf/src/lib/extensions/deprecated/khr_techniques_webgl.ts","./modules/gltf/src/lib/extensions/utils/3d-tiles-utils.ts","./modules/gltf/src/lib/gltf-utils/get-typed-array.ts","./modules/gltf/src/lib/gltf-utils/gltf-attribute-utils.ts","./modules/gltf/src/lib/gltf-utils/gltf-constants.ts","./modules/gltf/src/lib/gltf-utils/gltf-utils.ts","./modules/gltf/src/lib/gltf-utils/resolve-url.ts","./modules/gltf/src/lib/parsers/parse-glb.ts","./modules/gltf/src/lib/parsers/parse-gltf.ts","./modules/gltf/src/lib/types/glb-types.ts","./modules/gltf/src/lib/types/gltf-ext-feature-metadata-schema.ts","./modules/gltf/src/lib/types/gltf-ext-mesh-features-schema.ts","./modules/gltf/src/lib/types/gltf-ext-structural-metadata-schema.ts","./modules/gltf/src/lib/types/gltf-json-schema.ts","./modules/gltf/src/lib/types/gltf-postprocessed-schema.ts","./modules/gltf/src/lib/types/gltf-types.ts","./modules/gltf/src/lib/utils/assert.ts","./modules/gltf/src/lib/utils/version.ts","./modules/gltf/src/meshopt/meshopt-decoder.ts","./modules/gltf/src/webp/webp.ts","./modules/i3s/src/arcgis-webscene-loader.ts","./modules/i3s/src/i3s-attribute-loader.ts","./modules/i3s/src/i3s-building-scene-layer-loader.ts","./modules/i3s/src/i3s-content-loader.ts","./modules/i3s/src/i3s-loader.ts","./modules/i3s/src/i3s-node-page-loader.ts","./modules/i3s/src/i3s-slpk-loader.ts","./modules/i3s/src/index.ts","./modules/i3s/src/types.ts","./modules/i3s/src/lib/helpers/i3s-nodepages-tiles.ts","./modules/i3s/src/lib/parsers/constants.ts","./modules/i3s/src/lib/parsers/parse-arcgis-webscene.ts","./modules/i3s/src/lib/parsers/parse-i3s-attribute.ts","./modules/i3s/src/lib/parsers/parse-i3s-building-scene-layer.ts","./modules/i3s/src/lib/parsers/parse-i3s-tile-content.ts","./modules/i3s/src/lib/parsers/parse-i3s.ts","./modules/i3s/src/lib/parsers/parse-slpk/parse-slpk.ts","./modules/i3s/src/lib/parsers/parse-slpk/slpk-archieve.ts","./modules/i3s/src/lib/utils/convert-i3s-obb-to-mbs.ts","./modules/i3s/src/lib/utils/customize-colors.ts","./modules/i3s/src/lib/utils/url-utils.ts","./modules/i3s/src/workers/i3s-content-worker-node.ts","./modules/i3s/src/workers/i3s-content-worker.ts","./modules/images/src/image-loader.ts","./modules/images/src/image-writer.ts","./modules/images/src/index.ts","./modules/images/src/types.ts","./modules/images/src/lib/category-api/binary-image-api.ts","./modules/images/src/lib/category-api/image-format.ts","./modules/images/src/lib/category-api/image-type.ts","./modules/images/src/lib/category-api/parse-isobmff-binary.ts","./modules/images/src/lib/category-api/parsed-image-api.ts","./modules/images/src/lib/encoders/encode-image.ts","./modules/images/src/lib/parsers/parse-image.ts","./modules/images/src/lib/parsers/parse-to-image-bitmap.ts","./modules/images/src/lib/parsers/parse-to-image.ts","./modules/images/src/lib/parsers/parse-to-node-image.ts","./modules/images/src/lib/parsers/svg-utils.ts","./modules/images/src/lib/utils/version.ts","./modules/json/src/geojson-loader.ts","./modules/json/src/geojson-writer.ts","./modules/json/src/index.ts","./modules/json/src/json-loader.ts","./modules/json/src/json-writer.ts","./modules/json/src/ndgeoson-loader.ts","./modules/json/src/ndjson-loader.ts","./modules/json/src/lib/clarinet/clarinet.ts","./modules/json/src/lib/encoder-utils/encode-table-row.ts","./modules/json/src/lib/encoder-utils/encode-utils.ts","./modules/json/src/lib/encoder-utils/utf8-encoder.ts","./modules/json/src/lib/encoders/geojson-encoder.ts","./modules/json/src/lib/encoders/json-encoder.ts","./modules/json/src/lib/json-parser/json-parser.ts","./modules/json/src/lib/json-parser/streaming-json-parser.ts","./modules/json/src/lib/jsonpath/jsonpath.ts","./modules/json/src/lib/parsers/parse-json-in-batches.ts","./modules/json/src/lib/parsers/parse-json.ts","./modules/json/src/lib/parsers/parse-ndjson-in-batches.ts","./modules/json/src/lib/parsers/parse-ndjson.ts","./modules/json/src/workers/geojson-worker.ts","./modules/kml/src/gpx-loader.ts","./modules/kml/src/index.ts","./modules/kml/src/kml-loader.ts","./modules/kml/src/tcx-loader.ts","./modules/las/src/index.ts","./modules/las/src/las-loader.ts","./modules/las/src/lib/get-las-schema.ts","./modules/las/src/lib/las-types.ts","./modules/las/src/lib/laslaz-decoder.ts","./modules/las/src/lib/parse-las.ts","./modules/las/src/lib/libs/laz-perf.ts","./modules/las/src/workers/las-worker.ts","./modules/lerc/src/index.ts","./modules/lerc/src/lerc-loader.ts","./modules/lerc/src/lib/parsers/lerc/lerc-types.ts","./modules/lerc/src/workers/lerc-worker.ts","./modules/loader-utils/src/index.ts","./modules/loader-utils/src/json-loader.ts","./modules/loader-utils/src/loader-types.ts","./modules/loader-utils/src/source-types.ts","./modules/loader-utils/src/types.ts","./modules/loader-utils/src/writer-types.ts","./modules/loader-utils/src/lib/binary-utils/array-buffer-utils.ts","./modules/loader-utils/src/lib/binary-utils/dataview-copy-utils.ts","./modules/loader-utils/src/lib/binary-utils/get-first-characters.ts","./modules/loader-utils/src/lib/binary-utils/memory-conversion-utils.ts","./modules/loader-utils/src/lib/binary-utils/memory-copy-utils.ts","./modules/loader-utils/src/lib/env-utils/assert.ts","./modules/loader-utils/src/lib/env-utils/globals.ts","./modules/loader-utils/src/lib/file-provider/data-view-file.ts","./modules/loader-utils/src/lib/file-provider/file-handle-file.ts","./modules/loader-utils/src/lib/file-provider/file-provider-interface.ts","./modules/loader-utils/src/lib/file-provider/file-provider.ts","./modules/loader-utils/src/lib/files/blob-file.ts","./modules/loader-utils/src/lib/files/file.ts","./modules/loader-utils/src/lib/files/http-file.ts","./modules/loader-utils/src/lib/files/node-file-facade.ts","./modules/loader-utils/src/lib/files/sources.ts","./modules/loader-utils/src/lib/filesystems/filesystem.ts","./modules/loader-utils/src/lib/filesystems/node-filesystem-facade.ts","./modules/loader-utils/src/lib/iterators/async-iteration.ts","./modules/loader-utils/src/lib/iterators/text-iterators.ts","./modules/loader-utils/src/lib/log-utils/log.ts","./modules/loader-utils/src/lib/module-utils/js-module-utils.ts","./modules/loader-utils/src/lib/node/buffer.browser.ts","./modules/loader-utils/src/lib/node/buffer.ts","./modules/loader-utils/src/lib/node/fs.browser.ts","./modules/loader-utils/src/lib/node/promisify.ts","./modules/loader-utils/src/lib/node/stream.browser.ts","./modules/loader-utils/src/lib/node/stream.ts","./modules/loader-utils/src/lib/option-utils/merge-loader-options.ts","./modules/loader-utils/src/lib/parser-utils/parse-json.ts","./modules/loader-utils/src/lib/path-utils/file-aliases.ts","./modules/loader-utils/src/lib/path-utils/get-cwd.ts","./modules/loader-utils/src/lib/path-utils/path.ts","./modules/loader-utils/src/lib/request-utils/request-scheduler.ts","./modules/loader-utils/src/lib/sources/data-source.ts","./modules/loader-utils/src/lib/sources/image-source.ts","./modules/loader-utils/src/lib/sources/image-tile-source.ts","./modules/loader-utils/src/lib/sources/tile-source-adapter.ts","./modules/loader-utils/src/lib/sources/tile-source.ts","./modules/loader-utils/src/lib/sources/vector-source.ts","./modules/loader-utils/src/lib/sources/vector-tile-source.ts","./modules/loader-utils/src/lib/sources/utils/image-type.ts","./modules/loader-utils/src/lib/sources/utils/utils.ts","./modules/loader-utils/src/lib/worker-loader-utils/create-loader-worker.ts","./modules/loader-utils/src/lib/worker-loader-utils/encode-with-worker.ts","./modules/loader-utils/src/lib/worker-loader-utils/parse-with-worker.ts","./modules/loader-utils/src/workers/json-worker.ts","./modules/math/src/index.ts","./modules/math/src/geometry/constants.ts","./modules/math/src/geometry/is-geometry.ts","./modules/math/src/geometry/attributes/compute-bounding-box.ts","./modules/math/src/geometry/attributes/compute-bounding-sphere.ts","./modules/math/src/geometry/attributes/compute-tangents.ts","./modules/math/src/geometry/attributes/compute-vertex-normals.ts","./modules/math/src/geometry/attributes/convert-to-non-indexed.ts","./modules/math/src/geometry/attributes/get-attribute-from-geometry.ts","./modules/math/src/geometry/attributes/normalize.ts","./modules/math/src/geometry/colors/rgb565.ts","./modules/math/src/geometry/compression/attribute-compression.ts","./modules/math/src/geometry/gl/gl-type.ts","./modules/math/src/geometry/iterators/attribute-iterator.ts","./modules/math/src/geometry/iterators/primitive-iterator.ts","./modules/math/src/geometry/primitives/modes.ts","./modules/math/src/geometry/typed-arrays/typed-array-utils.ts","./modules/math/src/geometry/utils/assert.ts","./modules/math/src/geometry/utils/coordinates.ts","./modules/math/src/utils/assert.ts","./modules/mvt/src/index.ts","./modules/mvt/src/mvt-loader.ts","./modules/mvt/src/mvt-source.ts","./modules/mvt/src/table-tile-source.ts","./modules/mvt/src/tilejson-loader.ts","./modules/mvt/src/lib/get-schemas-from-tilejson.ts","./modules/mvt/src/lib/parse-mvt.ts","./modules/mvt/src/lib/parse-tilejson.ts","./modules/mvt/src/lib/types.ts","./modules/mvt/src/lib/utils/geometry-utils.ts","./modules/mvt/src/lib/vector-tile/vector-tile-feature.ts","./modules/mvt/src/lib/vector-tile/vector-tile-layer.ts","./modules/mvt/src/lib/vector-tile/vector-tile.ts","./modules/mvt/src/lib/vector-tiler/proto-tile.ts","./modules/mvt/src/lib/vector-tiler/tile-to-geojson.ts","./modules/mvt/src/lib/vector-tiler/transform-tile.ts","./modules/mvt/src/lib/vector-tiler/features/clip-features.ts","./modules/mvt/src/lib/vector-tiler/features/convert-feature.ts","./modules/mvt/src/lib/vector-tiler/features/proto-feature.ts","./modules/mvt/src/lib/vector-tiler/features/simplify-path.ts","./modules/mvt/src/lib/vector-tiler/features/wrap-features.ts","./modules/mvt/src/workers/mvt-worker.ts","./modules/netcdf/src/index.ts","./modules/netcdf/src/netcdf-loader.ts","./modules/netcdf/src/iobuffer/iobuffer.ts","./modules/netcdf/src/netcdfjs/netcdf-reader.ts","./modules/netcdf/src/netcdfjs/netcdf-types.ts","./modules/netcdf/src/netcdfjs/read-data.ts","./modules/netcdf/src/netcdfjs/read-header.ts","./modules/netcdf/src/netcdfjs/read-type.ts","./modules/obj/src/index.ts","./modules/obj/src/mtl-loader.ts","./modules/obj/src/obj-loader.ts","./modules/obj/src/lib/get-obj-schema.ts","./modules/obj/src/lib/obj-types.ts","./modules/obj/src/lib/parse-mtl.ts","./modules/obj/src/lib/parse-obj-meshes.ts","./modules/obj/src/lib/parse-obj.ts","./modules/obj/src/workers/obj-worker.ts","./modules/parquet/src/index.ts","./modules/parquet/src/parquet-loader.ts","./modules/parquet/src/parquet-wasm-loader.ts","./modules/parquet/src/parquet-wasm-writer.ts","./modules/parquet/src/parquet-writer.ts","./modules/parquet/src/lib/constants.ts","./modules/parquet/src/lib/arrow/convert-columns-to-row-group.ts","./modules/parquet/src/lib/arrow/convert-row-group-to-columns.ts","./modules/parquet/src/lib/arrow/convert-schema-from-parquet.ts","./modules/parquet/src/lib/arrow/convert-schema-to-parquet.ts","./modules/parquet/src/lib/encoders/encode-parquet-wasm.ts","./modules/parquet/src/lib/parsers/get-parquet-schema.ts","./modules/parquet/src/lib/parsers/parse-geoparquet.ts","./modules/parquet/src/lib/parsers/parse-parquet-to-columns.ts","./modules/parquet/src/lib/parsers/parse-parquet-wasm.ts","./modules/parquet/src/lib/parsers/parse-parquet.ts","./modules/parquet/src/lib/utils/load-wasm.ts","./modules/parquet/src/lib/utils/make-stream-iterator.ts","./modules/parquet/src/parquetjs/compression.ts","./modules/parquet/src/parquetjs/modules.d.ts","./modules/parquet/src/parquetjs/codecs/declare.ts","./modules/parquet/src/parquetjs/codecs/dictionary.ts","./modules/parquet/src/parquetjs/codecs/index.ts","./modules/parquet/src/parquetjs/codecs/plain.ts","./modules/parquet/src/parquetjs/codecs/rle.ts","./modules/parquet/src/parquetjs/encoder/parquet-encoder.ts","./modules/parquet/src/parquetjs/parquet-thrift/boundaryorder.ts","./modules/parquet/src/parquetjs/parquet-thrift/bsontype.ts","./modules/parquet/src/parquetjs/parquet-thrift/columnchunk.ts","./modules/parquet/src/parquetjs/parquet-thrift/columnindex.ts","./modules/parquet/src/parquetjs/parquet-thrift/columnmetadata.ts","./modules/parquet/src/parquetjs/parquet-thrift/columnorder.ts","./modules/parquet/src/parquetjs/parquet-thrift/compressioncodec.ts","./modules/parquet/src/parquetjs/parquet-thrift/convertedtype.ts","./modules/parquet/src/parquetjs/parquet-thrift/datapageheader.ts","./modules/parquet/src/parquetjs/parquet-thrift/datapageheaderv2.ts","./modules/parquet/src/parquetjs/parquet-thrift/datetype.ts","./modules/parquet/src/parquetjs/parquet-thrift/decimaltype.ts","./modules/parquet/src/parquetjs/parquet-thrift/dictionarypageheader.ts","./modules/parquet/src/parquetjs/parquet-thrift/encoding.ts","./modules/parquet/src/parquetjs/parquet-thrift/enumtype.ts","./modules/parquet/src/parquetjs/parquet-thrift/fieldrepetitiontype.ts","./modules/parquet/src/parquetjs/parquet-thrift/filemetadata.ts","./modules/parquet/src/parquetjs/parquet-thrift/indexpageheader.ts","./modules/parquet/src/parquetjs/parquet-thrift/inttype.ts","./modules/parquet/src/parquetjs/parquet-thrift/jsontype.ts","./modules/parquet/src/parquetjs/parquet-thrift/keyvalue.ts","./modules/parquet/src/parquetjs/parquet-thrift/listtype.ts","./modules/parquet/src/parquetjs/parquet-thrift/logicaltype.ts","./modules/parquet/src/parquetjs/parquet-thrift/maptype.ts","./modules/parquet/src/parquetjs/parquet-thrift/microseconds.ts","./modules/parquet/src/parquetjs/parquet-thrift/milliseconds.ts","./modules/parquet/src/parquetjs/parquet-thrift/nulltype.ts","./modules/parquet/src/parquetjs/parquet-thrift/offsetindex.ts","./modules/parquet/src/parquetjs/parquet-thrift/pageencodingstats.ts","./modules/parquet/src/parquetjs/parquet-thrift/pageheader.ts","./modules/parquet/src/parquetjs/parquet-thrift/pagelocation.ts","./modules/parquet/src/parquetjs/parquet-thrift/pagetype.ts","./modules/parquet/src/parquetjs/parquet-thrift/rowgroup.ts","./modules/parquet/src/parquetjs/parquet-thrift/schemaelement.ts","./modules/parquet/src/parquetjs/parquet-thrift/sortingcolumn.ts","./modules/parquet/src/parquetjs/parquet-thrift/statistics.ts","./modules/parquet/src/parquetjs/parquet-thrift/stringtype.ts","./modules/parquet/src/parquetjs/parquet-thrift/timetype.ts","./modules/parquet/src/parquetjs/parquet-thrift/timeunit.ts","./modules/parquet/src/parquetjs/parquet-thrift/timestamptype.ts","./modules/parquet/src/parquetjs/parquet-thrift/type.ts","./modules/parquet/src/parquetjs/parquet-thrift/typedefinedorder.ts","./modules/parquet/src/parquetjs/parquet-thrift/uuidtype.ts","./modules/parquet/src/parquetjs/parquet-thrift/index.ts","./modules/parquet/src/parquetjs/parser/decoders.ts","./modules/parquet/src/parquetjs/parser/parquet-reader.ts","./modules/parquet/src/parquetjs/schema/declare.ts","./modules/parquet/src/parquetjs/schema/schema.ts","./modules/parquet/src/parquetjs/schema/shred.ts","./modules/parquet/src/parquetjs/schema/types.ts","./modules/parquet/src/parquetjs/utils/file-utils.ts","./modules/parquet/src/parquetjs/utils/read-utils.ts","./modules/parquet/src/polyfills/util.js","./modules/parquet/src/polyfills/buffer/buffer-polyfill.browser.ts","./modules/parquet/src/polyfills/buffer/buffer-polyfill.node.ts","./modules/parquet/src/polyfills/buffer/buffer.ts","./modules/parquet/src/polyfills/buffer/index.ts","./modules/parquet/src/polyfills/buffer/install-buffer-polyfill.ts","./modules/parquet/src/workers/parquet-worker.ts","./modules/pcd/src/index.ts","./modules/pcd/src/pcd-loader.ts","./modules/pcd/src/lib/decompress-lzf.ts","./modules/pcd/src/lib/get-pcd-schema.ts","./modules/pcd/src/lib/parse-pcd.ts","./modules/pcd/src/lib/pcd-types.ts","./modules/pcd/src/workers/pcd-worker.ts","./modules/ply/src/index.ts","./modules/ply/src/ply-loader.ts","./modules/ply/src/lib/get-ply-schema.ts","./modules/ply/src/lib/normalize-ply.ts","./modules/ply/src/lib/parse-ply-in-batches.ts","./modules/ply/src/lib/parse-ply.ts","./modules/ply/src/lib/ply-types.ts","./modules/ply/src/workers/ply-worker.ts","./modules/pmtiles/src/index.ts","./modules/pmtiles/src/pmtiles-loader.ts","./modules/pmtiles/src/pmtiles-source.ts","./modules/pmtiles/src/source-info.ts","./modules/pmtiles/src/lib/blob-source.ts","./modules/pmtiles/src/lib/parse-pmtiles.ts","./modules/pmtiles/src/lib/version.ts","./modules/polyfills/src/index.browser.ts","./modules/polyfills/src/index.ts","./modules/polyfills/src/buffer/btoa.node.ts","./modules/polyfills/src/buffer/to-array-buffer.node.ts","./modules/polyfills/src/crypto/node-hash.ts","./modules/polyfills/src/fetch/decode-data-uri.ts","./modules/polyfills/src/fetch/fetch-polyfill.ts","./modules/polyfills/src/fetch/headers-polyfill.ts","./modules/polyfills/src/fetch/response-polyfill.ts","./modules/polyfills/src/fetch/utils/decode-data-uri.node.ts","./modules/polyfills/src/file/blob-stream-controller.ts","./modules/polyfills/src/file/blob-stream.ts","./modules/polyfills/src/file/blob.ts","./modules/polyfills/src/file/file-reader.ts","./modules/polyfills/src/file/file.ts","./modules/polyfills/src/file/install-blob-polyfills.ts","./modules/polyfills/src/file/install-file-polyfills.ts","./modules/polyfills/src/file/readable-stream.ts","./modules/polyfills/src/filesystems/fetch-node.ts","./modules/polyfills/src/filesystems/node-file.ts","./modules/polyfills/src/filesystems/node-filesystem.ts","./modules/polyfills/src/filesystems/stream-utils.node.ts","./modules/polyfills/src/images/encode-image-node.ts","./modules/polyfills/src/images/encode-image.node.ts","./modules/polyfills/src/images/parse-image-node.ts","./modules/polyfills/src/images/parse-image.node.ts","./modules/polyfills/src/load-library/require-utils.node.ts","./modules/polyfills/src/streams/make-node-stream.ts","./modules/polyfills/src/text-encoder/encoding-indexes.ts","./modules/polyfills/src/text-encoder/text-encoder.ts","./modules/polyfills/src/utils/assert.ts","./modules/polyfills/src/utils/is-browser.ts","./modules/potree/src/index.ts","./modules/potree/src/potree-bin-loader.ts","./modules/potree/src/potree-hierarchy-chunk-loader.ts","./modules/potree/src/potree-loader.ts","./modules/potree/src/potree-source.ts","./modules/potree/src/lib/octree.ts","./modules/potree/src/lib/potree-node-source.ts","./modules/potree/src/parsers/parse-potree-bin.ts","./modules/potree/src/parsers/parse-potree-hierarchy-chunk.ts","./modules/potree/src/types/potree-metadata.ts","./modules/potree/src/utils/parse-version.ts","./modules/schema/src/index.ts","./modules/schema/src/lib/mesh/convert-mesh.ts","./modules/schema/src/lib/mesh/deduce-mesh-schema.ts","./modules/schema/src/lib/mesh/mesh-to-arrow-table.ts","./modules/schema/src/lib/mesh/mesh-utils.ts","./modules/schema/src/lib/table/arrow-api/arrow-like-field.ts","./modules/schema/src/lib/table/arrow-api/arrow-like-schema.ts","./modules/schema/src/lib/table/arrow-api/arrow-like-table.ts","./modules/schema/src/lib/table/arrow-api/arrow-like-type.ts","./modules/schema/src/lib/table/arrow-api/enum.ts","./modules/schema/src/lib/table/arrow-api/get-type-info.ts","./modules/schema/src/lib/table/arrow-api/index.ts","./modules/schema/src/lib/table/batches/base-table-batch-aggregator.ts","./modules/schema/src/lib/table/batches/columnar-table-batch-aggregator.ts","./modules/schema/src/lib/table/batches/row-table-batch-aggregator.ts","./modules/schema/src/lib/table/batches/table-batch-aggregator.ts","./modules/schema/src/lib/table/batches/table-batch-builder.ts","./modules/schema/src/lib/table/simple-table/convert-table.ts","./modules/schema/src/lib/table/simple-table/data-type.ts","./modules/schema/src/lib/table/simple-table/make-table-from-batches.ts","./modules/schema/src/lib/table/simple-table/make-table.ts","./modules/schema/src/lib/table/simple-table/row-utils.ts","./modules/schema/src/lib/table/simple-table/table-accessors.ts","./modules/schema/src/lib/table/simple-table/table-column.ts","./modules/schema/src/lib/table/simple-table/table-schema.ts","./modules/schema/src/lib/utils/assert.ts","./modules/schema/src/lib/utils/async-queue.ts","./modules/schema/src/types/batch.ts","./modules/schema/src/types/binary-geometries.ts","./modules/schema/src/types/category-gis.ts","./modules/schema/src/types/category-image.ts","./modules/schema/src/types/category-mesh.ts","./modules/schema/src/types/category-table.ts","./modules/schema/src/types/category-texture.ts","./modules/schema/src/types/flat-geometries.ts","./modules/schema/src/types/schema.ts","./modules/schema/src/types/types.ts","./modules/shapefile/src/dbf-loader.ts","./modules/shapefile/src/index.ts","./modules/shapefile/src/shapefile-loader.ts","./modules/shapefile/src/shp-loader.ts","./modules/shapefile/src/lib/parsers/parse-dbf.ts","./modules/shapefile/src/lib/parsers/parse-shapefile.ts","./modules/shapefile/src/lib/parsers/parse-shp-geometry.ts","./modules/shapefile/src/lib/parsers/parse-shp-header.ts","./modules/shapefile/src/lib/parsers/parse-shp.ts","./modules/shapefile/src/lib/parsers/parse-shx.ts","./modules/shapefile/src/lib/parsers/types.ts","./modules/shapefile/src/lib/streaming/binary-chunk-reader.ts","./modules/shapefile/src/lib/streaming/binary-reader.ts","./modules/shapefile/src/lib/streaming/zip-batch-iterators.ts","./modules/shapefile/src/workers/dbf-worker.ts","./modules/shapefile/src/workers/shp-worker.ts","./modules/terrain/src/index.ts","./modules/terrain/src/quantized-mesh-loader.ts","./modules/terrain/src/terrain-loader.ts","./modules/terrain/src/lib/decode-quantized-mesh.ts","./modules/terrain/src/lib/parse-quantized-mesh.ts","./modules/terrain/src/lib/parse-terrain.ts","./modules/terrain/src/lib/delatin/index.ts","./modules/terrain/src/lib/helpers/skirt.ts","./modules/terrain/src/lib/utils/version.ts","./modules/terrain/src/workers/quantized-mesh-worker.ts","./modules/terrain/src/workers/terrain-worker.ts","./modules/textures/src/basis-loader.ts","./modules/textures/src/compressed-texture-loader.ts","./modules/textures/src/compressed-texture-writer.ts","./modules/textures/src/crunch-loader.ts","./modules/textures/src/index.ts","./modules/textures/src/ktx2-basis-writer.ts","./modules/textures/src/npy-loader.ts","./modules/textures/src/lib/gl-extensions.ts","./modules/textures/src/lib/encoders/encode-ktx.ts","./modules/textures/src/lib/encoders/encode-ktx2-basis-texture.ts","./modules/textures/src/lib/encoders/encode-texture.ts","./modules/textures/src/lib/parsers/basis-module-loader.ts","./modules/textures/src/lib/parsers/crunch-module-loader.ts","./modules/textures/src/lib/parsers/parse-basis.ts","./modules/textures/src/lib/parsers/parse-compressed-texture.ts","./modules/textures/src/lib/parsers/parse-crunch.ts","./modules/textures/src/lib/parsers/parse-dds.ts","./modules/textures/src/lib/parsers/parse-ktx.ts","./modules/textures/src/lib/parsers/parse-npy.ts","./modules/textures/src/lib/parsers/parse-pvr.ts","./modules/textures/src/lib/texture-api/async-deep-map.ts","./modules/textures/src/lib/texture-api/deep-load.ts","./modules/textures/src/lib/texture-api/generate-url.ts","./modules/textures/src/lib/texture-api/load-image-array.ts","./modules/textures/src/lib/texture-api/load-image-cube.ts","./modules/textures/src/lib/texture-api/load-image.ts","./modules/textures/src/lib/texture-api/texture-api-types.ts","./modules/textures/src/lib/utils/extract-mipmap-images.ts","./modules/textures/src/lib/utils/ktx-format-helper.ts","./modules/textures/src/lib/utils/texture-formats.ts","./modules/textures/src/lib/utils/version.ts","./modules/textures/src/workers/basis-worker-node.ts","./modules/textures/src/workers/basis-worker.ts","./modules/textures/src/workers/compressed-texture-worker.ts","./modules/textures/src/workers/crunch-worker.ts","./modules/textures/src/workers/ktx2-basis-writer-worker-node.ts","./modules/textures/src/workers/ktx2-basis-writer-worker.ts","./modules/textures/src/workers/npy-worker.ts","./modules/tiles/src/constants.ts","./modules/tiles/src/index.ts","./modules/tiles/src/types.ts","./modules/tiles/src/tileset/tile-3d.ts","./modules/tiles/src/tileset/tileset-3d.ts","./modules/tiles/src/tileset/tileset-cache.ts","./modules/tiles/src/tileset/tileset-traverser.ts","./modules/tiles/src/tileset/format-3d-tiles/tileset-3d-traverser.ts","./modules/tiles/src/tileset/format-i3s/i3s-pending-tiles-register.ts","./modules/tiles/src/tileset/format-i3s/i3s-tile-manager.ts","./modules/tiles/src/tileset/format-i3s/i3s-tileset-traverser.ts","./modules/tiles/src/tileset/helpers/3d-tiles-options.ts","./modules/tiles/src/tileset/helpers/bounding-volume.ts","./modules/tiles/src/tileset/helpers/frame-state.ts","./modules/tiles/src/tileset/helpers/i3s-lod.ts","./modules/tiles/src/tileset/helpers/tiles-3d-lod.ts","./modules/tiles/src/tileset/helpers/transform-utils.ts","./modules/tiles/src/tileset/helpers/zoom.ts","./modules/tiles/src/utils/doubly-linked-list-node.ts","./modules/tiles/src/utils/doubly-linked-list.ts","./modules/tiles/src/utils/managed-array.ts","./modules/video/src/gif-builder.ts","./modules/video/src/index.ts","./modules/video/src/video-loader.ts","./modules/video/src/lib/gifshot/gifshot-loader.ts","./modules/video/src/lib/gifshot/gifshot.ts","./modules/video/src/lib/parsers/parse-video.ts","./modules/video/src/lib/utils/assert.ts","./modules/wkt/src/hex-wkb-loader.ts","./modules/wkt/src/index.ts","./modules/wkt/src/twkb-loader.ts","./modules/wkt/src/twkb-writer.ts","./modules/wkt/src/wkb-loader.ts","./modules/wkt/src/wkb-writer.ts","./modules/wkt/src/wkt-crs-loader.ts","./modules/wkt/src/wkt-crs-writer.ts","./modules/wkt/src/wkt-loader.ts","./modules/wkt/src/wkt-writer.ts","./modules/wkt/src/lib/encode-twkb.ts","./modules/wkt/src/lib/encode-wkb.ts","./modules/wkt/src/lib/encode-wkt-crs.ts","./modules/wkt/src/lib/encode-wkt.ts","./modules/wkt/src/lib/parse-hex-wkb.ts","./modules/wkt/src/lib/parse-twkb.ts","./modules/wkt/src/lib/parse-wkb-header.ts","./modules/wkt/src/lib/parse-wkb.ts","./modules/wkt/src/lib/parse-wkt-crs.ts","./modules/wkt/src/lib/parse-wkt.ts","./modules/wkt/src/lib/utils/base64-encoder.ts","./modules/wkt/src/lib/utils/binary-reader.ts","./modules/wkt/src/lib/utils/binary-writer.ts","./modules/wkt/src/lib/utils/hex-encoder.ts","./modules/wkt/src/lib/utils/hex-transcoder.ts","./modules/wkt/src/lib/utils/version.ts","./modules/wkt/src/workers/wkb-worker.ts","./modules/wkt/src/workers/wkt-worker.ts","./modules/wms/src/csw-capabilities-loader.ts","./modules/wms/src/csw-domain-loader.ts","./modules/wms/src/csw-records-loader.ts","./modules/wms/src/gml-loader.ts","./modules/wms/src/index.ts","./modules/wms/src/wfs-capabilities-loader.ts","./modules/wms/src/wms-capabilities-loader.ts","./modules/wms/src/wms-error-loader.ts","./modules/wms/src/lib/deprecated/create-image-source.ts","./modules/wms/src/lib/parsers/csw/parse-csw-capabilities.ts","./modules/wms/src/lib/parsers/csw/parse-csw-domain.ts","./modules/wms/src/lib/parsers/csw/parse-csw-records.ts","./modules/wms/src/lib/parsers/csw/parse-exception-report.ts","./modules/wms/src/lib/parsers/gml/deep-strict-equal.ts","./modules/wms/src/lib/parsers/gml/parse-gml.ts","./modules/wms/src/lib/parsers/wfs/parse-wfs-capabilities.ts","./modules/wms/src/lib/parsers/wfs/parse-wfs.ts","./modules/wms/src/lib/parsers/wms/parse-wms-capabilities.ts","./modules/wms/src/lib/parsers/wms/parse-wms-error.ts","./modules/wms/src/lib/parsers/wms/parse-wms-features.ts","./modules/wms/src/lib/parsers/wms/parse-wms-layer-description.ts","./modules/wms/src/lib/parsers/xml/parse-xml-helpers.ts","./modules/wms/src/services/arcgis/arcgis-feature-server.ts","./modules/wms/src/services/arcgis/arcgis-image-server.ts","./modules/wms/src/services/arcgis/arcgis-server.ts","./modules/wms/src/services/ogc/csw-service.ts","./modules/wms/src/services/ogc/wfs-service.ts","./modules/wms/src/services/ogc/wms-service.ts","./modules/wms/src/wip/data-source.ts","./modules/wms/src/wip/wcs-capabilities-loader.ts","./modules/wms/src/wip/wms-feature-info-loader.ts","./modules/wms/src/wip/wms-layer-description-loader.ts","./modules/wms/src/wip/wmts-capabilities-loader.ts","./modules/wms/src/wip/lib/wcs/parse-wcs-capabilities.ts","./modules/wms/src/wip/lib/wmts/parse-wmts-capabilities.ts","./modules/wms/src/wip/lib/wmts/parse-wmts.ts","./modules/worker-utils/src/index.ts","./modules/worker-utils/src/types.ts","./modules/worker-utils/src/lib/async-queue/async-queue.ts","./modules/worker-utils/src/lib/env-utils/assert.ts","./modules/worker-utils/src/lib/env-utils/globals.ts","./modules/worker-utils/src/lib/env-utils/version.ts","./modules/worker-utils/src/lib/library-utils/library-utils.ts","./modules/worker-utils/src/lib/node/worker_threads-browser.ts","./modules/worker-utils/src/lib/node/worker_threads.ts","./modules/worker-utils/src/lib/process-utils/child-process-proxy.ts","./modules/worker-utils/src/lib/process-utils/process-utils.ts","./modules/worker-utils/src/lib/worker-api/create-worker.ts","./modules/worker-utils/src/lib/worker-api/get-worker-url.ts","./modules/worker-utils/src/lib/worker-api/process-on-worker.ts","./modules/worker-utils/src/lib/worker-api/validate-worker-version.ts","./modules/worker-utils/src/lib/worker-farm/worker-body.ts","./modules/worker-utils/src/lib/worker-farm/worker-farm.ts","./modules/worker-utils/src/lib/worker-farm/worker-job.ts","./modules/worker-utils/src/lib/worker-farm/worker-pool.ts","./modules/worker-utils/src/lib/worker-farm/worker-thread.ts","./modules/worker-utils/src/lib/worker-utils/get-loadable-worker-url.ts","./modules/worker-utils/src/lib/worker-utils/get-transfer-list.ts","./modules/worker-utils/src/lib/worker-utils/remove-nontransferable-options.ts","./modules/worker-utils/src/workers/null-worker.ts","./modules/xml/src/html-loader.ts","./modules/xml/src/index.ts","./modules/xml/src/xml-loader.ts","./modules/xml/src/lib/parsers/parse-xml.ts","./modules/xml/src/lib/parsers/streaming-xml-parser.ts","./modules/xml/src/lib/xml-utils/uncapitalize.ts","./modules/xml/src/lib/xml-utils/xml-utils.ts","./modules/xml/src/sax-ts/sax.ts","./modules/zarr/src/index.ts","./modules/zarr/src/types.ts","./modules/zarr/src/lib/load-zarr.ts","./modules/zarr/src/lib/utils.ts","./modules/zarr/src/lib/zarr-pixel-source.ts","./modules/zip/src/hash-file-utility.ts","./modules/zip/src/index.ts","./modules/zip/src/tar-builder.ts","./modules/zip/src/zip-loader.ts","./modules/zip/src/zip-writer.ts","./modules/zip/src/filesystems/indexedarchive.ts","./modules/zip/src/filesystems/zip-filesystem.ts","./modules/zip/src/lib/tar/header.ts","./modules/zip/src/lib/tar/tar.ts","./modules/zip/src/lib/tar/types.ts","./modules/zip/src/lib/tar/utils.ts","./modules/zip/src/parse-zip/cd-file-header.ts","./modules/zip/src/parse-zip/end-of-central-directory.ts","./modules/zip/src/parse-zip/local-file-header.ts","./modules/zip/src/parse-zip/search-from-the-end.ts","./modules/zip/src/parse-zip/zip-composition.ts","./modules/zip/src/parse-zip/zip64-info-generation.ts"],"version":"5.6.2"} \ No newline at end of file +{"root":["./modules/3d-tiles/src/3d-tiles-archive-loader.ts","./modules/3d-tiles/src/cesium-ion-loader.ts","./modules/3d-tiles/src/index.ts","./modules/3d-tiles/src/tile-3d-subtree-loader.ts","./modules/3d-tiles/src/tile-3d-writer.ts","./modules/3d-tiles/src/tiles-3d-loader.ts","./modules/3d-tiles/src/types.ts","./modules/3d-tiles/src/3d-tiles-archive/3d-tiles-archive-archive.ts","./modules/3d-tiles/src/3d-tiles-archive/3d-tiles-archive-parser.ts","./modules/3d-tiles/src/lib/constants.ts","./modules/3d-tiles/src/lib/classes/tile-3d-batch-table-hierarchy.ts","./modules/3d-tiles/src/lib/classes/tile-3d-batch-table.ts","./modules/3d-tiles/src/lib/classes/tile-3d-feature-table.ts","./modules/3d-tiles/src/lib/classes/helpers/tile-3d-accessor-utils.ts","./modules/3d-tiles/src/lib/encoders/encode-3d-tile-batched-model.ts","./modules/3d-tiles/src/lib/encoders/encode-3d-tile-composite.ts","./modules/3d-tiles/src/lib/encoders/encode-3d-tile-instanced-model.ts","./modules/3d-tiles/src/lib/encoders/encode-3d-tile-point-cloud.ts","./modules/3d-tiles/src/lib/encoders/encode-3d-tile.ts","./modules/3d-tiles/src/lib/encoders/helpers/encode-3d-tile-header.ts","./modules/3d-tiles/src/lib/ion/ion.ts","./modules/3d-tiles/src/lib/parsers/parse-3d-tile-batched-model.ts","./modules/3d-tiles/src/lib/parsers/parse-3d-tile-composite.ts","./modules/3d-tiles/src/lib/parsers/parse-3d-tile-gltf.ts","./modules/3d-tiles/src/lib/parsers/parse-3d-tile-header.ts","./modules/3d-tiles/src/lib/parsers/parse-3d-tile-instanced-model.ts","./modules/3d-tiles/src/lib/parsers/parse-3d-tile-point-cloud.ts","./modules/3d-tiles/src/lib/parsers/parse-3d-tile.ts","./modules/3d-tiles/src/lib/parsers/helpers/normalize-3d-tile-colors.ts","./modules/3d-tiles/src/lib/parsers/helpers/normalize-3d-tile-normals.ts","./modules/3d-tiles/src/lib/parsers/helpers/normalize-3d-tile-positions.ts","./modules/3d-tiles/src/lib/parsers/helpers/parse-3d-implicit-tiles.ts","./modules/3d-tiles/src/lib/parsers/helpers/parse-3d-tile-gltf-view.ts","./modules/3d-tiles/src/lib/parsers/helpers/parse-3d-tile-header.ts","./modules/3d-tiles/src/lib/parsers/helpers/parse-3d-tile-subtree.ts","./modules/3d-tiles/src/lib/parsers/helpers/parse-3d-tile-tables.ts","./modules/3d-tiles/src/lib/parsers/helpers/parse-utils.ts","./modules/3d-tiles/src/lib/utils/version.ts","./modules/3d-tiles/src/lib/utils/obb/s2-corners-to-obb.ts","./modules/3d-tiles/src/lib/utils/s2/index.ts","./modules/3d-tiles/src/lib/utils/s2/s2-geometry-functions.ts","./modules/3d-tiles/src/lib/utils/s2/s2-token-functions.ts","./modules/3d-tiles/src/lib/utils/s2/converters/s2-to-boundary.ts","./modules/3d-tiles/src/lib/utils/s2/converters/s2-to-obb-points.ts","./modules/3d-tiles/src/lib/utils/s2/converters/s2-to-region.ts","./modules/3d-tiles/src/lib/utils/s2/s2geometry/s2-cell-utils.ts","./modules/3d-tiles/src/lib/utils/s2/s2geometry/s2-geometry.ts","./modules/arrow/src/arrow-loader.ts","./modules/arrow/src/arrow-writer.ts","./modules/arrow/src/geoarrow-loader.ts","./modules/arrow/src/geoarrow-writer.ts","./modules/arrow/src/index.ts","./modules/arrow/src/triangulate-on-worker.ts","./modules/arrow/src/exports/arrow-loader.ts","./modules/arrow/src/exports/geoarrow-loader.ts","./modules/arrow/src/lib/types.ts","./modules/arrow/src/lib/encoders/encode-arrow.ts","./modules/arrow/src/lib/encoders/encode-geoarrow.ts","./modules/arrow/src/lib/geoarrow/convert-geoarrow-to-binary-geometry.ts","./modules/arrow/src/lib/geoarrow/convert-geoarrow-to-geojson-geometry.ts","./modules/arrow/src/lib/geoarrow/get-arrow-bounds.ts","./modules/arrow/src/lib/parsers/parse-arrow.ts","./modules/arrow/src/lib/parsers/parse-geoarrow.ts","./modules/arrow/src/lib/tables/convert-arrow-schema.ts","./modules/arrow/src/lib/tables/convert-arrow-to-table.ts","./modules/arrow/src/lib/tables/convert-table-to-arrow.ts","./modules/arrow/src/schema/arrow-table-batch.ts","./modules/arrow/src/schema/arrow-table-type.ts","./modules/arrow/src/workers/arrow-worker.ts","./modules/arrow/src/workers/hard-clone.ts","./modules/arrow/src/workers/triangulation-worker-node.ts","./modules/arrow/src/workers/triangulation-worker.ts","./modules/bson/src/bson-loader.ts","./modules/bson/src/bson-writer.ts","./modules/bson/src/index.ts","./modules/bson/src/lib/encoders/encode-bson.ts","./modules/bson/src/lib/parsers/parse-bson.ts","./modules/compression/src/compress-on-worker.ts","./modules/compression/src/index.ts","./modules/compression/src/types.ts","./modules/compression/src/brotli/decode.ts","./modules/compression/src/lib/brotli-compression.ts","./modules/compression/src/lib/compression.ts","./modules/compression/src/lib/deflate-compression.ts","./modules/compression/src/lib/gzip-compression.ts","./modules/compression/src/lib/lz4-compression.ts","./modules/compression/src/lib/lzo-compression.ts","./modules/compression/src/lib/no-compression.ts","./modules/compression/src/lib/snappy-compression.ts","./modules/compression/src/lib/zstd-compression.ts","./modules/compression/src/workers/compression-worker-node.ts","./modules/compression/src/workers/compression-worker.ts","./modules/copc/src/copc-source.ts","./modules/copc/src/index.ts","./modules/core/src/index.ts","./modules/core/src/null-loader.ts","./modules/core/src/core-addons/write-file-browser.ts","./modules/core/src/iterators/batch-iterators/timed-batch-iterator.ts","./modules/core/src/iterators/make-iterator/make-array-buffer-iterator.ts","./modules/core/src/iterators/make-iterator/make-blob-iterator.ts","./modules/core/src/iterators/make-iterator/make-iterator.ts","./modules/core/src/iterators/make-iterator/make-stream-iterator.ts","./modules/core/src/iterators/make-iterator/make-string-iterator.ts","./modules/core/src/iterators/make-stream/make-stream.ts","./modules/core/src/javascript-utils/is-type.ts","./modules/core/src/lib/common.ts","./modules/core/src/lib/init.ts","./modules/core/src/lib/api/create-data-source.ts","./modules/core/src/lib/api/encode-table.ts","./modules/core/src/lib/api/encode.ts","./modules/core/src/lib/api/load-in-batches.ts","./modules/core/src/lib/api/load.ts","./modules/core/src/lib/api/loader-options.ts","./modules/core/src/lib/api/parse-in-batches.ts","./modules/core/src/lib/api/parse-sync.ts","./modules/core/src/lib/api/parse.ts","./modules/core/src/lib/api/register-loaders.ts","./modules/core/src/lib/api/select-loader.ts","./modules/core/src/lib/api/select-source.ts","./modules/core/src/lib/fetch/fetch-error-message.ts","./modules/core/src/lib/fetch/fetch-error.ts","./modules/core/src/lib/fetch/fetch-file.ts","./modules/core/src/lib/fetch/read-array-buffer.ts","./modules/core/src/lib/filesystems/browser-filesystem.ts","./modules/core/src/lib/filesystems/read-array-buffer.ts","./modules/core/src/lib/loader-utils/check-errors.ts","./modules/core/src/lib/loader-utils/get-data.ts","./modules/core/src/lib/loader-utils/get-fetch-function.ts","./modules/core/src/lib/loader-utils/loader-context.ts","./modules/core/src/lib/loader-utils/loggers.ts","./modules/core/src/lib/loader-utils/normalize-loader.ts","./modules/core/src/lib/loader-utils/option-defaults.ts","./modules/core/src/lib/loader-utils/option-utils.ts","./modules/core/src/lib/progress/fetch-progress.ts","./modules/core/src/lib/utils/mime-type-utils.ts","./modules/core/src/lib/utils/resource-utils.ts","./modules/core/src/lib/utils/response-utils.ts","./modules/core/src/lib/utils/url-utils.ts","./modules/core/src/workers/null-worker-node.ts","./modules/core/src/workers/null-worker.ts","./modules/crypto/src/index.ts","./modules/crypto/src/types.ts","./modules/crypto/src/lib/crc32-hash.ts","./modules/crypto/src/lib/crc32c-hash.ts","./modules/crypto/src/lib/crypto-hash.ts","./modules/crypto/src/lib/hash.ts","./modules/crypto/src/lib/md5-hash.ts","./modules/crypto/src/lib/node-hash.ts","./modules/crypto/src/lib/sha256-hash.ts","./modules/crypto/src/lib/algorithms/crc32.ts","./modules/crypto/src/lib/algorithms/crc32c.ts","./modules/crypto/src/lib/algorithms/md5-wasm.ts","./modules/crypto/src/lib/utils/base64-utils.ts","./modules/crypto/src/lib/utils/digest-utils.ts","./modules/crypto/src/workers/crypto-worker-node.ts","./modules/crypto/src/workers/crypto-worker.ts","./modules/csv/src/csv-loader.ts","./modules/csv/src/csv-writer.ts","./modules/csv/src/index.ts","./modules/csv/src/lib/encoders/encode-csv.ts","./modules/csv/src/papaparse/async-iterator-streamer.ts","./modules/csv/src/papaparse/papaparse.ts","./modules/draco/src/draco-loader.ts","./modules/draco/src/draco-writer.ts","./modules/draco/src/index.ts","./modules/draco/src/draco3d/draco3d-types.ts","./modules/draco/src/lib/draco-builder.ts","./modules/draco/src/lib/draco-module-loader.ts","./modules/draco/src/lib/draco-parser.ts","./modules/draco/src/lib/draco-types.ts","./modules/draco/src/lib/utils/get-draco-schema.ts","./modules/draco/src/lib/utils/version.ts","./modules/draco/src/workers/draco-worker-node.ts","./modules/draco/src/workers/draco-worker.ts","./modules/draco/src/workers/draco-writer-worker-node.ts","./modules/draco/src/workers/draco-writer-worker.ts","./modules/excel/src/excel-loader.ts","./modules/excel/src/index.ts","./modules/excel/src/lib/encode-excel.ts","./modules/excel/src/lib/parse-excel.ts","./modules/excel/src/workers/excel-worker.ts","./modules/flatgeobuf/src/flatgeobuf-loader.ts","./modules/flatgeobuf/src/floatgeobuf-source.ts","./modules/flatgeobuf/src/index.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/column-meta.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/config.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/constants.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/crs-meta.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/dumptree.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/feature.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/flat-geobuf.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/generic.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/geojson.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/header-meta.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/header.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/http-reader.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/index.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/logger.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/packedrtree.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/flat-geobuf/column-type.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/flat-geobuf/column.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/flat-geobuf/crs.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/flat-geobuf/feature.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/flat-geobuf/geometry-type.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/flat-geobuf/geometry.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/flat-geobuf/header.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/generic/feature.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/generic/featurecollection.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/generic/geometry.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/generic/header.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/generic/index.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/geojson/feature.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/geojson/featurecollection.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/geojson/geometry.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/geojson/index.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/streams/utils.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/types/jsts.d.ts","./modules/flatgeobuf/src/flatgeobuf/3.27.2/types/slice.d.ts","./modules/flatgeobuf/src/lib/binary-geometries.ts","./modules/flatgeobuf/src/lib/get-schema-from-fgb-header.ts","./modules/flatgeobuf/src/lib/parse-flatgeobuf.ts","./modules/flatgeobuf/src/workers/flatgeobuf-worker.ts","./modules/geopackage/src/geopackage-loader.ts","./modules/geopackage/src/index.ts","./modules/geopackage/src/lib/parse-geopackage.ts","./modules/geopackage/src/lib/types.ts","./modules/geopackage/src/workers/geopackage-worker.ts","./modules/geotiff/src/geotiff-loader.ts","./modules/geotiff/src/index.ts","./modules/geotiff/src/loaders.ts","./modules/geotiff/src/types.ts","./modules/geotiff/src/lib/load-geotiff.ts","./modules/geotiff/src/lib/tiff-pixel-source.ts","./modules/geotiff/src/lib/ome/load-ome-tiff.ts","./modules/geotiff/src/lib/ome/ome-indexers.ts","./modules/geotiff/src/lib/ome/ome-utils.ts","./modules/geotiff/src/lib/ome/omexml.ts","./modules/geotiff/src/lib/ome/utils.ts","./modules/geotiff/src/lib/utils/tiff-utils.ts","./modules/gis/src/index.ts","./modules/gis/src/lib/binary-features/binary-to-geojson.ts","./modules/gis/src/lib/binary-features/extract-geometry-info.ts","./modules/gis/src/lib/binary-features/flat-geojson-to-binary-types.ts","./modules/gis/src/lib/binary-features/flat-geojson-to-binary.ts","./modules/gis/src/lib/binary-features/geojson-to-binary.ts","./modules/gis/src/lib/binary-features/geojson-to-flat-geojson.ts","./modules/gis/src/lib/binary-features/transform.ts","./modules/gis/src/lib/geo/geoarrow-metadata.ts","./modules/gis/src/lib/geo/geoparquet-metadata-schema.ts","./modules/gis/src/lib/geo/geoparquet-metadata.ts","./modules/gis/src/lib/tables/convert-table-to-geojson.ts","./modules/gltf/src/glb-loader.ts","./modules/gltf/src/glb-writer.ts","./modules/gltf/src/gltf-loader.ts","./modules/gltf/src/gltf-writer.ts","./modules/gltf/src/index.ts","./modules/gltf/src/lib/api/gltf-extensions.ts","./modules/gltf/src/lib/api/gltf-scenegraph.ts","./modules/gltf/src/lib/api/normalize-gltf-v1.ts","./modules/gltf/src/lib/api/post-process-gltf.ts","./modules/gltf/src/lib/encoders/encode-glb.ts","./modules/gltf/src/lib/encoders/encode-gltf.ts","./modules/gltf/src/lib/extensions/ext_mesh_features.ts","./modules/gltf/src/lib/extensions/ext_meshopt_compression.ts","./modules/gltf/src/lib/extensions/ext_structural_metadata.ts","./modules/gltf/src/lib/extensions/ext_texture_webp.ts","./modules/gltf/src/lib/extensions/khr_binary_gltf.ts","./modules/gltf/src/lib/extensions/khr_draco_mesh_compression.ts","./modules/gltf/src/lib/extensions/khr_texture_basisu.ts","./modules/gltf/src/lib/extensions/khr_texture_transform.ts","./modules/gltf/src/lib/extensions/deprecated/ext_feature_metadata.ts","./modules/gltf/src/lib/extensions/deprecated/khr_lights_punctual.ts","./modules/gltf/src/lib/extensions/deprecated/khr_materials_unlit.ts","./modules/gltf/src/lib/extensions/deprecated/khr_techniques_webgl.ts","./modules/gltf/src/lib/extensions/utils/3d-tiles-utils.ts","./modules/gltf/src/lib/gltf-utils/get-typed-array.ts","./modules/gltf/src/lib/gltf-utils/gltf-attribute-utils.ts","./modules/gltf/src/lib/gltf-utils/gltf-constants.ts","./modules/gltf/src/lib/gltf-utils/gltf-utils.ts","./modules/gltf/src/lib/gltf-utils/resolve-url.ts","./modules/gltf/src/lib/parsers/parse-glb.ts","./modules/gltf/src/lib/parsers/parse-gltf.ts","./modules/gltf/src/lib/types/glb-types.ts","./modules/gltf/src/lib/types/gltf-ext-feature-metadata-schema.ts","./modules/gltf/src/lib/types/gltf-ext-mesh-features-schema.ts","./modules/gltf/src/lib/types/gltf-ext-structural-metadata-schema.ts","./modules/gltf/src/lib/types/gltf-json-schema.ts","./modules/gltf/src/lib/types/gltf-postprocessed-schema.ts","./modules/gltf/src/lib/types/gltf-types.ts","./modules/gltf/src/lib/utils/assert.ts","./modules/gltf/src/lib/utils/version.ts","./modules/gltf/src/meshopt/meshopt-decoder.ts","./modules/gltf/src/webp/webp.ts","./modules/i3s/src/arcgis-webscene-loader.ts","./modules/i3s/src/i3s-attribute-loader.ts","./modules/i3s/src/i3s-building-scene-layer-loader.ts","./modules/i3s/src/i3s-content-loader.ts","./modules/i3s/src/i3s-loader.ts","./modules/i3s/src/i3s-node-page-loader.ts","./modules/i3s/src/i3s-slpk-loader.ts","./modules/i3s/src/index.ts","./modules/i3s/src/types.ts","./modules/i3s/src/lib/helpers/i3s-nodepages-tiles.ts","./modules/i3s/src/lib/parsers/constants.ts","./modules/i3s/src/lib/parsers/parse-arcgis-webscene.ts","./modules/i3s/src/lib/parsers/parse-i3s-attribute.ts","./modules/i3s/src/lib/parsers/parse-i3s-building-scene-layer.ts","./modules/i3s/src/lib/parsers/parse-i3s-tile-content.ts","./modules/i3s/src/lib/parsers/parse-i3s.ts","./modules/i3s/src/lib/parsers/parse-slpk/parse-slpk.ts","./modules/i3s/src/lib/parsers/parse-slpk/slpk-archieve.ts","./modules/i3s/src/lib/utils/convert-i3s-obb-to-mbs.ts","./modules/i3s/src/lib/utils/customize-colors.ts","./modules/i3s/src/lib/utils/url-utils.ts","./modules/i3s/src/workers/i3s-content-worker-node.ts","./modules/i3s/src/workers/i3s-content-worker.ts","./modules/images/src/image-loader.ts","./modules/images/src/image-writer.ts","./modules/images/src/index.ts","./modules/images/src/types.ts","./modules/images/src/lib/category-api/binary-image-api.ts","./modules/images/src/lib/category-api/image-format.ts","./modules/images/src/lib/category-api/image-type.ts","./modules/images/src/lib/category-api/parse-isobmff-binary.ts","./modules/images/src/lib/category-api/parsed-image-api.ts","./modules/images/src/lib/encoders/encode-image.ts","./modules/images/src/lib/parsers/parse-image.ts","./modules/images/src/lib/parsers/parse-to-image-bitmap.ts","./modules/images/src/lib/parsers/parse-to-image.ts","./modules/images/src/lib/parsers/parse-to-node-image.ts","./modules/images/src/lib/parsers/svg-utils.ts","./modules/images/src/lib/utils/version.ts","./modules/json/src/geojson-loader.ts","./modules/json/src/geojson-writer.ts","./modules/json/src/index.ts","./modules/json/src/json-loader.ts","./modules/json/src/json-writer.ts","./modules/json/src/ndgeoson-loader.ts","./modules/json/src/ndjson-loader.ts","./modules/json/src/lib/clarinet/clarinet.ts","./modules/json/src/lib/encoder-utils/encode-table-row.ts","./modules/json/src/lib/encoder-utils/encode-utils.ts","./modules/json/src/lib/encoder-utils/utf8-encoder.ts","./modules/json/src/lib/encoders/geojson-encoder.ts","./modules/json/src/lib/encoders/json-encoder.ts","./modules/json/src/lib/json-parser/json-parser.ts","./modules/json/src/lib/json-parser/streaming-json-parser.ts","./modules/json/src/lib/jsonpath/jsonpath.ts","./modules/json/src/lib/parsers/parse-json-in-batches.ts","./modules/json/src/lib/parsers/parse-json.ts","./modules/json/src/lib/parsers/parse-ndjson-in-batches.ts","./modules/json/src/lib/parsers/parse-ndjson.ts","./modules/json/src/workers/geojson-worker.ts","./modules/kml/src/gpx-loader.ts","./modules/kml/src/index.ts","./modules/kml/src/kml-loader.ts","./modules/kml/src/tcx-loader.ts","./modules/las/src/index.ts","./modules/las/src/las-loader.ts","./modules/las/src/lib/get-las-schema.ts","./modules/las/src/lib/las-types.ts","./modules/las/src/lib/laslaz-decoder.ts","./modules/las/src/lib/parse-las.ts","./modules/las/src/lib/libs/laz-perf.ts","./modules/las/src/workers/las-worker.ts","./modules/lerc/src/index.ts","./modules/lerc/src/lerc-loader.ts","./modules/lerc/src/lib/parsers/lerc/lerc-types.ts","./modules/lerc/src/workers/lerc-worker.ts","./modules/loader-utils/src/index.ts","./modules/loader-utils/src/json-loader.ts","./modules/loader-utils/src/loader-types.ts","./modules/loader-utils/src/source-types.ts","./modules/loader-utils/src/types.ts","./modules/loader-utils/src/writer-types.ts","./modules/loader-utils/src/lib/binary-utils/array-buffer-utils.ts","./modules/loader-utils/src/lib/binary-utils/dataview-copy-utils.ts","./modules/loader-utils/src/lib/binary-utils/get-first-characters.ts","./modules/loader-utils/src/lib/binary-utils/memory-conversion-utils.ts","./modules/loader-utils/src/lib/binary-utils/memory-copy-utils.ts","./modules/loader-utils/src/lib/env-utils/assert.ts","./modules/loader-utils/src/lib/env-utils/globals.ts","./modules/loader-utils/src/lib/file-provider/data-view-file.ts","./modules/loader-utils/src/lib/file-provider/file-handle-file.ts","./modules/loader-utils/src/lib/file-provider/file-provider-interface.ts","./modules/loader-utils/src/lib/file-provider/file-provider.ts","./modules/loader-utils/src/lib/files/blob-file.ts","./modules/loader-utils/src/lib/files/file.ts","./modules/loader-utils/src/lib/files/http-file.ts","./modules/loader-utils/src/lib/files/node-file-facade.ts","./modules/loader-utils/src/lib/files/sources.ts","./modules/loader-utils/src/lib/filesystems/filesystem.ts","./modules/loader-utils/src/lib/filesystems/node-filesystem-facade.ts","./modules/loader-utils/src/lib/iterators/async-iteration.ts","./modules/loader-utils/src/lib/iterators/text-iterators.ts","./modules/loader-utils/src/lib/log-utils/log.ts","./modules/loader-utils/src/lib/module-utils/js-module-utils.ts","./modules/loader-utils/src/lib/node/buffer.browser.ts","./modules/loader-utils/src/lib/node/buffer.ts","./modules/loader-utils/src/lib/node/fs.browser.ts","./modules/loader-utils/src/lib/node/promisify.ts","./modules/loader-utils/src/lib/node/stream.browser.ts","./modules/loader-utils/src/lib/node/stream.ts","./modules/loader-utils/src/lib/option-utils/merge-loader-options.ts","./modules/loader-utils/src/lib/parser-utils/parse-json.ts","./modules/loader-utils/src/lib/path-utils/file-aliases.ts","./modules/loader-utils/src/lib/path-utils/get-cwd.ts","./modules/loader-utils/src/lib/path-utils/path.ts","./modules/loader-utils/src/lib/request-utils/request-scheduler.ts","./modules/loader-utils/src/lib/sources/data-source.ts","./modules/loader-utils/src/lib/sources/image-source.ts","./modules/loader-utils/src/lib/sources/image-tile-source.ts","./modules/loader-utils/src/lib/sources/tile-source-adapter.ts","./modules/loader-utils/src/lib/sources/tile-source.ts","./modules/loader-utils/src/lib/sources/vector-source.ts","./modules/loader-utils/src/lib/sources/vector-tile-source.ts","./modules/loader-utils/src/lib/sources/utils/image-type.ts","./modules/loader-utils/src/lib/sources/utils/utils.ts","./modules/loader-utils/src/lib/worker-loader-utils/create-loader-worker.ts","./modules/loader-utils/src/lib/worker-loader-utils/encode-with-worker.ts","./modules/loader-utils/src/lib/worker-loader-utils/parse-with-worker.ts","./modules/loader-utils/src/workers/json-worker.ts","./modules/math/src/index.ts","./modules/math/src/geometry/constants.ts","./modules/math/src/geometry/is-geometry.ts","./modules/math/src/geometry/attributes/compute-bounding-box.ts","./modules/math/src/geometry/attributes/compute-bounding-sphere.ts","./modules/math/src/geometry/attributes/compute-tangents.ts","./modules/math/src/geometry/attributes/compute-vertex-normals.ts","./modules/math/src/geometry/attributes/convert-to-non-indexed.ts","./modules/math/src/geometry/attributes/get-attribute-from-geometry.ts","./modules/math/src/geometry/attributes/normalize.ts","./modules/math/src/geometry/colors/rgb565.ts","./modules/math/src/geometry/compression/attribute-compression.ts","./modules/math/src/geometry/gl/gl-type.ts","./modules/math/src/geometry/iterators/attribute-iterator.ts","./modules/math/src/geometry/iterators/primitive-iterator.ts","./modules/math/src/geometry/primitives/modes.ts","./modules/math/src/geometry/typed-arrays/typed-array-utils.ts","./modules/math/src/geometry/utils/assert.ts","./modules/math/src/geometry/utils/coordinates.ts","./modules/math/src/utils/assert.ts","./modules/mvt/src/index.ts","./modules/mvt/src/mvt-loader.ts","./modules/mvt/src/mvt-source.ts","./modules/mvt/src/table-tile-source.ts","./modules/mvt/src/tilejson-loader.ts","./modules/mvt/src/lib/get-schemas-from-tilejson.ts","./modules/mvt/src/lib/parse-mvt.ts","./modules/mvt/src/lib/parse-tilejson.ts","./modules/mvt/src/lib/types.ts","./modules/mvt/src/lib/utils/geometry-utils.ts","./modules/mvt/src/lib/vector-tile/vector-tile-feature.ts","./modules/mvt/src/lib/vector-tile/vector-tile-layer.ts","./modules/mvt/src/lib/vector-tile/vector-tile.ts","./modules/mvt/src/lib/vector-tiler/proto-tile.ts","./modules/mvt/src/lib/vector-tiler/tile-to-geojson.ts","./modules/mvt/src/lib/vector-tiler/transform-tile.ts","./modules/mvt/src/lib/vector-tiler/features/clip-features.ts","./modules/mvt/src/lib/vector-tiler/features/convert-feature.ts","./modules/mvt/src/lib/vector-tiler/features/proto-feature.ts","./modules/mvt/src/lib/vector-tiler/features/simplify-path.ts","./modules/mvt/src/lib/vector-tiler/features/wrap-features.ts","./modules/mvt/src/workers/mvt-worker.ts","./modules/netcdf/src/index.ts","./modules/netcdf/src/netcdf-loader.ts","./modules/netcdf/src/iobuffer/iobuffer.ts","./modules/netcdf/src/netcdfjs/netcdf-reader.ts","./modules/netcdf/src/netcdfjs/netcdf-types.ts","./modules/netcdf/src/netcdfjs/read-data.ts","./modules/netcdf/src/netcdfjs/read-header.ts","./modules/netcdf/src/netcdfjs/read-type.ts","./modules/obj/src/index.ts","./modules/obj/src/mtl-loader.ts","./modules/obj/src/obj-loader.ts","./modules/obj/src/lib/get-obj-schema.ts","./modules/obj/src/lib/obj-types.ts","./modules/obj/src/lib/parse-mtl.ts","./modules/obj/src/lib/parse-obj-meshes.ts","./modules/obj/src/lib/parse-obj.ts","./modules/obj/src/workers/obj-worker.ts","./modules/parquet/src/index.ts","./modules/parquet/src/parquet-loader.ts","./modules/parquet/src/parquet-wasm-loader.ts","./modules/parquet/src/parquet-wasm-writer.ts","./modules/parquet/src/parquet-writer.ts","./modules/parquet/src/lib/constants.ts","./modules/parquet/src/lib/arrow/convert-columns-to-row-group.ts","./modules/parquet/src/lib/arrow/convert-row-group-to-columns.ts","./modules/parquet/src/lib/arrow/convert-schema-from-parquet.ts","./modules/parquet/src/lib/arrow/convert-schema-to-parquet.ts","./modules/parquet/src/lib/encoders/encode-parquet-wasm.ts","./modules/parquet/src/lib/parsers/get-parquet-schema.ts","./modules/parquet/src/lib/parsers/parse-geoparquet.ts","./modules/parquet/src/lib/parsers/parse-parquet-to-columns.ts","./modules/parquet/src/lib/parsers/parse-parquet-wasm.ts","./modules/parquet/src/lib/parsers/parse-parquet.ts","./modules/parquet/src/lib/utils/load-wasm.ts","./modules/parquet/src/lib/utils/make-stream-iterator.ts","./modules/parquet/src/parquetjs/compression.ts","./modules/parquet/src/parquetjs/modules.d.ts","./modules/parquet/src/parquetjs/codecs/declare.ts","./modules/parquet/src/parquetjs/codecs/dictionary.ts","./modules/parquet/src/parquetjs/codecs/index.ts","./modules/parquet/src/parquetjs/codecs/plain.ts","./modules/parquet/src/parquetjs/codecs/rle.ts","./modules/parquet/src/parquetjs/encoder/parquet-encoder.ts","./modules/parquet/src/parquetjs/parquet-thrift/boundaryorder.ts","./modules/parquet/src/parquetjs/parquet-thrift/bsontype.ts","./modules/parquet/src/parquetjs/parquet-thrift/columnchunk.ts","./modules/parquet/src/parquetjs/parquet-thrift/columnindex.ts","./modules/parquet/src/parquetjs/parquet-thrift/columnmetadata.ts","./modules/parquet/src/parquetjs/parquet-thrift/columnorder.ts","./modules/parquet/src/parquetjs/parquet-thrift/compressioncodec.ts","./modules/parquet/src/parquetjs/parquet-thrift/convertedtype.ts","./modules/parquet/src/parquetjs/parquet-thrift/datapageheader.ts","./modules/parquet/src/parquetjs/parquet-thrift/datapageheaderv2.ts","./modules/parquet/src/parquetjs/parquet-thrift/datetype.ts","./modules/parquet/src/parquetjs/parquet-thrift/decimaltype.ts","./modules/parquet/src/parquetjs/parquet-thrift/dictionarypageheader.ts","./modules/parquet/src/parquetjs/parquet-thrift/encoding.ts","./modules/parquet/src/parquetjs/parquet-thrift/enumtype.ts","./modules/parquet/src/parquetjs/parquet-thrift/fieldrepetitiontype.ts","./modules/parquet/src/parquetjs/parquet-thrift/filemetadata.ts","./modules/parquet/src/parquetjs/parquet-thrift/indexpageheader.ts","./modules/parquet/src/parquetjs/parquet-thrift/inttype.ts","./modules/parquet/src/parquetjs/parquet-thrift/jsontype.ts","./modules/parquet/src/parquetjs/parquet-thrift/keyvalue.ts","./modules/parquet/src/parquetjs/parquet-thrift/listtype.ts","./modules/parquet/src/parquetjs/parquet-thrift/logicaltype.ts","./modules/parquet/src/parquetjs/parquet-thrift/maptype.ts","./modules/parquet/src/parquetjs/parquet-thrift/microseconds.ts","./modules/parquet/src/parquetjs/parquet-thrift/milliseconds.ts","./modules/parquet/src/parquetjs/parquet-thrift/nulltype.ts","./modules/parquet/src/parquetjs/parquet-thrift/offsetindex.ts","./modules/parquet/src/parquetjs/parquet-thrift/pageencodingstats.ts","./modules/parquet/src/parquetjs/parquet-thrift/pageheader.ts","./modules/parquet/src/parquetjs/parquet-thrift/pagelocation.ts","./modules/parquet/src/parquetjs/parquet-thrift/pagetype.ts","./modules/parquet/src/parquetjs/parquet-thrift/rowgroup.ts","./modules/parquet/src/parquetjs/parquet-thrift/schemaelement.ts","./modules/parquet/src/parquetjs/parquet-thrift/sortingcolumn.ts","./modules/parquet/src/parquetjs/parquet-thrift/statistics.ts","./modules/parquet/src/parquetjs/parquet-thrift/stringtype.ts","./modules/parquet/src/parquetjs/parquet-thrift/timetype.ts","./modules/parquet/src/parquetjs/parquet-thrift/timeunit.ts","./modules/parquet/src/parquetjs/parquet-thrift/timestamptype.ts","./modules/parquet/src/parquetjs/parquet-thrift/type.ts","./modules/parquet/src/parquetjs/parquet-thrift/typedefinedorder.ts","./modules/parquet/src/parquetjs/parquet-thrift/uuidtype.ts","./modules/parquet/src/parquetjs/parquet-thrift/index.ts","./modules/parquet/src/parquetjs/parser/decoders.ts","./modules/parquet/src/parquetjs/parser/parquet-reader.ts","./modules/parquet/src/parquetjs/schema/declare.ts","./modules/parquet/src/parquetjs/schema/schema.ts","./modules/parquet/src/parquetjs/schema/shred.ts","./modules/parquet/src/parquetjs/schema/types.ts","./modules/parquet/src/parquetjs/utils/file-utils.ts","./modules/parquet/src/parquetjs/utils/read-utils.ts","./modules/parquet/src/polyfills/util.js","./modules/parquet/src/polyfills/buffer/buffer-polyfill.browser.ts","./modules/parquet/src/polyfills/buffer/buffer-polyfill.node.ts","./modules/parquet/src/polyfills/buffer/buffer.ts","./modules/parquet/src/polyfills/buffer/index.ts","./modules/parquet/src/polyfills/buffer/install-buffer-polyfill.ts","./modules/parquet/src/workers/parquet-worker.ts","./modules/pcd/src/index.ts","./modules/pcd/src/pcd-loader.ts","./modules/pcd/src/lib/decompress-lzf.ts","./modules/pcd/src/lib/get-pcd-schema.ts","./modules/pcd/src/lib/parse-pcd.ts","./modules/pcd/src/lib/pcd-types.ts","./modules/pcd/src/workers/pcd-worker.ts","./modules/ply/src/index.ts","./modules/ply/src/ply-loader.ts","./modules/ply/src/lib/get-ply-schema.ts","./modules/ply/src/lib/normalize-ply.ts","./modules/ply/src/lib/parse-ply-in-batches.ts","./modules/ply/src/lib/parse-ply.ts","./modules/ply/src/lib/ply-types.ts","./modules/ply/src/workers/ply-worker.ts","./modules/pmtiles/src/index.ts","./modules/pmtiles/src/pmtiles-loader.ts","./modules/pmtiles/src/pmtiles-source.ts","./modules/pmtiles/src/source-info.ts","./modules/pmtiles/src/lib/blob-source.ts","./modules/pmtiles/src/lib/parse-pmtiles.ts","./modules/pmtiles/src/lib/version.ts","./modules/polyfills/src/index.browser.ts","./modules/polyfills/src/index.ts","./modules/polyfills/src/buffer/btoa.node.ts","./modules/polyfills/src/buffer/to-array-buffer.node.ts","./modules/polyfills/src/crypto/node-hash.ts","./modules/polyfills/src/fetch/decode-data-uri.ts","./modules/polyfills/src/fetch/fetch-polyfill.ts","./modules/polyfills/src/fetch/headers-polyfill.ts","./modules/polyfills/src/fetch/response-polyfill.ts","./modules/polyfills/src/fetch/utils/decode-data-uri.node.ts","./modules/polyfills/src/file/blob-stream-controller.ts","./modules/polyfills/src/file/blob-stream.ts","./modules/polyfills/src/file/blob.ts","./modules/polyfills/src/file/file-reader.ts","./modules/polyfills/src/file/file.ts","./modules/polyfills/src/file/install-blob-polyfills.ts","./modules/polyfills/src/file/install-file-polyfills.ts","./modules/polyfills/src/file/readable-stream.ts","./modules/polyfills/src/filesystems/fetch-node.ts","./modules/polyfills/src/filesystems/node-file.ts","./modules/polyfills/src/filesystems/node-filesystem.ts","./modules/polyfills/src/filesystems/stream-utils.node.ts","./modules/polyfills/src/images/encode-image-node.ts","./modules/polyfills/src/images/encode-image.node.ts","./modules/polyfills/src/images/parse-image-node.ts","./modules/polyfills/src/images/parse-image.node.ts","./modules/polyfills/src/load-library/require-utils.node.ts","./modules/polyfills/src/streams/make-node-stream.ts","./modules/polyfills/src/text-encoder/encoding-indexes.ts","./modules/polyfills/src/text-encoder/text-encoder.ts","./modules/polyfills/src/utils/assert.ts","./modules/polyfills/src/utils/is-browser.ts","./modules/potree/src/index.ts","./modules/potree/src/potree-bin-loader.ts","./modules/potree/src/potree-hierarchy-chunk-loader.ts","./modules/potree/src/potree-loader.ts","./modules/potree/src/potree-source.ts","./modules/potree/src/lib/octree.ts","./modules/potree/src/lib/potree-node-source.ts","./modules/potree/src/parsers/parse-potree-bin.ts","./modules/potree/src/parsers/parse-potree-hierarchy-chunk.ts","./modules/potree/src/types/potree-metadata.ts","./modules/potree/src/utils/parse-version.ts","./modules/schema/src/index.ts","./modules/schema/src/lib/mesh/convert-mesh.ts","./modules/schema/src/lib/mesh/deduce-mesh-schema.ts","./modules/schema/src/lib/mesh/mesh-to-arrow-table.ts","./modules/schema/src/lib/mesh/mesh-utils.ts","./modules/schema/src/lib/table/arrow-api/arrow-like-field.ts","./modules/schema/src/lib/table/arrow-api/arrow-like-interface.ts","./modules/schema/src/lib/table/arrow-api/arrow-like-schema.ts","./modules/schema/src/lib/table/arrow-api/arrow-like-table.ts","./modules/schema/src/lib/table/arrow-api/arrow-like-type.ts","./modules/schema/src/lib/table/arrow-api/enum.ts","./modules/schema/src/lib/table/arrow-api/get-type-info.ts","./modules/schema/src/lib/table/arrow-api/index.ts","./modules/schema/src/lib/table/batches/base-table-batch-aggregator.ts","./modules/schema/src/lib/table/batches/columnar-table-batch-aggregator.ts","./modules/schema/src/lib/table/batches/row-table-batch-aggregator.ts","./modules/schema/src/lib/table/batches/table-batch-aggregator.ts","./modules/schema/src/lib/table/batches/table-batch-builder.ts","./modules/schema/src/lib/table/simple-table/convert-table.ts","./modules/schema/src/lib/table/simple-table/data-type.ts","./modules/schema/src/lib/table/simple-table/make-table-from-batches.ts","./modules/schema/src/lib/table/simple-table/make-table.ts","./modules/schema/src/lib/table/simple-table/row-utils.ts","./modules/schema/src/lib/table/simple-table/table-accessors.ts","./modules/schema/src/lib/table/simple-table/table-column.ts","./modules/schema/src/lib/table/simple-table/table-schema.ts","./modules/schema/src/lib/utils/assert.ts","./modules/schema/src/lib/utils/async-queue.ts","./modules/schema/src/types/batch.ts","./modules/schema/src/types/binary-geometries.ts","./modules/schema/src/types/category-gis.ts","./modules/schema/src/types/category-image.ts","./modules/schema/src/types/category-mesh.ts","./modules/schema/src/types/category-table.ts","./modules/schema/src/types/category-texture.ts","./modules/schema/src/types/flat-geometries.ts","./modules/schema/src/types/schema.ts","./modules/schema/src/types/types.ts","./modules/shapefile/src/dbf-loader.ts","./modules/shapefile/src/index.ts","./modules/shapefile/src/shapefile-loader.ts","./modules/shapefile/src/shp-loader.ts","./modules/shapefile/src/lib/parsers/parse-dbf.ts","./modules/shapefile/src/lib/parsers/parse-shapefile.ts","./modules/shapefile/src/lib/parsers/parse-shp-geometry.ts","./modules/shapefile/src/lib/parsers/parse-shp-header.ts","./modules/shapefile/src/lib/parsers/parse-shp.ts","./modules/shapefile/src/lib/parsers/parse-shx.ts","./modules/shapefile/src/lib/parsers/types.ts","./modules/shapefile/src/lib/streaming/binary-chunk-reader.ts","./modules/shapefile/src/lib/streaming/binary-reader.ts","./modules/shapefile/src/lib/streaming/zip-batch-iterators.ts","./modules/shapefile/src/workers/dbf-worker.ts","./modules/shapefile/src/workers/shp-worker.ts","./modules/terrain/src/index.ts","./modules/terrain/src/quantized-mesh-loader.ts","./modules/terrain/src/terrain-loader.ts","./modules/terrain/src/lib/decode-quantized-mesh.ts","./modules/terrain/src/lib/parse-quantized-mesh.ts","./modules/terrain/src/lib/parse-terrain.ts","./modules/terrain/src/lib/delatin/index.ts","./modules/terrain/src/lib/helpers/skirt.ts","./modules/terrain/src/lib/utils/version.ts","./modules/terrain/src/workers/quantized-mesh-worker.ts","./modules/terrain/src/workers/terrain-worker.ts","./modules/textures/src/basis-loader.ts","./modules/textures/src/compressed-texture-loader.ts","./modules/textures/src/compressed-texture-writer.ts","./modules/textures/src/crunch-loader.ts","./modules/textures/src/index.ts","./modules/textures/src/ktx2-basis-writer.ts","./modules/textures/src/npy-loader.ts","./modules/textures/src/lib/gl-extensions.ts","./modules/textures/src/lib/encoders/encode-ktx.ts","./modules/textures/src/lib/encoders/encode-ktx2-basis-texture.ts","./modules/textures/src/lib/encoders/encode-texture.ts","./modules/textures/src/lib/parsers/basis-module-loader.ts","./modules/textures/src/lib/parsers/crunch-module-loader.ts","./modules/textures/src/lib/parsers/parse-basis.ts","./modules/textures/src/lib/parsers/parse-compressed-texture.ts","./modules/textures/src/lib/parsers/parse-crunch.ts","./modules/textures/src/lib/parsers/parse-dds.ts","./modules/textures/src/lib/parsers/parse-ktx.ts","./modules/textures/src/lib/parsers/parse-npy.ts","./modules/textures/src/lib/parsers/parse-pvr.ts","./modules/textures/src/lib/texture-api/async-deep-map.ts","./modules/textures/src/lib/texture-api/deep-load.ts","./modules/textures/src/lib/texture-api/generate-url.ts","./modules/textures/src/lib/texture-api/load-image-array.ts","./modules/textures/src/lib/texture-api/load-image-cube.ts","./modules/textures/src/lib/texture-api/load-image.ts","./modules/textures/src/lib/texture-api/texture-api-types.ts","./modules/textures/src/lib/utils/extract-mipmap-images.ts","./modules/textures/src/lib/utils/ktx-format-helper.ts","./modules/textures/src/lib/utils/texture-formats.ts","./modules/textures/src/lib/utils/version.ts","./modules/textures/src/workers/basis-worker-node.ts","./modules/textures/src/workers/basis-worker.ts","./modules/textures/src/workers/compressed-texture-worker.ts","./modules/textures/src/workers/crunch-worker.ts","./modules/textures/src/workers/ktx2-basis-writer-worker-node.ts","./modules/textures/src/workers/ktx2-basis-writer-worker.ts","./modules/textures/src/workers/npy-worker.ts","./modules/tiles/src/constants.ts","./modules/tiles/src/index.ts","./modules/tiles/src/types.ts","./modules/tiles/src/tileset/tile-3d.ts","./modules/tiles/src/tileset/tileset-3d.ts","./modules/tiles/src/tileset/tileset-cache.ts","./modules/tiles/src/tileset/tileset-traverser.ts","./modules/tiles/src/tileset/format-3d-tiles/tileset-3d-traverser.ts","./modules/tiles/src/tileset/format-i3s/i3s-pending-tiles-register.ts","./modules/tiles/src/tileset/format-i3s/i3s-tile-manager.ts","./modules/tiles/src/tileset/format-i3s/i3s-tileset-traverser.ts","./modules/tiles/src/tileset/helpers/3d-tiles-options.ts","./modules/tiles/src/tileset/helpers/bounding-volume.ts","./modules/tiles/src/tileset/helpers/frame-state.ts","./modules/tiles/src/tileset/helpers/i3s-lod.ts","./modules/tiles/src/tileset/helpers/tiles-3d-lod.ts","./modules/tiles/src/tileset/helpers/transform-utils.ts","./modules/tiles/src/tileset/helpers/zoom.ts","./modules/tiles/src/utils/doubly-linked-list-node.ts","./modules/tiles/src/utils/doubly-linked-list.ts","./modules/tiles/src/utils/managed-array.ts","./modules/video/src/gif-builder.ts","./modules/video/src/index.ts","./modules/video/src/video-loader.ts","./modules/video/src/lib/gifshot/gifshot-loader.ts","./modules/video/src/lib/gifshot/gifshot.ts","./modules/video/src/lib/parsers/parse-video.ts","./modules/video/src/lib/utils/assert.ts","./modules/wkt/src/hex-wkb-loader.ts","./modules/wkt/src/index.ts","./modules/wkt/src/twkb-loader.ts","./modules/wkt/src/twkb-writer.ts","./modules/wkt/src/wkb-loader.ts","./modules/wkt/src/wkb-writer.ts","./modules/wkt/src/wkt-crs-loader.ts","./modules/wkt/src/wkt-crs-writer.ts","./modules/wkt/src/wkt-loader.ts","./modules/wkt/src/wkt-writer.ts","./modules/wkt/src/lib/encode-twkb.ts","./modules/wkt/src/lib/encode-wkb.ts","./modules/wkt/src/lib/encode-wkt-crs.ts","./modules/wkt/src/lib/encode-wkt.ts","./modules/wkt/src/lib/parse-hex-wkb.ts","./modules/wkt/src/lib/parse-twkb.ts","./modules/wkt/src/lib/parse-wkb-header.ts","./modules/wkt/src/lib/parse-wkb.ts","./modules/wkt/src/lib/parse-wkt-crs.ts","./modules/wkt/src/lib/parse-wkt.ts","./modules/wkt/src/lib/utils/base64-encoder.ts","./modules/wkt/src/lib/utils/binary-reader.ts","./modules/wkt/src/lib/utils/binary-writer.ts","./modules/wkt/src/lib/utils/hex-encoder.ts","./modules/wkt/src/lib/utils/hex-transcoder.ts","./modules/wkt/src/lib/utils/version.ts","./modules/wkt/src/workers/wkb-worker.ts","./modules/wkt/src/workers/wkt-worker.ts","./modules/wms/src/csw-capabilities-loader.ts","./modules/wms/src/csw-domain-loader.ts","./modules/wms/src/csw-records-loader.ts","./modules/wms/src/gml-loader.ts","./modules/wms/src/index.ts","./modules/wms/src/wfs-capabilities-loader.ts","./modules/wms/src/wms-capabilities-loader.ts","./modules/wms/src/wms-error-loader.ts","./modules/wms/src/lib/deprecated/create-image-source.ts","./modules/wms/src/lib/parsers/csw/parse-csw-capabilities.ts","./modules/wms/src/lib/parsers/csw/parse-csw-domain.ts","./modules/wms/src/lib/parsers/csw/parse-csw-records.ts","./modules/wms/src/lib/parsers/csw/parse-exception-report.ts","./modules/wms/src/lib/parsers/gml/deep-strict-equal.ts","./modules/wms/src/lib/parsers/gml/parse-gml.ts","./modules/wms/src/lib/parsers/wfs/parse-wfs-capabilities.ts","./modules/wms/src/lib/parsers/wfs/parse-wfs.ts","./modules/wms/src/lib/parsers/wms/parse-wms-capabilities.ts","./modules/wms/src/lib/parsers/wms/parse-wms-error.ts","./modules/wms/src/lib/parsers/wms/parse-wms-features.ts","./modules/wms/src/lib/parsers/wms/parse-wms-layer-description.ts","./modules/wms/src/lib/parsers/xml/parse-xml-helpers.ts","./modules/wms/src/services/arcgis/arcgis-feature-server.ts","./modules/wms/src/services/arcgis/arcgis-image-server.ts","./modules/wms/src/services/arcgis/arcgis-server.ts","./modules/wms/src/services/ogc/csw-service.ts","./modules/wms/src/services/ogc/wfs-service.ts","./modules/wms/src/services/ogc/wms-service.ts","./modules/wms/src/wip/data-source.ts","./modules/wms/src/wip/wcs-capabilities-loader.ts","./modules/wms/src/wip/wms-feature-info-loader.ts","./modules/wms/src/wip/wms-layer-description-loader.ts","./modules/wms/src/wip/wmts-capabilities-loader.ts","./modules/wms/src/wip/lib/wcs/parse-wcs-capabilities.ts","./modules/wms/src/wip/lib/wmts/parse-wmts-capabilities.ts","./modules/wms/src/wip/lib/wmts/parse-wmts.ts","./modules/worker-utils/src/index.ts","./modules/worker-utils/src/types.ts","./modules/worker-utils/src/lib/async-queue/async-queue.ts","./modules/worker-utils/src/lib/env-utils/assert.ts","./modules/worker-utils/src/lib/env-utils/globals.ts","./modules/worker-utils/src/lib/env-utils/version.ts","./modules/worker-utils/src/lib/library-utils/library-utils.ts","./modules/worker-utils/src/lib/node/worker_threads-browser.ts","./modules/worker-utils/src/lib/node/worker_threads.ts","./modules/worker-utils/src/lib/process-utils/child-process-proxy.ts","./modules/worker-utils/src/lib/process-utils/process-utils.ts","./modules/worker-utils/src/lib/worker-api/create-worker.ts","./modules/worker-utils/src/lib/worker-api/get-worker-url.ts","./modules/worker-utils/src/lib/worker-api/process-on-worker.ts","./modules/worker-utils/src/lib/worker-api/validate-worker-version.ts","./modules/worker-utils/src/lib/worker-farm/worker-body.ts","./modules/worker-utils/src/lib/worker-farm/worker-farm.ts","./modules/worker-utils/src/lib/worker-farm/worker-job.ts","./modules/worker-utils/src/lib/worker-farm/worker-pool.ts","./modules/worker-utils/src/lib/worker-farm/worker-thread.ts","./modules/worker-utils/src/lib/worker-utils/get-loadable-worker-url.ts","./modules/worker-utils/src/lib/worker-utils/get-transfer-list.ts","./modules/worker-utils/src/lib/worker-utils/remove-nontransferable-options.ts","./modules/worker-utils/src/workers/null-worker.ts","./modules/xml/src/html-loader.ts","./modules/xml/src/index.ts","./modules/xml/src/xml-loader.ts","./modules/xml/src/lib/parsers/parse-xml.ts","./modules/xml/src/lib/parsers/streaming-xml-parser.ts","./modules/xml/src/lib/xml-utils/uncapitalize.ts","./modules/xml/src/lib/xml-utils/xml-utils.ts","./modules/xml/src/sax-ts/sax.ts","./modules/zarr/src/index.ts","./modules/zarr/src/types.ts","./modules/zarr/src/lib/load-zarr.ts","./modules/zarr/src/lib/utils.ts","./modules/zarr/src/lib/zarr-pixel-source.ts","./modules/zip/src/hash-file-utility.ts","./modules/zip/src/index.ts","./modules/zip/src/tar-builder.ts","./modules/zip/src/zip-loader.ts","./modules/zip/src/zip-writer.ts","./modules/zip/src/filesystems/indexedarchive.ts","./modules/zip/src/filesystems/zip-filesystem.ts","./modules/zip/src/lib/tar/header.ts","./modules/zip/src/lib/tar/tar.ts","./modules/zip/src/lib/tar/types.ts","./modules/zip/src/lib/tar/utils.ts","./modules/zip/src/parse-zip/cd-file-header.ts","./modules/zip/src/parse-zip/end-of-central-directory.ts","./modules/zip/src/parse-zip/local-file-header.ts","./modules/zip/src/parse-zip/search-from-the-end.ts","./modules/zip/src/parse-zip/zip-composition.ts","./modules/zip/src/parse-zip/zip64-info-generation.ts"],"version":"5.6.2"} \ No newline at end of file