@loaders.gl/parquet 4.0.0-alpha.9 → 4.0.0-beta.1
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 +21 -32
- package/dist/dist.min.js.map +3 -3
- package/dist/es5/buffer-polyfill/buffer-polyfill.browser.js +12 -0
- package/dist/es5/buffer-polyfill/buffer-polyfill.browser.js.map +1 -0
- package/dist/es5/buffer-polyfill/buffer-polyfill.node.js +16 -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 +27 -0
- package/dist/es5/buffer-polyfill/index.js.map +1 -0
- package/dist/es5/buffer-polyfill/install-buffer-polyfill.js +10 -0
- package/dist/es5/buffer-polyfill/install-buffer-polyfill.js.map +1 -0
- package/dist/es5/index.js +25 -28
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/geo/decode-geo-column.js +53 -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 +8 -11
- package/dist/es5/parquet-wasm-loader.js.map +1 -1
- package/dist/es5/parquet-wasm-writer.js +6 -7
- package/dist/es5/parquet-wasm-writer.js.map +1 -1
- package/dist/es5/parquet-writer.js +2 -3
- package/dist/es5/parquet-writer.js.map +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 +53 -36
- package/dist/es5/parquetjs/parser/decoders.js.map +1 -1
- package/dist/es5/parquetjs/parser/parquet-reader.js +15 -13
- 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 +3 -0
- package/dist/esm/buffer-polyfill/install-buffer-polyfill.js.map +1 -0
- package/dist/esm/index.js +4 -10
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/geo/decode-geo-column.js +47 -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 +7 -9
- package/dist/esm/parquet-wasm-loader.js.map +1 -1
- package/dist/esm/parquet-wasm-writer.js +6 -7
- package/dist/esm/parquet-wasm-writer.js.map +1 -1
- package/dist/esm/parquet-writer.js +2 -3
- package/dist/esm/parquet-writer.js.map +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 +48 -32
- package/dist/esm/parquetjs/parser/decoders.js.map +1 -1
- package/dist/esm/parquetjs/parser/parquet-reader.js +14 -12
- 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 +23 -34
- 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 +4 -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 +30 -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} +6 -10
- 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 +12 -0
- package/dist/src/parquet-wasm-loader.d.ts.map +1 -0
- package/dist/src/parquet-wasm-writer.d.ts +6 -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 +21 -9
- package/src/buffer-polyfill/buffer-polyfill.browser.ts +11 -0
- package/src/buffer-polyfill/buffer-polyfill.node.ts +15 -0
- package/src/buffer-polyfill/buffer.ts +2207 -0
- package/src/buffer-polyfill/index.ts +8 -0
- package/src/buffer-polyfill/install-buffer-polyfill.ts +3 -0
- package/src/index.ts +31 -17
- package/src/lib/geo/decode-geo-column.ts +54 -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 +39 -11
- package/src/parquet-loader.ts +29 -16
- package/src/parquet-wasm-loader.ts +13 -13
- package/src/parquet-wasm-writer.ts +10 -8
- package/src/parquet-writer.ts +1 -3
- 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 +63 -41
- package/src/parquetjs/parser/parquet-reader.ts +19 -14
- 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/bundle.js +0 -5
- package/dist/constants.d.ts.map +0 -1
- package/dist/constants.js +0 -18
- 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/index.js +0 -58
- package/dist/lib/arrow/convert-columns-to-row-group.d.ts.map +0 -1
- package/dist/lib/arrow/convert-columns-to-row-group.js +0 -1
- package/dist/lib/arrow/convert-row-group-to-columns.d.ts.map +0 -1
- package/dist/lib/arrow/convert-row-group-to-columns.js +0 -12
- package/dist/lib/arrow/convert-schema-from-parquet.d.ts.map +0 -1
- package/dist/lib/arrow/convert-schema-from-parquet.js +0 -86
- package/dist/lib/arrow/convert-schema-to-parquet.d.ts.map +0 -1
- package/dist/lib/arrow/convert-schema-to-parquet.js +0 -71
- 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/decode-geo-metadata.js +0 -77
- package/dist/lib/geo/geoparquet-schema.d.ts.map +0 -1
- package/dist/lib/geo/geoparquet-schema.js +0 -69
- 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-columns.js +0 -46
- 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/parsers/parse-parquet-to-rows.js +0 -37
- package/dist/lib/wasm/encode-parquet-wasm.d.ts.map +0 -1
- package/dist/lib/wasm/encode-parquet-wasm.js +0 -30
- package/dist/lib/wasm/load-wasm/index.d.ts.map +0 -1
- package/dist/lib/wasm/load-wasm/index.js +0 -5
- package/dist/lib/wasm/load-wasm/load-wasm-browser.d.ts.map +0 -1
- package/dist/lib/wasm/load-wasm/load-wasm-browser.js +0 -38
- package/dist/lib/wasm/load-wasm/load-wasm-node.d.ts.map +0 -1
- package/dist/lib/wasm/load-wasm/load-wasm-node.js +0 -31
- package/dist/lib/wasm/parse-parquet-wasm.d.ts.map +0 -1
- package/dist/lib/wasm/parse-parquet-wasm.js +0 -27
- package/dist/parquet-loader.d.ts +0 -14
- package/dist/parquet-loader.d.ts.map +0 -1
- package/dist/parquet-loader.js +0 -41
- package/dist/parquet-wasm-loader.d.ts +0 -23
- package/dist/parquet-wasm-loader.d.ts.map +0 -1
- package/dist/parquet-wasm-loader.js +0 -27
- package/dist/parquet-wasm-writer.d.ts +0 -3
- package/dist/parquet-wasm-writer.d.ts.map +0 -1
- package/dist/parquet-wasm-writer.js +0 -23
- package/dist/parquet-writer.d.ts.map +0 -1
- package/dist/parquet-writer.js +0 -22
- package/dist/parquetjs/codecs/declare.d.ts.map +0 -1
- package/dist/parquetjs/codecs/declare.js +0 -2
- package/dist/parquetjs/codecs/dictionary.d.ts.map +0 -1
- package/dist/parquetjs/codecs/dictionary.js +0 -14
- package/dist/parquetjs/codecs/index.d.ts.map +0 -1
- package/dist/parquetjs/codecs/index.js +0 -55
- package/dist/parquetjs/codecs/plain.d.ts.map +0 -1
- package/dist/parquetjs/codecs/plain.js +0 -211
- package/dist/parquetjs/codecs/rle.d.ts.map +0 -1
- package/dist/parquetjs/codecs/rle.js +0 -145
- package/dist/parquetjs/compression.d.ts.map +0 -1
- package/dist/parquetjs/compression.js +0 -183
- package/dist/parquetjs/encoder/parquet-encoder.d.ts.map +0 -1
- package/dist/parquetjs/encoder/parquet-encoder.js +0 -484
- package/dist/parquetjs/parquet-thrift/BoundaryOrder.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/BoundaryOrder.js +0 -15
- package/dist/parquetjs/parquet-thrift/BsonType.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/BsonType.js +0 -62
- package/dist/parquetjs/parquet-thrift/ColumnChunk.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/ColumnChunk.js +0 -211
- package/dist/parquetjs/parquet-thrift/ColumnIndex.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/ColumnIndex.js +0 -217
- package/dist/parquetjs/parquet-thrift/ColumnMetaData.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/ColumnMetaData.js +0 -402
- package/dist/parquetjs/parquet-thrift/ColumnOrder.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/ColumnOrder.js +0 -108
- package/dist/parquetjs/parquet-thrift/CompressionCodec.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/CompressionCodec.js +0 -20
- package/dist/parquetjs/parquet-thrift/ConvertedType.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/ConvertedType.js +0 -34
- package/dist/parquetjs/parquet-thrift/DataPageHeader.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/DataPageHeader.js +0 -170
- package/dist/parquetjs/parquet-thrift/DataPageHeaderV2.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/DataPageHeaderV2.js +0 -230
- package/dist/parquetjs/parquet-thrift/DateType.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/DateType.js +0 -62
- package/dist/parquetjs/parquet-thrift/DecimalType.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/DecimalType.js +0 -109
- package/dist/parquetjs/parquet-thrift/DictionaryPageHeader.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/DictionaryPageHeader.js +0 -126
- package/dist/parquetjs/parquet-thrift/Encoding.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/Encoding.js +0 -20
- package/dist/parquetjs/parquet-thrift/EnumType.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/EnumType.js +0 -62
- package/dist/parquetjs/parquet-thrift/FieldRepetitionType.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/FieldRepetitionType.js +0 -15
- package/dist/parquetjs/parquet-thrift/FileMetaData.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/FileMetaData.js +0 -260
- package/dist/parquetjs/parquet-thrift/IndexPageHeader.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/IndexPageHeader.js +0 -62
- package/dist/parquetjs/parquet-thrift/IntType.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/IntType.js +0 -109
- package/dist/parquetjs/parquet-thrift/JsonType.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/JsonType.js +0 -62
- package/dist/parquetjs/parquet-thrift/KeyValue.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/KeyValue.js +0 -106
- package/dist/parquetjs/parquet-thrift/ListType.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/ListType.js +0 -62
- package/dist/parquetjs/parquet-thrift/LogicalType.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/LogicalType.js +0 -384
- package/dist/parquetjs/parquet-thrift/MapType.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/MapType.js +0 -62
- package/dist/parquetjs/parquet-thrift/MicroSeconds.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/MicroSeconds.js +0 -62
- package/dist/parquetjs/parquet-thrift/MilliSeconds.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/MilliSeconds.js +0 -62
- package/dist/parquetjs/parquet-thrift/NullType.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/NullType.js +0 -62
- package/dist/parquetjs/parquet-thrift/OffsetIndex.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/OffsetIndex.js +0 -101
- package/dist/parquetjs/parquet-thrift/PageEncodingStats.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/PageEncodingStats.js +0 -131
- package/dist/parquetjs/parquet-thrift/PageHeader.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/PageHeader.js +0 -220
- package/dist/parquetjs/parquet-thrift/PageLocation.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/PageLocation.js +0 -145
- package/dist/parquetjs/parquet-thrift/PageType.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/PageType.js +0 -16
- package/dist/parquetjs/parquet-thrift/RowGroup.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/RowGroup.js +0 -186
- package/dist/parquetjs/parquet-thrift/SchemaElement.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/SchemaElement.js +0 -243
- package/dist/parquetjs/parquet-thrift/SortingColumn.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/SortingColumn.js +0 -131
- package/dist/parquetjs/parquet-thrift/Statistics.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/Statistics.js +0 -180
- package/dist/parquetjs/parquet-thrift/StringType.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/StringType.js +0 -62
- package/dist/parquetjs/parquet-thrift/TimeType.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/TimeType.js +0 -110
- package/dist/parquetjs/parquet-thrift/TimeUnit.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/TimeUnit.js +0 -131
- package/dist/parquetjs/parquet-thrift/TimestampType.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/TimestampType.js +0 -110
- package/dist/parquetjs/parquet-thrift/Type.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/Type.js +0 -20
- package/dist/parquetjs/parquet-thrift/TypeDefinedOrder.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/TypeDefinedOrder.js +0 -62
- package/dist/parquetjs/parquet-thrift/UUIDType.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/UUIDType.js +0 -62
- package/dist/parquetjs/parquet-thrift/index.d.ts.map +0 -1
- package/dist/parquetjs/parquet-thrift/index.js +0 -65
- package/dist/parquetjs/parser/decoders.d.ts.map +0 -1
- package/dist/parquetjs/parser/decoders.js +0 -318
- package/dist/parquetjs/parser/parquet-reader.d.ts.map +0 -1
- package/dist/parquetjs/parser/parquet-reader.js +0 -200
- package/dist/parquetjs/schema/declare.d.ts.map +0 -1
- package/dist/parquetjs/schema/declare.js +0 -12
- package/dist/parquetjs/schema/schema.d.ts.map +0 -1
- package/dist/parquetjs/schema/schema.js +0 -162
- package/dist/parquetjs/schema/shred.d.ts.map +0 -1
- package/dist/parquetjs/schema/shred.js +0 -355
- package/dist/parquetjs/schema/types.d.ts.map +0 -1
- package/dist/parquetjs/schema/types.js +0 -416
- package/dist/parquetjs/utils/file-utils.d.ts.map +0 -1
- package/dist/parquetjs/utils/file-utils.js +0 -43
- package/dist/parquetjs/utils/read-utils.d.ts.map +0 -1
- package/dist/parquetjs/utils/read-utils.js +0 -109
- package/dist/workers/parquet-worker.d.ts.map +0 -1
- package/dist/workers/parquet-worker.js +0 -5
- /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-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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rle.js","names":["_varint","_interopRequireDefault","require","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","varint","decode","buffer","encodingLength","_values","apply","_toConsumableArray2","default","decodeRunBitpacked","_values2","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","_interopRequireDefault","require","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","varint","decode","buffer","encodingLength","_values","apply","_toConsumableArray2","default","decodeRunBitpacked","_values2","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":";;;;;;;;;AAIA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AAGO,SAASC,YAAYA,CAC1BC,IAAmB,EACnBC,MAAa,EACbC,IAAyB,EACjB;EACR,IAAI,EAAE,UAAU,IAAIA,IAAI,CAAC,EAAE;IACzB,MAAM,IAAIC,KAAK,CAAC,sBAAsB,CAAC;EACzC;EAEA,QAAQH,IAAI;IACV,KAAK,SAAS;IACd,KAAK,OAAO;IACZ,KAAK,OAAO;MAEVC,MAAM,GAAGA,MAAM,CAACG,GAAG,CAAC,UAACC,CAAC;QAAA,OAAKC,QAAQ,CAACD,CAAC,EAAE,EAAE,CAAC;MAAA,EAAC;MAC3C;IAEF;MACE,MAAM,IAAIF,KAAK,sBAAAI,MAAA,CAAsBP,IAAI,CAAE,CAAC;EAChD;EAEA,IAAIQ,GAAG,GAAGC,MAAM,CAACC,KAAK,CAAC,CAAC,CAAC;EACzB,IAAIC,GAAU,GAAG,EAAE;EACnB,IAAIC,OAAO,GAAG,CAAC;EAEf,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGZ,MAAM,CAACa,MAAM,EAAED,CAAC,EAAE,EAAE;IAGtC,IAAID,OAAO,KAAK,CAAC,IAAID,GAAG,CAACG,MAAM,GAAG,CAAC,KAAK,CAAC,IAAIb,MAAM,CAACY,CAAC,CAAC,KAAKZ,MAAM,CAACY,CAAC,GAAG,CAAC,CAAC,EAAE;MAExE,IAAIF,GAAG,CAACG,MAAM,EAAE;QACdN,GAAG,GAAGC,MAAM,CAACF,MAAM,CAAC,CAACC,GAAG,EAAEO,kBAAkB,CAACJ,GAAG,EAAET,IAAI,CAAC,CAAC,CAAC;QACzDS,GAAG,GAAG,EAAE;MACV;MACAC,OAAO,GAAG,CAAC;IACb,CAAC,MAAM,IAAIA,OAAO,GAAG,CAAC,IAAIX,MAAM,CAACY,CAAC,CAAC,KAAKZ,MAAM,CAACY,CAAC,GAAG,CAAC,CAAC,EAAE;MACrDD,OAAO,IAAI,CAAC;IACd,CAAC,MAAM;MAEL,IAAIA,OAAO,EAAE;QACXJ,GAAG,GAAGC,MAAM,CAACF,MAAM,CAAC,CAACC,GAAG,EAAEQ,iBAAiB,CAACf,MAAM,CAACY,CAAC,GAAG,CAAC,CAAC,EAAED,OAAO,EAAEV,IAAI,CAAC,CAAC,CAAC;QAC3EU,OAAO,GAAG,CAAC;MACb;MACAD,GAAG,CAACM,IAAI,CAAChB,MAAM,CAACY,CAAC,CAAC,CAAC;IACrB;EACF;EAEA,IAAID,OAAO,EAAE;IACXJ,GAAG,GAAGC,MAAM,CAACF,MAAM,CAAC,CAACC,GAAG,EAAEQ,iBAAiB,CAACf,MAAM,CAACA,MAAM,CAACa,MAAM,GAAG,CAAC,CAAC,EAAEF,OAAO,EAAEV,IAAI,CAAC,CAAC,CAAC;EACzF,CAAC,MAAM,IAAIS,GAAG,CAACG,MAAM,EAAE;IACrBN,GAAG,GAAGC,MAAM,CAACF,MAAM,CAAC,CAACC,GAAG,EAAEO,kBAAkB,CAACJ,GAAG,EAAET,IAAI,CAAC,CAAC,CAAC;EAC3D;EAEA,IAAIA,IAAI,CAACgB,eAAe,EAAE;IACxB,OAAOV,GAAG;EACZ;EAEA,IAAMW,QAAQ,GAAGV,MAAM,CAACC,KAAK,CAACF,GAAG,CAACM,MAAM,GAAG,CAAC,CAAC;EAG7CK,QAAQ,CAACC,aAAa,CAACZ,GAAG,CAACM,MAAM,EAAEO,SAAS,CAAC;EAC7Cb,GAAG,CAACc,IAAI,CAACH,QAAQ,EAAE,CAAC,CAAC;EAErB,OAAOA,QAAQ;AACjB;AAEO,SAASI,YAAYA,CAC1BvB,IAAmB,EACnBwB,MAAoB,EACpBC,KAAa,EACbvB,IAAyB,EACf;EACV,IAAI,EAAE,UAAU,IAAIA,IAAI,CAAC,EAAE;IACzB,MAAM,IAAIC,KAAK,CAAC,sBAAsB,CAAC;EACzC;EAEA,IAAI,CAACD,IAAI,CAACgB,eAAe,EAAE;IACzBM,MAAM,CAACE,MAAM,IAAI,CAAC;EACpB;EAEA,IAAIzB,MAAgB,GAAG,EAAE;EACzB,OAAOA,MAAM,CAACa,MAAM,GAAGW,KAAK,EAAE;IAC5B,IAAME,MAAM,GAAGC,eAAM,CAACC,MAAM,CAACL,MAAM,CAACM,MAAM,EAAEN,MAAM,CAACE,MAAM,CAAC;IAC1DF,MAAM,CAACE,MAAM,IAAIE,eAAM,CAACG,cAAc,CAACJ,MAAM,CAAC;IAC9C,IAAIA,MAAM,GAAG,CAAC,EAAE;MAAA,IAAAK,OAAA;MACd,IAAMP,MAAK,GAAG,CAACE,MAAM,IAAI,CAAC,IAAI,CAAC;MAC/B,CAAAK,OAAA,GAAA/B,MAAM,EAACgB,IAAI,CAAAgB,KAAA,CAAAD,OAAA,MAAAE,mBAAA,CAAAC,OAAA,EAAIC,kBAAkB,CAACZ,MAAM,EAAEC,MAAK,EAAEvB,IAAI,CAAC,EAAC;IACzD,CAAC,MAAM;MAAA,IAAAmC,QAAA;MACL,IAAMZ,OAAK,GAAGE,MAAM,IAAI,CAAC;MACzB,CAAAU,QAAA,GAAApC,MAAM,EAACgB,IAAI,CAAAgB,KAAA,CAAAI,QAAA,MAAAH,mBAAA,CAAAC,OAAA,EAAIG,iBAAiB,CAACd,MAAM,EAAEC,OAAK,EAAEvB,IAAI,CAAC,EAAC;IACxD;EACF;EACAD,MAAM,GAAGA,MAAM,CAACsC,KAAK,CAAC,CAAC,EAAEd,KAAK,CAAC;EAE/B,IAAIxB,MAAM,CAACa,MAAM,KAAKW,KAAK,EAAE;IAC3B,MAAM,IAAItB,KAAK,CAAC,sBAAsB,CAAC;EACzC;EAEA,OAAOF,MAAM;AACf;AAEA,SAASmC,kBAAkBA,CACzBZ,MAAoB,EACpBC,KAAa,EACbvB,IAAyB,EACf;EAEV,IAAMsC,QAAgB,GAAGtC,IAAI,CAACsC,QAAQ;EAEtC,IAAIf,KAAK,GAAG,CAAC,KAAK,CAAC,EAAE;IACnB,MAAM,IAAItB,KAAK,CAAC,yBAAyB,CAAC;EAC5C;EAGA,IAAMF,MAAM,GAAG,IAAIwC,KAAK,CAAChB,KAAK,CAAC,CAACiB,IAAI,CAAC,CAAC,CAAC;EACvC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,QAAQ,GAAGf,KAAK,EAAEkB,CAAC,EAAE,EAAE;IACzC,IAAInB,MAAM,CAACM,MAAM,CAACN,MAAM,CAACE,MAAM,GAAGkB,IAAI,CAACC,KAAK,CAACF,CAAC,GAAG,CAAC,CAAC,CAAC,GAAI,CAAC,IAAIA,CAAC,GAAG,CAAE,EAAE;MACnE1C,MAAM,CAAC2C,IAAI,CAACC,KAAK,CAACF,CAAC,GAAGH,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAIG,CAAC,GAAGH,QAAQ;IACvD;EACF;EAEAhB,MAAM,CAACE,MAAM,IAAIc,QAAQ,IAAIf,KAAK,GAAG,CAAC,CAAC;EACvC,OAAOxB,MAAM;AACf;AAEA,SAASqC,iBAAiBA,CACxBd,MAAoB,EACpBC,KAAa,EACbvB,IAAyB,EACf;EAEV,IAAMsC,QAAgB,GAAGtC,IAAI,CAACsC,QAAQ;EAEtC,IAAIM,KAAK,GAAG,CAAC;EACb,KAAK,IAAIjC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+B,IAAI,CAACG,IAAI,CAACP,QAAQ,GAAG,CAAC,CAAC,EAAE3B,CAAC,EAAE,EAAE;IAEhDiC,KAAK,IAAI,CAAC;IACVA,KAAK,IAAItB,MAAM,CAACM,MAAM,CAACN,MAAM,CAACE,MAAM,CAAC;IACrCF,MAAM,CAACE,MAAM,IAAI,CAAC;EACpB;EAGA,OAAO,IAAIe,KAAK,CAAChB,KAAK,CAAC,CAACiB,IAAI,CAACI,KAAK,CAAC;AACrC;AAEA,SAAS/B,kBAAkBA,CAACd,MAAgB,EAAEC,IAAyB,EAAU;EAE/E,IAAMsC,QAAgB,GAAGtC,IAAI,CAACsC,QAAQ;EAEtC,KAAK,IAAI3B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGZ,MAAM,CAACa,MAAM,GAAG,CAAC,EAAED,CAAC,EAAE,EAAE;IAC1CZ,MAAM,CAACgB,IAAI,CAAC,CAAC,CAAC;EAChB;EAEA,IAAMT,GAAG,GAAGC,MAAM,CAACC,KAAK,CAACkC,IAAI,CAACG,IAAI,CAACP,QAAQ,IAAIvC,MAAM,CAACa,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;EACnE,KAAK,IAAI6B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,QAAQ,GAAGvC,MAAM,CAACa,MAAM,EAAE6B,CAAC,EAAE,EAAE;IACjD,IAAI,CAAC1C,MAAM,CAAC2C,IAAI,CAACC,KAAK,CAACF,CAAC,GAAGH,QAAQ,CAAC,CAAC,GAAI,CAAC,IAAIG,CAAC,GAAGH,QAAS,IAAI,CAAC,EAAE;MAChEhC,GAAG,CAACoC,IAAI,CAACC,KAAK,CAACF,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAIA,CAAC,GAAG,CAAC;IACtC;EACF;EAEA,OAAOlC,MAAM,CAACF,MAAM,CAAC,CAACE,MAAM,CAACuC,IAAI,CAACpB,eAAM,CAACqB,MAAM,CAAGhD,MAAM,CAACa,MAAM,GAAG,CAAC,IAAK,CAAC,GAAI,CAAC,CAAC,CAAC,EAAEN,GAAG,CAAC,CAAC;AACzF;AAEA,SAASQ,iBAAiBA,CAAC8B,KAAa,EAAErB,KAAa,EAAEvB,IAAyB,EAAU;EAE1F,IAAMsC,QAAgB,GAAGtC,IAAI,CAACsC,QAAQ;EAEtC,IAAMhC,GAAG,GAAGC,MAAM,CAACC,KAAK,CAACkC,IAAI,CAACG,IAAI,CAACP,QAAQ,GAAG,CAAC,CAAC,CAAC;EAEjD,KAAK,IAAI3B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGL,GAAG,CAACM,MAAM,EAAED,CAAC,EAAE,EAAE;IACnCL,GAAG,CAAC0C,UAAU,CAACJ,KAAK,GAAG,IAAI,EAAEjC,CAAC,CAAC;IAE/BiC,KAAK,IAAI,CAAC;EACZ;EAEA,OAAOrC,MAAM,CAACF,MAAM,CAAC,CAACE,MAAM,CAACuC,IAAI,CAACpB,eAAM,CAACqB,MAAM,CAACxB,KAAK,IAAI,CAAC,CAAC,CAAC,EAAEjB,GAAG,CAAC,CAAC;AACrE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parquet-encoder.js","names":["_codecs","require","Compression","_interopRequireWildcard","Shred","_parquetThrift","_fileUtils","_readUtils","_nodeInt","_interopRequireDefault","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","step","next","_e2","return","minLen","_arrayLikeToArray","toString","slice","constructor","name","from","test","arr","len","arr2","PARQUET_MAGIC","PARQUET_VERSION","PARQUET_DEFAULT_PAGE_SIZE","PARQUET_DEFAULT_ROW_GROUP_SIZE","PARQUET_RDLVL_TYPE","PARQUET_RDLVL_ENCODING","ParquetEncoder","schema","envelopeWriter","opts","_classCallCheck2","_defineProperty2","rowBuffer","rowGroupSize","closed","userMetadata","writeHeader","_createClass2","_writeHeader","_asyncToGenerator2","_regenerator","mark","_callee","wrap","_callee$","_context","prev","t0","close","stop","apply","arguments","_appendRow","_callee2","row","_callee2$","_context2","Error","shredRecord","rowCount","appendRow","_x","_close","_callee3","callback","_callee3$","_context3","writeFooter","_x2","setMetadata","String","setRowGroupSize","cnt","setPageSize","_openFile","_callee4","path","outputStream","_callee4$","_context4","osopen","sent","abrupt","openStream","openFile","_x3","_x4","_x5","_openStream","_callee5","_args5","_callee5$","_context5","undefined","ParquetEnvelopeWriter","_x6","_x7","exports","writeFn","closeFn","fileOffset","write","offset","rowGroups","pageSize","useDataPageV2","Boolean","writeSection","buf","Buffer","_writeRowGroup","_callee6","records","rgroup","_callee6$","_context6","encodeRowGroup","baseOffset","push","metadata","body","writeRowGroup","_x8","encodeFooter","_openStream2","_callee7","_callee7$","_context7","oswrite","bind","osclose","_x9","_x10","_x11","encodeValues","type","encoding","values","PARQUET_CODECS","concat","encodeDataPage","_x12","_x13","_encodeDataPage","_callee8","column","data","rLevelsBuf","dLevelsBuf","valuesBuf","dataBuf","compressedBuf","header","headerBuf","page","_callee8$","_context8","alloc","rLevelMax","rlevels","bitWidth","getBitWidth","dLevelMax","dlevels","primitiveType","typeLength","deflate","compression","PageHeader","PageType","DATA_PAGE","data_page_header","DataPageHeader","num_values","count","Encoding","definition_level_encoding","repetition_level_encoding","uncompressed_page_size","compressed_page_size","serializeThrift","headerSize","encodeDataPageV2","_x14","_x15","_x16","_encodeDataPageV","_callee9","_callee9$","_context9","disableEnvelope","DATA_PAGE_V2","data_page_header_v2","DataPageHeaderV2","num_nulls","num_rows","definition_levels_byte_length","repetition_levels_byte_length","is_compressed","encodeColumnChunk","_x17","_x18","_x19","_x20","_encodeColumnChunk","_callee10","buffer","pageBuf","total_uncompressed_size","total_compressed_size","result","metadataOffset","_callee10$","_context10","columnData","join","ColumnMetaData","path_in_schema","data_page_offset","encodings","Type","codec","CompressionCodec","_x21","_x22","_x23","_encodeRowGroup","_callee11","_iterator2","_step2","field","cchunkData","cchunk","_callee11$","_context11","RowGroup","columns","total_byte_size","fieldList","isNested","ColumnChunk","file_offset","meta_data","Int64","Number","finish","FileMetaData","version","created_by","row_groups","key_value_metadata","_metadata$key_value_m","_metadata$key_value_m2","_metadata$key_value_m3","kv","KeyValue","schemaRoot","SchemaElement","num_children","keys","fields","_iterator","_step","relt","FieldRepetitionType","repetitionType","schemaElem","repetition_type","fieldCount","originalType","converted_type","ConvertedType","type_length","metadataEncoded","footerEncoded","copy","writeUInt32LE"],"sources":["../../../../src/parquetjs/encoder/parquet-encoder.ts"],"sourcesContent":["// Forked from https://github.com/kbajalc/parquets under MIT license (Copyright (c) 2017 ironSource Ltd.)\n/* eslint-disable camelcase */\nimport {stream} from '@loaders.gl/loader-utils';\nimport {ParquetCodecOptions, PARQUET_CODECS} from '../codecs';\nimport * as Compression from '../compression';\nimport {\n ParquetRowGroup,\n ParquetCodec,\n ParquetColumnChunk,\n ParquetField,\n PrimitiveType,\n ParquetRow\n} from '../schema/declare';\nimport {ParquetSchema} from '../schema/schema';\nimport * as Shred from '../schema/shred';\nimport {\n ColumnChunk,\n ColumnMetaData,\n CompressionCodec,\n ConvertedType,\n DataPageHeader,\n DataPageHeaderV2,\n Encoding,\n FieldRepetitionType,\n FileMetaData,\n KeyValue,\n PageHeader,\n PageType,\n RowGroup,\n SchemaElement,\n Type\n} from '../parquet-thrift';\nimport {osopen, oswrite, osclose} from '../utils/file-utils';\nimport {getBitWidth, serializeThrift} from '../utils/read-utils';\nimport Int64 from 'node-int64';\n\n/**\n * Parquet File Magic String\n */\nconst PARQUET_MAGIC = 'PAR1';\n\n/**\n * Parquet File Format Version\n */\nconst PARQUET_VERSION = 1;\n\n/**\n * Default Page and Row Group sizes\n */\nconst PARQUET_DEFAULT_PAGE_SIZE = 8192;\nconst PARQUET_DEFAULT_ROW_GROUP_SIZE = 4096;\n\n/**\n * Repetition and Definition Level Encoding\n */\nconst PARQUET_RDLVL_TYPE = 'INT32';\nconst PARQUET_RDLVL_ENCODING = 'RLE';\n\nexport interface ParquetEncoderOptions {\n baseOffset?: number;\n rowGroupSize?: number;\n pageSize?: number;\n useDataPageV2?: boolean;\n\n // Write Stream Options\n flags?: string;\n encoding?: string;\n fd?: number;\n mode?: number;\n autoClose?: boolean;\n start?: number;\n}\n\n/**\n * Write a parquet file to an output stream. The ParquetEncoder will perform\n * buffering/batching for performance, so close() must be called after all rows\n * are written.\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport class ParquetEncoder<T> {\n /**\n * Convenience method to create a new buffered parquet writer that writes to\n * the specified file\n */\n static async openFile<T>(\n schema: ParquetSchema,\n path: string,\n opts?: ParquetEncoderOptions\n ): Promise<ParquetEncoder<T>> {\n const outputStream = await osopen(path, opts);\n return ParquetEncoder.openStream(schema, outputStream, opts);\n }\n\n /**\n * Convenience method to create a new buffered parquet writer that writes to\n * the specified stream\n */\n static async openStream<T>(\n schema: ParquetSchema,\n outputStream: stream.Writable,\n opts: ParquetEncoderOptions = {}\n ): Promise<ParquetEncoder<T>> {\n const envelopeWriter = await ParquetEnvelopeWriter.openStream(schema, outputStream, opts);\n return new ParquetEncoder(schema, envelopeWriter, opts);\n }\n\n public schema: ParquetSchema;\n public envelopeWriter: ParquetEnvelopeWriter;\n public rowBuffer: ParquetRowGroup;\n public rowGroupSize: number;\n public closed: boolean;\n public userMetadata: Record<string, string>;\n\n /**\n * Create a new buffered parquet writer for a given envelope writer\n */\n constructor(\n schema: ParquetSchema,\n envelopeWriter: ParquetEnvelopeWriter,\n opts: ParquetEncoderOptions\n ) {\n this.schema = schema;\n this.envelopeWriter = envelopeWriter;\n // @ts-ignore Row buffer typings...\n this.rowBuffer = {};\n this.rowGroupSize = opts.rowGroupSize || PARQUET_DEFAULT_ROW_GROUP_SIZE;\n this.closed = false;\n this.userMetadata = {};\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.writeHeader();\n }\n\n async writeHeader(): Promise<void> {\n // TODO - better not mess with promises in the constructor\n try {\n await this.envelopeWriter.writeHeader();\n } catch (err) {\n await this.envelopeWriter.close();\n throw err;\n }\n }\n\n /**\n * Append a single row to the parquet file. Rows are buffered in memory until\n * rowGroupSize rows are in the buffer or close() is called\n */\n async appendRow<T extends ParquetRow>(row: T): Promise<void> {\n if (this.closed) {\n throw new Error('writer was closed');\n }\n Shred.shredRecord(this.schema, row, this.rowBuffer);\n if (this.rowBuffer.rowCount >= this.rowGroupSize) {\n // @ts-ignore\n this.rowBuffer = {};\n }\n }\n\n /**\n * Finish writing the parquet file and commit the footer to disk. This method\n * MUST be called after you are finished adding rows. You must not call this\n * method twice on the same object or add any rows after the close() method has\n * been called\n */\n async close(callback?: () => void): Promise<void> {\n if (this.closed) {\n throw new Error('writer was closed');\n }\n\n this.closed = true;\n\n if (this.rowBuffer.rowCount > 0 || this.rowBuffer.rowCount >= this.rowGroupSize) {\n // @ts-ignore\n this.rowBuffer = {};\n }\n\n await this.envelopeWriter.writeFooter(this.userMetadata);\n await this.envelopeWriter.close();\n // this.envelopeWriter = null;\n\n if (callback) {\n callback();\n }\n }\n\n /**\n * Add key<>value metadata to the file\n */\n setMetadata(key: string, value: string): void {\n // TODO: value to be any, obj -> JSON\n this.userMetadata[String(key)] = String(value);\n }\n\n /**\n * Set the parquet row group size. This values controls the maximum number\n * of rows that are buffered in memory at any given time as well as the number\n * of rows that are co-located on disk. A higher value is generally better for\n * read-time I/O performance at the tradeoff of write-time memory usage.\n */\n setRowGroupSize(cnt: number): void {\n this.rowGroupSize = cnt;\n }\n\n /**\n * Set the parquet data page size. The data page size controls the maximum\n * number of column values that are written to disk as a consecutive array\n */\n setPageSize(cnt: number): void {\n this.envelopeWriter.setPageSize(cnt);\n }\n}\n\n/**\n * Create a parquet file from a schema and a number of row groups. This class\n * performs direct, unbuffered writes to the underlying output stream and is\n * intendend for advanced and internal users; the writeXXX methods must be\n * called in the correct order to produce a valid file.\n */\nexport class ParquetEnvelopeWriter {\n /**\n * Create a new parquet envelope writer that writes to the specified stream\n */\n static async openStream(\n schema: ParquetSchema,\n outputStream: stream.Writable,\n opts: ParquetEncoderOptions\n ): Promise<ParquetEnvelopeWriter> {\n const writeFn = oswrite.bind(undefined, outputStream);\n const closeFn = osclose.bind(undefined, outputStream);\n return new ParquetEnvelopeWriter(schema, writeFn, closeFn, 0, opts);\n }\n\n public schema: ParquetSchema;\n public write: (buf: Buffer) => Promise<void>;\n public close: () => Promise<void>;\n public offset: number;\n public rowCount: number;\n public rowGroups: RowGroup[];\n public pageSize: number;\n public useDataPageV2: boolean;\n\n constructor(\n schema: ParquetSchema,\n writeFn: (buf: Buffer) => Promise<void>,\n closeFn: () => Promise<void>,\n fileOffset: number,\n opts: ParquetEncoderOptions\n ) {\n this.schema = schema;\n this.write = writeFn;\n this.close = closeFn;\n this.offset = fileOffset;\n this.rowCount = 0;\n this.rowGroups = [];\n this.pageSize = opts.pageSize || PARQUET_DEFAULT_PAGE_SIZE;\n this.useDataPageV2 = 'useDataPageV2' in opts ? Boolean(opts.useDataPageV2) : false;\n }\n\n writeSection(buf: Buffer): Promise<void> {\n this.offset += buf.length;\n return this.write(buf);\n }\n\n /**\n * Encode the parquet file header\n */\n writeHeader(): Promise<void> {\n return this.writeSection(Buffer.from(PARQUET_MAGIC));\n }\n\n /**\n * Encode a parquet row group. The records object should be created using the\n * shredRecord method\n */\n async writeRowGroup(records: ParquetRowGroup): Promise<void> {\n const rgroup = await encodeRowGroup(this.schema, records, {\n baseOffset: this.offset,\n pageSize: this.pageSize,\n useDataPageV2: this.useDataPageV2\n });\n\n this.rowCount += records.rowCount;\n this.rowGroups.push(rgroup.metadata);\n return await this.writeSection(rgroup.body);\n }\n\n /**\n * Write the parquet file footer\n */\n writeFooter(userMetadata: Record<string, string>): Promise<void> {\n if (!userMetadata) {\n // tslint:disable-next-line:no-parameter-reassignment\n userMetadata = {};\n }\n\n return this.writeSection(\n encodeFooter(this.schema, this.rowCount, this.rowGroups, userMetadata)\n );\n }\n\n /**\n * Set the parquet data page size. The data page size controls the maximum\n * number of column values that are written to disk as a consecutive array\n */\n setPageSize(cnt: number): void {\n this.pageSize = cnt;\n }\n}\n\n/**\n * Create a parquet transform stream\nexport class ParquetTransformer<T> extends stream.Transform {\n public writer: ParquetEncoder<T>;\n\n constructor(schema: ParquetSchema, opts: ParquetEncoderOptions = {}) {\n super({objectMode: true});\n\n const writeProxy = (function (t: ParquetTransformer<any>) {\n return async function (b: any): Promise<void> {\n t.push(b);\n };\n })(this);\n\n this.writer = new ParquetEncoder(\n schema,\n new ParquetEnvelopeWriter(schema, writeProxy, async () => {}, 0, opts),\n opts\n );\n }\n\n // tslint:disable-next-line:function-name\n _transform(row: any, encoding: string, callback: (val?: any) => void): Promise<void> {\n if (row) {\n return this.writer.appendRow(row).then(callback);\n }\n callback();\n return Promise.resolve();\n }\n\n // tslint:disable-next-line:function-name\n async _flush(callback: (val?: any) => void) {\n await this.writer.close(callback);\n }\n}\n */\n\n/**\n * Encode a consecutive array of data using one of the parquet encodings\n */\nfunction encodeValues(\n type: PrimitiveType,\n encoding: ParquetCodec,\n values: any[],\n opts: ParquetCodecOptions\n) {\n if (!(encoding in PARQUET_CODECS)) {\n throw new Error(`invalid encoding: ${encoding}`);\n }\n return PARQUET_CODECS[encoding].encodeValues(type, values, opts);\n}\n\n/**\n * Encode a parquet data page\n */\nasync function encodeDataPage(\n column: ParquetField,\n data: ParquetColumnChunk\n): Promise<{\n header: PageHeader;\n headerSize: number;\n page: Buffer;\n}> {\n /* encode repetition and definition levels */\n let rLevelsBuf = Buffer.alloc(0);\n if (column.rLevelMax > 0) {\n rLevelsBuf = encodeValues(PARQUET_RDLVL_TYPE, PARQUET_RDLVL_ENCODING, data.rlevels, {\n bitWidth: getBitWidth(column.rLevelMax)\n // disableEnvelope: false\n });\n }\n\n let dLevelsBuf = Buffer.alloc(0);\n if (column.dLevelMax > 0) {\n dLevelsBuf = encodeValues(PARQUET_RDLVL_TYPE, PARQUET_RDLVL_ENCODING, data.dlevels, {\n bitWidth: getBitWidth(column.dLevelMax)\n // disableEnvelope: false\n });\n }\n\n /* encode values */\n const valuesBuf = encodeValues(column.primitiveType!, column.encoding!, data.values, {\n typeLength: column.typeLength,\n bitWidth: column.typeLength\n });\n\n const dataBuf = Buffer.concat([rLevelsBuf, dLevelsBuf, valuesBuf]);\n\n // compression = column.compression === 'UNCOMPRESSED' ? (compression || 'UNCOMPRESSED') : column.compression;\n const compressedBuf = await Compression.deflate(column.compression!, dataBuf);\n\n /* build page header */\n const header = new PageHeader({\n type: PageType.DATA_PAGE,\n data_page_header: new DataPageHeader({\n num_values: data.count,\n encoding: Encoding[column.encoding!] as any,\n definition_level_encoding: Encoding[PARQUET_RDLVL_ENCODING], // [PARQUET_RDLVL_ENCODING],\n repetition_level_encoding: Encoding[PARQUET_RDLVL_ENCODING] // [PARQUET_RDLVL_ENCODING]\n }),\n uncompressed_page_size: dataBuf.length,\n compressed_page_size: compressedBuf.length\n });\n\n /* concat page header, repetition and definition levels and values */\n const headerBuf = serializeThrift(header);\n const page = Buffer.concat([headerBuf, compressedBuf]);\n\n return {header, headerSize: headerBuf.length, page};\n}\n\n/**\n * Encode a parquet data page (v2)\n */\nasync function encodeDataPageV2(\n column: ParquetField,\n data: ParquetColumnChunk,\n rowCount: number\n): Promise<{\n header: PageHeader;\n headerSize: number;\n page: Buffer;\n}> {\n /* encode values */\n const valuesBuf = encodeValues(column.primitiveType!, column.encoding!, data.values, {\n typeLength: column.typeLength,\n bitWidth: column.typeLength\n });\n\n // compression = column.compression === 'UNCOMPRESSED' ? (compression || 'UNCOMPRESSED') : column.compression;\n const compressedBuf = await Compression.deflate(column.compression!, valuesBuf);\n\n /* encode repetition and definition levels */\n let rLevelsBuf = Buffer.alloc(0);\n if (column.rLevelMax > 0) {\n rLevelsBuf = encodeValues(PARQUET_RDLVL_TYPE, PARQUET_RDLVL_ENCODING, data.rlevels, {\n bitWidth: getBitWidth(column.rLevelMax),\n disableEnvelope: true\n });\n }\n\n let dLevelsBuf = Buffer.alloc(0);\n if (column.dLevelMax > 0) {\n dLevelsBuf = encodeValues(PARQUET_RDLVL_TYPE, PARQUET_RDLVL_ENCODING, data.dlevels, {\n bitWidth: getBitWidth(column.dLevelMax),\n disableEnvelope: true\n });\n }\n\n /* build page header */\n const header = new PageHeader({\n type: PageType.DATA_PAGE_V2,\n data_page_header_v2: new DataPageHeaderV2({\n num_values: data.count,\n num_nulls: data.count - data.values.length,\n num_rows: rowCount,\n encoding: Encoding[column.encoding!] as any,\n definition_levels_byte_length: dLevelsBuf.length,\n repetition_levels_byte_length: rLevelsBuf.length,\n is_compressed: column.compression !== 'UNCOMPRESSED'\n }),\n uncompressed_page_size: rLevelsBuf.length + dLevelsBuf.length + valuesBuf.length,\n compressed_page_size: rLevelsBuf.length + dLevelsBuf.length + compressedBuf.length\n });\n\n /* concat page header, repetition and definition levels and values */\n const headerBuf = serializeThrift(header);\n const page = Buffer.concat([headerBuf, rLevelsBuf, dLevelsBuf, compressedBuf]);\n return {header, headerSize: headerBuf.length, page};\n}\n\n/**\n * Encode an array of values into a parquet column chunk\n */\nasync function encodeColumnChunk(\n column: ParquetField,\n buffer: ParquetRowGroup,\n offset: number,\n opts: ParquetEncoderOptions\n): Promise<{\n body: Buffer;\n metadata: ColumnMetaData;\n metadataOffset: number;\n}> {\n const data = buffer.columnData[column.path.join()];\n const baseOffset = (opts.baseOffset || 0) + offset;\n /* encode data page(s) */\n // const pages: Buffer[] = [];\n let pageBuf: Buffer;\n // tslint:disable-next-line:variable-name\n let total_uncompressed_size = 0;\n // tslint:disable-next-line:variable-name\n let total_compressed_size = 0;\n {\n const result = opts.useDataPageV2\n ? await encodeDataPageV2(column, data, buffer.rowCount)\n : await encodeDataPage(column, data);\n // pages.push(result.page);\n pageBuf = result.page;\n total_uncompressed_size += result.header.uncompressed_page_size + result.headerSize;\n total_compressed_size += result.header.compressed_page_size + result.headerSize;\n }\n\n // const pagesBuf = Buffer.concat(pages);\n // const compression = column.compression === 'UNCOMPRESSED' ? (opts.compression || 'UNCOMPRESSED') : column.compression;\n\n /* prepare metadata header */\n const metadata = new ColumnMetaData({\n path_in_schema: column.path,\n num_values: data.count,\n data_page_offset: baseOffset,\n encodings: [],\n total_uncompressed_size, // : pagesBuf.length,\n total_compressed_size,\n type: Type[column.primitiveType!],\n codec: CompressionCodec[column.compression!]\n });\n\n /* list encodings */\n metadata.encodings.push(Encoding[PARQUET_RDLVL_ENCODING]);\n metadata.encodings.push(Encoding[column.encoding!]);\n\n /* concat metadata header and data pages */\n const metadataOffset = baseOffset + pageBuf.length;\n const body = Buffer.concat([pageBuf, serializeThrift(metadata)]);\n return {body, metadata, metadataOffset};\n}\n\n/**\n * Encode a list of column values into a parquet row group\n */\nasync function encodeRowGroup(\n schema: ParquetSchema,\n data: ParquetRowGroup,\n opts: ParquetEncoderOptions\n): Promise<{\n body: Buffer;\n metadata: RowGroup;\n}> {\n const metadata = new RowGroup({\n num_rows: data.rowCount,\n columns: [],\n total_byte_size: 0\n });\n\n let body = Buffer.alloc(0);\n for (const field of schema.fieldList) {\n if (field.isNested) {\n continue; // eslint-disable-line no-continue\n }\n\n const cchunkData = await encodeColumnChunk(field, data, body.length, opts);\n\n const cchunk = new ColumnChunk({\n file_offset: cchunkData.metadataOffset,\n meta_data: cchunkData.metadata\n });\n\n metadata.columns.push(cchunk);\n metadata.total_byte_size = new Int64(Number(metadata.total_byte_size) + cchunkData.body.length);\n\n body = Buffer.concat([body, cchunkData.body]);\n }\n\n return {body, metadata};\n}\n\n/**\n * Encode a parquet file metadata footer\n */\nfunction encodeFooter(\n schema: ParquetSchema,\n rowCount: number,\n rowGroups: RowGroup[],\n userMetadata: Record<string, string>\n): Buffer {\n const metadata = new FileMetaData({\n version: PARQUET_VERSION,\n created_by: 'parquets',\n num_rows: rowCount,\n row_groups: rowGroups,\n schema: [],\n key_value_metadata: []\n });\n\n for (const key in userMetadata) {\n const kv = new KeyValue({\n key,\n value: userMetadata[key]\n });\n metadata.key_value_metadata?.push?.(kv);\n }\n\n {\n const schemaRoot = new SchemaElement({\n name: 'root',\n num_children: Object.keys(schema.fields).length\n });\n metadata.schema.push(schemaRoot);\n }\n\n for (const field of schema.fieldList) {\n const relt = FieldRepetitionType[field.repetitionType];\n const schemaElem = new SchemaElement({\n name: field.name,\n repetition_type: relt as any\n });\n\n if (field.isNested) {\n schemaElem.num_children = field.fieldCount;\n } else {\n schemaElem.type = Type[field.primitiveType!] as Type;\n }\n\n if (field.originalType) {\n schemaElem.converted_type = ConvertedType[field.originalType] as ConvertedType;\n }\n\n schemaElem.type_length = field.typeLength;\n\n metadata.schema.push(schemaElem);\n }\n\n const metadataEncoded = serializeThrift(metadata);\n const footerEncoded = Buffer.alloc(metadataEncoded.length + 8);\n metadataEncoded.copy(footerEncoded);\n footerEncoded.writeUInt32LE(metadataEncoded.length, metadataEncoded.length);\n footerEncoded.write(PARQUET_MAGIC, metadataEncoded.length + 4);\n return footerEncoded;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parquet-encoder.js","names":["_codecs","require","Compression","_interopRequireWildcard","Shred","_parquetThrift","_fileUtils","_readUtils","_nodeInt","_interopRequireDefault","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","step","next","_e2","return","minLen","_arrayLikeToArray","toString","slice","constructor","name","from","test","arr","len","arr2","PARQUET_MAGIC","PARQUET_VERSION","PARQUET_DEFAULT_PAGE_SIZE","PARQUET_DEFAULT_ROW_GROUP_SIZE","PARQUET_RDLVL_TYPE","PARQUET_RDLVL_ENCODING","ParquetEncoder","schema","envelopeWriter","opts","_classCallCheck2","_defineProperty2","rowBuffer","rowGroupSize","closed","userMetadata","writeHeader","_createClass2","_writeHeader","_asyncToGenerator2","_regenerator","mark","_callee","wrap","_callee$","_context","prev","t0","close","stop","apply","arguments","_appendRow","_callee2","row","_callee2$","_context2","Error","shredRecord","rowCount","appendRow","_x","_close","_callee3","callback","_callee3$","_context3","writeFooter","_x2","setMetadata","String","setRowGroupSize","cnt","setPageSize","_openFile","_callee4","path","outputStream","_callee4$","_context4","osopen","sent","abrupt","openStream","openFile","_x3","_x4","_x5","_openStream","_callee5","_args5","_callee5$","_context5","undefined","ParquetEnvelopeWriter","_x6","_x7","exports","writeFn","closeFn","fileOffset","write","offset","rowGroups","pageSize","useDataPageV2","Boolean","writeSection","buf","Buffer","_writeRowGroup","_callee6","records","rgroup","_callee6$","_context6","encodeRowGroup","baseOffset","push","metadata","body","writeRowGroup","_x8","encodeFooter","_openStream2","_callee7","_callee7$","_context7","oswrite","bind","osclose","_x9","_x10","_x11","encodeValues","type","encoding","values","PARQUET_CODECS","concat","encodeDataPage","_x12","_x13","_encodeDataPage","_callee8","column","data","rLevelsBuf","dLevelsBuf","valuesBuf","dataBuf","compressedBuf","header","headerBuf","page","_callee8$","_context8","alloc","rLevelMax","rlevels","bitWidth","getBitWidth","dLevelMax","dlevels","primitiveType","typeLength","deflate","compression","PageHeader","PageType","DATA_PAGE","data_page_header","DataPageHeader","num_values","count","Encoding","definition_level_encoding","repetition_level_encoding","uncompressed_page_size","compressed_page_size","serializeThrift","headerSize","encodeDataPageV2","_x14","_x15","_x16","_encodeDataPageV","_callee9","_callee9$","_context9","disableEnvelope","DATA_PAGE_V2","data_page_header_v2","DataPageHeaderV2","num_nulls","num_rows","definition_levels_byte_length","repetition_levels_byte_length","is_compressed","encodeColumnChunk","_x17","_x18","_x19","_x20","_encodeColumnChunk","_callee10","buffer","pageBuf","total_uncompressed_size","total_compressed_size","result","metadataOffset","_callee10$","_context10","columnData","join","ColumnMetaData","path_in_schema","data_page_offset","encodings","Type","codec","CompressionCodec","_x21","_x22","_x23","_encodeRowGroup","_callee11","_iterator2","_step2","field","cchunkData","cchunk","_callee11$","_context11","RowGroup","columns","total_byte_size","fieldList","isNested","ColumnChunk","file_offset","meta_data","Int64","Number","finish","FileMetaData","version","created_by","row_groups","key_value_metadata","_metadata$key_value_m","_metadata$key_value_m2","_metadata$key_value_m3","kv","KeyValue","schemaRoot","SchemaElement","num_children","keys","fields","_iterator","_step","relt","FieldRepetitionType","repetitionType","schemaElem","repetition_type","fieldCount","originalType","converted_type","ConvertedType","type_length","metadataEncoded","footerEncoded","copy","writeUInt32LE"],"sources":["../../../../src/parquetjs/encoder/parquet-encoder.ts"],"sourcesContent":["// Forked from https://github.com/kbajalc/parquets under MIT license (Copyright (c) 2017 ironSource Ltd.)\n/* eslint-disable camelcase */\nimport {stream} from '@loaders.gl/loader-utils';\nimport {ParquetCodecOptions, PARQUET_CODECS} from '../codecs';\nimport * as Compression from '../compression';\nimport {\n ParquetRowGroup,\n ParquetCodec,\n ParquetColumnChunk,\n ParquetField,\n PrimitiveType,\n ParquetRow\n} from '../schema/declare';\nimport {ParquetSchema} from '../schema/schema';\nimport * as Shred from '../schema/shred';\nimport {\n ColumnChunk,\n ColumnMetaData,\n CompressionCodec,\n ConvertedType,\n DataPageHeader,\n DataPageHeaderV2,\n Encoding,\n FieldRepetitionType,\n FileMetaData,\n KeyValue,\n PageHeader,\n PageType,\n RowGroup,\n SchemaElement,\n Type\n} from '../parquet-thrift';\nimport {osopen, oswrite, osclose} from '../utils/file-utils';\nimport {getBitWidth, serializeThrift} from '../utils/read-utils';\nimport Int64 from 'node-int64';\n\n/**\n * Parquet File Magic String\n */\nconst PARQUET_MAGIC = 'PAR1';\n\n/**\n * Parquet File Format Version\n */\nconst PARQUET_VERSION = 1;\n\n/**\n * Default Page and Row Group sizes\n */\nconst PARQUET_DEFAULT_PAGE_SIZE = 8192;\nconst PARQUET_DEFAULT_ROW_GROUP_SIZE = 4096;\n\n/**\n * Repetition and Definition Level Encoding\n */\nconst PARQUET_RDLVL_TYPE = 'INT32';\nconst PARQUET_RDLVL_ENCODING = 'RLE';\n\nexport interface ParquetEncoderOptions {\n baseOffset?: number;\n rowGroupSize?: number;\n pageSize?: number;\n useDataPageV2?: boolean;\n\n // Write Stream Options\n flags?: string;\n encoding?: string;\n fd?: number;\n mode?: number;\n autoClose?: boolean;\n start?: number;\n}\n\n/**\n * Write a parquet file to an output stream. The ParquetEncoder will perform\n * buffering/batching for performance, so close() must be called after all rows\n * are written.\n */\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport class ParquetEncoder<T> {\n /**\n * Convenience method to create a new buffered parquet writer that writes to\n * the specified file\n */\n static async openFile<T>(\n schema: ParquetSchema,\n path: string,\n opts?: ParquetEncoderOptions\n ): Promise<ParquetEncoder<T>> {\n const outputStream = await osopen(path, opts);\n return ParquetEncoder.openStream(schema, outputStream, opts);\n }\n\n /**\n * Convenience method to create a new buffered parquet writer that writes to\n * the specified stream\n */\n static async openStream<T>(\n schema: ParquetSchema,\n outputStream: stream.Writable,\n opts: ParquetEncoderOptions = {}\n ): Promise<ParquetEncoder<T>> {\n const envelopeWriter = await ParquetEnvelopeWriter.openStream(schema, outputStream, opts);\n return new ParquetEncoder(schema, envelopeWriter, opts);\n }\n\n public schema: ParquetSchema;\n public envelopeWriter: ParquetEnvelopeWriter;\n public rowBuffer: ParquetRowGroup;\n public rowGroupSize: number;\n public closed: boolean;\n public userMetadata: Record<string, string>;\n\n /**\n * Create a new buffered parquet writer for a given envelope writer\n */\n constructor(\n schema: ParquetSchema,\n envelopeWriter: ParquetEnvelopeWriter,\n opts: ParquetEncoderOptions\n ) {\n this.schema = schema;\n this.envelopeWriter = envelopeWriter;\n // @ts-ignore Row buffer typings...\n this.rowBuffer = {};\n this.rowGroupSize = opts.rowGroupSize || PARQUET_DEFAULT_ROW_GROUP_SIZE;\n this.closed = false;\n this.userMetadata = {};\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.writeHeader();\n }\n\n async writeHeader(): Promise<void> {\n // TODO - better not mess with promises in the constructor\n try {\n await this.envelopeWriter.writeHeader();\n } catch (err) {\n await this.envelopeWriter.close();\n throw err;\n }\n }\n\n /**\n * Append a single row to the parquet file. Rows are buffered in memory until\n * rowGroupSize rows are in the buffer or close() is called\n */\n async appendRow<T extends ParquetRow>(row: T): Promise<void> {\n if (this.closed) {\n throw new Error('writer was closed');\n }\n Shred.shredRecord(this.schema, row, this.rowBuffer);\n if (this.rowBuffer.rowCount >= this.rowGroupSize) {\n // @ts-ignore\n this.rowBuffer = {};\n }\n }\n\n /**\n * Finish writing the parquet file and commit the footer to disk. This method\n * MUST be called after you are finished adding rows. You must not call this\n * method twice on the same object or add any rows after the close() method has\n * been called\n */\n async close(callback?: () => void): Promise<void> {\n if (this.closed) {\n throw new Error('writer was closed');\n }\n\n this.closed = true;\n\n if (this.rowBuffer.rowCount > 0 || this.rowBuffer.rowCount >= this.rowGroupSize) {\n // @ts-ignore\n this.rowBuffer = {};\n }\n\n await this.envelopeWriter.writeFooter(this.userMetadata);\n await this.envelopeWriter.close();\n // this.envelopeWriter = null;\n\n if (callback) {\n callback();\n }\n }\n\n /**\n * Add key<>value metadata to the file\n */\n setMetadata(key: string, value: string): void {\n // TODO: value to be any, obj -> JSON\n this.userMetadata[String(key)] = String(value);\n }\n\n /**\n * Set the parquet row group size. This values controls the maximum number\n * of rows that are buffered in memory at any given time as well as the number\n * of rows that are co-located on disk. A higher value is generally better for\n * read-time I/O performance at the tradeoff of write-time memory usage.\n */\n setRowGroupSize(cnt: number): void {\n this.rowGroupSize = cnt;\n }\n\n /**\n * Set the parquet data page size. The data page size controls the maximum\n * number of column values that are written to disk as a consecutive array\n */\n setPageSize(cnt: number): void {\n this.envelopeWriter.setPageSize(cnt);\n }\n}\n\n/**\n * Create a parquet file from a schema and a number of row groups. This class\n * performs direct, unbuffered writes to the underlying output stream and is\n * intendend for advanced and internal users; the writeXXX methods must be\n * called in the correct order to produce a valid file.\n */\nexport class ParquetEnvelopeWriter {\n /**\n * Create a new parquet envelope writer that writes to the specified stream\n */\n static async openStream(\n schema: ParquetSchema,\n outputStream: stream.Writable,\n opts: ParquetEncoderOptions\n ): Promise<ParquetEnvelopeWriter> {\n const writeFn = oswrite.bind(undefined, outputStream);\n const closeFn = osclose.bind(undefined, outputStream);\n return new ParquetEnvelopeWriter(schema, writeFn, closeFn, 0, opts);\n }\n\n public schema: ParquetSchema;\n public write: (buf: Buffer) => Promise<void>;\n public close: () => Promise<void>;\n public offset: number;\n public rowCount: number;\n public rowGroups: RowGroup[];\n public pageSize: number;\n public useDataPageV2: boolean;\n\n constructor(\n schema: ParquetSchema,\n writeFn: (buf: Buffer) => Promise<void>,\n closeFn: () => Promise<void>,\n fileOffset: number,\n opts: ParquetEncoderOptions\n ) {\n this.schema = schema;\n this.write = writeFn;\n this.close = closeFn;\n this.offset = fileOffset;\n this.rowCount = 0;\n this.rowGroups = [];\n this.pageSize = opts.pageSize || PARQUET_DEFAULT_PAGE_SIZE;\n this.useDataPageV2 = 'useDataPageV2' in opts ? Boolean(opts.useDataPageV2) : false;\n }\n\n writeSection(buf: Buffer): Promise<void> {\n this.offset += buf.length;\n return this.write(buf);\n }\n\n /**\n * Encode the parquet file header\n */\n writeHeader(): Promise<void> {\n return this.writeSection(Buffer.from(PARQUET_MAGIC));\n }\n\n /**\n * Encode a parquet row group. The records object should be created using the\n * shredRecord method\n */\n async writeRowGroup(records: ParquetRowGroup): Promise<void> {\n const rgroup = await encodeRowGroup(this.schema, records, {\n baseOffset: this.offset,\n pageSize: this.pageSize,\n useDataPageV2: this.useDataPageV2\n });\n\n this.rowCount += records.rowCount;\n this.rowGroups.push(rgroup.metadata);\n return await this.writeSection(rgroup.body);\n }\n\n /**\n * Write the parquet file footer\n */\n writeFooter(userMetadata: Record<string, string>): Promise<void> {\n if (!userMetadata) {\n // tslint:disable-next-line:no-parameter-reassignment\n userMetadata = {};\n }\n\n return this.writeSection(\n encodeFooter(this.schema, this.rowCount, this.rowGroups, userMetadata)\n );\n }\n\n /**\n * Set the parquet data page size. The data page size controls the maximum\n * number of column values that are written to disk as a consecutive array\n */\n setPageSize(cnt: number): void {\n this.pageSize = cnt;\n }\n}\n\n/**\n * Create a parquet transform stream\nexport class ParquetTransformer<T> extends stream.Transform {\n public writer: ParquetEncoder<T>;\n\n constructor(schema: ParquetSchema, opts: ParquetEncoderOptions = {}) {\n super({objectMode: true});\n\n const writeProxy = (function (t: ParquetTransformer<any>) {\n return async function (b: any): Promise<void> {\n t.push(b);\n };\n })(this);\n\n this.writer = new ParquetEncoder(\n schema,\n new ParquetEnvelopeWriter(schema, writeProxy, async () => {}, 0, opts),\n opts\n );\n }\n\n // tslint:disable-next-line:function-name\n _transform(row: any, encoding: string, callback: (val?: any) => void): Promise<void> {\n if (row) {\n return this.writer.appendRow(row).then(callback);\n }\n callback();\n return Promise.resolve();\n }\n\n // tslint:disable-next-line:function-name\n async _flush(callback: (val?: any) => void) {\n await this.writer.close(callback);\n }\n}\n */\n\n/**\n * Encode a consecutive array of data using one of the parquet encodings\n */\nfunction encodeValues(\n type: PrimitiveType,\n encoding: ParquetCodec,\n values: any[],\n opts: ParquetCodecOptions\n) {\n if (!(encoding in PARQUET_CODECS)) {\n throw new Error(`invalid encoding: ${encoding}`);\n }\n return PARQUET_CODECS[encoding].encodeValues(type, values, opts);\n}\n\n/**\n * Encode a parquet data page\n */\nasync function encodeDataPage(\n column: ParquetField,\n data: ParquetColumnChunk\n): Promise<{\n header: PageHeader;\n headerSize: number;\n page: Buffer;\n}> {\n /* encode repetition and definition levels */\n let rLevelsBuf = Buffer.alloc(0);\n if (column.rLevelMax > 0) {\n rLevelsBuf = encodeValues(PARQUET_RDLVL_TYPE, PARQUET_RDLVL_ENCODING, data.rlevels, {\n bitWidth: getBitWidth(column.rLevelMax)\n // disableEnvelope: false\n });\n }\n\n let dLevelsBuf = Buffer.alloc(0);\n if (column.dLevelMax > 0) {\n dLevelsBuf = encodeValues(PARQUET_RDLVL_TYPE, PARQUET_RDLVL_ENCODING, data.dlevels, {\n bitWidth: getBitWidth(column.dLevelMax)\n // disableEnvelope: false\n });\n }\n\n /* encode values */\n const valuesBuf = encodeValues(column.primitiveType!, column.encoding!, data.values, {\n typeLength: column.typeLength,\n bitWidth: column.typeLength\n });\n\n const dataBuf = Buffer.concat([rLevelsBuf, dLevelsBuf, valuesBuf]);\n\n // compression = column.compression === 'UNCOMPRESSED' ? (compression || 'UNCOMPRESSED') : column.compression;\n const compressedBuf = await Compression.deflate(column.compression!, dataBuf);\n\n /* build page header */\n const header = new PageHeader({\n type: PageType.DATA_PAGE,\n data_page_header: new DataPageHeader({\n num_values: data.count,\n encoding: Encoding[column.encoding!] as any,\n definition_level_encoding: Encoding[PARQUET_RDLVL_ENCODING], // [PARQUET_RDLVL_ENCODING],\n repetition_level_encoding: Encoding[PARQUET_RDLVL_ENCODING] // [PARQUET_RDLVL_ENCODING]\n }),\n uncompressed_page_size: dataBuf.length,\n compressed_page_size: compressedBuf.length\n });\n\n /* concat page header, repetition and definition levels and values */\n const headerBuf = serializeThrift(header);\n const page = Buffer.concat([headerBuf, compressedBuf]);\n\n return {header, headerSize: headerBuf.length, page};\n}\n\n/**\n * Encode a parquet data page (v2)\n */\nasync function encodeDataPageV2(\n column: ParquetField,\n data: ParquetColumnChunk,\n rowCount: number\n): Promise<{\n header: PageHeader;\n headerSize: number;\n page: Buffer;\n}> {\n /* encode values */\n const valuesBuf = encodeValues(column.primitiveType!, column.encoding!, data.values, {\n typeLength: column.typeLength,\n bitWidth: column.typeLength\n });\n\n // compression = column.compression === 'UNCOMPRESSED' ? (compression || 'UNCOMPRESSED') : column.compression;\n const compressedBuf = await Compression.deflate(column.compression!, valuesBuf);\n\n /* encode repetition and definition levels */\n let rLevelsBuf = Buffer.alloc(0);\n if (column.rLevelMax > 0) {\n rLevelsBuf = encodeValues(PARQUET_RDLVL_TYPE, PARQUET_RDLVL_ENCODING, data.rlevels, {\n bitWidth: getBitWidth(column.rLevelMax),\n disableEnvelope: true\n });\n }\n\n let dLevelsBuf = Buffer.alloc(0);\n if (column.dLevelMax > 0) {\n dLevelsBuf = encodeValues(PARQUET_RDLVL_TYPE, PARQUET_RDLVL_ENCODING, data.dlevels, {\n bitWidth: getBitWidth(column.dLevelMax),\n disableEnvelope: true\n });\n }\n\n /* build page header */\n const header = new PageHeader({\n type: PageType.DATA_PAGE_V2,\n data_page_header_v2: new DataPageHeaderV2({\n num_values: data.count,\n num_nulls: data.count - data.values.length,\n num_rows: rowCount,\n encoding: Encoding[column.encoding!] as any,\n definition_levels_byte_length: dLevelsBuf.length,\n repetition_levels_byte_length: rLevelsBuf.length,\n is_compressed: column.compression !== 'UNCOMPRESSED'\n }),\n uncompressed_page_size: rLevelsBuf.length + dLevelsBuf.length + valuesBuf.length,\n compressed_page_size: rLevelsBuf.length + dLevelsBuf.length + compressedBuf.length\n });\n\n /* concat page header, repetition and definition levels and values */\n const headerBuf = serializeThrift(header);\n const page = Buffer.concat([headerBuf, rLevelsBuf, dLevelsBuf, compressedBuf]);\n return {header, headerSize: headerBuf.length, page};\n}\n\n/**\n * Encode an array of values into a parquet column chunk\n */\nasync function encodeColumnChunk(\n column: ParquetField,\n buffer: ParquetRowGroup,\n offset: number,\n opts: ParquetEncoderOptions\n): Promise<{\n body: Buffer;\n metadata: ColumnMetaData;\n metadataOffset: number;\n}> {\n const data = buffer.columnData[column.path.join()];\n const baseOffset = (opts.baseOffset || 0) + offset;\n /* encode data page(s) */\n // const pages: Buffer[] = [];\n let pageBuf: Buffer;\n // tslint:disable-next-line:variable-name\n let total_uncompressed_size = 0;\n // tslint:disable-next-line:variable-name\n let total_compressed_size = 0;\n {\n const result = opts.useDataPageV2\n ? await encodeDataPageV2(column, data, buffer.rowCount)\n : await encodeDataPage(column, data);\n // pages.push(result.page);\n pageBuf = result.page;\n total_uncompressed_size += result.header.uncompressed_page_size + result.headerSize;\n total_compressed_size += result.header.compressed_page_size + result.headerSize;\n }\n\n // const pagesBuf = Buffer.concat(pages);\n // const compression = column.compression === 'UNCOMPRESSED' ? (opts.compression || 'UNCOMPRESSED') : column.compression;\n\n /* prepare metadata header */\n const metadata = new ColumnMetaData({\n path_in_schema: column.path,\n num_values: data.count,\n data_page_offset: baseOffset,\n encodings: [],\n total_uncompressed_size, // : pagesBuf.length,\n total_compressed_size,\n type: Type[column.primitiveType!],\n codec: CompressionCodec[column.compression!]\n });\n\n /* list encodings */\n metadata.encodings.push(Encoding[PARQUET_RDLVL_ENCODING]);\n metadata.encodings.push(Encoding[column.encoding!]);\n\n /* concat metadata header and data pages */\n const metadataOffset = baseOffset + pageBuf.length;\n const body = Buffer.concat([pageBuf, serializeThrift(metadata)]);\n return {body, metadata, metadataOffset};\n}\n\n/**\n * Encode a list of column values into a parquet row group\n */\nasync function encodeRowGroup(\n schema: ParquetSchema,\n data: ParquetRowGroup,\n opts: ParquetEncoderOptions\n): Promise<{\n body: Buffer;\n metadata: RowGroup;\n}> {\n const metadata = new RowGroup({\n num_rows: data.rowCount,\n columns: [],\n total_byte_size: 0\n });\n\n let body = Buffer.alloc(0);\n for (const field of schema.fieldList) {\n if (field.isNested) {\n continue; // eslint-disable-line no-continue\n }\n\n const cchunkData = await encodeColumnChunk(field, data, body.length, opts);\n\n const cchunk = new ColumnChunk({\n file_offset: cchunkData.metadataOffset,\n meta_data: cchunkData.metadata\n });\n\n metadata.columns.push(cchunk);\n metadata.total_byte_size = new Int64(Number(metadata.total_byte_size) + cchunkData.body.length);\n\n body = Buffer.concat([body, cchunkData.body]);\n }\n\n return {body, metadata};\n}\n\n/**\n * Encode a parquet file metadata footer\n */\nfunction encodeFooter(\n schema: ParquetSchema,\n rowCount: number,\n rowGroups: RowGroup[],\n userMetadata: Record<string, string>\n): Buffer {\n const metadata = new FileMetaData({\n version: PARQUET_VERSION,\n created_by: 'parquets',\n num_rows: rowCount,\n row_groups: rowGroups,\n schema: [],\n key_value_metadata: []\n });\n\n for (const key in userMetadata) {\n const kv = new KeyValue({\n key,\n value: userMetadata[key]\n });\n metadata.key_value_metadata?.push?.(kv);\n }\n\n {\n const schemaRoot = new SchemaElement({\n name: 'root',\n num_children: Object.keys(schema.fields).length\n });\n metadata.schema.push(schemaRoot);\n }\n\n for (const field of schema.fieldList) {\n const relt = FieldRepetitionType[field.repetitionType];\n const schemaElem = new SchemaElement({\n name: field.name,\n repetition_type: relt as any\n });\n\n if (field.isNested) {\n schemaElem.num_children = field.fieldCount;\n } else {\n schemaElem.type = Type[field.primitiveType!] as Type;\n }\n\n if (field.originalType) {\n schemaElem.converted_type = ConvertedType[field.originalType] as ConvertedType;\n }\n\n schemaElem.type_length = field.typeLength;\n\n metadata.schema.push(schemaElem);\n }\n\n const metadataEncoded = serializeThrift(metadata);\n const footerEncoded = Buffer.alloc(metadataEncoded.length + 8);\n\n metadataEncoded.copy(footerEncoded);\n footerEncoded.writeUInt32LE(metadataEncoded.length, metadataEncoded.length);\n footerEncoded.write(PARQUET_MAGIC, metadataEncoded.length + 4);\n return footerEncoded;\n}\n"],"mappings":"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"}
|