@loaders.gl/parquet 4.4.5 → 5.0.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +14 -3
- package/dist/bundled.d.ts +9 -0
- package/dist/bundled.d.ts.map +1 -0
- package/dist/bundled.js +10 -0
- package/dist/bundled.js.map +1 -0
- package/dist/geoparquet-loader-with-parser.d.ts +33 -0
- package/dist/geoparquet-loader-with-parser.d.ts.map +1 -0
- package/dist/geoparquet-loader-with-parser.js +52 -0
- package/dist/geoparquet-loader-with-parser.js.map +1 -0
- package/dist/geoparquet-loader.d.ts +59 -0
- package/dist/geoparquet-loader.d.ts.map +1 -0
- package/dist/geoparquet-loader.js +30 -0
- package/dist/geoparquet-loader.js.map +1 -0
- package/dist/index.cjs +25873 -4776
- package/dist/index.cjs.map +3 -4
- package/dist/index.d.ts +10 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -11
- package/dist/index.js.map +1 -1
- package/dist/lib/arrow/convert-columns-to-row-group.js +3 -0
- package/dist/lib/arrow/convert-columns-to-row-group.js.map +1 -1
- package/dist/lib/arrow/convert-schema-from-parquet.d.ts.map +1 -1
- package/dist/lib/arrow/convert-schema-from-parquet.js +86 -26
- package/dist/lib/arrow/convert-schema-from-parquet.js.map +1 -1
- package/dist/lib/arrow/convert-schema-to-parquet.d.ts.map +1 -1
- package/dist/lib/arrow/convert-schema-to-parquet.js +16 -7
- package/dist/lib/arrow/convert-schema-to-parquet.js.map +1 -1
- package/dist/lib/arrow/create-nested-arrow-vector.d.ts +8 -0
- package/dist/lib/arrow/create-nested-arrow-vector.d.ts.map +1 -0
- package/dist/lib/arrow/create-nested-arrow-vector.js +396 -0
- package/dist/lib/arrow/create-nested-arrow-vector.js.map +1 -0
- package/dist/lib/constants.d.ts +0 -1
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +1 -2
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/encoders/encode-arrow-to-parquet.d.ts +2 -2
- package/dist/lib/encoders/encode-arrow-to-parquet.d.ts.map +1 -1
- package/dist/lib/encoders/encode-arrow-to-parquet.js +3 -10
- package/dist/lib/encoders/encode-arrow-to-parquet.js.map +1 -1
- package/dist/lib/encoders/encode-table-to-parquet-js.d.ts +5 -0
- package/dist/lib/encoders/encode-table-to-parquet-js.d.ts.map +1 -0
- package/dist/lib/encoders/encode-table-to-parquet-js.js +199 -0
- package/dist/lib/encoders/encode-table-to-parquet-js.js.map +1 -0
- package/dist/lib/geo/geospatial-metadata.d.ts +67 -0
- package/dist/lib/geo/geospatial-metadata.d.ts.map +1 -0
- package/dist/lib/geo/geospatial-metadata.js +338 -0
- package/dist/lib/geo/geospatial-metadata.js.map +1 -0
- package/dist/lib/parquet-page-index.d.ts +62 -0
- package/dist/lib/parquet-page-index.d.ts.map +1 -0
- package/dist/lib/parquet-page-index.js +377 -0
- package/dist/lib/parquet-page-index.js.map +1 -0
- package/dist/lib/parquet-predicate.d.ts +17 -0
- package/dist/lib/parquet-predicate.d.ts.map +1 -0
- package/dist/lib/parquet-predicate.js +300 -0
- package/dist/lib/parquet-predicate.js.map +1 -0
- package/dist/lib/parquet-source-worker-client.d.ts +6 -0
- package/dist/lib/parquet-source-worker-client.d.ts.map +1 -0
- package/dist/lib/parquet-source-worker-client.js +22 -0
- package/dist/lib/parquet-source-worker-client.js.map +1 -0
- package/dist/lib/parquet-source-worker-decoder.d.ts +4 -0
- package/dist/lib/parquet-source-worker-decoder.d.ts.map +1 -0
- package/dist/lib/parquet-source-worker-decoder.js +115 -0
- package/dist/lib/parquet-source-worker-decoder.js.map +1 -0
- package/dist/lib/parquet-source-worker-file.d.ts +24 -0
- package/dist/lib/parquet-source-worker-file.d.ts.map +1 -0
- package/dist/lib/parquet-source-worker-file.js +40 -0
- package/dist/lib/parquet-source-worker-file.js.map +1 -0
- package/dist/lib/parquet-source-worker-types.d.ts +97 -0
- package/dist/lib/parquet-source-worker-types.d.ts.map +1 -0
- package/dist/lib/parquet-source-worker-types.js +5 -0
- package/dist/lib/parquet-source-worker-types.js.map +1 -0
- package/dist/lib/parquet-worker-transport.d.ts +8 -0
- package/dist/lib/parquet-worker-transport.d.ts.map +1 -0
- package/dist/lib/parquet-worker-transport.js +40 -0
- package/dist/lib/parquet-worker-transport.js.map +1 -0
- package/dist/lib/parsers/convert-parquet-tables.d.ts +16 -0
- package/dist/lib/parsers/convert-parquet-tables.d.ts.map +1 -0
- package/dist/lib/parsers/convert-parquet-tables.js +30 -0
- package/dist/lib/parsers/convert-parquet-tables.js.map +1 -0
- package/dist/lib/parsers/get-parquet-schema.d.ts.map +1 -1
- package/dist/lib/parsers/get-parquet-schema.js +3 -1
- package/dist/lib/parsers/get-parquet-schema.js.map +1 -1
- package/dist/lib/parsers/parse-geoparquet-to-geojson.d.ts +4 -4
- package/dist/lib/parsers/parse-geoparquet-to-geojson.d.ts.map +1 -1
- package/dist/lib/parsers/parse-geoparquet-to-geojson.js +19 -6
- package/dist/lib/parsers/parse-geoparquet-to-geojson.js.map +1 -1
- package/dist/lib/parsers/parse-parquet-tables.d.ts +37 -0
- package/dist/lib/parsers/parse-parquet-tables.d.ts.map +1 -0
- package/dist/lib/parsers/parse-parquet-tables.js +50 -0
- package/dist/lib/parsers/parse-parquet-tables.js.map +1 -0
- package/dist/lib/parsers/parse-parquet-to-arrow-js.d.ts +19 -0
- package/dist/lib/parsers/parse-parquet-to-arrow-js.d.ts.map +1 -0
- package/dist/lib/parsers/parse-parquet-to-arrow-js.js +608 -0
- package/dist/lib/parsers/parse-parquet-to-arrow-js.js.map +1 -0
- package/dist/lib/parsers/parse-parquet-to-arrow.d.ts +7 -7
- package/dist/lib/parsers/parse-parquet-to-arrow.d.ts.map +1 -1
- package/dist/lib/parsers/parse-parquet-to-arrow.js +45 -32
- package/dist/lib/parsers/parse-parquet-to-arrow.js.map +1 -1
- package/dist/lib/parsers/parse-parquet-to-columns.d.ts +3 -3
- package/dist/lib/parsers/parse-parquet-to-columns.d.ts.map +1 -1
- package/dist/lib/parsers/parse-parquet-to-columns.js +1 -4
- package/dist/lib/parsers/parse-parquet-to-columns.js.map +1 -1
- package/dist/lib/parsers/parse-parquet-to-json.d.ts +3 -3
- package/dist/lib/parsers/parse-parquet-to-json.d.ts.map +1 -1
- package/dist/lib/parsers/parse-parquet-to-json.js +77 -26
- package/dist/lib/parsers/parse-parquet-to-json.js.map +1 -1
- package/dist/lib/sources/parquet-range-file.d.ts +80 -0
- package/dist/lib/sources/parquet-range-file.d.ts.map +1 -0
- package/dist/lib/sources/parquet-range-file.js +261 -0
- package/dist/lib/sources/parquet-range-file.js.map +1 -0
- package/dist/lib/sources/single-batch-queue.d.ts +24 -0
- package/dist/lib/sources/single-batch-queue.d.ts.map +1 -0
- package/dist/lib/sources/single-batch-queue.js +91 -0
- package/dist/lib/sources/single-batch-queue.js.map +1 -0
- package/dist/lib/utils/load-wasm-node.d.ts +3 -0
- package/dist/lib/utils/load-wasm-node.d.ts.map +1 -0
- package/dist/lib/utils/load-wasm-node.js +23 -0
- package/dist/lib/utils/load-wasm-node.js.map +1 -0
- package/dist/lib/utils/load-wasm.d.ts +2 -2
- package/dist/lib/utils/load-wasm.d.ts.map +1 -1
- package/dist/lib/utils/load-wasm.js +28 -12
- package/dist/lib/utils/load-wasm.js.map +1 -1
- package/dist/lib/utils/make-stream-iterator.d.ts +2 -0
- package/dist/lib/utils/make-stream-iterator.d.ts.map +1 -1
- package/dist/lib/utils/make-stream-iterator.js +123 -14
- package/dist/lib/utils/make-stream-iterator.js.map +1 -1
- package/dist/lib/utils/normalize-parquet-options.d.ts +5 -0
- package/dist/lib/utils/normalize-parquet-options.d.ts.map +1 -0
- package/dist/lib/utils/normalize-parquet-options.js +11 -0
- package/dist/lib/utils/normalize-parquet-options.js.map +1 -0
- package/dist/parquet-dataset-source.cjs +26413 -0
- package/dist/parquet-dataset-source.cjs.map +6 -0
- package/dist/parquet-dataset-source.d.ts +54 -0
- package/dist/parquet-dataset-source.d.ts.map +1 -0
- package/dist/parquet-dataset-source.js +380 -0
- package/dist/parquet-dataset-source.js.map +1 -0
- package/dist/parquet-format.d.ts +2 -0
- package/dist/parquet-format.d.ts.map +1 -1
- package/dist/parquet-format.js +2 -0
- package/dist/parquet-format.js.map +1 -1
- package/dist/parquet-js-loader-types.d.ts +57 -0
- package/dist/parquet-js-loader-types.d.ts.map +1 -0
- package/dist/parquet-js-loader-types.js +33 -0
- package/dist/parquet-js-loader-types.js.map +1 -0
- package/dist/parquet-js-loader.d.ts +32 -0
- package/dist/parquet-js-loader.d.ts.map +1 -0
- package/dist/parquet-js-loader.js +58 -0
- package/dist/parquet-js-loader.js.map +1 -0
- package/dist/parquet-js-writer.d.ts +44 -0
- package/dist/parquet-js-writer.d.ts.map +1 -0
- package/dist/parquet-js-writer.js +28 -0
- package/dist/parquet-js-writer.js.map +1 -0
- package/dist/parquet-loader-base.d.ts +25 -0
- package/dist/parquet-loader-base.d.ts.map +1 -0
- package/dist/parquet-loader-base.js +23 -0
- package/dist/parquet-loader-base.js.map +1 -0
- package/dist/parquet-loader-options.d.ts +44 -0
- package/dist/parquet-loader-options.d.ts.map +1 -0
- package/dist/parquet-loader-options.js +10 -0
- package/dist/parquet-loader-options.js.map +1 -0
- package/dist/parquet-loader-types.d.ts +61 -0
- package/dist/parquet-loader-types.d.ts.map +1 -0
- package/dist/parquet-loader-types.js +17 -0
- package/dist/parquet-loader-types.js.map +1 -0
- package/dist/parquet-loader.d.ts +42 -0
- package/dist/parquet-loader.d.ts.map +1 -0
- package/dist/parquet-loader.js +68 -0
- package/dist/parquet-loader.js.map +1 -0
- package/dist/parquet-source-capabilities.d.ts +36 -0
- package/dist/parquet-source-capabilities.d.ts.map +1 -0
- package/dist/parquet-source-capabilities.js +22 -0
- package/dist/parquet-source-capabilities.js.map +1 -0
- package/dist/parquet-source-loader-types.d.ts +72 -0
- package/dist/parquet-source-loader-types.d.ts.map +1 -0
- package/dist/parquet-source-loader-types.js +74 -0
- package/dist/parquet-source-loader-types.js.map +1 -0
- package/dist/parquet-source-loader.cjs +25975 -0
- package/dist/parquet-source-loader.cjs.map +6 -0
- package/dist/parquet-source-loader.d.ts +120 -0
- package/dist/parquet-source-loader.d.ts.map +1 -0
- package/dist/parquet-source-loader.js +812 -0
- package/dist/parquet-source-loader.js.map +1 -0
- package/dist/parquet-source-types.d.ts +384 -0
- package/dist/parquet-source-types.d.ts.map +1 -0
- package/dist/parquet-source-types.js +5 -0
- package/dist/parquet-source-types.js.map +1 -0
- package/dist/parquet-source-worker-url.d.ts +3 -0
- package/dist/parquet-source-worker-url.d.ts.map +1 -0
- package/dist/parquet-source-worker-url.js +22 -0
- package/dist/parquet-source-worker-url.js.map +1 -0
- package/dist/parquet-source-worker.js +38491 -0
- package/dist/parquet-source-worker.js.map +7 -0
- package/dist/parquet-worker-node.cjs +54779 -0
- package/dist/parquet-worker-node.cjs.map +7 -0
- package/dist/parquet-worker-url.d.ts +3 -0
- package/dist/parquet-worker-url.d.ts.map +1 -0
- package/dist/parquet-worker-url.js +15 -0
- package/dist/parquet-worker-url.js.map +1 -0
- package/dist/parquet-worker.js +19920 -0
- package/dist/parquet-worker.js.map +7 -0
- package/dist/parquet-writer.d.ts +10 -0
- package/dist/parquet-writer.d.ts.map +1 -0
- package/dist/parquet-writer.js +27 -0
- package/dist/parquet-writer.js.map +1 -0
- package/dist/parquet_wasm_bg.wasm +0 -0
- package/dist/parquetjs/codecs/byte-stream-split.d.ts +9 -0
- package/dist/parquetjs/codecs/byte-stream-split.d.ts.map +1 -0
- package/dist/parquetjs/codecs/byte-stream-split.js +159 -0
- package/dist/parquetjs/codecs/byte-stream-split.js.map +1 -0
- package/dist/parquetjs/codecs/declare.d.ts +20 -3
- package/dist/parquetjs/codecs/declare.d.ts.map +1 -1
- package/dist/parquetjs/codecs/declare.js +7 -1
- package/dist/parquetjs/codecs/declare.js.map +1 -1
- package/dist/parquetjs/codecs/delta.d.ts +17 -0
- package/dist/parquetjs/codecs/delta.d.ts.map +1 -0
- package/dist/parquetjs/codecs/delta.js +439 -0
- package/dist/parquetjs/codecs/delta.js.map +1 -0
- package/dist/parquetjs/codecs/dictionary.d.ts +5 -2
- package/dist/parquetjs/codecs/dictionary.d.ts.map +1 -1
- package/dist/parquetjs/codecs/dictionary.js +16 -4
- package/dist/parquetjs/codecs/dictionary.js.map +1 -1
- package/dist/parquetjs/codecs/index.d.ts.map +1 -1
- package/dist/parquetjs/codecs/index.js +18 -0
- package/dist/parquetjs/codecs/index.js.map +1 -1
- package/dist/parquetjs/codecs/plain.d.ts +3 -3
- package/dist/parquetjs/codecs/plain.d.ts.map +1 -1
- package/dist/parquetjs/codecs/plain.js +88 -76
- package/dist/parquetjs/codecs/plain.js.map +1 -1
- package/dist/parquetjs/codecs/rle.d.ts +3 -3
- package/dist/parquetjs/codecs/rle.d.ts.map +1 -1
- package/dist/parquetjs/codecs/rle.js +196 -68
- package/dist/parquetjs/codecs/rle.js.map +1 -1
- package/dist/parquetjs/compression.d.ts +7 -8
- package/dist/parquetjs/compression.d.ts.map +1 -1
- package/dist/parquetjs/compression.js +95 -141
- package/dist/parquetjs/compression.js.map +1 -1
- package/dist/parquetjs/encoder/dictionary-planner.d.ts +17 -0
- package/dist/parquetjs/encoder/dictionary-planner.d.ts.map +1 -0
- package/dist/parquetjs/encoder/dictionary-planner.js +64 -0
- package/dist/parquetjs/encoder/dictionary-planner.js.map +1 -0
- package/dist/parquetjs/encoder/page-planner.d.ts +11 -0
- package/dist/parquetjs/encoder/page-planner.d.ts.map +1 -0
- package/dist/parquetjs/encoder/page-planner.js +60 -0
- package/dist/parquetjs/encoder/page-planner.js.map +1 -0
- package/dist/parquetjs/encoder/parquet-encoder.d.ts +11 -4
- package/dist/parquetjs/encoder/parquet-encoder.d.ts.map +1 -1
- package/dist/parquetjs/encoder/parquet-encoder.js +259 -52
- package/dist/parquetjs/encoder/parquet-encoder.js.map +1 -1
- package/dist/parquetjs/parquet-thrift/BsonType.d.ts +1 -1
- package/dist/parquetjs/parquet-thrift/BsonType.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/BsonType.js +1 -1
- package/dist/parquetjs/parquet-thrift/BsonType.js.map +1 -1
- package/dist/parquetjs/parquet-thrift/ColumnChunk.d.ts +2 -2
- package/dist/parquetjs/parquet-thrift/ColumnChunk.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/ColumnChunk.js +2 -2
- package/dist/parquetjs/parquet-thrift/ColumnChunk.js.map +1 -1
- package/dist/parquetjs/parquet-thrift/ColumnIndex.d.ts +6 -6
- package/dist/parquetjs/parquet-thrift/ColumnIndex.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/ColumnIndex.js +3 -3
- package/dist/parquetjs/parquet-thrift/ColumnIndex.js.map +1 -1
- package/dist/parquetjs/parquet-thrift/ColumnMetaData.d.ts +2 -2
- package/dist/parquetjs/parquet-thrift/ColumnMetaData.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/ColumnMetaData.js +2 -2
- package/dist/parquetjs/parquet-thrift/ColumnMetaData.js.map +1 -1
- package/dist/parquetjs/parquet-thrift/ColumnOrder.d.ts +1 -1
- package/dist/parquetjs/parquet-thrift/ColumnOrder.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/ColumnOrder.js +1 -1
- package/dist/parquetjs/parquet-thrift/ColumnOrder.js.map +1 -1
- package/dist/parquetjs/parquet-thrift/DataPageHeader.d.ts +1 -1
- package/dist/parquetjs/parquet-thrift/DataPageHeader.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/DataPageHeader.js +1 -1
- package/dist/parquetjs/parquet-thrift/DataPageHeader.js.map +1 -1
- package/dist/parquetjs/parquet-thrift/DataPageHeaderV2.d.ts +1 -1
- package/dist/parquetjs/parquet-thrift/DataPageHeaderV2.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/DataPageHeaderV2.js +1 -1
- package/dist/parquetjs/parquet-thrift/DataPageHeaderV2.js.map +1 -1
- package/dist/parquetjs/parquet-thrift/DateType.d.ts +1 -1
- package/dist/parquetjs/parquet-thrift/DateType.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/DateType.js +1 -1
- package/dist/parquetjs/parquet-thrift/DateType.js.map +1 -1
- package/dist/parquetjs/parquet-thrift/DecimalType.d.ts +1 -1
- package/dist/parquetjs/parquet-thrift/DecimalType.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/DecimalType.js +1 -1
- package/dist/parquetjs/parquet-thrift/DecimalType.js.map +1 -1
- package/dist/parquetjs/parquet-thrift/DictionaryPageHeader.d.ts +1 -1
- package/dist/parquetjs/parquet-thrift/DictionaryPageHeader.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/DictionaryPageHeader.js +1 -1
- package/dist/parquetjs/parquet-thrift/DictionaryPageHeader.js.map +1 -1
- package/dist/parquetjs/parquet-thrift/EdgeInterpolationAlgorithm.d.ts +8 -0
- package/dist/parquetjs/parquet-thrift/EdgeInterpolationAlgorithm.d.ts.map +1 -0
- package/dist/parquetjs/parquet-thrift/EdgeInterpolationAlgorithm.js +14 -0
- package/dist/parquetjs/parquet-thrift/EdgeInterpolationAlgorithm.js.map +1 -0
- package/dist/parquetjs/parquet-thrift/Encoding.d.ts +2 -1
- package/dist/parquetjs/parquet-thrift/Encoding.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/Encoding.js +1 -0
- package/dist/parquetjs/parquet-thrift/Encoding.js.map +1 -1
- package/dist/parquetjs/parquet-thrift/EnumType.d.ts +1 -1
- package/dist/parquetjs/parquet-thrift/EnumType.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/EnumType.js +1 -1
- package/dist/parquetjs/parquet-thrift/EnumType.js.map +1 -1
- package/dist/parquetjs/parquet-thrift/FileMetaData.d.ts +2 -2
- package/dist/parquetjs/parquet-thrift/FileMetaData.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/FileMetaData.js +2 -2
- package/dist/parquetjs/parquet-thrift/FileMetaData.js.map +1 -1
- package/dist/parquetjs/parquet-thrift/Float16Type.d.ts +9 -0
- package/dist/parquetjs/parquet-thrift/Float16Type.d.ts.map +1 -0
- package/dist/parquetjs/parquet-thrift/Float16Type.js +27 -0
- package/dist/parquetjs/parquet-thrift/Float16Type.js.map +1 -0
- package/dist/parquetjs/parquet-thrift/GeographyType.d.ts +14 -0
- package/dist/parquetjs/parquet-thrift/GeographyType.d.ts.map +1 -0
- package/dist/parquetjs/parquet-thrift/GeographyType.js +51 -0
- package/dist/parquetjs/parquet-thrift/GeographyType.js.map +1 -0
- package/dist/parquetjs/parquet-thrift/GeometryType.d.ts +11 -0
- package/dist/parquetjs/parquet-thrift/GeometryType.d.ts.map +1 -0
- package/dist/parquetjs/parquet-thrift/GeometryType.js +41 -0
- package/dist/parquetjs/parquet-thrift/GeometryType.js.map +1 -0
- package/dist/parquetjs/parquet-thrift/IndexPageHeader.d.ts +1 -1
- package/dist/parquetjs/parquet-thrift/IndexPageHeader.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/IndexPageHeader.js +1 -1
- package/dist/parquetjs/parquet-thrift/IndexPageHeader.js.map +1 -1
- package/dist/parquetjs/parquet-thrift/IntType.d.ts +1 -1
- package/dist/parquetjs/parquet-thrift/IntType.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/IntType.js +1 -1
- package/dist/parquetjs/parquet-thrift/IntType.js.map +1 -1
- package/dist/parquetjs/parquet-thrift/JsonType.d.ts +1 -1
- package/dist/parquetjs/parquet-thrift/JsonType.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/JsonType.js +1 -1
- package/dist/parquetjs/parquet-thrift/JsonType.js.map +1 -1
- package/dist/parquetjs/parquet-thrift/KeyValue.d.ts +1 -1
- package/dist/parquetjs/parquet-thrift/KeyValue.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/KeyValue.js +1 -1
- package/dist/parquetjs/parquet-thrift/KeyValue.js.map +1 -1
- package/dist/parquetjs/parquet-thrift/ListType.d.ts +1 -1
- package/dist/parquetjs/parquet-thrift/ListType.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/ListType.js +1 -1
- package/dist/parquetjs/parquet-thrift/ListType.js.map +1 -1
- package/dist/parquetjs/parquet-thrift/LogicalType.d.ts +17 -1
- package/dist/parquetjs/parquet-thrift/LogicalType.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/LogicalType.js +97 -1
- package/dist/parquetjs/parquet-thrift/LogicalType.js.map +1 -1
- package/dist/parquetjs/parquet-thrift/MapType.d.ts +1 -1
- package/dist/parquetjs/parquet-thrift/MapType.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/MapType.js +1 -1
- package/dist/parquetjs/parquet-thrift/MapType.js.map +1 -1
- package/dist/parquetjs/parquet-thrift/MicroSeconds.d.ts +1 -1
- package/dist/parquetjs/parquet-thrift/MicroSeconds.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/MicroSeconds.js +1 -1
- package/dist/parquetjs/parquet-thrift/MicroSeconds.js.map +1 -1
- package/dist/parquetjs/parquet-thrift/MilliSeconds.d.ts +1 -1
- package/dist/parquetjs/parquet-thrift/MilliSeconds.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/MilliSeconds.js +1 -1
- package/dist/parquetjs/parquet-thrift/MilliSeconds.js.map +1 -1
- package/dist/parquetjs/parquet-thrift/NanoSeconds.d.ts +9 -0
- package/dist/parquetjs/parquet-thrift/NanoSeconds.d.ts.map +1 -0
- package/dist/parquetjs/parquet-thrift/NanoSeconds.js +27 -0
- package/dist/parquetjs/parquet-thrift/NanoSeconds.js.map +1 -0
- package/dist/parquetjs/parquet-thrift/NullType.d.ts +1 -1
- package/dist/parquetjs/parquet-thrift/NullType.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/NullType.js +1 -1
- package/dist/parquetjs/parquet-thrift/NullType.js.map +1 -1
- package/dist/parquetjs/parquet-thrift/OffsetIndex.d.ts +1 -1
- package/dist/parquetjs/parquet-thrift/OffsetIndex.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/OffsetIndex.js +1 -1
- package/dist/parquetjs/parquet-thrift/OffsetIndex.js.map +1 -1
- package/dist/parquetjs/parquet-thrift/PageEncodingStats.d.ts +1 -1
- package/dist/parquetjs/parquet-thrift/PageEncodingStats.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/PageEncodingStats.js +1 -1
- package/dist/parquetjs/parquet-thrift/PageEncodingStats.js.map +1 -1
- package/dist/parquetjs/parquet-thrift/PageHeader.d.ts +1 -1
- package/dist/parquetjs/parquet-thrift/PageHeader.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/PageHeader.js +1 -1
- package/dist/parquetjs/parquet-thrift/PageHeader.js.map +1 -1
- package/dist/parquetjs/parquet-thrift/PageLocation.d.ts +2 -2
- package/dist/parquetjs/parquet-thrift/PageLocation.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/PageLocation.js +2 -2
- package/dist/parquetjs/parquet-thrift/PageLocation.js.map +1 -1
- package/dist/parquetjs/parquet-thrift/RowGroup.d.ts +2 -2
- package/dist/parquetjs/parquet-thrift/RowGroup.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/RowGroup.js +2 -2
- package/dist/parquetjs/parquet-thrift/RowGroup.js.map +1 -1
- package/dist/parquetjs/parquet-thrift/SchemaElement.d.ts +1 -1
- package/dist/parquetjs/parquet-thrift/SchemaElement.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/SchemaElement.js +1 -1
- package/dist/parquetjs/parquet-thrift/SchemaElement.js.map +1 -1
- package/dist/parquetjs/parquet-thrift/SortingColumn.d.ts +1 -1
- package/dist/parquetjs/parquet-thrift/SortingColumn.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/SortingColumn.js +1 -1
- package/dist/parquetjs/parquet-thrift/SortingColumn.js.map +1 -1
- package/dist/parquetjs/parquet-thrift/Statistics.d.ts +14 -10
- package/dist/parquetjs/parquet-thrift/Statistics.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/Statistics.js +38 -2
- package/dist/parquetjs/parquet-thrift/Statistics.js.map +1 -1
- package/dist/parquetjs/parquet-thrift/StringType.d.ts +1 -1
- package/dist/parquetjs/parquet-thrift/StringType.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/StringType.js +1 -1
- package/dist/parquetjs/parquet-thrift/StringType.js.map +1 -1
- package/dist/parquetjs/parquet-thrift/TimeType.d.ts +1 -1
- package/dist/parquetjs/parquet-thrift/TimeType.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/TimeType.js +1 -1
- package/dist/parquetjs/parquet-thrift/TimeType.js.map +1 -1
- package/dist/parquetjs/parquet-thrift/TimeUnit.d.ts +5 -1
- package/dist/parquetjs/parquet-thrift/TimeUnit.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/TimeUnit.js +25 -1
- package/dist/parquetjs/parquet-thrift/TimeUnit.js.map +1 -1
- package/dist/parquetjs/parquet-thrift/TimestampType.d.ts +1 -1
- package/dist/parquetjs/parquet-thrift/TimestampType.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/TimestampType.js +1 -1
- package/dist/parquetjs/parquet-thrift/TimestampType.js.map +1 -1
- package/dist/parquetjs/parquet-thrift/TypeDefinedOrder.d.ts +1 -1
- package/dist/parquetjs/parquet-thrift/TypeDefinedOrder.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/TypeDefinedOrder.js +1 -1
- package/dist/parquetjs/parquet-thrift/TypeDefinedOrder.js.map +1 -1
- package/dist/parquetjs/parquet-thrift/UUIDType.d.ts +1 -1
- package/dist/parquetjs/parquet-thrift/UUIDType.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/UUIDType.js +1 -1
- package/dist/parquetjs/parquet-thrift/UUIDType.js.map +1 -1
- package/dist/parquetjs/parquet-thrift/VariantType.d.ts +11 -0
- package/dist/parquetjs/parquet-thrift/VariantType.d.ts.map +1 -0
- package/dist/parquetjs/parquet-thrift/VariantType.js +41 -0
- package/dist/parquetjs/parquet-thrift/VariantType.js.map +1 -0
- package/dist/parquetjs/parquet-thrift/index.d.ts +6 -2
- package/dist/parquetjs/parquet-thrift/index.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/index.js +6 -2
- package/dist/parquetjs/parquet-thrift/index.js.map +1 -1
- package/dist/parquetjs/parser/decoders.d.ts +14 -3
- package/dist/parquetjs/parser/decoders.d.ts.map +1 -1
- package/dist/parquetjs/parser/decoders.js +381 -117
- package/dist/parquetjs/parser/decoders.js.map +1 -1
- package/dist/parquetjs/parser/parquet-reader.d.ts +35 -10
- package/dist/parquetjs/parser/parquet-reader.d.ts.map +1 -1
- package/dist/parquetjs/parser/parquet-reader.js +179 -59
- package/dist/parquetjs/parser/parquet-reader.js.map +1 -1
- package/dist/parquetjs/schema/declare.d.ts +62 -8
- package/dist/parquetjs/schema/declare.d.ts.map +1 -1
- package/dist/parquetjs/schema/declare.js.map +1 -1
- package/dist/parquetjs/schema/schema.d.ts +3 -0
- package/dist/parquetjs/schema/schema.d.ts.map +1 -1
- package/dist/parquetjs/schema/schema.js +21 -3
- package/dist/parquetjs/schema/schema.js.map +1 -1
- package/dist/parquetjs/schema/shred.d.ts +2 -0
- package/dist/parquetjs/schema/shred.d.ts.map +1 -1
- package/dist/parquetjs/schema/shred.js +71 -23
- package/dist/parquetjs/schema/shred.js.map +1 -1
- package/dist/parquetjs/schema/types.d.ts.map +1 -1
- package/dist/parquetjs/schema/types.js +272 -51
- package/dist/parquetjs/schema/types.js.map +1 -1
- package/dist/parquetjs/utils/binary-utils.d.ts +41 -0
- package/dist/parquetjs/utils/binary-utils.d.ts.map +1 -0
- package/dist/parquetjs/utils/binary-utils.js +106 -0
- package/dist/parquetjs/utils/binary-utils.js.map +1 -0
- package/dist/parquetjs/utils/file-utils.d.ts +1 -1
- package/dist/parquetjs/utils/file-utils.d.ts.map +1 -1
- package/dist/parquetjs/utils/file-utils.js +3 -3
- package/dist/parquetjs/utils/file-utils.js.map +1 -1
- package/dist/parquetjs/utils/read-utils.d.ts +14 -6
- package/dist/parquetjs/utils/read-utils.d.ts.map +1 -1
- package/dist/parquetjs/utils/read-utils.js +46 -39
- package/dist/parquetjs/utils/read-utils.js.map +1 -1
- package/dist/parquetjs/utils/thrift-runtime.d.ts +106 -0
- package/dist/parquetjs/utils/thrift-runtime.d.ts.map +1 -0
- package/dist/parquetjs/utils/thrift-runtime.js +50 -0
- package/dist/parquetjs/utils/thrift-runtime.js.map +1 -0
- package/dist/parquetjs/utils/uint8-array-compact-protocol-writer.d.ts +78 -0
- package/dist/parquetjs/utils/uint8-array-compact-protocol-writer.d.ts.map +1 -0
- package/dist/parquetjs/utils/uint8-array-compact-protocol-writer.js +213 -0
- package/dist/parquetjs/utils/uint8-array-compact-protocol-writer.js.map +1 -0
- package/dist/parquetjs/utils/uint8-array-compact-protocol.d.ts +80 -0
- package/dist/parquetjs/utils/uint8-array-compact-protocol.d.ts.map +1 -0
- package/dist/parquetjs/utils/uint8-array-compact-protocol.js +276 -0
- package/dist/parquetjs/utils/uint8-array-compact-protocol.js.map +1 -0
- package/dist/parquetjs/utils/uint8-array-transport.d.ts +25 -0
- package/dist/parquetjs/utils/uint8-array-transport.d.ts.map +1 -0
- package/dist/parquetjs/utils/uint8-array-transport.js +62 -0
- package/dist/parquetjs/utils/uint8-array-transport.js.map +1 -0
- package/dist/polyfills/process.d.ts +12 -0
- package/dist/polyfills/process.d.ts.map +1 -0
- package/dist/polyfills/process.js +17 -0
- package/dist/polyfills/process.js.map +1 -0
- package/dist/unbundled.d.ts +9 -0
- package/dist/unbundled.d.ts.map +1 -0
- package/dist/unbundled.js +10 -0
- package/dist/unbundled.js.map +1 -0
- package/dist/wasm.d.ts +3 -0
- package/dist/wasm.d.ts.map +1 -0
- package/dist/wasm.js +6 -0
- package/dist/wasm.js.map +1 -0
- package/dist/workers/parquet-source-worker.d.ts +2 -0
- package/dist/workers/parquet-source-worker.d.ts.map +1 -0
- package/dist/workers/parquet-source-worker.js +17 -0
- package/dist/workers/parquet-source-worker.js.map +1 -0
- package/dist/workers/parquet-worker-node.d.ts +2 -0
- package/dist/workers/parquet-worker-node.d.ts.map +1 -0
- package/dist/workers/parquet-worker-node.js +5 -0
- package/dist/workers/parquet-worker-node.js.map +1 -0
- package/dist/workers/parquet-worker.d.ts +2 -0
- package/dist/workers/parquet-worker.d.ts.map +1 -0
- package/dist/workers/parquet-worker.js +27 -0
- package/dist/workers/parquet-worker.js.map +1 -0
- package/package.json +63 -33
- package/src/bundled.ts +33 -0
- package/src/geoparquet-loader-with-parser.ts +95 -0
- package/src/geoparquet-loader.ts +54 -0
- package/src/index.ts +49 -23
- package/src/lib/arrow/convert-columns-to-row-group.ts +3 -0
- package/src/lib/arrow/convert-schema-from-parquet.ts +97 -30
- package/src/lib/arrow/convert-schema-to-parquet.ts +16 -7
- package/src/lib/arrow/create-nested-arrow-vector.ts +589 -0
- package/src/lib/constants.ts +0 -2
- package/src/lib/encoders/encode-arrow-to-parquet.ts +10 -16
- package/src/lib/encoders/encode-table-to-parquet-js.ts +261 -0
- package/src/lib/geo/geospatial-metadata.ts +457 -0
- package/src/lib/parquet-page-index.ts +581 -0
- package/src/lib/parquet-predicate.ts +374 -0
- package/src/lib/parquet-source-worker-client.ts +39 -0
- package/src/lib/parquet-source-worker-decoder.ts +156 -0
- package/src/lib/parquet-source-worker-file.ts +56 -0
- package/src/lib/parquet-source-worker-types.ts +107 -0
- package/src/lib/parquet-worker-transport.ts +57 -0
- package/src/lib/parsers/convert-parquet-tables.ts +39 -0
- package/src/lib/parsers/get-parquet-schema.ts +3 -1
- package/src/lib/parsers/parse-geoparquet-to-geojson.ts +27 -14
- package/src/lib/parsers/parse-parquet-tables.ts +82 -0
- package/src/lib/parsers/parse-parquet-to-arrow-js.ts +829 -0
- package/src/lib/parsers/parse-parquet-to-arrow.ts +63 -36
- package/src/lib/parsers/parse-parquet-to-columns.ts +6 -7
- package/src/lib/parsers/parse-parquet-to-json.ts +101 -33
- package/src/lib/sources/parquet-range-file.ts +359 -0
- package/src/lib/sources/single-batch-queue.ts +95 -0
- package/src/lib/utils/load-wasm-node.ts +25 -0
- package/src/lib/utils/load-wasm.ts +36 -13
- package/src/lib/utils/make-stream-iterator.ts +126 -14
- package/src/lib/utils/normalize-parquet-options.ts +14 -0
- package/src/parquet-dataset-source.ts +488 -0
- package/src/parquet-format.ts +2 -0
- package/src/parquet-js-loader-types.ts +52 -0
- package/src/parquet-js-loader.ts +83 -0
- package/src/parquet-js-writer.ts +68 -0
- package/src/parquet-loader-base.ts +34 -0
- package/src/parquet-loader-options.ts +51 -0
- package/src/parquet-loader-types.ts +35 -0
- package/src/parquet-loader.ts +115 -0
- package/src/parquet-source-capabilities.ts +56 -0
- package/src/parquet-source-loader-types.ts +87 -0
- package/src/parquet-source-loader.ts +1265 -0
- package/src/parquet-source-types.ts +458 -0
- package/src/parquet-source-worker-url.ts +23 -0
- package/src/parquet-worker-url.ts +18 -0
- package/src/parquet-writer.ts +42 -0
- package/src/parquetjs/LICENSE +23 -1
- package/src/parquetjs/codecs/byte-stream-split.ts +221 -0
- package/src/parquetjs/codecs/declare.ts +35 -3
- package/src/parquetjs/codecs/delta.ts +587 -0
- package/src/parquetjs/codecs/dictionary.ts +22 -4
- package/src/parquetjs/codecs/index.ts +18 -0
- package/src/parquetjs/codecs/plain.ts +149 -87
- package/src/parquetjs/codecs/rle.ts +268 -82
- package/src/parquetjs/compression.ts +110 -155
- package/src/parquetjs/encoder/dictionary-planner.ts +99 -0
- package/src/parquetjs/encoder/page-planner.ts +83 -0
- package/src/parquetjs/encoder/parquet-encoder.ts +378 -77
- package/src/parquetjs/parquet-thrift/BsonType.ts +1 -1
- package/src/parquetjs/parquet-thrift/ColumnChunk.ts +2 -2
- package/src/parquetjs/parquet-thrift/ColumnIndex.ts +13 -13
- package/src/parquetjs/parquet-thrift/ColumnMetaData.ts +2 -2
- package/src/parquetjs/parquet-thrift/ColumnOrder.ts +1 -1
- package/src/parquetjs/parquet-thrift/DataPageHeader.ts +1 -1
- package/src/parquetjs/parquet-thrift/DataPageHeaderV2.ts +1 -1
- package/src/parquetjs/parquet-thrift/DateType.ts +1 -1
- package/src/parquetjs/parquet-thrift/DecimalType.ts +1 -1
- package/src/parquetjs/parquet-thrift/DictionaryPageHeader.ts +1 -1
- package/src/parquetjs/parquet-thrift/EdgeInterpolationAlgorithm.ts +13 -0
- package/src/parquetjs/parquet-thrift/Encoding.ts +2 -1
- package/src/parquetjs/parquet-thrift/EnumType.ts +1 -1
- package/src/parquetjs/parquet-thrift/FileMetaData.ts +2 -2
- package/src/parquetjs/parquet-thrift/Float16Type.ts +28 -0
- package/src/parquetjs/parquet-thrift/GeographyType.ts +54 -0
- package/src/parquetjs/parquet-thrift/GeometryType.ts +43 -0
- package/src/parquetjs/parquet-thrift/IndexPageHeader.ts +1 -1
- package/src/parquetjs/parquet-thrift/IntType.ts +1 -1
- package/src/parquetjs/parquet-thrift/JsonType.ts +1 -1
- package/src/parquetjs/parquet-thrift/KeyValue.ts +1 -1
- package/src/parquetjs/parquet-thrift/ListType.ts +1 -1
- package/src/parquetjs/parquet-thrift/LogicalType.ts +97 -1
- package/src/parquetjs/parquet-thrift/MapType.ts +1 -1
- package/src/parquetjs/parquet-thrift/MicroSeconds.ts +1 -1
- package/src/parquetjs/parquet-thrift/MilliSeconds.ts +1 -1
- package/src/parquetjs/parquet-thrift/NanoSeconds.ts +28 -0
- package/src/parquetjs/parquet-thrift/NullType.ts +1 -1
- package/src/parquetjs/parquet-thrift/OffsetIndex.ts +1 -1
- package/src/parquetjs/parquet-thrift/PageEncodingStats.ts +1 -1
- package/src/parquetjs/parquet-thrift/PageHeader.ts +1 -1
- package/src/parquetjs/parquet-thrift/PageLocation.ts +2 -2
- package/src/parquetjs/parquet-thrift/RowGroup.ts +2 -2
- package/src/parquetjs/parquet-thrift/SchemaElement.ts +1 -1
- package/src/parquetjs/parquet-thrift/SortingColumn.ts +1 -1
- package/src/parquetjs/parquet-thrift/Statistics.ts +50 -14
- package/src/parquetjs/parquet-thrift/StringType.ts +1 -1
- package/src/parquetjs/parquet-thrift/TimeType.ts +1 -1
- package/src/parquetjs/parquet-thrift/TimeUnit.ts +25 -1
- package/src/parquetjs/parquet-thrift/TimestampType.ts +1 -1
- package/src/parquetjs/parquet-thrift/TypeDefinedOrder.ts +1 -1
- package/src/parquetjs/parquet-thrift/UUIDType.ts +1 -1
- package/src/parquetjs/parquet-thrift/VariantType.ts +43 -0
- package/src/parquetjs/parquet-thrift/index.ts +6 -4
- package/src/parquetjs/parser/decoders.ts +487 -133
- package/src/parquetjs/parser/parquet-reader.ts +297 -71
- package/src/parquetjs/schema/declare.ts +99 -7
- package/src/parquetjs/schema/schema.ts +23 -3
- package/src/parquetjs/schema/shred.ts +112 -35
- package/src/parquetjs/schema/types.ts +294 -61
- package/src/parquetjs/utils/binary-utils.ts +132 -0
- package/src/parquetjs/utils/file-utils.ts +4 -4
- package/src/parquetjs/utils/read-utils.ts +56 -55
- package/src/parquetjs/utils/thrift-runtime.ts +109 -0
- package/src/parquetjs/utils/uint8-array-compact-protocol-writer.ts +254 -0
- package/src/parquetjs/utils/uint8-array-compact-protocol.ts +322 -0
- package/src/parquetjs/utils/uint8-array-transport.ts +79 -0
- package/src/polyfills/process.ts +17 -0
- package/src/unbundled.ts +33 -0
- package/src/wasm.ts +6 -0
- package/src/workers/parquet-source-worker.ts +21 -0
- package/src/workers/parquet-worker-node.ts +5 -0
- package/src/workers/parquet-worker.ts +31 -0
- package/dist/parquet-arrow-loader.d.ts +0 -43
- package/dist/parquet-arrow-loader.d.ts.map +0 -1
- package/dist/parquet-arrow-loader.js +0 -49
- package/dist/parquet-arrow-loader.js.map +0 -1
- package/dist/parquet-arrow-writer.d.ts +0 -9
- package/dist/parquet-arrow-writer.d.ts.map +0 -1
- package/dist/parquet-arrow-writer.js +0 -23
- package/dist/parquet-arrow-writer.js.map +0 -1
- package/dist/parquet-json-loader.d.ts +0 -148
- package/dist/parquet-json-loader.d.ts.map +0 -1
- package/dist/parquet-json-loader.js +0 -106
- package/dist/parquet-json-loader.js.map +0 -1
- package/dist/parquet-json-writer.d.ts +0 -19
- package/dist/parquet-json-writer.d.ts.map +0 -1
- package/dist/parquet-json-writer.js +0 -20
- package/dist/parquet-json-writer.js.map +0 -1
- package/dist/polyfills/buffer/buffer-polyfill.browser.d.ts +0 -3
- package/dist/polyfills/buffer/buffer-polyfill.browser.d.ts.map +0 -1
- package/dist/polyfills/buffer/buffer-polyfill.browser.js +0 -12
- package/dist/polyfills/buffer/buffer-polyfill.browser.js.map +0 -1
- package/dist/polyfills/buffer/buffer-polyfill.node.d.ts +0 -3
- package/dist/polyfills/buffer/buffer-polyfill.node.d.ts.map +0 -1
- package/dist/polyfills/buffer/buffer-polyfill.node.js +0 -17
- package/dist/polyfills/buffer/buffer-polyfill.node.js.map +0 -1
- package/dist/polyfills/buffer/buffer.d.ts +0 -222
- package/dist/polyfills/buffer/buffer.d.ts.map +0 -1
- package/dist/polyfills/buffer/buffer.js +0 -1868
- package/dist/polyfills/buffer/buffer.js.map +0 -1
- package/dist/polyfills/buffer/index.d.ts +0 -4
- package/dist/polyfills/buffer/index.d.ts.map +0 -1
- package/dist/polyfills/buffer/index.js +0 -9
- package/dist/polyfills/buffer/index.js.map +0 -1
- package/dist/polyfills/buffer/install-buffer-polyfill.d.ts +0 -2
- package/dist/polyfills/buffer/install-buffer-polyfill.d.ts.map +0 -1
- package/dist/polyfills/buffer/install-buffer-polyfill.js +0 -10
- package/dist/polyfills/buffer/install-buffer-polyfill.js.map +0 -1
- package/dist/workers/parquet-json-worker.d.ts +0 -2
- package/dist/workers/parquet-json-worker.d.ts.map +0 -1
- package/dist/workers/parquet-json-worker.js +0 -7
- package/dist/workers/parquet-json-worker.js.map +0 -1
- package/src/parquet-arrow-loader.ts +0 -74
- package/src/parquet-arrow-writer.ts +0 -33
- package/src/parquet-json-loader.ts +0 -160
- package/src/parquet-json-writer.ts +0 -27
- package/src/parquetjs/modules.d.ts +0 -25
- package/src/polyfills/buffer/buffer-polyfill.browser.ts +0 -14
- package/src/polyfills/buffer/buffer-polyfill.node.ts +0 -19
- package/src/polyfills/buffer/buffer.ts +0 -2205
- package/src/polyfills/buffer/index.ts +0 -11
- package/src/polyfills/buffer/install-buffer-polyfill.ts +0 -12
- package/src/workers/parquet-json-worker.ts +0 -8
|
@@ -5,96 +5,66 @@
|
|
|
5
5
|
// Forked from https://github.com/kbajalc/parquets under MIT license
|
|
6
6
|
// Forked from https://github.com/ironSource/parquetjs under MIT license
|
|
7
7
|
|
|
8
|
+
import type {Compression} from '@loaders.gl/compression';
|
|
8
9
|
import {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
BrotliCompression,
|
|
14
|
-
// LZOCompression,
|
|
15
|
-
LZ4Compression,
|
|
16
|
-
ZstdCompression
|
|
17
|
-
} from '@loaders.gl/compression';
|
|
18
|
-
import {registerJSModules} from '@loaders.gl/loader-utils';
|
|
10
|
+
decompressWithNativeDecompressionStream,
|
|
11
|
+
type NativeDecompressionFormat
|
|
12
|
+
} from '@loaders.gl/compression/native-decompression';
|
|
13
|
+
import {getJSModuleOrNull, registerJSModules} from '@loaders.gl/loader-utils';
|
|
19
14
|
|
|
20
15
|
import {ParquetCompression} from './schema/declare';
|
|
21
|
-
|
|
22
|
-
/** We can't use loaders-util buffer handling since we are dependent on buffers even in the browser */
|
|
23
|
-
function toBuffer(arrayBuffer: ArrayBuffer): Buffer {
|
|
24
|
-
return Buffer.from(arrayBuffer);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
function toArrayBuffer(buffer: Buffer): ArrayBuffer {
|
|
28
|
-
// TODO - per docs we should just be able to call buffer.buffer, but there are issues
|
|
29
|
-
if (Buffer.isBuffer(buffer)) {
|
|
30
|
-
const typedArray = new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.length);
|
|
31
|
-
return typedArray.slice().buffer;
|
|
32
|
-
}
|
|
33
|
-
return buffer;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
// TODO switch to worker compression to avoid bundling...
|
|
37
|
-
|
|
38
|
-
// import brotli from 'brotli'; - brotli has problems with decompress in browsers
|
|
39
|
-
// import brotliDecompress from 'brotli/decompress';
|
|
40
|
-
import lz4js from 'lz4js';
|
|
41
|
-
// import lzo from 'lzo';
|
|
42
|
-
// import {ZstdCodec} from 'zstd-codec';
|
|
43
|
-
|
|
44
|
-
// Inject large dependencies through Compression constructor options
|
|
45
|
-
const modules = {
|
|
46
|
-
// brotli has problems with decompress in browsers
|
|
47
|
-
// brotli: {
|
|
48
|
-
// decompress: brotliDecompress,
|
|
49
|
-
// compress: () => {
|
|
50
|
-
// throw new Error('brotli compress');
|
|
51
|
-
// }
|
|
52
|
-
// },
|
|
53
|
-
lz4js
|
|
54
|
-
// lzo
|
|
55
|
-
// 'zstd-codec': ZstdCodec
|
|
56
|
-
};
|
|
16
|
+
import {toArrayBuffer, toUint8Array} from './utils/binary-utils';
|
|
57
17
|
|
|
58
18
|
/**
|
|
59
19
|
* See https://github.com/apache/parquet-format/blob/master/Compression.md
|
|
60
20
|
*/
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
//
|
|
71
|
-
// LZO: new LZOCompression({modules}),
|
|
72
|
-
ZSTD: new ZstdCompression({modules})
|
|
21
|
+
export const PARQUET_COMPRESSION_METHODS: Partial<Record<ParquetCompression, true>> = {
|
|
22
|
+
UNCOMPRESSED: true,
|
|
23
|
+
GZIP: true,
|
|
24
|
+
SNAPPY: true,
|
|
25
|
+
BROTLI: true,
|
|
26
|
+
// TODO: Understand difference between LZ4 and LZ4_RAW.
|
|
27
|
+
LZ4: true,
|
|
28
|
+
LZ4_RAW: true,
|
|
29
|
+
ZSTD: true
|
|
73
30
|
};
|
|
74
31
|
|
|
32
|
+
/** Native formats available to asynchronous Parquet page decompression. */
|
|
33
|
+
const PARQUET_NATIVE_DECOMPRESSION_FORMATS: Partial<
|
|
34
|
+
Record<ParquetCompression, NativeDecompressionFormat>
|
|
35
|
+
> = {
|
|
36
|
+
GZIP: 'gzip',
|
|
37
|
+
BROTLI: 'brotli',
|
|
38
|
+
ZSTD: 'zstd'
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
/** Lazily constructed codec-backed compression implementations. */
|
|
42
|
+
const compressionPromises: Partial<Record<ParquetCompression, Promise<Compression>>> = {};
|
|
43
|
+
|
|
75
44
|
/**
|
|
76
|
-
*
|
|
77
|
-
*
|
|
45
|
+
* Registers optional codec modules without eagerly loading codec-backed implementations.
|
|
46
|
+
*
|
|
47
|
+
* @param options.modules External library dependencies.
|
|
78
48
|
*/
|
|
79
49
|
export async function preloadCompressions(options?: {modules?: {[key: string]: any}}) {
|
|
80
50
|
registerJSModules(options?.modules);
|
|
81
|
-
const compressions = Object.values(PARQUET_COMPRESSION_METHODS);
|
|
82
|
-
return await Promise.all(
|
|
83
|
-
compressions.map((compression) => compression.preload(options?.modules))
|
|
84
|
-
);
|
|
85
51
|
}
|
|
86
52
|
|
|
87
53
|
/**
|
|
88
54
|
* Deflate a value using compression method `method`
|
|
89
55
|
*/
|
|
90
|
-
export async function deflate(method: ParquetCompression, value:
|
|
91
|
-
|
|
92
|
-
if (!compression) {
|
|
56
|
+
export async function deflate(method: ParquetCompression, value: Uint8Array): Promise<Uint8Array> {
|
|
57
|
+
if (!(method in PARQUET_COMPRESSION_METHODS)) {
|
|
93
58
|
throw new Error(`parquet: invalid compression method: ${method}`);
|
|
94
59
|
}
|
|
60
|
+
if (method === 'UNCOMPRESSED') {
|
|
61
|
+
return value;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
const compression = await getParquetCompression(method);
|
|
95
65
|
const inputArrayBuffer = toArrayBuffer(value);
|
|
96
66
|
const compressedArrayBuffer = await compression.compress(inputArrayBuffer);
|
|
97
|
-
return
|
|
67
|
+
return toUint8Array(compressedArrayBuffer);
|
|
98
68
|
}
|
|
99
69
|
|
|
100
70
|
/**
|
|
@@ -102,106 +72,91 @@ export async function deflate(method: ParquetCompression, value: Buffer): Promis
|
|
|
102
72
|
*/
|
|
103
73
|
export async function decompress(
|
|
104
74
|
method: ParquetCompression,
|
|
105
|
-
value:
|
|
75
|
+
value: Uint8Array,
|
|
106
76
|
size: number
|
|
107
|
-
): Promise<
|
|
108
|
-
|
|
109
|
-
if (!compression) {
|
|
77
|
+
): Promise<Uint8Array> {
|
|
78
|
+
if (!(method in PARQUET_COMPRESSION_METHODS)) {
|
|
110
79
|
throw new Error(`parquet: invalid compression method: ${method}`);
|
|
111
80
|
}
|
|
112
81
|
const inputArrayBuffer = toArrayBuffer(value);
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
/*
|
|
118
|
-
* Inflate a value using compression method `method`
|
|
119
|
-
*/
|
|
120
|
-
export function inflate(method: ParquetCompression, value: Buffer, size: number): Buffer {
|
|
121
|
-
if (!(method in PARQUET_COMPRESSION_METHODS)) {
|
|
122
|
-
throw new Error(`invalid compression method: ${method}`);
|
|
82
|
+
if (method === 'UNCOMPRESSED') {
|
|
83
|
+
return toUint8Array(inputArrayBuffer);
|
|
123
84
|
}
|
|
124
|
-
// @ts-ignore
|
|
125
|
-
return PARQUET_COMPRESSION_METHODS[method].inflate(value, size);
|
|
126
|
-
}
|
|
127
85
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
function deflate_snappy(value: Buffer): Buffer {
|
|
138
|
-
return snappyjs.compress(value);
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
function deflate_lzo(value: Buffer): Buffer {
|
|
142
|
-
lzo = lzo || Util.load('lzo');
|
|
143
|
-
return lzo.compress(value);
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
function deflate_brotli(value: Buffer): Buffer {
|
|
147
|
-
brotli = brotli || Util.load('brotli');
|
|
148
|
-
const result = brotli.compress(value, {
|
|
149
|
-
mode: 0,
|
|
150
|
-
quality: 8,
|
|
151
|
-
lgwin: 22
|
|
152
|
-
});
|
|
153
|
-
return result ? Buffer.from(result) : Buffer.alloc(0);
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
function deflate_lz4(value: Buffer): Buffer {
|
|
157
|
-
lz4js = lz4js || Util.load('lz4js');
|
|
158
|
-
try {
|
|
159
|
-
// let result = Buffer.alloc(lz4js.encodeBound(value.length));
|
|
160
|
-
// const compressedSize = lz4.encodeBlock(value, result);
|
|
161
|
-
// // remove unnecessary bytes
|
|
162
|
-
// result = result.slice(0, compressedSize);
|
|
163
|
-
// return result;
|
|
164
|
-
return Buffer.from(lz4js.compress(value));
|
|
165
|
-
} catch (err) {
|
|
166
|
-
throw err;
|
|
86
|
+
const nativeFormat = PARQUET_NATIVE_DECOMPRESSION_FORMATS[method];
|
|
87
|
+
if (nativeFormat && shouldUseNativeDecompressionStream(method)) {
|
|
88
|
+
const nativeOutput = await decompressWithNativeDecompressionStream(
|
|
89
|
+
inputArrayBuffer,
|
|
90
|
+
nativeFormat
|
|
91
|
+
);
|
|
92
|
+
if (nativeOutput) {
|
|
93
|
+
return toUint8Array(nativeOutput);
|
|
94
|
+
}
|
|
167
95
|
}
|
|
168
|
-
}
|
|
169
|
-
function inflate_identity(value: Buffer): Buffer {
|
|
170
|
-
return value;
|
|
171
|
-
}
|
|
172
96
|
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
function inflate_snappy(value: Buffer): Buffer {
|
|
178
|
-
return snappyjs.uncompress(value);
|
|
97
|
+
const compression = await getParquetCompression(method);
|
|
98
|
+
const compressedArrayBuffer = await compression.decompress(inputArrayBuffer, size);
|
|
99
|
+
return toUint8Array(compressedArrayBuffer);
|
|
179
100
|
}
|
|
180
101
|
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
102
|
+
/**
|
|
103
|
+
* Returns whether a native stream can take precedence for one Parquet compression method.
|
|
104
|
+
*
|
|
105
|
+
* @param method Parquet compression method.
|
|
106
|
+
* @returns Whether no explicitly registered codec should take precedence.
|
|
107
|
+
*/
|
|
108
|
+
function shouldUseNativeDecompressionStream(method: ParquetCompression): boolean {
|
|
109
|
+
if (method === 'BROTLI') {
|
|
110
|
+
return !getJSModuleOrNull('brotli');
|
|
111
|
+
}
|
|
112
|
+
if (method === 'ZSTD') {
|
|
113
|
+
return !getJSModuleOrNull('zstd-codec');
|
|
114
|
+
}
|
|
115
|
+
return true;
|
|
184
116
|
}
|
|
185
117
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
} catch (err) {
|
|
196
|
-
throw err;
|
|
197
|
-
}
|
|
118
|
+
/**
|
|
119
|
+
* Loads one codec-backed implementation only after native decompression is unavailable.
|
|
120
|
+
*
|
|
121
|
+
* @param method Parquet compression method.
|
|
122
|
+
* @returns Codec-backed compression implementation.
|
|
123
|
+
*/
|
|
124
|
+
async function getParquetCompression(method: ParquetCompression): Promise<Compression> {
|
|
125
|
+
compressionPromises[method] ||= createParquetCompression(method);
|
|
126
|
+
return await compressionPromises[method];
|
|
198
127
|
}
|
|
199
128
|
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
129
|
+
/**
|
|
130
|
+
* Creates one lazily loaded codec-backed Parquet compression implementation.
|
|
131
|
+
*
|
|
132
|
+
* @param method Parquet compression method.
|
|
133
|
+
* @returns Codec-backed compression implementation.
|
|
134
|
+
*/
|
|
135
|
+
async function createParquetCompression(method: ParquetCompression): Promise<Compression> {
|
|
136
|
+
switch (method) {
|
|
137
|
+
case 'GZIP': {
|
|
138
|
+
const {GZipCompression} = await import('@loaders.gl/compression/gzip-compression');
|
|
139
|
+
return new GZipCompression();
|
|
140
|
+
}
|
|
141
|
+
case 'SNAPPY': {
|
|
142
|
+
const {SnappyCompression} = await import('@loaders.gl/compression/snappy-compression');
|
|
143
|
+
return new SnappyCompression();
|
|
144
|
+
}
|
|
145
|
+
case 'BROTLI': {
|
|
146
|
+
const {BrotliCompression} = await import('@loaders.gl/compression/brotli-compression');
|
|
147
|
+
return new BrotliCompression();
|
|
148
|
+
}
|
|
149
|
+
case 'LZ4':
|
|
150
|
+
case 'LZ4_RAW': {
|
|
151
|
+
const {LZ4Compression} = await import('@loaders.gl/compression/lz4-compression');
|
|
152
|
+
const lz4js = getJSModuleOrNull('lz4js') || (await import('lz4js')).default;
|
|
153
|
+
return new LZ4Compression({modules: {lz4js}});
|
|
154
|
+
}
|
|
155
|
+
case 'ZSTD': {
|
|
156
|
+
const {ZstdCompression} = await import('@loaders.gl/compression/zstd-compression');
|
|
157
|
+
return new ZstdCompression();
|
|
158
|
+
}
|
|
159
|
+
default:
|
|
160
|
+
throw new Error(`parquet: invalid compression method: ${method}`);
|
|
204
161
|
}
|
|
205
|
-
return Buffer.from(brotli.decompress(value));
|
|
206
162
|
}
|
|
207
|
-
*/
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
// loaders.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
|
|
5
|
+
import {PARQUET_CODECS} from '../codecs/index';
|
|
6
|
+
import type {ParquetField} from '../schema/declare';
|
|
7
|
+
|
|
8
|
+
/** Dictionary selection policy for one Parquet column chunk. */
|
|
9
|
+
export type ParquetDictionaryPolicy = boolean | 'auto';
|
|
10
|
+
|
|
11
|
+
/** A chunk-wide dictionary and the index stream replacing its non-null values. */
|
|
12
|
+
export interface ParquetDictionaryPlan {
|
|
13
|
+
/** Unique physical values written to the dictionary page. */
|
|
14
|
+
readonly values: unknown[];
|
|
15
|
+
/** Dictionary index corresponding to every non-null column value. */
|
|
16
|
+
readonly indices: number[];
|
|
17
|
+
/** PLAIN-encoded dictionary page payload. */
|
|
18
|
+
readonly encodedValues: Uint8Array;
|
|
19
|
+
/** Bit width used by RLE_DICTIONARY index pages. */
|
|
20
|
+
readonly bitWidth: number;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/** Builds a forced or size-beneficial dictionary plan for a complete column chunk. */
|
|
24
|
+
export function planDictionary(
|
|
25
|
+
column: ParquetField,
|
|
26
|
+
values: readonly unknown[],
|
|
27
|
+
policy: ParquetDictionaryPolicy,
|
|
28
|
+
dictionaryPageSizeLimit: number
|
|
29
|
+
): ParquetDictionaryPlan | undefined {
|
|
30
|
+
if (!Number.isInteger(dictionaryPageSizeLimit) || dictionaryPageSizeLimit <= 0) {
|
|
31
|
+
throw new Error(
|
|
32
|
+
`Parquet dictionary page size limit must be a positive integer, received ${dictionaryPageSizeLimit}`
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
if (policy === false || values.length === 0 || isDictionaryEncoding(column.encoding!)) {
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const dictionaryValues: unknown[] = [];
|
|
40
|
+
const dictionaryIndices = new Map<string, number>();
|
|
41
|
+
const indices = new Array<number>(values.length);
|
|
42
|
+
for (let valueIndex = 0; valueIndex < values.length; valueIndex++) {
|
|
43
|
+
const value = values[valueIndex];
|
|
44
|
+
const key = getDictionaryKey(value);
|
|
45
|
+
let dictionaryIndex = dictionaryIndices.get(key);
|
|
46
|
+
if (dictionaryIndex === undefined) {
|
|
47
|
+
dictionaryIndex = dictionaryValues.length;
|
|
48
|
+
dictionaryIndices.set(key, dictionaryIndex);
|
|
49
|
+
dictionaryValues.push(value);
|
|
50
|
+
}
|
|
51
|
+
indices[valueIndex] = dictionaryIndex;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const encodedValues = PARQUET_CODECS.PLAIN.encodeValues(column.primitiveType!, dictionaryValues, {
|
|
55
|
+
typeLength: column.typeLength
|
|
56
|
+
});
|
|
57
|
+
if (encodedValues.length > dictionaryPageSizeLimit) {
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
const bitWidth = dictionaryValues.length <= 1 ? 0 : Math.ceil(Math.log2(dictionaryValues.length));
|
|
61
|
+
if (policy === 'auto') {
|
|
62
|
+
const encodedIndices = PARQUET_CODECS.RLE_DICTIONARY.encodeValues(
|
|
63
|
+
column.primitiveType!,
|
|
64
|
+
indices,
|
|
65
|
+
{bitWidth}
|
|
66
|
+
);
|
|
67
|
+
const encodedPrimaryValues = PARQUET_CODECS[column.encoding!].encodeValues(
|
|
68
|
+
column.primitiveType!,
|
|
69
|
+
values as unknown[],
|
|
70
|
+
{typeLength: column.typeLength, bitWidth: column.typeLength}
|
|
71
|
+
);
|
|
72
|
+
if (encodedValues.length + encodedIndices.length >= encodedPrimaryValues.length) {
|
|
73
|
+
return undefined;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
return {values: dictionaryValues, indices, encodedValues, bitWidth};
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/** Returns a stable content key for one physical Parquet value. */
|
|
81
|
+
function getDictionaryKey(value: unknown): string {
|
|
82
|
+
if (value instanceof Uint8Array) {
|
|
83
|
+
let key = `bytes:${value.length}:`;
|
|
84
|
+
for (const byte of value) {
|
|
85
|
+
key += String.fromCharCode(byte);
|
|
86
|
+
}
|
|
87
|
+
return key;
|
|
88
|
+
}
|
|
89
|
+
if (typeof value === 'number') {
|
|
90
|
+
if (Number.isNaN(value)) return 'number:NaN';
|
|
91
|
+
if (Object.is(value, -0)) return 'number:-0';
|
|
92
|
+
}
|
|
93
|
+
return `${typeof value}:${String(value)}`;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/** Returns whether the selected primary encoding already requires a dictionary page. */
|
|
97
|
+
function isDictionaryEncoding(encoding: string): boolean {
|
|
98
|
+
return encoding === 'PLAIN_DICTIONARY' || encoding === 'RLE_DICTIONARY';
|
|
99
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
// loaders.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
|
|
5
|
+
import type {ParquetColumnChunk, ParquetField} from '../schema/declare';
|
|
6
|
+
|
|
7
|
+
/** One row-aligned slice of a shredded column prepared for page encoding. */
|
|
8
|
+
export interface PlannedParquetPage {
|
|
9
|
+
/** Shredded levels and non-null values contained in this page. */
|
|
10
|
+
readonly data: ParquetColumnChunk;
|
|
11
|
+
/** Number of top-level rows represented by the page. */
|
|
12
|
+
readonly rowCount: number;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/** Splits a shredded column into target-sized pages without splitting a top-level row. */
|
|
16
|
+
export function planColumnPages(
|
|
17
|
+
column: ParquetField,
|
|
18
|
+
data: ParquetColumnChunk,
|
|
19
|
+
rowCount: number,
|
|
20
|
+
pageSize: number
|
|
21
|
+
): PlannedParquetPage[] {
|
|
22
|
+
if (!Number.isInteger(pageSize) || pageSize <= 0) {
|
|
23
|
+
throw new Error(`Parquet page size must be a positive integer, received ${pageSize}`);
|
|
24
|
+
}
|
|
25
|
+
if (data.rlevels.length < data.count || data.dlevels.length < data.count) {
|
|
26
|
+
throw new Error(`Invalid shredded column ${column.key}: level buffers are shorter than count`);
|
|
27
|
+
}
|
|
28
|
+
if (rowCount === 0) {
|
|
29
|
+
return [];
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
const rowStarts = [0];
|
|
33
|
+
for (let levelIndex = 1; levelIndex < data.count; levelIndex++) {
|
|
34
|
+
if (data.rlevels[levelIndex] === 0) {
|
|
35
|
+
rowStarts.push(levelIndex);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
rowStarts.push(data.count);
|
|
39
|
+
if (rowStarts.length !== rowCount + 1) {
|
|
40
|
+
throw new Error(
|
|
41
|
+
`Invalid shredded column ${column.key}: found ${rowStarts.length - 1} rows, expected ${rowCount}`
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const pages: PlannedParquetPage[] = [];
|
|
46
|
+
let pageStartRow = 0;
|
|
47
|
+
let valueStart = 0;
|
|
48
|
+
while (pageStartRow < rowCount) {
|
|
49
|
+
const levelStart = rowStarts[pageStartRow];
|
|
50
|
+
let pageEndRow = pageStartRow + 1;
|
|
51
|
+
while (pageEndRow < rowCount && rowStarts[pageEndRow + 1] - levelStart <= pageSize) {
|
|
52
|
+
pageEndRow++;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const levelEnd = rowStarts[pageEndRow];
|
|
56
|
+
let valueCount = 0;
|
|
57
|
+
for (let levelIndex = levelStart; levelIndex < levelEnd; levelIndex++) {
|
|
58
|
+
if (data.dlevels[levelIndex] === column.dLevelMax) {
|
|
59
|
+
valueCount++;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
const valueEnd = valueStart + valueCount;
|
|
63
|
+
pages.push({
|
|
64
|
+
rowCount: pageEndRow - pageStartRow,
|
|
65
|
+
data: {
|
|
66
|
+
rlevels: data.rlevels.slice(levelStart, levelEnd),
|
|
67
|
+
dlevels: data.dlevels.slice(levelStart, levelEnd),
|
|
68
|
+
values: data.values.slice(valueStart, valueEnd),
|
|
69
|
+
count: levelEnd - levelStart,
|
|
70
|
+
pageHeaders: []
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
pageStartRow = pageEndRow;
|
|
74
|
+
valueStart = valueEnd;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
if (valueStart !== data.values.length) {
|
|
78
|
+
throw new Error(
|
|
79
|
+
`Invalid shredded column ${column.key}: consumed ${valueStart} values, expected ${data.values.length}`
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
return pages;
|
|
83
|
+
}
|