@loaders.gl/parquet 5.0.0-alpha.2 → 5.0.0-alpha.3
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 +1 -1
- package/dist/bundled.d.ts +1 -1
- package/dist/bundled.d.ts.map +1 -1
- package/dist/bundled.js.map +1 -1
- package/dist/delta-format.d.ts +9 -0
- package/dist/delta-format.d.ts.map +1 -0
- package/dist/delta-format.js +12 -0
- package/dist/delta-format.js.map +1 -0
- package/dist/delta-source-loader-types.d.ts +27 -0
- package/dist/delta-source-loader-types.d.ts.map +1 -0
- package/dist/delta-source-loader-types.js +28 -0
- package/dist/delta-source-loader-types.js.map +1 -0
- package/dist/delta-source.d.ts +48 -0
- package/dist/delta-source.d.ts.map +1 -0
- package/dist/delta-source.js +222 -0
- package/dist/delta-source.js.map +1 -0
- package/dist/delta-types.d.ts +38 -0
- package/dist/delta-types.d.ts.map +1 -0
- package/dist/delta-types.js +5 -0
- package/dist/delta-types.js.map +1 -0
- package/dist/geoparquet-loader.js +1 -1
- package/dist/iceberg-rest-catalog.d.ts +49 -0
- package/dist/iceberg-rest-catalog.d.ts.map +1 -0
- package/dist/iceberg-rest-catalog.js +78 -0
- package/dist/iceberg-rest-catalog.js.map +1 -0
- package/dist/iceberg-table-source.d.ts +63 -0
- package/dist/iceberg-table-source.d.ts.map +1 -0
- package/dist/iceberg-table-source.js +797 -0
- package/dist/iceberg-table-source.js.map +1 -0
- package/dist/iceberg-types.d.ts +150 -0
- package/dist/iceberg-types.d.ts.map +1 -0
- package/dist/iceberg-types.js +5 -0
- package/dist/iceberg-types.js.map +1 -0
- package/dist/index.cjs +15005 -3143
- package/dist/index.cjs.map +3 -3
- package/dist/index.d.ts +7 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/arrow/convert-schema-from-parquet.d.ts +3 -1
- package/dist/lib/arrow/convert-schema-from-parquet.d.ts.map +1 -1
- package/dist/lib/arrow/convert-schema-from-parquet.js +94 -19
- package/dist/lib/arrow/convert-schema-from-parquet.js.map +1 -1
- package/dist/lib/arrow/create-nested-arrow-vector.js +89 -0
- package/dist/lib/arrow/create-nested-arrow-vector.js.map +1 -1
- package/dist/lib/constants.js +1 -1
- package/dist/lib/encoders/encode-table-to-parquet-js.d.ts.map +1 -1
- package/dist/lib/encoders/encode-table-to-parquet-js.js +202 -7
- package/dist/lib/encoders/encode-table-to-parquet-js.js.map +1 -1
- package/dist/lib/geo/geoparquet-covering.d.ts +19 -0
- package/dist/lib/geo/geoparquet-covering.d.ts.map +1 -0
- package/dist/lib/geo/geoparquet-covering.js +137 -0
- package/dist/lib/geo/geoparquet-covering.js.map +1 -0
- package/dist/lib/geo/geospatial-metadata.d.ts.map +1 -1
- package/dist/lib/geo/geospatial-metadata.js +39 -13
- package/dist/lib/geo/geospatial-metadata.js.map +1 -1
- package/dist/lib/parquet-bloom-filter-planner.d.ts +16 -0
- package/dist/lib/parquet-bloom-filter-planner.d.ts.map +1 -0
- package/dist/lib/parquet-bloom-filter-planner.js +57 -0
- package/dist/lib/parquet-bloom-filter-planner.js.map +1 -0
- package/dist/lib/parquet-bloom-filter.d.ts +30 -0
- package/dist/lib/parquet-bloom-filter.d.ts.map +1 -0
- package/dist/lib/parquet-bloom-filter.js +289 -0
- package/dist/lib/parquet-bloom-filter.js.map +1 -0
- package/dist/lib/parquet-encryption.d.ts +80 -0
- package/dist/lib/parquet-encryption.d.ts.map +1 -0
- package/dist/lib/parquet-encryption.js +190 -0
- package/dist/lib/parquet-encryption.js.map +1 -0
- package/dist/lib/parquet-page-index.d.ts +34 -5
- package/dist/lib/parquet-page-index.d.ts.map +1 -1
- package/dist/lib/parquet-page-index.js +114 -28
- package/dist/lib/parquet-page-index.js.map +1 -1
- package/dist/lib/parquet-predicate.d.ts +5 -1
- package/dist/lib/parquet-predicate.d.ts.map +1 -1
- package/dist/lib/parquet-predicate.js +42 -14
- package/dist/lib/parquet-predicate.js.map +1 -1
- package/dist/lib/parquet-source-worker-decoder.d.ts +4 -1
- package/dist/lib/parquet-source-worker-decoder.d.ts.map +1 -1
- package/dist/lib/parquet-source-worker-decoder.js +83 -17
- package/dist/lib/parquet-source-worker-decoder.js.map +1 -1
- package/dist/lib/parquet-source-worker-types.d.ts +24 -0
- package/dist/lib/parquet-source-worker-types.d.ts.map +1 -1
- 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-parquet-to-arrow-js.d.ts.map +1 -1
- package/dist/lib/parsers/parse-parquet-to-arrow-js.js +327 -18
- package/dist/lib/parsers/parse-parquet-to-arrow-js.js.map +1 -1
- package/dist/lib/parsers/parse-parquet-to-arrow.d.ts.map +1 -1
- package/dist/lib/parsers/parse-parquet-to-arrow.js +5 -5
- package/dist/lib/parsers/parse-parquet-to-arrow.js.map +1 -1
- package/dist/lib/parsers/parse-parquet-to-columns.d.ts.map +1 -1
- package/dist/lib/parsers/parse-parquet-to-columns.js +3 -1
- package/dist/lib/parsers/parse-parquet-to-columns.js.map +1 -1
- package/dist/lib/parsers/parse-parquet-to-json.d.ts.map +1 -1
- package/dist/lib/parsers/parse-parquet-to-json.js +18 -2
- package/dist/lib/parsers/parse-parquet-to-json.js.map +1 -1
- package/dist/lib/slice-parquet-batch.d.ts +9 -0
- package/dist/lib/slice-parquet-batch.d.ts.map +1 -0
- package/dist/lib/slice-parquet-batch.js +28 -0
- package/dist/lib/slice-parquet-batch.js.map +1 -0
- package/dist/lib/sources/parquet-range-file.d.ts +1 -1
- package/dist/lib/sources/parquet-range-file.d.ts.map +1 -1
- package/dist/lib/sources/parquet-range-file.js +28 -22
- package/dist/lib/sources/parquet-range-file.js.map +1 -1
- package/dist/lib/utils/normalize-parquet-options.d.ts.map +1 -1
- package/dist/lib/utils/normalize-parquet-options.js +15 -1
- package/dist/lib/utils/normalize-parquet-options.js.map +1 -1
- package/dist/parquet-dataset-source.cjs +15766 -4896
- package/dist/parquet-dataset-source.cjs.map +3 -3
- package/dist/parquet-dataset-source.d.ts +31 -4
- package/dist/parquet-dataset-source.d.ts.map +1 -1
- package/dist/parquet-dataset-source.js +296 -74
- package/dist/parquet-dataset-source.js.map +1 -1
- package/dist/parquet-js-loader-types.d.ts +2 -0
- package/dist/parquet-js-loader-types.d.ts.map +1 -1
- package/dist/parquet-js-loader-types.js +2 -1
- package/dist/parquet-js-loader-types.js.map +1 -1
- package/dist/parquet-js-loader.d.ts +1 -0
- package/dist/parquet-js-loader.d.ts.map +1 -1
- package/dist/parquet-js-loader.js +2 -1
- package/dist/parquet-js-loader.js.map +1 -1
- package/dist/parquet-js-writer.d.ts +23 -2
- package/dist/parquet-js-writer.d.ts.map +1 -1
- package/dist/parquet-js-writer.js +1 -1
- package/dist/parquet-js-writer.js.map +1 -1
- package/dist/parquet-loader-base.js +1 -1
- package/dist/parquet-loader-options.d.ts +11 -0
- package/dist/parquet-loader-options.d.ts.map +1 -1
- package/dist/parquet-loader-options.js.map +1 -1
- package/dist/parquet-source-capabilities.d.ts +8 -1
- package/dist/parquet-source-capabilities.d.ts.map +1 -1
- package/dist/parquet-source-capabilities.js +10 -0
- package/dist/parquet-source-capabilities.js.map +1 -1
- package/dist/parquet-source-loader-types.d.ts +10 -0
- package/dist/parquet-source-loader-types.d.ts.map +1 -1
- package/dist/parquet-source-loader-types.js +11 -1
- package/dist/parquet-source-loader-types.js.map +1 -1
- package/dist/parquet-source-loader.cjs +14911 -4316
- package/dist/parquet-source-loader.cjs.map +3 -3
- package/dist/parquet-source-loader.d.ts +42 -4
- package/dist/parquet-source-loader.d.ts.map +1 -1
- package/dist/parquet-source-loader.js +585 -38
- package/dist/parquet-source-loader.js.map +1 -1
- package/dist/parquet-source-types.d.ts +180 -30
- package/dist/parquet-source-types.d.ts.map +1 -1
- package/dist/parquet-source-worker.js +7055 -6989
- package/dist/parquet-source-worker.js.map +4 -4
- package/dist/parquet-worker-node.cjs +8505 -1041
- package/dist/parquet-worker-node.cjs.map +4 -4
- package/dist/parquet-worker-url.js +5 -1
- package/dist/parquet-worker-url.js.map +1 -1
- package/dist/parquet-worker.js +289 -218
- package/dist/parquet-worker.js.map +4 -4
- package/dist/parquetjs/codecs/declare.d.ts +15 -0
- package/dist/parquetjs/codecs/declare.d.ts.map +1 -1
- package/dist/parquetjs/codecs/declare.js +10 -0
- package/dist/parquetjs/codecs/declare.js.map +1 -1
- package/dist/parquetjs/codecs/delta.d.ts.map +1 -1
- package/dist/parquetjs/codecs/delta.js +356 -7
- package/dist/parquetjs/codecs/delta.js.map +1 -1
- package/dist/parquetjs/codecs/index.d.ts.map +1 -1
- package/dist/parquetjs/codecs/index.js +4 -0
- package/dist/parquetjs/codecs/index.js.map +1 -1
- package/dist/parquetjs/codecs/plain.d.ts +1 -1
- package/dist/parquetjs/codecs/plain.d.ts.map +1 -1
- package/dist/parquetjs/codecs/plain.js +153 -12
- package/dist/parquetjs/codecs/plain.js.map +1 -1
- package/dist/parquetjs/codecs/rle.d.ts +4 -0
- package/dist/parquetjs/codecs/rle.d.ts.map +1 -1
- package/dist/parquetjs/codecs/rle.js +406 -3
- package/dist/parquetjs/codecs/rle.js.map +1 -1
- package/dist/parquetjs/compression.d.ts +9 -0
- package/dist/parquetjs/compression.d.ts.map +1 -1
- package/dist/parquetjs/compression.js +86 -67
- package/dist/parquetjs/compression.js.map +1 -1
- package/dist/parquetjs/encoder/dictionary-planner.d.ts.map +1 -1
- package/dist/parquetjs/encoder/dictionary-planner.js +5 -2
- package/dist/parquetjs/encoder/dictionary-planner.js.map +1 -1
- package/dist/parquetjs/encoder/parquet-encoder.d.ts +43 -1
- package/dist/parquetjs/encoder/parquet-encoder.d.ts.map +1 -1
- package/dist/parquetjs/encoder/parquet-encoder.js +691 -34
- package/dist/parquetjs/encoder/parquet-encoder.js.map +1 -1
- package/dist/parquetjs/parquet-thrift/BoundingBox.d.ts +29 -0
- package/dist/parquetjs/parquet-thrift/BoundingBox.d.ts.map +1 -0
- package/dist/parquetjs/parquet-thrift/BoundingBox.js +85 -0
- package/dist/parquetjs/parquet-thrift/BoundingBox.js.map +1 -0
- package/dist/parquetjs/parquet-thrift/ColumnChunk.d.ts +5 -0
- package/dist/parquetjs/parquet-thrift/ColumnChunk.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/ColumnChunk.js +35 -0
- package/dist/parquetjs/parquet-thrift/ColumnChunk.js.map +1 -1
- package/dist/parquetjs/parquet-thrift/ColumnCryptoMetaData.d.ts +35 -0
- package/dist/parquetjs/parquet-thrift/ColumnCryptoMetaData.d.ts.map +1 -0
- package/dist/parquetjs/parquet-thrift/ColumnCryptoMetaData.js +135 -0
- package/dist/parquetjs/parquet-thrift/ColumnCryptoMetaData.js.map +1 -0
- package/dist/parquetjs/parquet-thrift/ColumnMetaData.d.ts +10 -0
- package/dist/parquetjs/parquet-thrift/ColumnMetaData.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/ColumnMetaData.js +73 -0
- package/dist/parquetjs/parquet-thrift/ColumnMetaData.js.map +1 -1
- package/dist/parquetjs/parquet-thrift/EncryptionAlgorithm.d.ts +22 -0
- package/dist/parquetjs/parquet-thrift/EncryptionAlgorithm.d.ts.map +1 -0
- package/dist/parquetjs/parquet-thrift/EncryptionAlgorithm.js +111 -0
- package/dist/parquetjs/parquet-thrift/EncryptionAlgorithm.js.map +1 -0
- package/dist/parquetjs/parquet-thrift/FileCryptoMetaData.d.ts +16 -0
- package/dist/parquetjs/parquet-thrift/FileCryptoMetaData.d.ts.map +1 -0
- package/dist/parquetjs/parquet-thrift/FileCryptoMetaData.js +57 -0
- package/dist/parquetjs/parquet-thrift/FileCryptoMetaData.js.map +1 -0
- package/dist/parquetjs/parquet-thrift/FileMetaData.d.ts +5 -0
- package/dist/parquetjs/parquet-thrift/FileMetaData.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/FileMetaData.js +35 -0
- package/dist/parquetjs/parquet-thrift/FileMetaData.js.map +1 -1
- package/dist/parquetjs/parquet-thrift/GeospatialStatistics.d.ts +18 -0
- package/dist/parquetjs/parquet-thrift/GeospatialStatistics.d.ts.map +1 -0
- package/dist/parquetjs/parquet-thrift/GeospatialStatistics.js +62 -0
- package/dist/parquetjs/parquet-thrift/GeospatialStatistics.js.map +1 -0
- package/dist/parquetjs/parquet-thrift/SizeStatistics.d.ts +26 -0
- package/dist/parquetjs/parquet-thrift/SizeStatistics.d.ts.map +1 -0
- package/dist/parquetjs/parquet-thrift/SizeStatistics.js +85 -0
- package/dist/parquetjs/parquet-thrift/SizeStatistics.js.map +1 -0
- package/dist/parquetjs/parquet-thrift/index.d.ts +6 -0
- package/dist/parquetjs/parquet-thrift/index.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/index.js +6 -0
- package/dist/parquetjs/parquet-thrift/index.js.map +1 -1
- package/dist/parquetjs/parser/decoders.d.ts +10 -1
- package/dist/parquetjs/parser/decoders.d.ts.map +1 -1
- package/dist/parquetjs/parser/decoders.js +318 -14
- package/dist/parquetjs/parser/decoders.js.map +1 -1
- package/dist/parquetjs/parser/parquet-reader.d.ts +78 -12
- package/dist/parquetjs/parser/parquet-reader.d.ts.map +1 -1
- package/dist/parquetjs/parser/parquet-reader.js +605 -66
- package/dist/parquetjs/parser/parquet-reader.js.map +1 -1
- package/dist/parquetjs/schema/declare.d.ts +22 -3
- 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.map +1 -1
- package/dist/parquetjs/schema/schema.js +10 -0
- package/dist/parquetjs/schema/schema.js.map +1 -1
- package/dist/parquetjs/schema/shred.d.ts.map +1 -1
- package/dist/parquetjs/schema/shred.js +219 -11
- package/dist/parquetjs/schema/shred.js.map +1 -1
- package/dist/parquetjs/schema/types.js +19 -21
- package/dist/parquetjs/schema/types.js.map +1 -1
- package/dist/parquetjs/schema/variant.d.ts +3 -0
- package/dist/parquetjs/schema/variant.d.ts.map +1 -0
- package/dist/parquetjs/schema/variant.js +248 -0
- package/dist/parquetjs/schema/variant.js.map +1 -0
- package/dist/parquetjs/utils/crc32.d.ts +3 -0
- package/dist/parquetjs/utils/crc32.d.ts.map +1 -0
- package/dist/parquetjs/utils/crc32.js +15 -0
- package/dist/parquetjs/utils/crc32.js.map +1 -0
- package/dist/parquetjs/utils/read-utils.d.ts +11 -1
- package/dist/parquetjs/utils/read-utils.d.ts.map +1 -1
- package/dist/parquetjs/utils/read-utils.js +21 -1
- package/dist/parquetjs/utils/read-utils.js.map +1 -1
- package/dist/unbundled.d.ts +2 -1
- package/dist/unbundled.d.ts.map +1 -1
- package/dist/unbundled.js +1 -0
- package/dist/unbundled.js.map +1 -1
- package/package.json +36 -11
- package/src/bundled.ts +3 -0
- package/src/delta-format.ts +12 -0
- package/src/delta-source-loader-types.ts +40 -0
- package/src/delta-source.ts +305 -0
- package/src/delta-types.ts +40 -0
- package/src/iceberg-rest-catalog.ts +122 -0
- package/src/iceberg-table-source.ts +1037 -0
- package/src/iceberg-types.ts +165 -0
- package/src/index.ts +50 -1
- package/src/lib/arrow/convert-schema-from-parquet.ts +113 -19
- package/src/lib/arrow/create-nested-arrow-vector.ts +116 -0
- package/src/lib/encoders/encode-table-to-parquet-js.ts +268 -7
- package/src/lib/geo/geoparquet-covering.ts +201 -0
- package/src/lib/geo/geospatial-metadata.ts +42 -15
- package/src/lib/parquet-bloom-filter-planner.ts +86 -0
- package/src/lib/parquet-bloom-filter.ts +345 -0
- package/src/lib/parquet-encryption.ts +344 -0
- package/src/lib/parquet-page-index.ts +180 -34
- package/src/lib/parquet-predicate.ts +52 -16
- package/src/lib/parquet-source-worker-decoder.ts +116 -20
- package/src/lib/parquet-source-worker-types.ts +25 -0
- package/src/lib/parsers/get-parquet-schema.ts +3 -1
- package/src/lib/parsers/parse-parquet-to-arrow-js.ts +397 -17
- package/src/lib/parsers/parse-parquet-to-arrow.ts +4 -5
- package/src/lib/parsers/parse-parquet-to-columns.ts +3 -1
- package/src/lib/parsers/parse-parquet-to-json.ts +18 -2
- package/src/lib/slice-parquet-batch.ts +32 -0
- package/src/lib/sources/parquet-range-file.ts +35 -29
- package/src/lib/utils/normalize-parquet-options.ts +17 -1
- package/src/parquet-dataset-source.ts +397 -85
- package/src/parquet-js-loader-types.ts +1 -0
- package/src/parquet-js-loader.ts +2 -1
- package/src/parquet-js-writer.ts +30 -0
- package/src/parquet-loader-options.ts +11 -0
- package/src/parquet-source-capabilities.ts +18 -1
- package/src/parquet-source-loader-types.ts +10 -0
- package/src/parquet-source-loader.ts +929 -52
- package/src/parquet-source-types.ts +197 -28
- package/src/parquet-worker-url.ts +6 -1
- package/src/parquetjs/codecs/declare.ts +27 -0
- package/src/parquetjs/codecs/delta.ts +466 -6
- package/src/parquetjs/codecs/index.ts +4 -0
- package/src/parquetjs/codecs/plain.ts +177 -11
- package/src/parquetjs/codecs/rle.ts +573 -3
- package/src/parquetjs/compression.ts +102 -76
- package/src/parquetjs/encoder/dictionary-planner.ts +7 -2
- package/src/parquetjs/encoder/parquet-encoder.ts +1016 -38
- package/src/parquetjs/parquet-thrift/BoundingBox.ts +108 -0
- package/src/parquetjs/parquet-thrift/ColumnChunk.ts +35 -0
- package/src/parquetjs/parquet-thrift/ColumnCryptoMetaData.ts +139 -0
- package/src/parquetjs/parquet-thrift/ColumnMetaData.ts +73 -0
- package/src/parquetjs/parquet-thrift/EncryptionAlgorithm.ts +127 -0
- package/src/parquetjs/parquet-thrift/FileCryptoMetaData.ts +60 -0
- package/src/parquetjs/parquet-thrift/FileMetaData.ts +35 -0
- package/src/parquetjs/parquet-thrift/GeospatialStatistics.ts +68 -0
- package/src/parquetjs/parquet-thrift/SizeStatistics.ts +98 -0
- package/src/parquetjs/parquet-thrift/index.ts +6 -0
- package/src/parquetjs/parser/decoders.ts +451 -26
- package/src/parquetjs/parser/parquet-reader.ts +935 -87
- package/src/parquetjs/schema/declare.ts +22 -2
- package/src/parquetjs/schema/schema.ts +10 -0
- package/src/parquetjs/schema/shred.ts +238 -11
- package/src/parquetjs/schema/types.ts +16 -25
- package/src/parquetjs/schema/variant.ts +313 -0
- package/src/parquetjs/utils/crc32.ts +15 -0
- package/src/parquetjs/utils/read-utils.ts +26 -1
- package/src/unbundled.ts +14 -0
|
@@ -4,8 +4,9 @@
|
|
|
4
4
|
// Copyright (c) 2017 ironSource Ltd.
|
|
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
|
-
import {
|
|
8
|
-
import {
|
|
7
|
+
import { BrotliCompressor, BrotliDecompressor, GZipCompressor, GZipDecompressor, LZ4Compressor, LZ4Decompressor, SnappyCompressor, SnappyDecompressor, ZstdCompressor, ZstdDecompressor, Decompressor } from '@loaders.gl/compression';
|
|
8
|
+
import { SnappyHysnappyDecompressor } from '@loaders.gl/compression/snappy-decompressor-hysnappy';
|
|
9
|
+
import { registerJSModules } from '@loaders.gl/loader-utils';
|
|
9
10
|
import { toArrayBuffer, toUint8Array } from "./utils/binary-utils.js";
|
|
10
11
|
/**
|
|
11
12
|
* See https://github.com/apache/parquet-format/blob/master/Compression.md
|
|
@@ -20,14 +21,37 @@ export const PARQUET_COMPRESSION_METHODS = {
|
|
|
20
21
|
LZ4_RAW: true,
|
|
21
22
|
ZSTD: true
|
|
22
23
|
};
|
|
23
|
-
/**
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
|
|
24
|
+
/** Fast Snappy decoder that permanently falls back to snappyjs when WASM is unavailable. */
|
|
25
|
+
class ParquetSnappyDecompressor extends Decompressor {
|
|
26
|
+
/** Compression format name. */
|
|
27
|
+
name = 'snappy';
|
|
28
|
+
/** Snappy does not have a standard standalone file extension. */
|
|
29
|
+
extensions = [];
|
|
30
|
+
/** Snappy does not have a standard HTTP content encoding. */
|
|
31
|
+
contentEncodings = [];
|
|
32
|
+
/** snappyjs keeps this composite decoder available without WebAssembly. */
|
|
33
|
+
isSupported = true;
|
|
34
|
+
/** Preferred compact WASM decoder for page-sized frames. */
|
|
35
|
+
hysnappy = new SnappyHysnappyDecompressor();
|
|
36
|
+
/** Always-supported JavaScript decoder. */
|
|
37
|
+
snappyjs = new SnappyDecompressor();
|
|
38
|
+
/** Whether this instance has selected the JavaScript fallback. */
|
|
39
|
+
useSnappyjs = !this.hysnappy.isSupported;
|
|
40
|
+
/** Decodes with hysnappy, retaining snappyjs after the first WASM setup or runtime failure. */
|
|
41
|
+
async decompress(input, size) {
|
|
42
|
+
if (!this.useSnappyjs) {
|
|
43
|
+
try {
|
|
44
|
+
return await this.hysnappy.decompress(input, size);
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
// CSP can reject WebAssembly compilation even when the WebAssembly global exists. Once
|
|
48
|
+
// that happens, avoid paying the same rejected initialization cost for every Parquet page.
|
|
49
|
+
this.useSnappyjs = true;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return await this.snappyjs.decompress(input, size);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
31
55
|
/**
|
|
32
56
|
* Registers optional codec modules without eagerly loading codec-backed implementations.
|
|
33
57
|
*
|
|
@@ -46,7 +70,7 @@ export async function deflate(method, value) {
|
|
|
46
70
|
if (method === 'UNCOMPRESSED') {
|
|
47
71
|
return value;
|
|
48
72
|
}
|
|
49
|
-
const compression = await
|
|
73
|
+
const compression = await getParquetCompressor(method);
|
|
50
74
|
const inputArrayBuffer = toArrayBuffer(value);
|
|
51
75
|
const compressedArrayBuffer = await compression.compress(inputArrayBuffer);
|
|
52
76
|
return toUint8Array(compressedArrayBuffer);
|
|
@@ -62,72 +86,67 @@ export async function decompress(method, value, size) {
|
|
|
62
86
|
if (method === 'UNCOMPRESSED') {
|
|
63
87
|
return toUint8Array(inputArrayBuffer);
|
|
64
88
|
}
|
|
65
|
-
const
|
|
66
|
-
if (nativeFormat && shouldUseNativeDecompressionStream(method)) {
|
|
67
|
-
const nativeOutput = await decompressWithNativeDecompressionStream(inputArrayBuffer, nativeFormat);
|
|
68
|
-
if (nativeOutput) {
|
|
69
|
-
return toUint8Array(nativeOutput);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
const compression = await getParquetCompression(method);
|
|
89
|
+
const compression = await getParquetDecompressor(method);
|
|
73
90
|
const compressedArrayBuffer = await compression.decompress(inputArrayBuffer, size);
|
|
74
91
|
return toUint8Array(compressedArrayBuffer);
|
|
75
92
|
}
|
|
76
93
|
/**
|
|
77
|
-
*
|
|
94
|
+
* Creates a reusable decoder for the independently compressed pages in one Parquet reader.
|
|
78
95
|
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
96
|
+
* Reusing the lazy codec preserves its selected backend and avoids repeating dynamic import and
|
|
97
|
+
* preload work for every page while keeping module injection scoped to a reader invocation.
|
|
81
98
|
*/
|
|
82
|
-
function
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
99
|
+
export function createParquetPageDecompressor(method) {
|
|
100
|
+
const decompressor = method === 'UNCOMPRESSED' ? null : createParquetDecompressor(method);
|
|
101
|
+
return async (value, size) => {
|
|
102
|
+
const inputArrayBuffer = toArrayBuffer(value);
|
|
103
|
+
if (!decompressor) {
|
|
104
|
+
return toUint8Array(inputArrayBuffer);
|
|
105
|
+
}
|
|
106
|
+
const decompressedArrayBuffer = await decompressor.decompress(inputArrayBuffer, size);
|
|
107
|
+
return toUint8Array(decompressedArrayBuffer);
|
|
108
|
+
};
|
|
90
109
|
}
|
|
91
|
-
/**
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
* @param method Parquet compression method.
|
|
95
|
-
* @returns Codec-backed compression implementation.
|
|
96
|
-
*/
|
|
97
|
-
async function getParquetCompression(method) {
|
|
98
|
-
compressionPromises[method] ||= createParquetCompression(method);
|
|
99
|
-
return await compressionPromises[method];
|
|
110
|
+
/** Returns a new lazily selecting compressor for one Parquet method. */
|
|
111
|
+
async function getParquetCompressor(method) {
|
|
112
|
+
return createParquetCompressor(method);
|
|
100
113
|
}
|
|
101
|
-
/**
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
async function createParquetCompression(method) {
|
|
114
|
+
/** Returns a new lazily selecting decompressor for one Parquet method. */
|
|
115
|
+
async function getParquetDecompressor(method) {
|
|
116
|
+
return createParquetDecompressor(method);
|
|
117
|
+
}
|
|
118
|
+
/** Creates the root-level default compressor for one Parquet method. */
|
|
119
|
+
function createParquetCompressor(method) {
|
|
108
120
|
switch (method) {
|
|
109
|
-
case 'GZIP':
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
case '
|
|
114
|
-
|
|
115
|
-
return new SnappyCompression();
|
|
116
|
-
}
|
|
117
|
-
case 'BROTLI': {
|
|
118
|
-
const { BrotliCompression } = await import('@loaders.gl/compression/brotli-compression');
|
|
119
|
-
return new BrotliCompression();
|
|
120
|
-
}
|
|
121
|
+
case 'GZIP':
|
|
122
|
+
return new GZipCompressor();
|
|
123
|
+
case 'SNAPPY':
|
|
124
|
+
return new SnappyCompressor();
|
|
125
|
+
case 'BROTLI':
|
|
126
|
+
return new BrotliCompressor();
|
|
121
127
|
case 'LZ4':
|
|
122
|
-
case 'LZ4_RAW':
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
return new
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
128
|
+
case 'LZ4_RAW':
|
|
129
|
+
return new LZ4Compressor();
|
|
130
|
+
case 'ZSTD':
|
|
131
|
+
return new ZstdCompressor();
|
|
132
|
+
default:
|
|
133
|
+
throw new Error(`parquet: invalid compression method: ${method}`);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
/** Creates the root-level default decompressor for one Parquet method. */
|
|
137
|
+
function createParquetDecompressor(method) {
|
|
138
|
+
switch (method) {
|
|
139
|
+
case 'GZIP':
|
|
140
|
+
return new GZipDecompressor();
|
|
141
|
+
case 'SNAPPY':
|
|
142
|
+
return new ParquetSnappyDecompressor();
|
|
143
|
+
case 'BROTLI':
|
|
144
|
+
return new BrotliDecompressor();
|
|
145
|
+
case 'LZ4':
|
|
146
|
+
case 'LZ4_RAW':
|
|
147
|
+
return new LZ4Decompressor();
|
|
148
|
+
case 'ZSTD':
|
|
149
|
+
return new ZstdDecompressor();
|
|
131
150
|
default:
|
|
132
151
|
throw new Error(`parquet: invalid compression method: ${method}`);
|
|
133
152
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compression.js","sourceRoot":"","sources":["../../src/parquetjs/compression.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AACpC,qCAAqC;AACrC,oEAAoE;AACpE,wEAAwE;
|
|
1
|
+
{"version":3,"file":"compression.js","sourceRoot":"","sources":["../../src/parquetjs/compression.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dictionary-planner.d.ts","sourceRoot":"","sources":["../../../src/parquetjs/encoder/dictionary-planner.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,YAAY,EAAC,6BAA0B;AAEpD,gEAAgE;AAChE,MAAM,MAAM,uBAAuB,GAAG,OAAO,GAAG,MAAM,CAAC;AAEvD,kFAAkF;AAClF,MAAM,WAAW,qBAAqB;IACpC,6DAA6D;IAC7D,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;IAC3B,qEAAqE;IACrE,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAC3B,6CAA6C;IAC7C,QAAQ,CAAC,aAAa,EAAE,UAAU,CAAC;IACnC,oDAAoD;IACpD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,sFAAsF;AACtF,wBAAgB,cAAc,CAC5B,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,SAAS,OAAO,EAAE,EAC1B,MAAM,EAAE,uBAAuB,EAC/B,uBAAuB,EAAE,MAAM,GAC9B,qBAAqB,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"dictionary-planner.d.ts","sourceRoot":"","sources":["../../../src/parquetjs/encoder/dictionary-planner.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,YAAY,EAAC,6BAA0B;AAEpD,gEAAgE;AAChE,MAAM,MAAM,uBAAuB,GAAG,OAAO,GAAG,MAAM,CAAC;AAEvD,kFAAkF;AAClF,MAAM,WAAW,qBAAqB;IACpC,6DAA6D;IAC7D,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;IAC3B,qEAAqE;IACrE,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAC3B,6CAA6C;IAC7C,QAAQ,CAAC,aAAa,EAAE,UAAU,CAAC;IACnC,oDAAoD;IACpD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,sFAAsF;AACtF,wBAAgB,cAAc,CAC5B,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,SAAS,OAAO,EAAE,EAC1B,MAAM,EAAE,uBAAuB,EAC/B,uBAAuB,EAAE,MAAM,GAC9B,qBAAqB,GAAG,SAAS,CAsDnC"}
|
|
@@ -7,7 +7,10 @@ export function planDictionary(column, values, policy, dictionaryPageSizeLimit)
|
|
|
7
7
|
if (!Number.isInteger(dictionaryPageSizeLimit) || dictionaryPageSizeLimit <= 0) {
|
|
8
8
|
throw new Error(`Parquet dictionary page size limit must be a positive integer, received ${dictionaryPageSizeLimit}`);
|
|
9
9
|
}
|
|
10
|
-
if (policy === false || values.length === 0
|
|
10
|
+
if (policy === false || values.length === 0) {
|
|
11
|
+
if (policy === false && isDictionaryEncoding(column.encoding)) {
|
|
12
|
+
throw new Error(`Parquet column ${column.path.join('.')} requests ${column.encoding} but dictionary encoding is disabled`);
|
|
13
|
+
}
|
|
11
14
|
return undefined;
|
|
12
15
|
}
|
|
13
16
|
const dictionaryValues = [];
|
|
@@ -31,7 +34,7 @@ export function planDictionary(column, values, policy, dictionaryPageSizeLimit)
|
|
|
31
34
|
return undefined;
|
|
32
35
|
}
|
|
33
36
|
const bitWidth = dictionaryValues.length <= 1 ? 0 : Math.ceil(Math.log2(dictionaryValues.length));
|
|
34
|
-
if (policy === 'auto') {
|
|
37
|
+
if (policy === 'auto' && !isDictionaryEncoding(column.encoding)) {
|
|
35
38
|
const encodedIndices = PARQUET_CODECS.RLE_DICTIONARY.encodeValues(column.primitiveType, indices, { bitWidth });
|
|
36
39
|
const encodedPrimaryValues = PARQUET_CODECS[column.encoding].encodeValues(column.primitiveType, values, { typeLength: column.typeLength, bitWidth: column.typeLength });
|
|
37
40
|
if (encodedValues.length + encodedIndices.length >= encodedPrimaryValues.length) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dictionary-planner.js","sourceRoot":"","sources":["../../../src/parquetjs/encoder/dictionary-planner.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAEpC,OAAO,EAAC,cAAc,EAAC,2BAAwB;AAkB/C,sFAAsF;AACtF,MAAM,UAAU,cAAc,CAC5B,MAAoB,EACpB,MAA0B,EAC1B,MAA+B,EAC/B,uBAA+B;IAE/B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,uBAAuB,IAAI,CAAC,EAAE,CAAC;QAC/E,MAAM,IAAI,KAAK,CACb,2EAA2E,uBAAuB,EAAE,CACrG,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,oBAAoB,CAAC,MAAM,CAAC,QAAS,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"dictionary-planner.js","sourceRoot":"","sources":["../../../src/parquetjs/encoder/dictionary-planner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { stream } from '@loaders.gl/loader-utils';
|
|
2
|
-
import { ParquetRowGroup, ParquetRow } from "../schema/declare.js";
|
|
2
|
+
import type { ParquetRowGroup, ParquetRow } from "../schema/declare.js";
|
|
3
3
|
import { ParquetSchema } from "../schema/schema.js";
|
|
4
4
|
import { RowGroup } from "../parquet-thrift/index.js";
|
|
5
5
|
import { type ParquetDictionaryPolicy } from "./dictionary-planner.js";
|
|
6
|
+
import { type ParquetWriterEncryptionOptions, type ParquetWriterFooterSignatureOptions } from "../../lib/parquet-encryption.js";
|
|
6
7
|
export interface ParquetEncoderOptions {
|
|
7
8
|
baseOffset?: number;
|
|
8
9
|
rowGroupSize?: number;
|
|
@@ -11,6 +12,26 @@ export interface ParquetEncoderOptions {
|
|
|
11
12
|
dictionary?: ParquetDictionaryPolicy;
|
|
12
13
|
columnDictionaries?: Record<string, ParquetDictionaryPolicy>;
|
|
13
14
|
dictionaryPageSizeLimit?: number;
|
|
15
|
+
bloomFilter?: boolean | Record<string, boolean>;
|
|
16
|
+
pageIndex?: boolean | Record<string, boolean>;
|
|
17
|
+
/** Emit CRC-32 checksums for page bodies. */
|
|
18
|
+
writePageChecksums?: boolean;
|
|
19
|
+
/** Emit optional SizeStatistics metadata for each column chunk. */
|
|
20
|
+
writeSizeStatistics?: boolean;
|
|
21
|
+
/** Emit optional min/max/null-count statistics for each column chunk. */
|
|
22
|
+
writeStatistics?: boolean | Record<string, boolean>;
|
|
23
|
+
/** Declare the row-group sort order using top-level or dotted leaf column names. */
|
|
24
|
+
sortingColumns?: readonly ParquetSortingColumnOption[];
|
|
25
|
+
/** Encode INT96 input values as epoch nanoseconds using the canonical Julian-day layout. */
|
|
26
|
+
int96AsTimestamp?: boolean;
|
|
27
|
+
/** Encrypt the footer using Parquet modular encryption. */
|
|
28
|
+
encryption?: ParquetWriterEncryptionOptions;
|
|
29
|
+
/** Authenticate a plaintext footer with a Parquet modular-encryption signature. */
|
|
30
|
+
footerSignature?: ParquetWriterFooterSignatureOptions;
|
|
31
|
+
/** Stable file identifier shared by encrypted column modules and the footer. */
|
|
32
|
+
encryptionFileUnique?: Uint8Array;
|
|
33
|
+
/** Zero-based row-group ordinal used by encrypted module AAD. */
|
|
34
|
+
rowGroupOrdinal?: number;
|
|
14
35
|
flags?: string;
|
|
15
36
|
encoding?: string;
|
|
16
37
|
fd?: number;
|
|
@@ -18,6 +39,15 @@ export interface ParquetEncoderOptions {
|
|
|
18
39
|
autoClose?: boolean;
|
|
19
40
|
start?: number;
|
|
20
41
|
}
|
|
42
|
+
/** Writer-facing declaration for one row-group sort key. */
|
|
43
|
+
export type ParquetSortingColumnOption = {
|
|
44
|
+
/** Top-level field name or dotted nested leaf path. */
|
|
45
|
+
column: string;
|
|
46
|
+
/** Sort direction; defaults to ascending. */
|
|
47
|
+
descending?: boolean;
|
|
48
|
+
/** Whether null values sort before non-null values; defaults to false. */
|
|
49
|
+
nullsFirst?: boolean;
|
|
50
|
+
};
|
|
21
51
|
/**
|
|
22
52
|
* Write a parquet file to an output stream. The ParquetEncoder will perform
|
|
23
53
|
* buffering/batching for performance, so close() must be called after all rows
|
|
@@ -96,6 +126,18 @@ export declare class ParquetEnvelopeWriter {
|
|
|
96
126
|
dictionary: ParquetDictionaryPolicy;
|
|
97
127
|
columnDictionaries: Record<string, ParquetDictionaryPolicy>;
|
|
98
128
|
dictionaryPageSizeLimit: number;
|
|
129
|
+
bloomFilter?: boolean | Record<string, boolean>;
|
|
130
|
+
pageIndex?: boolean | Record<string, boolean>;
|
|
131
|
+
writePageChecksums: boolean;
|
|
132
|
+
writeSizeStatistics: boolean;
|
|
133
|
+
writeStatistics?: boolean | Record<string, boolean>;
|
|
134
|
+
sortingColumns?: readonly ParquetSortingColumnOption[];
|
|
135
|
+
/** Optional modular-encryption configuration for the footer. */
|
|
136
|
+
encryption?: ParquetWriterEncryptionOptions;
|
|
137
|
+
/** Optional plaintext-footer signature configuration. */
|
|
138
|
+
footerSignature?: ParquetWriterFooterSignatureOptions;
|
|
139
|
+
/** File identifier used for encrypted column-module AAD. */
|
|
140
|
+
encryptionFileUnique?: Uint8Array;
|
|
99
141
|
constructor(schema: ParquetSchema, writeFn: (buf: Uint8Array) => Promise<void>, closeFn: () => Promise<void>, fileOffset: number, opts: ParquetEncoderOptions);
|
|
100
142
|
writeSection(buf: Uint8Array): Promise<void>;
|
|
101
143
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parquet-encoder.d.ts","sourceRoot":"","sources":["../../../src/parquetjs/encoder/parquet-encoder.ts"],"names":[],"mappings":"AAOA,OAAO,EAAC,MAAM,EAAC,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"parquet-encoder.d.ts","sourceRoot":"","sources":["../../../src/parquetjs/encoder/parquet-encoder.ts"],"names":[],"mappings":"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"}
|