@loaders.gl/parquet 4.0.0-alpha.24 → 4.0.0-alpha.26
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/dist/dist.min.js +25 -27
- package/dist/dist.min.js.map +3 -3
- package/dist/es5/buffer-polyfill/buffer-polyfill.browser.js +23 -0
- package/dist/es5/buffer-polyfill/buffer-polyfill.browser.js.map +1 -0
- package/dist/es5/buffer-polyfill/buffer-polyfill.node.js +22 -0
- package/dist/es5/buffer-polyfill/buffer-polyfill.node.js.map +1 -0
- package/dist/es5/buffer-polyfill/buffer.js +1665 -0
- package/dist/es5/buffer-polyfill/buffer.js.map +1 -0
- package/dist/es5/buffer-polyfill/index.js +25 -0
- package/dist/es5/buffer-polyfill/index.js.map +1 -0
- package/dist/es5/buffer-polyfill/install-buffer-polyfill.js +20 -0
- package/dist/es5/buffer-polyfill/install-buffer-polyfill.js.map +1 -0
- package/dist/es5/index.js +18 -25
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/geo/decode-geo-column.js +52 -0
- package/dist/es5/lib/geo/decode-geo-column.js.map +1 -0
- package/dist/es5/lib/geo/decode-geo-metadata.js +52 -16
- package/dist/es5/lib/geo/decode-geo-metadata.js.map +1 -1
- package/dist/es5/lib/geo/{geoparquet-schema.js → geoparquet-metadata-schema.js} +4 -4
- package/dist/es5/lib/geo/geoparquet-metadata-schema.js.map +1 -0
- package/dist/es5/lib/geo/geoparquet-metadata-schema.json +60 -0
- package/dist/es5/lib/parsers/get-parquet-schema.js +41 -0
- package/dist/es5/lib/parsers/get-parquet-schema.js.map +1 -0
- package/dist/es5/lib/parsers/parse-parquet-to-columns.js +71 -72
- package/dist/es5/lib/parsers/parse-parquet-to-columns.js.map +1 -1
- package/dist/es5/lib/parsers/parse-parquet-to-rows.js +95 -62
- package/dist/es5/lib/parsers/parse-parquet-to-rows.js.map +1 -1
- package/dist/es5/parquet-loader.js +14 -14
- package/dist/es5/parquet-loader.js.map +1 -1
- package/dist/es5/parquet-wasm-loader.js +1 -1
- package/dist/es5/parquet-wasm-writer.js +1 -1
- package/dist/es5/parquet-writer.js +1 -1
- package/dist/es5/parquetjs/codecs/plain.js.map +1 -1
- package/dist/es5/parquetjs/codecs/rle.js.map +1 -1
- package/dist/es5/parquetjs/encoder/parquet-encoder.js.map +1 -1
- package/dist/es5/parquetjs/parquet-thrift/index.js +75 -0
- package/dist/es5/parquetjs/parquet-thrift/index.js.map +1 -1
- package/dist/es5/parquetjs/parser/decoders.js +43 -34
- package/dist/es5/parquetjs/parser/decoders.js.map +1 -1
- package/dist/es5/parquetjs/parser/parquet-reader.js +13 -12
- package/dist/es5/parquetjs/parser/parquet-reader.js.map +1 -1
- package/dist/es5/parquetjs/schema/declare.js.map +1 -1
- package/dist/es5/parquetjs/utils/read-utils.js +6 -7
- package/dist/es5/parquetjs/utils/read-utils.js.map +1 -1
- package/dist/esm/buffer-polyfill/buffer-polyfill.browser.js +6 -0
- package/dist/esm/buffer-polyfill/buffer-polyfill.browser.js.map +1 -0
- package/dist/esm/buffer-polyfill/buffer-polyfill.node.js +10 -0
- package/dist/esm/buffer-polyfill/buffer-polyfill.node.js.map +1 -0
- package/dist/esm/buffer-polyfill/buffer.js +1489 -0
- package/dist/esm/buffer-polyfill/buffer.js.map +1 -0
- package/dist/esm/buffer-polyfill/index.js +4 -0
- package/dist/esm/buffer-polyfill/index.js.map +1 -0
- package/dist/esm/buffer-polyfill/install-buffer-polyfill.js +5 -0
- package/dist/esm/buffer-polyfill/install-buffer-polyfill.js.map +1 -0
- package/dist/esm/index.js +3 -9
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/geo/decode-geo-column.js +46 -0
- package/dist/esm/lib/geo/decode-geo-column.js.map +1 -0
- package/dist/esm/lib/geo/decode-geo-metadata.js +32 -5
- package/dist/esm/lib/geo/decode-geo-metadata.js.map +1 -1
- package/dist/esm/lib/geo/{geoparquet-schema.js → geoparquet-metadata-schema.js} +2 -2
- package/dist/esm/lib/geo/geoparquet-metadata-schema.js.map +1 -0
- package/dist/esm/lib/geo/geoparquet-metadata-schema.json +60 -0
- package/dist/esm/lib/parsers/get-parquet-schema.js +11 -0
- package/dist/esm/lib/parsers/get-parquet-schema.js.map +1 -0
- package/dist/esm/lib/parsers/parse-parquet-to-columns.js +10 -11
- package/dist/esm/lib/parsers/parse-parquet-to-columns.js.map +1 -1
- package/dist/esm/lib/parsers/parse-parquet-to-rows.js +32 -7
- package/dist/esm/lib/parsers/parse-parquet-to-rows.js.map +1 -1
- package/dist/esm/parquet-loader.js +12 -12
- package/dist/esm/parquet-loader.js.map +1 -1
- package/dist/esm/parquet-wasm-loader.js +1 -1
- package/dist/esm/parquet-wasm-writer.js +1 -1
- package/dist/esm/parquet-writer.js +1 -1
- package/dist/esm/parquetjs/codecs/plain.js.map +1 -1
- package/dist/esm/parquetjs/codecs/rle.js.map +1 -1
- package/dist/esm/parquetjs/encoder/parquet-encoder.js.map +1 -1
- package/dist/esm/parquetjs/parquet-thrift/index.js +2 -0
- package/dist/esm/parquetjs/parquet-thrift/index.js.map +1 -1
- package/dist/esm/parquetjs/parser/decoders.js +36 -32
- package/dist/esm/parquetjs/parser/decoders.js.map +1 -1
- package/dist/esm/parquetjs/parser/parquet-reader.js +12 -11
- package/dist/esm/parquetjs/parser/parquet-reader.js.map +1 -1
- package/dist/esm/parquetjs/schema/declare.js.map +1 -1
- package/dist/esm/parquetjs/utils/read-utils.js +1 -1
- package/dist/esm/parquetjs/utils/read-utils.js.map +1 -1
- package/dist/parquet-worker.js +25 -27
- package/dist/parquet-worker.js.map +3 -3
- package/dist/src/buffer-polyfill/buffer-polyfill.browser.d.ts +4 -0
- package/dist/src/buffer-polyfill/buffer-polyfill.browser.d.ts.map +1 -0
- package/dist/src/buffer-polyfill/buffer-polyfill.node.d.ts +34 -0
- package/dist/src/buffer-polyfill/buffer-polyfill.node.d.ts.map +1 -0
- package/dist/src/buffer-polyfill/buffer.d.ts +222 -0
- package/dist/src/buffer-polyfill/buffer.d.ts.map +1 -0
- package/dist/src/buffer-polyfill/index.d.ts +4 -0
- package/dist/src/buffer-polyfill/index.d.ts.map +1 -0
- package/dist/src/buffer-polyfill/install-buffer-polyfill.d.ts +3 -0
- package/dist/src/buffer-polyfill/install-buffer-polyfill.d.ts.map +1 -0
- package/dist/src/bundle.d.ts.map +1 -0
- package/dist/src/constants.d.ts.map +1 -0
- package/dist/{index.d.ts → src/index.d.ts} +5 -9
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/lib/arrow/convert-columns-to-row-group.d.ts.map +1 -0
- package/dist/src/lib/arrow/convert-row-group-to-columns.d.ts.map +1 -0
- package/dist/src/lib/arrow/convert-schema-from-parquet.d.ts.map +1 -0
- package/dist/src/lib/arrow/convert-schema-to-parquet.d.ts.map +1 -0
- package/dist/src/lib/geo/decode-geo-column.d.ts +4 -0
- package/dist/src/lib/geo/decode-geo-column.d.ts.map +1 -0
- package/dist/src/lib/geo/decode-geo-metadata.d.ts +44 -0
- package/dist/src/lib/geo/decode-geo-metadata.d.ts.map +1 -0
- package/dist/{lib/geo/geoparquet-schema.d.ts → src/lib/geo/geoparquet-metadata-schema.d.ts} +2 -3
- package/dist/src/lib/geo/geoparquet-metadata-schema.d.ts.map +1 -0
- package/dist/src/lib/parsers/get-parquet-schema.d.ts +4 -0
- package/dist/src/lib/parsers/get-parquet-schema.d.ts.map +1 -0
- package/dist/src/lib/parsers/parse-parquet-to-columns.d.ts +6 -0
- package/dist/src/lib/parsers/parse-parquet-to-columns.d.ts.map +1 -0
- package/dist/src/lib/parsers/parse-parquet-to-rows.d.ts +6 -0
- package/dist/src/lib/parsers/parse-parquet-to-rows.d.ts.map +1 -0
- package/dist/src/lib/wasm/encode-parquet-wasm.d.ts.map +1 -0
- package/dist/src/lib/wasm/load-wasm/index.d.ts.map +1 -0
- package/dist/src/lib/wasm/load-wasm/load-wasm-browser.d.ts.map +1 -0
- package/dist/src/lib/wasm/load-wasm/load-wasm-node.d.ts.map +1 -0
- package/dist/src/lib/wasm/parse-parquet-wasm.d.ts.map +1 -0
- package/dist/src/parquet-loader.d.ts +22 -0
- package/dist/src/parquet-loader.d.ts.map +1 -0
- package/dist/src/parquet-wasm-loader.d.ts.map +1 -0
- package/dist/src/parquet-wasm-writer.d.ts.map +1 -0
- package/dist/src/parquet-writer.d.ts.map +1 -0
- package/dist/src/parquetjs/codecs/declare.d.ts.map +1 -0
- package/dist/src/parquetjs/codecs/dictionary.d.ts.map +1 -0
- package/dist/src/parquetjs/codecs/index.d.ts.map +1 -0
- package/dist/src/parquetjs/codecs/plain.d.ts.map +1 -0
- package/dist/src/parquetjs/codecs/rle.d.ts.map +1 -0
- package/dist/src/parquetjs/compression.d.ts.map +1 -0
- package/dist/src/parquetjs/encoder/parquet-encoder.d.ts.map +1 -0
- package/dist/src/parquetjs/parquet-thrift/BoundaryOrder.d.ts.map +1 -0
- package/dist/src/parquetjs/parquet-thrift/BsonType.d.ts.map +1 -0
- package/dist/src/parquetjs/parquet-thrift/ColumnChunk.d.ts.map +1 -0
- package/dist/src/parquetjs/parquet-thrift/ColumnIndex.d.ts.map +1 -0
- package/dist/src/parquetjs/parquet-thrift/ColumnMetaData.d.ts.map +1 -0
- package/dist/src/parquetjs/parquet-thrift/ColumnOrder.d.ts.map +1 -0
- package/dist/src/parquetjs/parquet-thrift/CompressionCodec.d.ts.map +1 -0
- package/dist/src/parquetjs/parquet-thrift/ConvertedType.d.ts.map +1 -0
- package/dist/src/parquetjs/parquet-thrift/DataPageHeader.d.ts.map +1 -0
- package/dist/src/parquetjs/parquet-thrift/DataPageHeaderV2.d.ts.map +1 -0
- package/dist/src/parquetjs/parquet-thrift/DateType.d.ts.map +1 -0
- package/dist/src/parquetjs/parquet-thrift/DecimalType.d.ts.map +1 -0
- package/dist/src/parquetjs/parquet-thrift/DictionaryPageHeader.d.ts.map +1 -0
- package/dist/src/parquetjs/parquet-thrift/Encoding.d.ts.map +1 -0
- package/dist/src/parquetjs/parquet-thrift/EnumType.d.ts.map +1 -0
- package/dist/src/parquetjs/parquet-thrift/FieldRepetitionType.d.ts.map +1 -0
- package/dist/src/parquetjs/parquet-thrift/FileMetaData.d.ts.map +1 -0
- package/dist/src/parquetjs/parquet-thrift/IndexPageHeader.d.ts.map +1 -0
- package/dist/src/parquetjs/parquet-thrift/IntType.d.ts.map +1 -0
- package/dist/src/parquetjs/parquet-thrift/JsonType.d.ts.map +1 -0
- package/dist/src/parquetjs/parquet-thrift/KeyValue.d.ts.map +1 -0
- package/dist/src/parquetjs/parquet-thrift/ListType.d.ts.map +1 -0
- package/dist/src/parquetjs/parquet-thrift/LogicalType.d.ts.map +1 -0
- package/dist/src/parquetjs/parquet-thrift/MapType.d.ts.map +1 -0
- package/dist/src/parquetjs/parquet-thrift/MicroSeconds.d.ts.map +1 -0
- package/dist/src/parquetjs/parquet-thrift/MilliSeconds.d.ts.map +1 -0
- package/dist/src/parquetjs/parquet-thrift/NullType.d.ts.map +1 -0
- package/dist/src/parquetjs/parquet-thrift/OffsetIndex.d.ts.map +1 -0
- package/dist/src/parquetjs/parquet-thrift/PageEncodingStats.d.ts.map +1 -0
- package/dist/src/parquetjs/parquet-thrift/PageHeader.d.ts.map +1 -0
- package/dist/src/parquetjs/parquet-thrift/PageLocation.d.ts.map +1 -0
- package/dist/src/parquetjs/parquet-thrift/PageType.d.ts.map +1 -0
- package/dist/src/parquetjs/parquet-thrift/RowGroup.d.ts.map +1 -0
- package/dist/src/parquetjs/parquet-thrift/SchemaElement.d.ts.map +1 -0
- package/dist/src/parquetjs/parquet-thrift/SortingColumn.d.ts.map +1 -0
- package/dist/src/parquetjs/parquet-thrift/Statistics.d.ts.map +1 -0
- package/dist/src/parquetjs/parquet-thrift/StringType.d.ts.map +1 -0
- package/dist/src/parquetjs/parquet-thrift/TimeType.d.ts.map +1 -0
- package/dist/src/parquetjs/parquet-thrift/TimeUnit.d.ts.map +1 -0
- package/dist/src/parquetjs/parquet-thrift/TimestampType.d.ts.map +1 -0
- package/dist/src/parquetjs/parquet-thrift/Type.d.ts.map +1 -0
- package/dist/src/parquetjs/parquet-thrift/TypeDefinedOrder.d.ts.map +1 -0
- package/dist/src/parquetjs/parquet-thrift/UUIDType.d.ts.map +1 -0
- package/dist/{parquetjs → src/parquetjs}/parquet-thrift/index.d.ts +2 -0
- package/dist/src/parquetjs/parquet-thrift/index.d.ts.map +1 -0
- package/dist/{parquetjs → src/parquetjs}/parser/decoders.d.ts +4 -4
- package/dist/src/parquetjs/parser/decoders.d.ts.map +1 -0
- package/dist/{parquetjs → src/parquetjs}/parser/parquet-reader.d.ts +5 -3
- package/dist/src/parquetjs/parser/parquet-reader.d.ts.map +1 -0
- package/dist/{parquetjs → src/parquetjs}/schema/declare.d.ts +3 -1
- package/dist/src/parquetjs/schema/declare.d.ts.map +1 -0
- package/dist/src/parquetjs/schema/schema.d.ts.map +1 -0
- package/dist/src/parquetjs/schema/shred.d.ts.map +1 -0
- package/dist/src/parquetjs/schema/types.d.ts.map +1 -0
- package/dist/src/parquetjs/utils/file-utils.d.ts.map +1 -0
- package/dist/src/parquetjs/utils/read-utils.d.ts.map +1 -0
- package/dist/src/workers/parquet-worker.d.ts.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +16 -6
- package/src/buffer-polyfill/buffer-polyfill.browser.ts +11 -0
- package/src/buffer-polyfill/buffer-polyfill.node.ts +16 -0
- package/src/buffer-polyfill/buffer.ts +2207 -0
- package/src/buffer-polyfill/index.ts +9 -0
- package/src/buffer-polyfill/install-buffer-polyfill.ts +6 -0
- package/src/index.ts +29 -14
- package/src/lib/geo/decode-geo-column.ts +51 -0
- package/src/lib/geo/decode-geo-metadata.ts +81 -15
- package/src/lib/geo/geoparquet-metadata-schema.json +60 -0
- package/src/lib/geo/{geoparquet-schema.ts → geoparquet-metadata-schema.ts} +1 -1
- package/src/lib/parsers/get-parquet-schema.ts +14 -0
- package/src/lib/parsers/parse-parquet-to-columns.ts +15 -13
- package/src/lib/parsers/parse-parquet-to-rows.ts +38 -11
- package/src/parquet-loader.ts +29 -16
- package/src/parquetjs/codecs/plain.ts +1 -0
- package/src/parquetjs/codecs/rle.ts +2 -0
- package/src/parquetjs/encoder/parquet-encoder.ts +1 -0
- package/src/parquetjs/parquet-thrift/index.ts +4 -0
- package/src/parquetjs/parser/decoders.ts +51 -41
- package/src/parquetjs/parser/parquet-reader.ts +16 -13
- package/src/parquetjs/schema/declare.ts +3 -1
- package/src/parquetjs/utils/read-utils.ts +2 -2
- package/dist/bundle.d.ts.map +0 -1
- package/dist/constants.d.ts.map +0 -1
- package/dist/es5/lib/geo/geoparquet-schema.js.map +0 -1
- package/dist/esm/lib/geo/geoparquet-schema.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/lib/arrow/convert-columns-to-row-group.d.ts.map +0 -1
- package/dist/lib/arrow/convert-row-group-to-columns.d.ts.map +0 -1
- package/dist/lib/arrow/convert-schema-from-parquet.d.ts.map +0 -1
- package/dist/lib/arrow/convert-schema-to-parquet.d.ts.map +0 -1
- package/dist/lib/geo/decode-geo-metadata.d.ts +0 -31
- package/dist/lib/geo/decode-geo-metadata.d.ts.map +0 -1
- package/dist/lib/geo/geoparquet-schema.d.ts.map +0 -1
- package/dist/lib/parsers/parse-parquet-to-columns.d.ts +0 -5
- package/dist/lib/parsers/parse-parquet-to-columns.d.ts.map +0 -1
- package/dist/lib/parsers/parse-parquet-to-rows.d.ts +0 -5
- package/dist/lib/parsers/parse-parquet-to-rows.d.ts.map +0 -1
- package/dist/lib/wasm/encode-parquet-wasm.d.ts.map +0 -1
- package/dist/lib/wasm/load-wasm/index.d.ts.map +0 -1
- package/dist/lib/wasm/load-wasm/load-wasm-browser.d.ts.map +0 -1
- package/dist/lib/wasm/load-wasm/load-wasm-node.d.ts.map +0 -1
- package/dist/lib/wasm/parse-parquet-wasm.d.ts.map +0 -1
- package/dist/parquet-loader.d.ts +0 -14
- package/dist/parquet-loader.d.ts.map +0 -1
- package/dist/parquet-wasm-loader.d.ts.map +0 -1
- package/dist/parquet-wasm-writer.d.ts.map +0 -1
- package/dist/parquet-writer.d.ts.map +0 -1
- package/dist/parquetjs/codecs/declare.d.ts.map +0 -1
- package/dist/parquetjs/codecs/dictionary.d.ts.map +0 -1
- package/dist/parquetjs/codecs/index.d.ts.map +0 -1
- package/dist/parquetjs/codecs/plain.d.ts.map +0 -1
- package/dist/parquetjs/codecs/rle.d.ts.map +0 -1
- package/dist/parquetjs/compression.d.ts.map +0 -1
- package/dist/parquetjs/encoder/parquet-encoder.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/BoundaryOrder.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/BsonType.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/ColumnChunk.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/ColumnIndex.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/ColumnMetaData.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/ColumnOrder.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/CompressionCodec.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/ConvertedType.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/DataPageHeader.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/DataPageHeaderV2.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/DateType.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/DecimalType.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/DictionaryPageHeader.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/Encoding.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/EnumType.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/FieldRepetitionType.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/FileMetaData.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/IndexPageHeader.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/IntType.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/JsonType.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/KeyValue.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/ListType.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/LogicalType.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/MapType.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/MicroSeconds.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/MilliSeconds.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/NullType.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/OffsetIndex.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/PageEncodingStats.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/PageHeader.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/PageLocation.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/PageType.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/RowGroup.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/SchemaElement.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/SortingColumn.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/Statistics.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/StringType.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/TimeType.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/TimeUnit.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/TimestampType.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/Type.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/TypeDefinedOrder.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/UUIDType.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/index.d.ts.map +0 -1
- package/dist/parquetjs/parser/decoders.d.ts.map +0 -1
- package/dist/parquetjs/parser/parquet-reader.d.ts.map +0 -1
- package/dist/parquetjs/schema/declare.d.ts.map +0 -1
- package/dist/parquetjs/schema/schema.d.ts.map +0 -1
- package/dist/parquetjs/schema/shred.d.ts.map +0 -1
- package/dist/parquetjs/schema/types.d.ts.map +0 -1
- package/dist/parquetjs/utils/file-utils.d.ts.map +0 -1
- package/dist/parquetjs/utils/read-utils.d.ts.map +0 -1
- package/dist/workers/parquet-worker.d.ts.map +0 -1
- /package/dist/{bundle.d.ts → src/bundle.d.ts} +0 -0
- /package/dist/{constants.d.ts → src/constants.d.ts} +0 -0
- /package/dist/{lib → src/lib}/arrow/convert-columns-to-row-group.d.ts +0 -0
- /package/dist/{lib → src/lib}/arrow/convert-row-group-to-columns.d.ts +0 -0
- /package/dist/{lib → src/lib}/arrow/convert-schema-from-parquet.d.ts +0 -0
- /package/dist/{lib → src/lib}/arrow/convert-schema-to-parquet.d.ts +0 -0
- /package/dist/{lib → src/lib}/wasm/encode-parquet-wasm.d.ts +0 -0
- /package/dist/{lib → src/lib}/wasm/load-wasm/index.d.ts +0 -0
- /package/dist/{lib → src/lib}/wasm/load-wasm/load-wasm-browser.d.ts +0 -0
- /package/dist/{lib → src/lib}/wasm/load-wasm/load-wasm-node.d.ts +0 -0
- /package/dist/{lib → src/lib}/wasm/parse-parquet-wasm.d.ts +0 -0
- /package/dist/{parquet-wasm-loader.d.ts → src/parquet-wasm-loader.d.ts} +0 -0
- /package/dist/{parquet-wasm-writer.d.ts → src/parquet-wasm-writer.d.ts} +0 -0
- /package/dist/{parquet-writer.d.ts → src/parquet-writer.d.ts} +0 -0
- /package/dist/{parquetjs → src/parquetjs}/codecs/declare.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/codecs/dictionary.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/codecs/index.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/codecs/plain.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/codecs/rle.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/compression.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/encoder/parquet-encoder.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/BoundaryOrder.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/BsonType.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/ColumnChunk.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/ColumnIndex.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/ColumnMetaData.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/ColumnOrder.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/CompressionCodec.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/ConvertedType.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/DataPageHeader.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/DataPageHeaderV2.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/DateType.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/DecimalType.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/DictionaryPageHeader.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/Encoding.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/EnumType.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/FieldRepetitionType.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/FileMetaData.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/IndexPageHeader.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/IntType.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/JsonType.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/KeyValue.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/ListType.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/LogicalType.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/MapType.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/MicroSeconds.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/MilliSeconds.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/NullType.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/OffsetIndex.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/PageEncodingStats.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/PageHeader.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/PageLocation.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/PageType.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/RowGroup.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/SchemaElement.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/SortingColumn.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/Statistics.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/StringType.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/TimeType.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/TimeUnit.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/TimestampType.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/Type.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/TypeDefinedOrder.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/UUIDType.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/schema/schema.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/schema/shred.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/schema/types.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/utils/file-utils.d.ts +0 -0
- /package/dist/{parquetjs → src/parquetjs}/utils/read-utils.d.ts +0 -0
- /package/dist/{workers → src/workers}/parquet-worker.d.ts +0 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"title": "GeoParquet",
|
|
4
|
+
"description": "Parquet metadata included in the geo field.",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["version", "primary_column", "columns"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"version": {"type": "string", "const": "1.0.0-beta.1"},
|
|
9
|
+
"primary_column": {"type": "string", "minLength": 1},
|
|
10
|
+
"columns": {
|
|
11
|
+
"type": "object",
|
|
12
|
+
"minProperties": 1,
|
|
13
|
+
"patternProperties": {
|
|
14
|
+
".+": {
|
|
15
|
+
"type": "object",
|
|
16
|
+
"required": ["encoding", "geometry_types"],
|
|
17
|
+
"properties": {
|
|
18
|
+
"encoding": {"type": "string", "const": "WKB"},
|
|
19
|
+
"geometry_types": {
|
|
20
|
+
"type": "array",
|
|
21
|
+
"uniqueItems": true,
|
|
22
|
+
"items": {
|
|
23
|
+
"type": "string",
|
|
24
|
+
"pattern": "^(GeometryCollection|(Multi)?(Point|LineString|Polygon))( Z)?$"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"crs": {
|
|
28
|
+
"oneOf": [
|
|
29
|
+
{
|
|
30
|
+
"$ref": "https://proj.org/schemas/v0.5/projjson.schema.json"
|
|
31
|
+
},
|
|
32
|
+
{"type": "null"}
|
|
33
|
+
]
|
|
34
|
+
},
|
|
35
|
+
"edges": {"type": "string", "enum": ["planar", "spherical"]},
|
|
36
|
+
"orientation": {"type": "string", "const": "counterclockwise"},
|
|
37
|
+
"bbox": {
|
|
38
|
+
"type": "array",
|
|
39
|
+
"items": {"type": "number"},
|
|
40
|
+
"oneOf": [
|
|
41
|
+
{
|
|
42
|
+
"description": "2D bbox consisting of (xmin, ymin, xmax, ymax)",
|
|
43
|
+
"minItems": 4,
|
|
44
|
+
"maxItems": 4
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"description": "3D bbox consisting of (xmin, ymin, zmin, xmax, ymax, zmax)",
|
|
48
|
+
"minItems": 6,
|
|
49
|
+
"maxItems": 6
|
|
50
|
+
}
|
|
51
|
+
]
|
|
52
|
+
},
|
|
53
|
+
"epoch": {"type": "number"}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
"additionalProperties": false
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { convertParquetSchema } from '../arrow/convert-schema-from-parquet';
|
|
2
|
+
import { unpackGeoMetadata, unpackJSONStringMetadata } from '../geo/decode-geo-metadata';
|
|
3
|
+
export async function getSchemaFromParquetReader(reader) {
|
|
4
|
+
const parquetSchema = await reader.getSchema();
|
|
5
|
+
const parquetMetadata = await reader.getFileMetadata();
|
|
6
|
+
const schema = convertParquetSchema(parquetSchema, parquetMetadata);
|
|
7
|
+
unpackGeoMetadata(schema);
|
|
8
|
+
unpackJSONStringMetadata(schema, 'pandas');
|
|
9
|
+
return schema;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=get-parquet-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-parquet-schema.js","names":["convertParquetSchema","unpackGeoMetadata","unpackJSONStringMetadata","getSchemaFromParquetReader","reader","parquetSchema","getSchema","parquetMetadata","getFileMetadata","schema"],"sources":["../../../../src/lib/parsers/get-parquet-schema.ts"],"sourcesContent":["// loaders.gl\nimport {Schema} from '@loaders.gl/schema';\nimport {ParquetReader} from '../../parquetjs/parser/parquet-reader';\nimport {convertParquetSchema} from '../arrow/convert-schema-from-parquet';\nimport {unpackGeoMetadata, unpackJSONStringMetadata} from '../geo/decode-geo-metadata';\n\nexport async function getSchemaFromParquetReader(reader: ParquetReader): Promise<Schema> {\n const parquetSchema = await reader.getSchema();\n const parquetMetadata = await reader.getFileMetadata();\n const schema = convertParquetSchema(parquetSchema, parquetMetadata);\n unpackGeoMetadata(schema);\n unpackJSONStringMetadata(schema, 'pandas');\n return schema;\n}\n"],"mappings":"AAGA,SAAQA,oBAAoB,QAAO,sCAAsC;AACzE,SAAQC,iBAAiB,EAAEC,wBAAwB,QAAO,4BAA4B;AAEtF,OAAO,eAAeC,0BAA0BA,CAACC,MAAqB,EAAmB;EACvF,MAAMC,aAAa,GAAG,MAAMD,MAAM,CAACE,SAAS,CAAC,CAAC;EAC9C,MAAMC,eAAe,GAAG,MAAMH,MAAM,CAACI,eAAe,CAAC,CAAC;EACtD,MAAMC,MAAM,GAAGT,oBAAoB,CAACK,aAAa,EAAEE,eAAe,CAAC;EACnEN,iBAAiB,CAACQ,MAAM,CAAC;EACzBP,wBAAwB,CAACO,MAAM,EAAE,QAAQ,CAAC;EAC1C,OAAOA,MAAM;AACf"}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { makeReadableFile } from '@loaders.gl/loader-utils';
|
|
2
2
|
import { ParquetReader } from '../../parquetjs/parser/parquet-reader';
|
|
3
|
-
import { convertParquetSchema } from '../arrow/convert-schema-from-parquet';
|
|
4
3
|
import { materializeColumns } from '../../parquetjs/schema/shred';
|
|
5
|
-
import {
|
|
4
|
+
import { getSchemaFromParquetReader } from './get-parquet-schema';
|
|
5
|
+
import { installBufferPolyfill } from '../../buffer-polyfill';
|
|
6
6
|
export async function parseParquetInColumns(arrayBuffer, options) {
|
|
7
|
+
installBufferPolyfill();
|
|
7
8
|
const blob = new Blob([arrayBuffer]);
|
|
8
|
-
|
|
9
|
+
const file = makeReadableFile(blob);
|
|
10
|
+
const reader = new ParquetReader(file);
|
|
11
|
+
for await (const batch of parseParquetFileInColumnarBatches(reader, options)) {
|
|
9
12
|
return {
|
|
10
13
|
shape: 'columnar-table',
|
|
11
14
|
schema: batch.schema,
|
|
@@ -14,19 +17,15 @@ export async function parseParquetInColumns(arrayBuffer, options) {
|
|
|
14
17
|
}
|
|
15
18
|
throw new Error('empty table');
|
|
16
19
|
}
|
|
17
|
-
export async function* parseParquetFileInColumnarBatches(
|
|
18
|
-
const
|
|
19
|
-
const reader = new ParquetReader(file);
|
|
20
|
+
export async function* parseParquetFileInColumnarBatches(reader, options) {
|
|
21
|
+
const schema = await getSchemaFromParquetReader(reader);
|
|
20
22
|
const parquetSchema = await reader.getSchema();
|
|
21
|
-
const parquetMetadata = await reader.getFileMetadata();
|
|
22
|
-
const schema = convertParquetSchema(parquetSchema, parquetMetadata);
|
|
23
|
-
unpackGeoMetadata(schema);
|
|
24
23
|
const rowGroups = reader.rowGroupIterator(options === null || options === void 0 ? void 0 : options.parquet);
|
|
25
24
|
for await (const rowGroup of rowGroups) {
|
|
26
|
-
yield convertRowGroupToTableBatch(
|
|
25
|
+
yield convertRowGroupToTableBatch(rowGroup, parquetSchema, schema);
|
|
27
26
|
}
|
|
28
27
|
}
|
|
29
|
-
function convertRowGroupToTableBatch(
|
|
28
|
+
function convertRowGroupToTableBatch(rowGroup, parquetSchema, schema) {
|
|
30
29
|
const data = materializeColumns(parquetSchema, rowGroup);
|
|
31
30
|
return {
|
|
32
31
|
shape: 'columnar-table',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-parquet-to-columns.js","names":["makeReadableFile","ParquetReader","
|
|
1
|
+
{"version":3,"file":"parse-parquet-to-columns.js","names":["makeReadableFile","ParquetReader","materializeColumns","getSchemaFromParquetReader","installBufferPolyfill","parseParquetInColumns","arrayBuffer","options","blob","Blob","file","reader","batch","parseParquetFileInColumnarBatches","shape","schema","data","Error","parquetSchema","getSchema","rowGroups","rowGroupIterator","parquet","rowGroup","convertRowGroupToTableBatch","batchType","length","rowCount"],"sources":["../../../../src/lib/parsers/parse-parquet-to-columns.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport {ColumnarTable, ColumnarTableBatch, Schema} from '@loaders.gl/schema';\nimport {makeReadableFile} from '@loaders.gl/loader-utils';\nimport type {ParquetLoaderOptions} from '../../parquet-loader';\nimport {ParquetReader} from '../../parquetjs/parser/parquet-reader';\nimport {ParquetRowGroup} from '../../parquetjs/schema/declare';\nimport {ParquetSchema} from '../../parquetjs/schema/schema';\nimport {materializeColumns} from '../../parquetjs/schema/shred';\nimport {getSchemaFromParquetReader} from './get-parquet-schema';\nimport {installBufferPolyfill} from '../../buffer-polyfill';\n\nexport async function parseParquetInColumns(\n arrayBuffer: ArrayBuffer,\n options?: ParquetLoaderOptions\n): Promise<ColumnarTable> {\n installBufferPolyfill();\n const blob = new Blob([arrayBuffer]);\n const file = makeReadableFile(blob);\n const reader = new ParquetReader(file);\n\n for await (const batch of parseParquetFileInColumnarBatches(reader, options)) {\n return {\n shape: 'columnar-table',\n schema: batch.schema,\n data: batch.data\n };\n }\n throw new Error('empty table');\n}\n\nexport async function* parseParquetFileInColumnarBatches(\n reader: ParquetReader,\n options?: ParquetLoaderOptions\n): AsyncIterable<ColumnarTableBatch> {\n // Extract schema and geo metadata\n const schema = await getSchemaFromParquetReader(reader);\n\n const parquetSchema = await reader.getSchema();\n\n // Iterate over row batches\n const rowGroups = reader.rowGroupIterator(options?.parquet);\n for await (const rowGroup of rowGroups) {\n yield convertRowGroupToTableBatch(rowGroup, parquetSchema, schema);\n }\n}\n\nfunction convertRowGroupToTableBatch(\n rowGroup: ParquetRowGroup,\n parquetSchema: ParquetSchema,\n schema: Schema\n): ColumnarTableBatch {\n // const data = convertParquetRowGroupToColumns(schema, rowGroup);\n const data = materializeColumns(parquetSchema, rowGroup);\n return {\n shape: 'columnar-table',\n batchType: 'data',\n schema,\n data,\n length: rowGroup.rowCount\n };\n}\n"],"mappings":"AAGA,SAAQA,gBAAgB,QAAO,0BAA0B;AAEzD,SAAQC,aAAa,QAAO,uCAAuC;AAGnE,SAAQC,kBAAkB,QAAO,8BAA8B;AAC/D,SAAQC,0BAA0B,QAAO,sBAAsB;AAC/D,SAAQC,qBAAqB,QAAO,uBAAuB;AAE3D,OAAO,eAAeC,qBAAqBA,CACzCC,WAAwB,EACxBC,OAA8B,EACN;EACxBH,qBAAqB,CAAC,CAAC;EACvB,MAAMI,IAAI,GAAG,IAAIC,IAAI,CAAC,CAACH,WAAW,CAAC,CAAC;EACpC,MAAMI,IAAI,GAAGV,gBAAgB,CAACQ,IAAI,CAAC;EACnC,MAAMG,MAAM,GAAG,IAAIV,aAAa,CAACS,IAAI,CAAC;EAEtC,WAAW,MAAME,KAAK,IAAIC,iCAAiC,CAACF,MAAM,EAAEJ,OAAO,CAAC,EAAE;IAC5E,OAAO;MACLO,KAAK,EAAE,gBAAgB;MACvBC,MAAM,EAAEH,KAAK,CAACG,MAAM;MACpBC,IAAI,EAAEJ,KAAK,CAACI;IACd,CAAC;EACH;EACA,MAAM,IAAIC,KAAK,CAAC,aAAa,CAAC;AAChC;AAEA,OAAO,gBAAgBJ,iCAAiCA,CACtDF,MAAqB,EACrBJ,OAA8B,EACK;EAEnC,MAAMQ,MAAM,GAAG,MAAMZ,0BAA0B,CAACQ,MAAM,CAAC;EAEvD,MAAMO,aAAa,GAAG,MAAMP,MAAM,CAACQ,SAAS,CAAC,CAAC;EAG9C,MAAMC,SAAS,GAAGT,MAAM,CAACU,gBAAgB,CAACd,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEe,OAAO,CAAC;EAC3D,WAAW,MAAMC,QAAQ,IAAIH,SAAS,EAAE;IACtC,MAAMI,2BAA2B,CAACD,QAAQ,EAAEL,aAAa,EAAEH,MAAM,CAAC;EACpE;AACF;AAEA,SAASS,2BAA2BA,CAClCD,QAAyB,EACzBL,aAA4B,EAC5BH,MAAc,EACM;EAEpB,MAAMC,IAAI,GAAGd,kBAAkB,CAACgB,aAAa,EAAEK,QAAQ,CAAC;EACxD,OAAO;IACLT,KAAK,EAAE,gBAAgB;IACvBW,SAAS,EAAE,MAAM;IACjBV,MAAM;IACNC,IAAI;IACJU,MAAM,EAAEH,QAAQ,CAACI;EACnB,CAAC;AACH"}
|
|
@@ -1,27 +1,52 @@
|
|
|
1
1
|
import { makeReadableFile } from '@loaders.gl/loader-utils';
|
|
2
2
|
import { ParquetReader } from '../../parquetjs/parser/parquet-reader';
|
|
3
|
+
import { getSchemaFromParquetReader } from './get-parquet-schema';
|
|
4
|
+
import { installBufferPolyfill } from '../../buffer-polyfill';
|
|
5
|
+
import { convertWKBTableToGeoJSON } from '../geo/decode-geo-column';
|
|
3
6
|
export async function parseParquet(arrayBuffer, options) {
|
|
7
|
+
var _options$parquet, _options$parquet2;
|
|
8
|
+
installBufferPolyfill();
|
|
4
9
|
const blob = new Blob([arrayBuffer]);
|
|
10
|
+
const file = makeReadableFile(blob);
|
|
11
|
+
const reader = new ParquetReader(file, {
|
|
12
|
+
preserveBinary: options === null || options === void 0 ? void 0 : (_options$parquet = options.parquet) === null || _options$parquet === void 0 ? void 0 : _options$parquet.preserveBinary
|
|
13
|
+
});
|
|
14
|
+
const schema = await getSchemaFromParquetReader(reader);
|
|
5
15
|
const rows = [];
|
|
6
|
-
|
|
7
|
-
|
|
16
|
+
const rowBatches = reader.rowBatchIterator(options === null || options === void 0 ? void 0 : options.parquet);
|
|
17
|
+
for await (const rowBatch of rowBatches) {
|
|
18
|
+
for (const row of rowBatch) {
|
|
8
19
|
rows.push(row);
|
|
9
20
|
}
|
|
10
21
|
}
|
|
11
|
-
|
|
22
|
+
const objectRowTable = {
|
|
12
23
|
shape: 'object-row-table',
|
|
24
|
+
schema,
|
|
13
25
|
data: rows
|
|
14
26
|
};
|
|
27
|
+
const shape = options === null || options === void 0 ? void 0 : (_options$parquet2 = options.parquet) === null || _options$parquet2 === void 0 ? void 0 : _options$parquet2.shape;
|
|
28
|
+
switch (shape) {
|
|
29
|
+
case 'object-row-table':
|
|
30
|
+
return objectRowTable;
|
|
31
|
+
case 'geojson-table':
|
|
32
|
+
try {
|
|
33
|
+
return convertWKBTableToGeoJSON(objectRowTable, schema);
|
|
34
|
+
} catch (error) {
|
|
35
|
+
return objectRowTable;
|
|
36
|
+
}
|
|
37
|
+
default:
|
|
38
|
+
throw new Error(shape);
|
|
39
|
+
}
|
|
15
40
|
}
|
|
16
|
-
export async function* parseParquetFileInBatches(
|
|
17
|
-
const
|
|
18
|
-
const reader = new ParquetReader(file);
|
|
41
|
+
export async function* parseParquetFileInBatches(reader, options) {
|
|
42
|
+
const schema = await getSchemaFromParquetReader(reader);
|
|
19
43
|
const rowBatches = reader.rowBatchIterator(options === null || options === void 0 ? void 0 : options.parquet);
|
|
20
44
|
for await (const rows of rowBatches) {
|
|
21
45
|
yield {
|
|
46
|
+
batchType: 'data',
|
|
22
47
|
shape: 'object-row-table',
|
|
48
|
+
schema,
|
|
23
49
|
data: rows,
|
|
24
|
-
batchType: 'data',
|
|
25
50
|
length: rows.length
|
|
26
51
|
};
|
|
27
52
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-parquet-to-rows.js","names":["makeReadableFile","ParquetReader","parseParquet","arrayBuffer","options","blob","Blob","rows","
|
|
1
|
+
{"version":3,"file":"parse-parquet-to-rows.js","names":["makeReadableFile","ParquetReader","getSchemaFromParquetReader","installBufferPolyfill","convertWKBTableToGeoJSON","parseParquet","arrayBuffer","options","_options$parquet","_options$parquet2","blob","Blob","file","reader","preserveBinary","parquet","schema","rows","rowBatches","rowBatchIterator","rowBatch","row","push","objectRowTable","shape","data","error","Error","parseParquetFileInBatches","batchType","length"],"sources":["../../../../src/lib/parsers/parse-parquet-to-rows.ts"],"sourcesContent":["// import type {LoaderWithParser, Loader, LoaderOptions} from '@loaders.gl/loader-utils';\n// import {ColumnarTableBatch} from '@loaders.gl/schema';\nimport {makeReadableFile} from '@loaders.gl/loader-utils';\nimport {GeoJSONTable, ObjectRowTable, ObjectRowTableBatch} from '@loaders.gl/schema';\nimport type {ParquetLoaderOptions} from '../../parquet-loader';\nimport type {ParquetRow} from '../../parquetjs/schema/declare';\nimport {ParquetReader} from '../../parquetjs/parser/parquet-reader';\nimport {getSchemaFromParquetReader} from './get-parquet-schema';\nimport {installBufferPolyfill} from '../../buffer-polyfill';\nimport {convertWKBTableToGeoJSON} from '../geo/decode-geo-column';\n\nexport async function parseParquet(\n arrayBuffer: ArrayBuffer,\n options?: ParquetLoaderOptions\n): Promise<ObjectRowTable | GeoJSONTable> {\n installBufferPolyfill();\n const blob = new Blob([arrayBuffer]);\n const file = makeReadableFile(blob);\n const reader = new ParquetReader(file, {\n preserveBinary: options?.parquet?.preserveBinary\n });\n\n const schema = await getSchemaFromParquetReader(reader);\n\n const rows: ParquetRow[] = [];\n\n const rowBatches = reader.rowBatchIterator(options?.parquet);\n for await (const rowBatch of rowBatches) {\n // we have only one input batch so return\n for (const row of rowBatch) {\n rows.push(row);\n }\n }\n const objectRowTable: ObjectRowTable = {\n shape: 'object-row-table',\n schema,\n data: rows\n };\n\n const shape = options?.parquet?.shape;\n switch (shape) {\n case 'object-row-table':\n return objectRowTable;\n\n case 'geojson-table':\n try {\n return convertWKBTableToGeoJSON(objectRowTable, schema);\n } catch (error) {\n return objectRowTable;\n }\n\n default:\n throw new Error(shape);\n }\n}\n\nexport async function* parseParquetFileInBatches(\n reader: ParquetReader,\n options?: ParquetLoaderOptions\n): AsyncIterable<ObjectRowTableBatch> {\n const schema = await getSchemaFromParquetReader(reader);\n const rowBatches = reader.rowBatchIterator(options?.parquet);\n for await (const rows of rowBatches) {\n yield {\n batchType: 'data',\n shape: 'object-row-table',\n schema,\n data: rows,\n length: rows.length\n };\n }\n}\n"],"mappings":"AAEA,SAAQA,gBAAgB,QAAO,0BAA0B;AAIzD,SAAQC,aAAa,QAAO,uCAAuC;AACnE,SAAQC,0BAA0B,QAAO,sBAAsB;AAC/D,SAAQC,qBAAqB,QAAO,uBAAuB;AAC3D,SAAQC,wBAAwB,QAAO,0BAA0B;AAEjE,OAAO,eAAeC,YAAYA,CAChCC,WAAwB,EACxBC,OAA8B,EACU;EAAA,IAAAC,gBAAA,EAAAC,iBAAA;EACxCN,qBAAqB,CAAC,CAAC;EACvB,MAAMO,IAAI,GAAG,IAAIC,IAAI,CAAC,CAACL,WAAW,CAAC,CAAC;EACpC,MAAMM,IAAI,GAAGZ,gBAAgB,CAACU,IAAI,CAAC;EACnC,MAAMG,MAAM,GAAG,IAAIZ,aAAa,CAACW,IAAI,EAAE;IACrCE,cAAc,EAAEP,OAAO,aAAPA,OAAO,wBAAAC,gBAAA,GAAPD,OAAO,CAAEQ,OAAO,cAAAP,gBAAA,uBAAhBA,gBAAA,CAAkBM;EACpC,CAAC,CAAC;EAEF,MAAME,MAAM,GAAG,MAAMd,0BAA0B,CAACW,MAAM,CAAC;EAEvD,MAAMI,IAAkB,GAAG,EAAE;EAE7B,MAAMC,UAAU,GAAGL,MAAM,CAACM,gBAAgB,CAACZ,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEQ,OAAO,CAAC;EAC5D,WAAW,MAAMK,QAAQ,IAAIF,UAAU,EAAE;IAEvC,KAAK,MAAMG,GAAG,IAAID,QAAQ,EAAE;MAC1BH,IAAI,CAACK,IAAI,CAACD,GAAG,CAAC;IAChB;EACF;EACA,MAAME,cAA8B,GAAG;IACrCC,KAAK,EAAE,kBAAkB;IACzBR,MAAM;IACNS,IAAI,EAAER;EACR,CAAC;EAED,MAAMO,KAAK,GAAGjB,OAAO,aAAPA,OAAO,wBAAAE,iBAAA,GAAPF,OAAO,CAAEQ,OAAO,cAAAN,iBAAA,uBAAhBA,iBAAA,CAAkBe,KAAK;EACrC,QAAQA,KAAK;IACX,KAAK,kBAAkB;MACrB,OAAOD,cAAc;IAEvB,KAAK,eAAe;MAClB,IAAI;QACF,OAAOnB,wBAAwB,CAACmB,cAAc,EAAEP,MAAM,CAAC;MACzD,CAAC,CAAC,OAAOU,KAAK,EAAE;QACd,OAAOH,cAAc;MACvB;IAEF;MACE,MAAM,IAAII,KAAK,CAACH,KAAK,CAAC;EAC1B;AACF;AAEA,OAAO,gBAAgBI,yBAAyBA,CAC9Cf,MAAqB,EACrBN,OAA8B,EACM;EACpC,MAAMS,MAAM,GAAG,MAAMd,0BAA0B,CAACW,MAAM,CAAC;EACvD,MAAMK,UAAU,GAAGL,MAAM,CAACM,gBAAgB,CAACZ,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEQ,OAAO,CAAC;EAC5D,WAAW,MAAME,IAAI,IAAIC,UAAU,EAAE;IACnC,MAAM;MACJW,SAAS,EAAE,MAAM;MACjBL,KAAK,EAAE,kBAAkB;MACzBR,MAAM;MACNS,IAAI,EAAER,IAAI;MACVa,MAAM,EAAEb,IAAI,CAACa;IACf,CAAC;EACH;AACF"}
|
|
@@ -1,12 +1,4 @@
|
|
|
1
|
-
const VERSION = typeof "4.0.0-alpha.
|
|
2
|
-
const DEFAULT_PARQUET_LOADER_OPTIONS = {
|
|
3
|
-
parquet: {
|
|
4
|
-
type: 'object-row-table',
|
|
5
|
-
url: undefined,
|
|
6
|
-
columnList: [],
|
|
7
|
-
geoparquet: true
|
|
8
|
-
}
|
|
9
|
-
};
|
|
1
|
+
const VERSION = typeof "4.0.0-alpha.26" !== 'undefined' ? "4.0.0-alpha.26" : 'latest';
|
|
10
2
|
export const ParquetLoader = {
|
|
11
3
|
name: 'Apache Parquet',
|
|
12
4
|
id: 'parquet',
|
|
@@ -18,9 +10,17 @@ export const ParquetLoader = {
|
|
|
18
10
|
mimeTypes: ['application/octet-stream'],
|
|
19
11
|
binary: true,
|
|
20
12
|
tests: ['PAR1', 'PARE'],
|
|
21
|
-
options:
|
|
13
|
+
options: {
|
|
14
|
+
parquet: {
|
|
15
|
+
shape: 'object-row-table',
|
|
16
|
+
columnList: [],
|
|
17
|
+
geoparquet: true,
|
|
18
|
+
url: undefined,
|
|
19
|
+
preserveBinary: false
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
22
|
};
|
|
23
|
-
export const
|
|
23
|
+
export const ParquetColumnnarLoader = {
|
|
24
24
|
name: 'Apache Parquet',
|
|
25
25
|
id: 'parquet',
|
|
26
26
|
module: 'parquet',
|
|
@@ -31,6 +31,6 @@ export const ParqueColumnnartLoader = {
|
|
|
31
31
|
mimeTypes: ['application/octet-stream'],
|
|
32
32
|
binary: true,
|
|
33
33
|
tests: ['PAR1', 'PARE'],
|
|
34
|
-
options:
|
|
34
|
+
options: ParquetLoader.options
|
|
35
35
|
};
|
|
36
36
|
//# sourceMappingURL=parquet-loader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parquet-loader.js","names":["VERSION","
|
|
1
|
+
{"version":3,"file":"parquet-loader.js","names":["VERSION","ParquetLoader","name","id","module","version","worker","category","extensions","mimeTypes","binary","tests","options","parquet","shape","columnList","geoparquet","url","undefined","preserveBinary","ParquetColumnnarLoader"],"sources":["../../src/parquet-loader.ts"],"sourcesContent":["// loaders.gl, MIT license\nimport type {Loader, LoaderOptions} from '@loaders.gl/loader-utils';\nimport type {\n ObjectRowTable,\n ObjectRowTableBatch,\n ColumnarTable,\n ColumnarTableBatch,\n GeoJSONTable,\n GeoJSONTableBatch\n} from '@loaders.gl/schema';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\n/** Options for the parquet loader */\nexport type ParquetLoaderOptions = LoaderOptions & {\n /** Options for the parquet loader */\n parquet?: {\n /** Format of returned parsed data */\n shape?: 'object-row-table' | 'geojson-table';\n /** Restrict which columns that are parsed from the table. Can save significant memory. */\n columnList?: string[] | string[][];\n /** If true, binary values are not converted to strings */\n preserveBinary?: boolean;\n /** @deprecated not used? Set to true to indicate that this is a geoparquet file. */\n geoparquet?: boolean;\n /** @deprecated URL to override loaders.gl/core parser system */\n url?: string;\n };\n};\n\n/** ParquetJS table loader */\nexport const ParquetLoader: Loader<\n ObjectRowTable | GeoJSONTable,\n ObjectRowTableBatch | GeoJSONTableBatch,\n ParquetLoaderOptions\n> = {\n name: 'Apache Parquet',\n id: 'parquet',\n module: 'parquet',\n version: VERSION,\n worker: true,\n category: 'table',\n extensions: ['parquet'],\n mimeTypes: ['application/octet-stream'],\n binary: true,\n tests: ['PAR1', 'PARE'],\n options: {\n parquet: {\n shape: 'object-row-table',\n columnList: [],\n geoparquet: true,\n url: undefined,\n preserveBinary: false\n }\n }\n};\n\nexport const ParquetColumnnarLoader: Loader<\n ColumnarTable,\n ColumnarTableBatch,\n ParquetLoaderOptions\n> = {\n name: 'Apache Parquet',\n id: 'parquet',\n module: 'parquet',\n version: VERSION,\n worker: true,\n category: 'table',\n extensions: ['parquet'],\n mimeTypes: ['application/octet-stream'],\n binary: true,\n tests: ['PAR1', 'PARE'],\n options: ParquetLoader.options\n};\n"],"mappings":"AAaA,MAAMA,OAAO,GAAG,uBAAkB,KAAK,WAAW,sBAAiB,QAAQ;AAoB3E,OAAO,MAAMC,aAIZ,GAAG;EACFC,IAAI,EAAE,gBAAgB;EACtBC,EAAE,EAAE,SAAS;EACbC,MAAM,EAAE,SAAS;EACjBC,OAAO,EAAEL,OAAO;EAChBM,MAAM,EAAE,IAAI;EACZC,QAAQ,EAAE,OAAO;EACjBC,UAAU,EAAE,CAAC,SAAS,CAAC;EACvBC,SAAS,EAAE,CAAC,0BAA0B,CAAC;EACvCC,MAAM,EAAE,IAAI;EACZC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;EACvBC,OAAO,EAAE;IACPC,OAAO,EAAE;MACPC,KAAK,EAAE,kBAAkB;MACzBC,UAAU,EAAE,EAAE;MACdC,UAAU,EAAE,IAAI;MAChBC,GAAG,EAAEC,SAAS;MACdC,cAAc,EAAE;IAClB;EACF;AACF,CAAC;AAED,OAAO,MAAMC,sBAIZ,GAAG;EACFlB,IAAI,EAAE,gBAAgB;EACtBC,EAAE,EAAE,SAAS;EACbC,MAAM,EAAE,SAAS;EACjBC,OAAO,EAAEL,OAAO;EAChBM,MAAM,EAAE,IAAI;EACZC,QAAQ,EAAE,OAAO;EACjBC,UAAU,EAAE,CAAC,SAAS,CAAC;EACvBC,SAAS,EAAE,CAAC,0BAA0B,CAAC;EACvCC,MAAM,EAAE,IAAI;EACZC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;EACvBC,OAAO,EAAEX,aAAa,CAACW;AACzB,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { encode } from './lib/wasm/encode-parquet-wasm';
|
|
2
|
-
const VERSION = typeof "4.0.0-alpha.
|
|
2
|
+
const VERSION = typeof "4.0.0-alpha.26" !== 'undefined' ? "4.0.0-alpha.26" : 'latest';
|
|
3
3
|
export const ParquetWasmWriter = {
|
|
4
4
|
name: 'Apache Parquet',
|
|
5
5
|
id: 'parquet-wasm',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plain.js","names":["INT53","encodeValues","type","values","opts","encodeValues_BOOLEAN","encodeValues_INT32","encodeValues_INT64","encodeValues_INT96","encodeValues_FLOAT","encodeValues_DOUBLE","encodeValues_BYTE_ARRAY","encodeValues_FIXED_LEN_BYTE_ARRAY","Error","concat","decodeValues","cursor","count","decodeValues_BOOLEAN","decodeValues_INT32","decodeValues_INT64","decodeValues_INT96","decodeValues_FLOAT","decodeValues_DOUBLE","decodeValues_BYTE_ARRAY","decodeValues_FIXED_LEN_BYTE_ARRAY","buf","Buffer","alloc","Math","ceil","length","fill","i","floor","b","buffer","offset","push","writeInt32LE","readInt32LE","writeInt64LE","readInt64LE","writeUInt32LE","low","high","readUInt32LE","writeFloatLE","readFloatLE","writeDoubleLE","readDoubleLE","buf_len","from","buf_pos","copy","len","slice","typeLength"],"sources":["../../../../src/parquetjs/codecs/plain.ts"],"sourcesContent":["// Forked from https://github.com/kbajalc/parquets under MIT license (Copyright (c) 2017 ironSource Ltd.)\n/* eslint-disable camelcase */\nimport type {PrimitiveType} from '../schema/declare';\nimport type {CursorBuffer, ParquetCodecOptions} from './declare';\nimport INT53 from 'int53';\n\nexport function encodeValues(\n type: PrimitiveType,\n values: any[],\n opts: ParquetCodecOptions\n): Buffer {\n switch (type) {\n case 'BOOLEAN':\n return encodeValues_BOOLEAN(values);\n case 'INT32':\n return encodeValues_INT32(values);\n case 'INT64':\n return encodeValues_INT64(values);\n case 'INT96':\n return encodeValues_INT96(values);\n case 'FLOAT':\n return encodeValues_FLOAT(values);\n case 'DOUBLE':\n return encodeValues_DOUBLE(values);\n case 'BYTE_ARRAY':\n return encodeValues_BYTE_ARRAY(values);\n case 'FIXED_LEN_BYTE_ARRAY':\n return encodeValues_FIXED_LEN_BYTE_ARRAY(values, opts);\n default:\n throw new Error(`unsupported type: ${type}`);\n }\n}\n\nexport function decodeValues(\n type: PrimitiveType,\n cursor: CursorBuffer,\n count: number,\n opts: ParquetCodecOptions\n): any[] {\n switch (type) {\n case 'BOOLEAN':\n return decodeValues_BOOLEAN(cursor, count);\n case 'INT32':\n return decodeValues_INT32(cursor, count);\n case 'INT64':\n return decodeValues_INT64(cursor, count);\n case 'INT96':\n return decodeValues_INT96(cursor, count);\n case 'FLOAT':\n return decodeValues_FLOAT(cursor, count);\n case 'DOUBLE':\n return decodeValues_DOUBLE(cursor, count);\n case 'BYTE_ARRAY':\n return decodeValues_BYTE_ARRAY(cursor, count);\n case 'FIXED_LEN_BYTE_ARRAY':\n return decodeValues_FIXED_LEN_BYTE_ARRAY(cursor, count, opts);\n default:\n throw new Error(`unsupported type: ${type}`);\n }\n}\n\nfunction encodeValues_BOOLEAN(values: boolean[]): Buffer {\n const buf = Buffer.alloc(Math.ceil(values.length / 8));\n buf.fill(0);\n for (let i = 0; i < values.length; i++) {\n if (values[i]) {\n buf[Math.floor(i / 8)] |= 1 << i % 8;\n }\n }\n return buf;\n}\n\nfunction decodeValues_BOOLEAN(cursor: CursorBuffer, count: number): boolean[] {\n const values: boolean[] = [];\n for (let i = 0; i < count; i++) {\n const b = cursor.buffer[cursor.offset + Math.floor(i / 8)];\n values.push((b & (1 << i % 8)) > 0);\n }\n cursor.offset += Math.ceil(count / 8);\n return values;\n}\n\nfunction encodeValues_INT32(values: number[]): Buffer {\n const buf = Buffer.alloc(4 * values.length);\n for (let i = 0; i < values.length; i++) {\n buf.writeInt32LE(values[i], i * 4);\n }\n return buf;\n}\n\nfunction decodeValues_INT32(cursor: CursorBuffer, count: number): number[] {\n const values: number[] = [];\n for (let i = 0; i < count; i++) {\n values.push(cursor.buffer.readInt32LE(cursor.offset));\n cursor.offset += 4;\n }\n return values;\n}\n\nfunction encodeValues_INT64(values: number[]): Buffer {\n const buf = Buffer.alloc(8 * values.length);\n for (let i = 0; i < values.length; i++) {\n INT53.writeInt64LE(values[i], buf, i * 8);\n }\n return buf;\n}\n\nfunction decodeValues_INT64(cursor: CursorBuffer, count: number): number[] {\n const values: number[] = [];\n for (let i = 0; i < count; i++) {\n values.push(INT53.readInt64LE(cursor.buffer, cursor.offset));\n cursor.offset += 8;\n }\n return values;\n}\n\nfunction encodeValues_INT96(values: number[]): Buffer {\n const buf = Buffer.alloc(12 * values.length);\n for (let i = 0; i < values.length; i++) {\n if (values[i] >= 0) {\n INT53.writeInt64LE(values[i], buf, i * 12);\n buf.writeUInt32LE(0, i * 12 + 8); // truncate to 64 actual precision\n } else {\n INT53.writeInt64LE(~-values[i] + 1, buf, i * 12);\n buf.writeUInt32LE(0xffffffff, i * 12 + 8); // truncate to 64 actual precision\n }\n }\n return buf;\n}\n\nfunction decodeValues_INT96(cursor: CursorBuffer, count: number): number[] {\n const values: number[] = [];\n for (let i = 0; i < count; i++) {\n const low = INT53.readInt64LE(cursor.buffer, cursor.offset);\n const high = cursor.buffer.readUInt32LE(cursor.offset + 8);\n if (high === 0xffffffff) {\n values.push(~-low + 1); // truncate to 64 actual precision\n } else {\n values.push(low); // truncate to 64 actual precision\n }\n cursor.offset += 12;\n }\n return values;\n}\n\nfunction encodeValues_FLOAT(values: number[]): Buffer {\n const buf = Buffer.alloc(4 * values.length);\n for (let i = 0; i < values.length; i++) {\n buf.writeFloatLE(values[i], i * 4);\n }\n return buf;\n}\n\nfunction decodeValues_FLOAT(cursor: CursorBuffer, count: number): number[] {\n const values: number[] = [];\n for (let i = 0; i < count; i++) {\n values.push(cursor.buffer.readFloatLE(cursor.offset));\n cursor.offset += 4;\n }\n return values;\n}\n\nfunction encodeValues_DOUBLE(values: number[]): Buffer {\n const buf = Buffer.alloc(8 * values.length);\n for (let i = 0; i < values.length; i++) {\n buf.writeDoubleLE(values[i], i * 8);\n }\n return buf;\n}\n\nfunction decodeValues_DOUBLE(cursor: CursorBuffer, count: number): number[] {\n const values: number[] = [];\n for (let i = 0; i < count; i++) {\n values.push(cursor.buffer.readDoubleLE(cursor.offset));\n cursor.offset += 8;\n }\n return values;\n}\n\nfunction encodeValues_BYTE_ARRAY(values: Buffer[]): Buffer {\n // tslint:disable-next-line:variable-name\n let buf_len = 0;\n for (let i = 0; i < values.length; i++) {\n values[i] = Buffer.from(values[i]);\n buf_len += 4 + values[i].length;\n }\n const buf = Buffer.alloc(buf_len);\n // tslint:disable-next-line:variable-name\n let buf_pos = 0;\n for (let i = 0; i < values.length; i++) {\n buf.writeUInt32LE(values[i].length, buf_pos);\n values[i].copy(buf, buf_pos + 4);\n buf_pos += 4 + values[i].length;\n }\n return buf;\n}\n\nfunction decodeValues_BYTE_ARRAY(cursor: CursorBuffer, count: number): Buffer[] {\n const values: Buffer[] = [];\n for (let i = 0; i < count; i++) {\n const len = cursor.buffer.readUInt32LE(cursor.offset);\n cursor.offset += 4;\n values.push(cursor.buffer.slice(cursor.offset, cursor.offset + len));\n cursor.offset += len;\n }\n return values;\n}\n\nfunction encodeValues_FIXED_LEN_BYTE_ARRAY(values: Buffer[], opts: ParquetCodecOptions): Buffer {\n if (!opts.typeLength) {\n throw new Error('missing option: typeLength (required for FIXED_LEN_BYTE_ARRAY)');\n }\n for (let i = 0; i < values.length; i++) {\n values[i] = Buffer.from(values[i]);\n if (values[i].length !== opts.typeLength) {\n throw new Error(`invalid value for FIXED_LEN_BYTE_ARRAY: ${values[i]}`);\n }\n }\n return Buffer.concat(values);\n}\n\nfunction decodeValues_FIXED_LEN_BYTE_ARRAY(\n cursor: CursorBuffer,\n count: number,\n opts: ParquetCodecOptions\n): Buffer[] {\n const values: Buffer[] = [];\n if (!opts.typeLength) {\n throw new Error('missing option: typeLength (required for FIXED_LEN_BYTE_ARRAY)');\n }\n for (let i = 0; i < count; i++) {\n values.push(cursor.buffer.slice(cursor.offset, cursor.offset + opts.typeLength));\n cursor.offset += opts.typeLength;\n }\n return values;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plain.js","names":["INT53","encodeValues","type","values","opts","encodeValues_BOOLEAN","encodeValues_INT32","encodeValues_INT64","encodeValues_INT96","encodeValues_FLOAT","encodeValues_DOUBLE","encodeValues_BYTE_ARRAY","encodeValues_FIXED_LEN_BYTE_ARRAY","Error","concat","decodeValues","cursor","count","decodeValues_BOOLEAN","decodeValues_INT32","decodeValues_INT64","decodeValues_INT96","decodeValues_FLOAT","decodeValues_DOUBLE","decodeValues_BYTE_ARRAY","decodeValues_FIXED_LEN_BYTE_ARRAY","buf","Buffer","alloc","Math","ceil","length","fill","i","floor","b","buffer","offset","push","writeInt32LE","readInt32LE","writeInt64LE","readInt64LE","writeUInt32LE","low","high","readUInt32LE","writeFloatLE","readFloatLE","writeDoubleLE","readDoubleLE","buf_len","from","buf_pos","copy","len","slice","typeLength"],"sources":["../../../../src/parquetjs/codecs/plain.ts"],"sourcesContent":["// Forked from https://github.com/kbajalc/parquets under MIT license (Copyright (c) 2017 ironSource Ltd.)\n/* eslint-disable camelcase */\nimport type {PrimitiveType} from '../schema/declare';\nimport type {CursorBuffer, ParquetCodecOptions} from './declare';\nimport INT53 from 'int53';\n\nexport function encodeValues(\n type: PrimitiveType,\n values: any[],\n opts: ParquetCodecOptions\n): Buffer {\n switch (type) {\n case 'BOOLEAN':\n return encodeValues_BOOLEAN(values);\n case 'INT32':\n return encodeValues_INT32(values);\n case 'INT64':\n return encodeValues_INT64(values);\n case 'INT96':\n return encodeValues_INT96(values);\n case 'FLOAT':\n return encodeValues_FLOAT(values);\n case 'DOUBLE':\n return encodeValues_DOUBLE(values);\n case 'BYTE_ARRAY':\n return encodeValues_BYTE_ARRAY(values);\n case 'FIXED_LEN_BYTE_ARRAY':\n return encodeValues_FIXED_LEN_BYTE_ARRAY(values, opts);\n default:\n throw new Error(`unsupported type: ${type}`);\n }\n}\n\nexport function decodeValues(\n type: PrimitiveType,\n cursor: CursorBuffer,\n count: number,\n opts: ParquetCodecOptions\n): any[] {\n switch (type) {\n case 'BOOLEAN':\n return decodeValues_BOOLEAN(cursor, count);\n case 'INT32':\n return decodeValues_INT32(cursor, count);\n case 'INT64':\n return decodeValues_INT64(cursor, count);\n case 'INT96':\n return decodeValues_INT96(cursor, count);\n case 'FLOAT':\n return decodeValues_FLOAT(cursor, count);\n case 'DOUBLE':\n return decodeValues_DOUBLE(cursor, count);\n case 'BYTE_ARRAY':\n return decodeValues_BYTE_ARRAY(cursor, count);\n case 'FIXED_LEN_BYTE_ARRAY':\n return decodeValues_FIXED_LEN_BYTE_ARRAY(cursor, count, opts);\n default:\n throw new Error(`unsupported type: ${type}`);\n }\n}\n\nfunction encodeValues_BOOLEAN(values: boolean[]): Buffer {\n const buf = Buffer.alloc(Math.ceil(values.length / 8));\n buf.fill(0);\n for (let i = 0; i < values.length; i++) {\n if (values[i]) {\n buf[Math.floor(i / 8)] |= 1 << i % 8;\n }\n }\n return buf;\n}\n\nfunction decodeValues_BOOLEAN(cursor: CursorBuffer, count: number): boolean[] {\n const values: boolean[] = [];\n for (let i = 0; i < count; i++) {\n const b = cursor.buffer[cursor.offset + Math.floor(i / 8)];\n values.push((b & (1 << i % 8)) > 0);\n }\n cursor.offset += Math.ceil(count / 8);\n return values;\n}\n\nfunction encodeValues_INT32(values: number[]): Buffer {\n const buf = Buffer.alloc(4 * values.length);\n for (let i = 0; i < values.length; i++) {\n buf.writeInt32LE(values[i], i * 4);\n }\n return buf;\n}\n\nfunction decodeValues_INT32(cursor: CursorBuffer, count: number): number[] {\n const values: number[] = [];\n for (let i = 0; i < count; i++) {\n values.push(cursor.buffer.readInt32LE(cursor.offset));\n cursor.offset += 4;\n }\n return values;\n}\n\nfunction encodeValues_INT64(values: number[]): Buffer {\n const buf = Buffer.alloc(8 * values.length);\n for (let i = 0; i < values.length; i++) {\n INT53.writeInt64LE(values[i], buf, i * 8);\n }\n return buf;\n}\n\nfunction decodeValues_INT64(cursor: CursorBuffer, count: number): number[] {\n const values: number[] = [];\n for (let i = 0; i < count; i++) {\n values.push(INT53.readInt64LE(cursor.buffer, cursor.offset));\n cursor.offset += 8;\n }\n return values;\n}\n\nfunction encodeValues_INT96(values: number[]): Buffer {\n const buf = Buffer.alloc(12 * values.length);\n for (let i = 0; i < values.length; i++) {\n if (values[i] >= 0) {\n INT53.writeInt64LE(values[i], buf, i * 12);\n buf.writeUInt32LE(0, i * 12 + 8); // truncate to 64 actual precision\n } else {\n INT53.writeInt64LE(~-values[i] + 1, buf, i * 12);\n buf.writeUInt32LE(0xffffffff, i * 12 + 8); // truncate to 64 actual precision\n }\n }\n return buf;\n}\n\nfunction decodeValues_INT96(cursor: CursorBuffer, count: number): number[] {\n const values: number[] = [];\n for (let i = 0; i < count; i++) {\n const low = INT53.readInt64LE(cursor.buffer, cursor.offset);\n const high = cursor.buffer.readUInt32LE(cursor.offset + 8);\n if (high === 0xffffffff) {\n values.push(~-low + 1); // truncate to 64 actual precision\n } else {\n values.push(low); // truncate to 64 actual precision\n }\n cursor.offset += 12;\n }\n return values;\n}\n\nfunction encodeValues_FLOAT(values: number[]): Buffer {\n const buf = Buffer.alloc(4 * values.length);\n for (let i = 0; i < values.length; i++) {\n buf.writeFloatLE(values[i], i * 4);\n }\n return buf;\n}\n\nfunction decodeValues_FLOAT(cursor: CursorBuffer, count: number): number[] {\n const values: number[] = [];\n for (let i = 0; i < count; i++) {\n values.push(cursor.buffer.readFloatLE(cursor.offset));\n cursor.offset += 4;\n }\n return values;\n}\n\nfunction encodeValues_DOUBLE(values: number[]): Buffer {\n const buf = Buffer.alloc(8 * values.length);\n for (let i = 0; i < values.length; i++) {\n buf.writeDoubleLE(values[i], i * 8);\n }\n return buf;\n}\n\nfunction decodeValues_DOUBLE(cursor: CursorBuffer, count: number): number[] {\n const values: number[] = [];\n for (let i = 0; i < count; i++) {\n values.push(cursor.buffer.readDoubleLE(cursor.offset));\n cursor.offset += 8;\n }\n return values;\n}\n\nfunction encodeValues_BYTE_ARRAY(values: Buffer[]): Buffer {\n // tslint:disable-next-line:variable-name\n let buf_len = 0;\n for (let i = 0; i < values.length; i++) {\n values[i] = Buffer.from(values[i]);\n buf_len += 4 + values[i].length;\n }\n const buf = Buffer.alloc(buf_len);\n // tslint:disable-next-line:variable-name\n let buf_pos = 0;\n for (let i = 0; i < values.length; i++) {\n buf.writeUInt32LE(values[i].length, buf_pos);\n values[i].copy(buf, buf_pos + 4);\n buf_pos += 4 + values[i].length;\n }\n return buf;\n}\n\nfunction decodeValues_BYTE_ARRAY(cursor: CursorBuffer, count: number): Buffer[] {\n const values: Buffer[] = [];\n for (let i = 0; i < count; i++) {\n const len = cursor.buffer.readUInt32LE(cursor.offset);\n cursor.offset += 4;\n // values.push(cursor.buffer.buffer.slice(cursor.offset, cursor.offset + len));\n values.push(cursor.buffer.slice(cursor.offset, cursor.offset + len));\n cursor.offset += len;\n }\n return values;\n}\n\nfunction encodeValues_FIXED_LEN_BYTE_ARRAY(values: Buffer[], opts: ParquetCodecOptions): Buffer {\n if (!opts.typeLength) {\n throw new Error('missing option: typeLength (required for FIXED_LEN_BYTE_ARRAY)');\n }\n for (let i = 0; i < values.length; i++) {\n values[i] = Buffer.from(values[i]);\n if (values[i].length !== opts.typeLength) {\n throw new Error(`invalid value for FIXED_LEN_BYTE_ARRAY: ${values[i]}`);\n }\n }\n return Buffer.concat(values);\n}\n\nfunction decodeValues_FIXED_LEN_BYTE_ARRAY(\n cursor: CursorBuffer,\n count: number,\n opts: ParquetCodecOptions\n): Buffer[] {\n const values: Buffer[] = [];\n if (!opts.typeLength) {\n throw new Error('missing option: typeLength (required for FIXED_LEN_BYTE_ARRAY)');\n }\n for (let i = 0; i < count; i++) {\n values.push(cursor.buffer.slice(cursor.offset, cursor.offset + opts.typeLength));\n cursor.offset += opts.typeLength;\n }\n return values;\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rle.js","names":["varint","encodeValues","type","values","opts","Error","map","x","parseInt","concat","buf","Buffer","alloc","run","repeats","i","length","encodeRunBitpacked","encodeRunRepeated","push","disableEnvelope","envelope","writeUInt32LE","undefined","copy","decodeValues","cursor","count","offset","header","decode","buffer","encodingLength","decodeRunBitpacked","decodeRunRepeated","slice","bitWidth","Array","fill","b","Math","floor","value","ceil","from","encode","writeUInt8"],"sources":["../../../../src/parquetjs/codecs/rle.ts"],"sourcesContent":["// Forked from https://github.com/kbajalc/parquets under MIT license (Copyright (c) 2017 ironSource Ltd.)\n\nimport type {PrimitiveType} from '../schema/declare';\nimport type {CursorBuffer, ParquetCodecOptions} from './declare';\nimport varint from 'varint';\n\n// eslint-disable-next-line max-statements, complexity\nexport function encodeValues(\n type: PrimitiveType,\n values: any[],\n opts: ParquetCodecOptions\n): Buffer {\n if (!('bitWidth' in opts)) {\n throw new Error('bitWidth is required');\n }\n\n switch (type) {\n case 'BOOLEAN':\n case 'INT32':\n case 'INT64':\n // tslint:disable-next-line:no-parameter-reassignment\n values = values.map((x) => parseInt(x, 10));\n break;\n\n default:\n throw new Error(`unsupported type: ${type}`);\n }\n\n let buf = Buffer.alloc(0);\n let run: any[] = [];\n let repeats = 0;\n\n for (let i = 0; i < values.length; i++) {\n // If we are at the beginning of a run and the next value is same we start\n // collecting repeated values\n if (repeats === 0 && run.length % 8 === 0 && values[i] === values[i + 1]) {\n // If we have any data in runs we need to encode them\n if (run.length) {\n buf = Buffer.concat([buf, encodeRunBitpacked(run, opts)]);\n run = [];\n }\n repeats = 1;\n } else if (repeats > 0 && values[i] === values[i - 1]) {\n repeats += 1;\n } else {\n // If values changes we need to post any previous repeated values\n if (repeats) {\n buf = Buffer.concat([buf, encodeRunRepeated(values[i - 1], repeats, opts)]);\n repeats = 0;\n }\n run.push(values[i]);\n }\n }\n\n if (repeats) {\n buf = Buffer.concat([buf, encodeRunRepeated(values[values.length - 1], repeats, opts)]);\n } else if (run.length) {\n buf = Buffer.concat([buf, encodeRunBitpacked(run, opts)]);\n }\n\n if (opts.disableEnvelope) {\n return buf;\n }\n\n const envelope = Buffer.alloc(buf.length + 4);\n envelope.writeUInt32LE(buf.length, undefined);\n buf.copy(envelope, 4);\n\n return envelope;\n}\n\nexport function decodeValues(\n type: PrimitiveType,\n cursor: CursorBuffer,\n count: number,\n opts: ParquetCodecOptions\n): number[] {\n if (!('bitWidth' in opts)) {\n throw new Error('bitWidth is required');\n }\n\n if (!opts.disableEnvelope) {\n cursor.offset += 4;\n }\n\n let values: number[] = [];\n while (values.length < count) {\n const header = varint.decode(cursor.buffer, cursor.offset);\n cursor.offset += varint.encodingLength(header);\n if (header & 1) {\n const count = (header >> 1) * 8;\n values.push(...decodeRunBitpacked(cursor, count, opts));\n } else {\n const count = header >> 1;\n values.push(...decodeRunRepeated(cursor, count, opts));\n }\n }\n values = values.slice(0, count);\n\n if (values.length !== count) {\n throw new Error('invalid RLE encoding');\n }\n\n return values;\n}\n\nfunction decodeRunBitpacked(\n cursor: CursorBuffer,\n count: number,\n opts: ParquetCodecOptions\n): number[] {\n // @ts-ignore\n const bitWidth: number = opts.bitWidth;\n\n if (count % 8 !== 0) {\n throw new Error('must be a multiple of 8');\n }\n\n // tslint:disable-next-line:prefer-array-literal\n const values = new Array(count).fill(0);\n for (let b = 0; b < bitWidth * count; b++) {\n if (cursor.buffer[cursor.offset + Math.floor(b / 8)] & (1 << b % 8)) {\n values[Math.floor(b / bitWidth)] |= 1 << b % bitWidth;\n }\n }\n\n cursor.offset += bitWidth * (count / 8);\n return values;\n}\n\nfunction decodeRunRepeated(\n cursor: CursorBuffer,\n count: number,\n opts: ParquetCodecOptions\n): number[] {\n // @ts-ignore\n const bitWidth: number = opts.bitWidth;\n\n let value = 0;\n for (let i = 0; i < Math.ceil(bitWidth / 8); i++) {\n // eslint-disable-next-line\n value << 8; // TODO - this looks wrong\n value += cursor.buffer[cursor.offset];\n cursor.offset += 1;\n }\n\n // tslint:disable-next-line:prefer-array-literal\n return new Array(count).fill(value);\n}\n\nfunction encodeRunBitpacked(values: number[], opts: ParquetCodecOptions): Buffer {\n // @ts-ignore\n const bitWidth: number = opts.bitWidth;\n\n for (let i = 0; i < values.length % 8; i++) {\n values.push(0);\n }\n\n const buf = Buffer.alloc(Math.ceil(bitWidth * (values.length / 8)));\n for (let b = 0; b < bitWidth * values.length; b++) {\n if ((values[Math.floor(b / bitWidth)] & (1 << b % bitWidth)) > 0) {\n buf[Math.floor(b / 8)] |= 1 << b % 8;\n }\n }\n\n return Buffer.concat([Buffer.from(varint.encode(((values.length / 8) << 1) | 1)), buf]);\n}\n\nfunction encodeRunRepeated(value: number, count: number, opts: ParquetCodecOptions): Buffer {\n // @ts-ignore\n const bitWidth: number = opts.bitWidth;\n\n const buf = Buffer.alloc(Math.ceil(bitWidth / 8));\n\n for (let i = 0; i < buf.length; i++) {\n buf.writeUInt8(value & 0xff, i);\n // eslint-disable-next-line\n value >> 8; // TODO - this looks wrong\n }\n\n return Buffer.concat([Buffer.from(varint.encode(count << 1)), buf]);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rle.js","names":["varint","encodeValues","type","values","opts","Error","map","x","parseInt","concat","buf","Buffer","alloc","run","repeats","i","length","encodeRunBitpacked","encodeRunRepeated","push","disableEnvelope","envelope","writeUInt32LE","undefined","copy","decodeValues","cursor","count","offset","header","decode","buffer","encodingLength","decodeRunBitpacked","decodeRunRepeated","slice","bitWidth","Array","fill","b","Math","floor","value","ceil","from","encode","writeUInt8"],"sources":["../../../../src/parquetjs/codecs/rle.ts"],"sourcesContent":["// Forked from https://github.com/kbajalc/parquets under MIT license (Copyright (c) 2017 ironSource Ltd.)\n\nimport type {PrimitiveType} from '../schema/declare';\nimport type {CursorBuffer, ParquetCodecOptions} from './declare';\nimport varint from 'varint';\n\n// eslint-disable-next-line max-statements, complexity\nexport function encodeValues(\n type: PrimitiveType,\n values: any[],\n opts: ParquetCodecOptions\n): Buffer {\n if (!('bitWidth' in opts)) {\n throw new Error('bitWidth is required');\n }\n\n switch (type) {\n case 'BOOLEAN':\n case 'INT32':\n case 'INT64':\n // tslint:disable-next-line:no-parameter-reassignment\n values = values.map((x) => parseInt(x, 10));\n break;\n\n default:\n throw new Error(`unsupported type: ${type}`);\n }\n\n let buf = Buffer.alloc(0);\n let run: any[] = [];\n let repeats = 0;\n\n for (let i = 0; i < values.length; i++) {\n // If we are at the beginning of a run and the next value is same we start\n // collecting repeated values\n if (repeats === 0 && run.length % 8 === 0 && values[i] === values[i + 1]) {\n // If we have any data in runs we need to encode them\n if (run.length) {\n buf = Buffer.concat([buf, encodeRunBitpacked(run, opts)]);\n run = [];\n }\n repeats = 1;\n } else if (repeats > 0 && values[i] === values[i - 1]) {\n repeats += 1;\n } else {\n // If values changes we need to post any previous repeated values\n if (repeats) {\n buf = Buffer.concat([buf, encodeRunRepeated(values[i - 1], repeats, opts)]);\n repeats = 0;\n }\n run.push(values[i]);\n }\n }\n\n if (repeats) {\n buf = Buffer.concat([buf, encodeRunRepeated(values[values.length - 1], repeats, opts)]);\n } else if (run.length) {\n buf = Buffer.concat([buf, encodeRunBitpacked(run, opts)]);\n }\n\n if (opts.disableEnvelope) {\n return buf;\n }\n\n const envelope = Buffer.alloc(buf.length + 4);\n\n // @ts-ignore buffer polyfill\n envelope.writeUInt32LE(buf.length, undefined);\n buf.copy(envelope, 4);\n\n return envelope;\n}\n\nexport function decodeValues(\n type: PrimitiveType,\n cursor: CursorBuffer,\n count: number,\n opts: ParquetCodecOptions\n): number[] {\n if (!('bitWidth' in opts)) {\n throw new Error('bitWidth is required');\n }\n\n if (!opts.disableEnvelope) {\n cursor.offset += 4;\n }\n\n let values: number[] = [];\n while (values.length < count) {\n const header = varint.decode(cursor.buffer, cursor.offset);\n cursor.offset += varint.encodingLength(header);\n if (header & 1) {\n const count = (header >> 1) * 8;\n values.push(...decodeRunBitpacked(cursor, count, opts));\n } else {\n const count = header >> 1;\n values.push(...decodeRunRepeated(cursor, count, opts));\n }\n }\n values = values.slice(0, count);\n\n if (values.length !== count) {\n throw new Error('invalid RLE encoding');\n }\n\n return values;\n}\n\nfunction decodeRunBitpacked(\n cursor: CursorBuffer,\n count: number,\n opts: ParquetCodecOptions\n): number[] {\n // @ts-ignore\n const bitWidth: number = opts.bitWidth;\n\n if (count % 8 !== 0) {\n throw new Error('must be a multiple of 8');\n }\n\n // tslint:disable-next-line:prefer-array-literal\n const values = new Array(count).fill(0);\n for (let b = 0; b < bitWidth * count; b++) {\n if (cursor.buffer[cursor.offset + Math.floor(b / 8)] & (1 << b % 8)) {\n values[Math.floor(b / bitWidth)] |= 1 << b % bitWidth;\n }\n }\n\n cursor.offset += bitWidth * (count / 8);\n return values;\n}\n\nfunction decodeRunRepeated(\n cursor: CursorBuffer,\n count: number,\n opts: ParquetCodecOptions\n): number[] {\n // @ts-ignore\n const bitWidth: number = opts.bitWidth;\n\n let value = 0;\n for (let i = 0; i < Math.ceil(bitWidth / 8); i++) {\n // eslint-disable-next-line\n value << 8; // TODO - this looks wrong\n value += cursor.buffer[cursor.offset];\n cursor.offset += 1;\n }\n\n // tslint:disable-next-line:prefer-array-literal\n return new Array(count).fill(value);\n}\n\nfunction encodeRunBitpacked(values: number[], opts: ParquetCodecOptions): Buffer {\n // @ts-ignore\n const bitWidth: number = opts.bitWidth;\n\n for (let i = 0; i < values.length % 8; i++) {\n values.push(0);\n }\n\n const buf = Buffer.alloc(Math.ceil(bitWidth * (values.length / 8)));\n for (let b = 0; b < bitWidth * values.length; b++) {\n if ((values[Math.floor(b / bitWidth)] & (1 << b % bitWidth)) > 0) {\n buf[Math.floor(b / 8)] |= 1 << b % 8;\n }\n }\n\n return Buffer.concat([Buffer.from(varint.encode(((values.length / 8) << 1) | 1)), buf]);\n}\n\nfunction encodeRunRepeated(value: number, count: number, opts: ParquetCodecOptions): Buffer {\n // @ts-ignore\n const bitWidth: number = opts.bitWidth;\n\n const buf = Buffer.alloc(Math.ceil(bitWidth / 8));\n\n for (let i = 0; i < buf.length; i++) {\n buf.writeUInt8(value & 0xff, i);\n // eslint-disable-next-line\n value >> 8; // TODO - this looks wrong\n }\n\n return Buffer.concat([Buffer.from(varint.encode(count << 1)), buf]);\n}\n"],"mappings":"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"}
|