@loaders.gl/parquet 3.4.0-alpha.1 → 3.4.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dist.min.js +19 -19
- package/dist/dist.min.js.map +3 -3
- package/dist/es5/index.js +49 -8
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/arrow/convert-columns-to-row-group.js +2 -0
- package/dist/es5/lib/arrow/convert-columns-to-row-group.js.map +1 -0
- package/dist/es5/lib/arrow/convert-row-group-to-columns.js +20 -0
- package/dist/es5/lib/arrow/convert-row-group-to-columns.js.map +1 -0
- package/dist/es5/lib/arrow/convert-schema-from-parquet.js +98 -0
- package/dist/es5/lib/arrow/convert-schema-from-parquet.js.map +1 -0
- package/dist/es5/lib/{convert-schema.js → arrow/convert-schema-to-parquet.js} +5 -31
- package/dist/es5/lib/arrow/convert-schema-to-parquet.js.map +1 -0
- package/dist/es5/lib/geo/decode-geo-metadata.js +82 -0
- package/dist/es5/lib/geo/decode-geo-metadata.js.map +1 -0
- package/dist/es5/lib/geo/geoparquet-schema.js +83 -0
- package/dist/es5/lib/geo/geoparquet-schema.js.map +1 -0
- package/dist/es5/lib/parsers/parse-parquet-to-columns.js +177 -0
- package/dist/es5/lib/parsers/parse-parquet-to-columns.js.map +1 -0
- package/dist/es5/lib/{parse-parquet.js → parsers/parse-parquet-to-rows.js} +51 -27
- package/dist/es5/lib/parsers/parse-parquet-to-rows.js.map +1 -0
- package/dist/es5/lib/wip/convert-schema-deep.java.disabled +910 -0
- package/dist/es5/lib/wip/convert-schema-deep.rs.disabled +976 -0
- package/dist/es5/parquet-loader.js +4 -2
- 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/compression.js +15 -5
- package/dist/es5/parquetjs/compression.js.map +1 -1
- package/dist/es5/parquetjs/encoder/{writer.js → parquet-encoder.js} +70 -158
- package/dist/es5/parquetjs/encoder/parquet-encoder.js.map +1 -0
- package/dist/es5/parquetjs/parser/parquet-reader.js +553 -222
- package/dist/es5/parquetjs/parser/parquet-reader.js.map +1 -1
- package/dist/es5/parquetjs/schema/declare.js +3 -1
- package/dist/es5/parquetjs/schema/declare.js.map +1 -1
- package/dist/es5/parquetjs/schema/shred.js +39 -33
- package/dist/es5/parquetjs/schema/shred.js.map +1 -1
- package/dist/es5/parquetjs/schema/types.js.map +1 -1
- package/dist/es5/parquetjs/utils/file-utils.js +2 -3
- package/dist/es5/parquetjs/utils/file-utils.js.map +1 -1
- package/dist/esm/index.js +13 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/arrow/convert-columns-to-row-group.js +2 -0
- package/dist/esm/lib/arrow/convert-columns-to-row-group.js.map +1 -0
- package/dist/esm/lib/arrow/convert-row-group-to-columns.js +10 -0
- package/dist/esm/lib/arrow/convert-row-group-to-columns.js.map +1 -0
- package/dist/esm/lib/{convert-schema.js → arrow/convert-schema-from-parquet.js} +32 -16
- package/dist/esm/lib/arrow/convert-schema-from-parquet.js.map +1 -0
- package/dist/esm/lib/arrow/convert-schema-to-parquet.js +40 -0
- package/dist/esm/lib/arrow/convert-schema-to-parquet.js.map +1 -0
- package/dist/esm/lib/geo/decode-geo-metadata.js +64 -0
- package/dist/esm/lib/geo/decode-geo-metadata.js.map +1 -0
- package/dist/esm/lib/geo/geoparquet-schema.js +78 -0
- package/dist/esm/lib/geo/geoparquet-schema.js.map +1 -0
- package/dist/esm/lib/parsers/parse-parquet-to-columns.js +37 -0
- package/dist/esm/lib/parsers/parse-parquet-to-columns.js.map +1 -0
- package/dist/esm/lib/parsers/parse-parquet-to-rows.js +19 -0
- package/dist/esm/lib/parsers/parse-parquet-to-rows.js.map +1 -0
- package/dist/esm/lib/wip/convert-schema-deep.java.disabled +910 -0
- package/dist/esm/lib/wip/convert-schema-deep.rs.disabled +976 -0
- package/dist/esm/parquet-loader.js +4 -2
- 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/compression.js +10 -1
- package/dist/esm/parquetjs/compression.js.map +1 -1
- package/dist/esm/parquetjs/encoder/{writer.js → parquet-encoder.js} +7 -37
- package/dist/esm/parquetjs/encoder/parquet-encoder.js.map +1 -0
- package/dist/esm/parquetjs/parser/parquet-reader.js +158 -72
- package/dist/esm/parquetjs/parser/parquet-reader.js.map +1 -1
- package/dist/esm/parquetjs/schema/declare.js +1 -0
- package/dist/esm/parquetjs/schema/declare.js.map +1 -1
- package/dist/esm/parquetjs/schema/shred.js +42 -34
- package/dist/esm/parquetjs/schema/shred.js.map +1 -1
- package/dist/esm/parquetjs/schema/types.js.map +1 -1
- package/dist/esm/parquetjs/utils/file-utils.js +1 -1
- package/dist/esm/parquetjs/utils/file-utils.js.map +1 -1
- package/dist/index.d.ts +24 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +26 -9
- package/dist/lib/arrow/convert-columns-to-row-group.d.ts +1 -0
- package/dist/lib/arrow/convert-columns-to-row-group.d.ts.map +1 -0
- package/dist/lib/arrow/convert-columns-to-row-group.js +1 -0
- package/dist/lib/arrow/convert-row-group-to-columns.d.ts +4 -0
- package/dist/lib/arrow/convert-row-group-to-columns.d.ts.map +1 -0
- package/dist/lib/arrow/convert-row-group-to-columns.js +12 -0
- package/dist/lib/arrow/convert-schema-from-parquet.d.ts +9 -0
- package/dist/lib/arrow/convert-schema-from-parquet.d.ts.map +1 -0
- package/dist/lib/{convert-schema.js → arrow/convert-schema-from-parquet.js} +30 -18
- package/dist/lib/arrow/convert-schema-to-parquet.d.ts +7 -0
- package/dist/lib/arrow/convert-schema-to-parquet.d.ts.map +1 -0
- package/dist/lib/arrow/convert-schema-to-parquet.js +72 -0
- package/dist/lib/geo/decode-geo-metadata.d.ts +31 -0
- package/dist/lib/geo/decode-geo-metadata.d.ts.map +1 -0
- package/dist/lib/geo/decode-geo-metadata.js +73 -0
- package/dist/lib/geo/geoparquet-schema.d.ts +80 -0
- package/dist/lib/geo/geoparquet-schema.d.ts.map +1 -0
- package/dist/lib/geo/geoparquet-schema.js +69 -0
- package/dist/lib/parsers/parse-parquet-to-columns.d.ts +5 -0
- package/dist/lib/parsers/parse-parquet-to-columns.d.ts.map +1 -0
- package/dist/lib/parsers/parse-parquet-to-columns.js +40 -0
- package/dist/lib/parsers/parse-parquet-to-rows.d.ts +4 -0
- package/dist/lib/parsers/parse-parquet-to-rows.d.ts.map +1 -0
- package/dist/lib/parsers/parse-parquet-to-rows.js +40 -0
- package/dist/parquet-loader.d.ts +2 -0
- package/dist/parquet-loader.d.ts.map +1 -1
- package/dist/parquet-loader.js +3 -1
- package/dist/parquet-worker.js +20 -20
- package/dist/parquet-worker.js.map +3 -3
- package/dist/parquetjs/compression.d.ts.map +1 -1
- package/dist/parquetjs/compression.js +16 -5
- package/dist/parquetjs/encoder/{writer.d.ts → parquet-encoder.d.ts} +10 -19
- package/dist/parquetjs/encoder/parquet-encoder.d.ts.map +1 -0
- package/dist/parquetjs/encoder/{writer.js → parquet-encoder.js} +39 -37
- package/dist/parquetjs/parser/parquet-reader.d.ts +47 -57
- package/dist/parquetjs/parser/parquet-reader.d.ts.map +1 -1
- package/dist/parquetjs/parser/parquet-reader.js +168 -102
- package/dist/parquetjs/schema/declare.d.ts +14 -7
- package/dist/parquetjs/schema/declare.d.ts.map +1 -1
- package/dist/parquetjs/schema/declare.js +2 -0
- package/dist/parquetjs/schema/shred.d.ts +115 -0
- package/dist/parquetjs/schema/shred.d.ts.map +1 -1
- package/dist/parquetjs/schema/shred.js +161 -43
- package/dist/parquetjs/schema/types.d.ts +2 -2
- package/dist/parquetjs/schema/types.d.ts.map +1 -1
- package/dist/parquetjs/utils/file-utils.d.ts +3 -4
- package/dist/parquetjs/utils/file-utils.d.ts.map +1 -1
- package/dist/parquetjs/utils/file-utils.js +2 -5
- package/package.json +7 -5
- package/src/index.ts +24 -4
- package/src/lib/arrow/convert-columns-to-row-group.ts +0 -0
- package/src/lib/arrow/convert-row-group-to-columns.ts +15 -0
- package/src/lib/{convert-schema.ts → arrow/convert-schema-from-parquet.ts} +41 -22
- package/src/lib/arrow/convert-schema-to-parquet.ts +102 -0
- package/src/lib/geo/decode-geo-metadata.ts +99 -0
- package/src/lib/geo/geoparquet-schema.ts +69 -0
- package/src/lib/parsers/parse-parquet-to-columns.ts +49 -0
- package/src/lib/parsers/parse-parquet-to-rows.ts +40 -0
- package/src/lib/wip/convert-schema-deep.java.disabled +910 -0
- package/src/lib/wip/convert-schema-deep.rs.disabled +976 -0
- package/src/parquet-loader.ts +5 -1
- package/src/parquetjs/compression.ts +14 -1
- package/src/parquetjs/encoder/{writer.ts → parquet-encoder.ts} +22 -28
- package/src/parquetjs/parser/parquet-reader.ts +239 -122
- package/src/parquetjs/schema/declare.ts +17 -9
- package/src/parquetjs/schema/shred.ts +157 -28
- package/src/parquetjs/schema/types.ts +21 -27
- package/src/parquetjs/utils/file-utils.ts +3 -4
- package/dist/es5/lib/convert-schema.js.map +0 -1
- package/dist/es5/lib/parse-parquet.js.map +0 -1
- package/dist/es5/lib/read-array-buffer.js +0 -43
- package/dist/es5/lib/read-array-buffer.js.map +0 -1
- package/dist/es5/parquetjs/encoder/writer.js.map +0 -1
- package/dist/es5/parquetjs/file.js +0 -94
- package/dist/es5/parquetjs/file.js.map +0 -1
- package/dist/es5/parquetjs/parser/parquet-cursor.js +0 -183
- package/dist/es5/parquetjs/parser/parquet-cursor.js.map +0 -1
- package/dist/es5/parquetjs/parser/parquet-envelope-reader.js +0 -327
- package/dist/es5/parquetjs/parser/parquet-envelope-reader.js.map +0 -1
- package/dist/es5/parquetjs/utils/buffer-utils.js +0 -19
- package/dist/es5/parquetjs/utils/buffer-utils.js.map +0 -1
- package/dist/esm/lib/convert-schema.js.map +0 -1
- package/dist/esm/lib/parse-parquet.js +0 -25
- package/dist/esm/lib/parse-parquet.js.map +0 -1
- package/dist/esm/lib/read-array-buffer.js +0 -10
- package/dist/esm/lib/read-array-buffer.js.map +0 -1
- package/dist/esm/parquetjs/encoder/writer.js.map +0 -1
- package/dist/esm/parquetjs/file.js +0 -81
- package/dist/esm/parquetjs/file.js.map +0 -1
- package/dist/esm/parquetjs/parser/parquet-cursor.js +0 -78
- package/dist/esm/parquetjs/parser/parquet-cursor.js.map +0 -1
- package/dist/esm/parquetjs/parser/parquet-envelope-reader.js +0 -129
- package/dist/esm/parquetjs/parser/parquet-envelope-reader.js.map +0 -1
- package/dist/esm/parquetjs/utils/buffer-utils.js +0 -13
- package/dist/esm/parquetjs/utils/buffer-utils.js.map +0 -1
- package/dist/lib/convert-schema.d.ts +0 -8
- package/dist/lib/convert-schema.d.ts.map +0 -1
- package/dist/lib/parse-parquet.d.ts +0 -4
- package/dist/lib/parse-parquet.d.ts.map +0 -1
- package/dist/lib/parse-parquet.js +0 -28
- package/dist/lib/read-array-buffer.d.ts +0 -19
- package/dist/lib/read-array-buffer.d.ts.map +0 -1
- package/dist/lib/read-array-buffer.js +0 -29
- package/dist/parquetjs/encoder/writer.d.ts.map +0 -1
- package/dist/parquetjs/file.d.ts +0 -10
- package/dist/parquetjs/file.d.ts.map +0 -1
- package/dist/parquetjs/file.js +0 -99
- package/dist/parquetjs/parser/parquet-cursor.d.ts +0 -36
- package/dist/parquetjs/parser/parquet-cursor.d.ts.map +0 -1
- package/dist/parquetjs/parser/parquet-cursor.js +0 -74
- package/dist/parquetjs/parser/parquet-envelope-reader.d.ts +0 -40
- package/dist/parquetjs/parser/parquet-envelope-reader.d.ts.map +0 -1
- package/dist/parquetjs/parser/parquet-envelope-reader.js +0 -136
- package/dist/parquetjs/utils/buffer-utils.d.ts +0 -10
- package/dist/parquetjs/utils/buffer-utils.d.ts.map +0 -1
- package/dist/parquetjs/utils/buffer-utils.js +0 -22
- package/src/lib/parse-parquet.ts +0 -27
- package/src/lib/read-array-buffer.ts +0 -31
- package/src/parquetjs/file.ts +0 -90
- package/src/parquetjs/parser/parquet-cursor.ts +0 -94
- package/src/parquetjs/parser/parquet-envelope-reader.ts +0 -199
- package/src/parquetjs/utils/buffer-utils.ts +0 -18
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"declare.js","names":["ParquetBuffer","constructor","rowCount","columnData"],"sources":["../../../../src/parquetjs/schema/declare.ts"],"sourcesContent":["// Forked from https://github.com/kbajalc/parquets under MIT license (Copyright (c) 2017 ironSource Ltd.)\nimport Int64 from 'node-int64';\nimport type {PageHeader} from '../parquet-thrift';\n\nexport type ParquetCodec = 'PLAIN' | 'RLE' | 'PLAIN_DICTIONARY';\nexport type ParquetCompression =\n | 'UNCOMPRESSED'\n | 'GZIP'\n | 'SNAPPY'\n | 'LZO'\n | 'BROTLI'\n | 'LZ4'\n | 'LZ4_RAW'\n | 'ZSTD';\nexport type RepetitionType = 'REQUIRED' | 'OPTIONAL' | 'REPEATED';\nexport type ParquetType = PrimitiveType | OriginalType;\n\n/**\n * Physical type\n */\nexport type PrimitiveType =\n // Base Types\n | 'BOOLEAN' // 0\n | 'INT32' // 1\n | 'INT64' // 2\n | 'INT96' // 3\n | 'FLOAT' // 4\n | 'DOUBLE' // 5\n | 'BYTE_ARRAY' // 6,\n | 'FIXED_LEN_BYTE_ARRAY'; // 7\n\n/**\n * Logical type\n */\nexport type OriginalType =\n // Converted Types\n | 'UTF8' // 0\n // | 'MAP' // 1\n // | 'MAP_KEY_VALUE' // 2\n // | 'LIST' // 3\n // | 'ENUM' // 4\n // | 'DECIMAL' // 5\n | 'DECIMAL_INT32' // 5\n | 'DECIMAL_INT64' // 5\n | 'DECIMAL_BYTE_ARRAY' // 5\n | 'DECIMAL_FIXED_LEN_BYTE_ARRAY' // 5\n | 'DATE' // 6\n | 'TIME_MILLIS' // 7\n | 'TIME_MICROS' // 8\n | 'TIMESTAMP_MILLIS' // 9\n | 'TIMESTAMP_MICROS' // 10\n | 'UINT_8' // 11\n | 'UINT_16' // 12\n | 'UINT_32' // 13\n | 'UINT_64' // 14\n | 'INT_8' // 15\n | 'INT_16' // 16\n | 'INT_32' // 17\n | 'INT_64' // 18\n | 'JSON' // 19\n | 'BSON' // 20\n | 'INTERVAL'; // 21\n\nexport type ParquetDictionary = string[];\n\nexport interface SchemaDefinition {\n [string: string]: FieldDefinition;\n}\n\nexport interface FieldDefinition {\n type?: ParquetType;\n typeLength?: number;\n presision?: number;\n scale?: number;\n encoding?: ParquetCodec;\n compression?: ParquetCompression;\n optional?: boolean;\n repeated?: boolean;\n fields?: SchemaDefinition;\n}\n\nexport interface ParquetField {\n name: string;\n path: string[];\n key: string;\n primitiveType?: PrimitiveType;\n originalType?: OriginalType;\n repetitionType: RepetitionType;\n typeLength?: number;\n presision?: number;\n scale?: number;\n encoding?: ParquetCodec;\n compression?: ParquetCompression;\n rLevelMax: number;\n dLevelMax: number;\n isNested?: boolean;\n fieldCount?: number;\n fields?: Record<string, ParquetField>;\n}\n\nexport interface ParquetOptions {\n type: ParquetType;\n rLevelMax: number;\n dLevelMax: number;\n compression: ParquetCompression;\n column: ParquetField;\n numValues?: Int64;\n dictionary?: ParquetDictionary;\n}\n\nexport interface
|
|
1
|
+
{"version":3,"file":"declare.js","names":["ParquetBuffer","constructor","rowCount","columnData"],"sources":["../../../../src/parquetjs/schema/declare.ts"],"sourcesContent":["// Forked from https://github.com/kbajalc/parquets under MIT license (Copyright (c) 2017 ironSource Ltd.)\nimport Int64 from 'node-int64';\nimport type {PageHeader} from '../parquet-thrift';\n\nexport type ParquetCodec = 'PLAIN' | 'RLE' | 'PLAIN_DICTIONARY';\nexport type ParquetCompression =\n | 'UNCOMPRESSED'\n | 'GZIP'\n | 'SNAPPY'\n | 'LZO'\n | 'BROTLI'\n | 'LZ4'\n | 'LZ4_RAW'\n | 'ZSTD';\nexport type RepetitionType = 'REQUIRED' | 'OPTIONAL' | 'REPEATED';\nexport type ParquetType = PrimitiveType | OriginalType;\n\n/**\n * Physical type\n */\nexport type PrimitiveType =\n // Base Types\n | 'BOOLEAN' // 0\n | 'INT32' // 1\n | 'INT64' // 2\n | 'INT96' // 3\n | 'FLOAT' // 4\n | 'DOUBLE' // 5\n | 'BYTE_ARRAY' // 6,\n | 'FIXED_LEN_BYTE_ARRAY'; // 7\n\n/**\n * Logical type\n */\nexport type OriginalType =\n // Converted Types\n | 'UTF8' // 0\n // | 'MAP' // 1\n // | 'MAP_KEY_VALUE' // 2\n // | 'LIST' // 3\n // | 'ENUM' // 4\n // | 'DECIMAL' // 5\n | 'DECIMAL_INT32' // 5\n | 'DECIMAL_INT64' // 5\n | 'DECIMAL_BYTE_ARRAY' // 5\n | 'DECIMAL_FIXED_LEN_BYTE_ARRAY' // 5\n | 'DATE' // 6\n | 'TIME_MILLIS' // 7\n | 'TIME_MICROS' // 8\n | 'TIMESTAMP_MILLIS' // 9\n | 'TIMESTAMP_MICROS' // 10\n | 'UINT_8' // 11\n | 'UINT_16' // 12\n | 'UINT_32' // 13\n | 'UINT_64' // 14\n | 'INT_8' // 15\n | 'INT_16' // 16\n | 'INT_32' // 17\n | 'INT_64' // 18\n | 'JSON' // 19\n | 'BSON' // 20\n | 'INTERVAL'; // 21\n\nexport type ParquetDictionary = string[];\n\nexport interface SchemaDefinition {\n [string: string]: FieldDefinition;\n}\n\nexport interface FieldDefinition {\n type?: ParquetType;\n typeLength?: number;\n presision?: number;\n scale?: number;\n encoding?: ParquetCodec;\n compression?: ParquetCompression;\n optional?: boolean;\n repeated?: boolean;\n fields?: SchemaDefinition;\n}\n\nexport interface ParquetField {\n name: string;\n path: string[];\n key: string;\n primitiveType?: PrimitiveType;\n originalType?: OriginalType;\n repetitionType: RepetitionType;\n typeLength?: number;\n presision?: number;\n scale?: number;\n encoding?: ParquetCodec;\n compression?: ParquetCompression;\n rLevelMax: number;\n dLevelMax: number;\n isNested?: boolean;\n fieldCount?: number;\n fields?: Record<string, ParquetField>;\n}\n\n/** @todo better name, this is an internal type? */\nexport interface ParquetOptions {\n type: ParquetType;\n rLevelMax: number;\n dLevelMax: number;\n compression: ParquetCompression;\n column: ParquetField;\n numValues?: Int64;\n dictionary?: ParquetDictionary;\n}\n\nexport interface ParquetPageData {\n dlevels: number[];\n rlevels: number[];\n /** Actual column chunks */\n values: any[]; // ArrayLike<any>;\n count: number;\n dictionary?: ParquetDictionary;\n /** The \"raw\" page header from the file */\n pageHeader: PageHeader;\n}\n\nexport interface ParquetRecord {\n [key: string]: any;\n}\n\n/** @\n * Holds data for one row group (column chunks) */\nexport class ParquetBuffer {\n /** Number of rows in this page */\n rowCount: number;\n\n columnData: Record<string, ParquetData>;\n constructor(rowCount: number = 0, columnData: Record<string, ParquetData> = {}) {\n this.rowCount = rowCount;\n this.columnData = columnData;\n }\n}\n\n/** Holds the data for one column chunk */\nexport interface ParquetData {\n dlevels: number[];\n rlevels: number[];\n values: any[];\n count: number;\n pageHeaders: PageHeader[];\n}\n"],"mappings":";;AAgIA,OAAO,MAAMA,aAAa,CAAC;;EAKzBC,WAAW,GAAqE;IAAA,IAApEC,QAAgB,uEAAG,CAAC;IAAA,IAAEC,UAAuC,uEAAG,CAAC,CAAC;IAAA;IAAA;IAC5E,IAAI,CAACD,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACC,UAAU,GAAGA,UAAU;EAC9B;AACF"}
|
|
@@ -84,62 +84,70 @@ function shredRecordFields(fields, record, data, rLevel, dLevel) {
|
|
|
84
84
|
|
|
85
85
|
export function materializeRecords(schema, buffer) {
|
|
86
86
|
const records = [];
|
|
87
|
-
for (let i = 0; i < buffer.rowCount; i++)
|
|
87
|
+
for (let i = 0; i < buffer.rowCount; i++) {
|
|
88
|
+
records.push({});
|
|
89
|
+
}
|
|
88
90
|
for (const key in buffer.columnData) {
|
|
89
|
-
|
|
91
|
+
const columnData = buffer.columnData[key];
|
|
92
|
+
if (columnData.count) {
|
|
93
|
+
materializeColumn(schema, columnData, key, records);
|
|
94
|
+
}
|
|
90
95
|
}
|
|
91
96
|
return records;
|
|
92
97
|
}
|
|
93
98
|
|
|
94
|
-
function materializeColumn(schema,
|
|
95
|
-
const data = buffer.columnData[key];
|
|
96
|
-
if (!data.count) return;
|
|
99
|
+
function materializeColumn(schema, columnData, key, records) {
|
|
97
100
|
const field = schema.findField(key);
|
|
98
101
|
const branch = schema.findFieldBranch(key);
|
|
99
102
|
|
|
100
103
|
const rLevels = new Array(field.rLevelMax + 1).fill(0);
|
|
101
104
|
let vIndex = 0;
|
|
102
|
-
for (let i = 0; i <
|
|
103
|
-
const dLevel =
|
|
104
|
-
const rLevel =
|
|
105
|
+
for (let i = 0; i < columnData.count; i++) {
|
|
106
|
+
const dLevel = columnData.dlevels[i];
|
|
107
|
+
const rLevel = columnData.rlevels[i];
|
|
105
108
|
rLevels[rLevel]++;
|
|
106
109
|
rLevels.fill(0, rLevel + 1);
|
|
107
110
|
let rIndex = 0;
|
|
108
111
|
let record = records[rLevels[rIndex++] - 1];
|
|
109
112
|
|
|
110
113
|
for (const step of branch) {
|
|
111
|
-
if (step === field)
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
114
|
+
if (step === field || dLevel < step.dLevelMax) {
|
|
115
|
+
break;
|
|
116
|
+
}
|
|
117
|
+
switch (step.repetitionType) {
|
|
118
|
+
case 'REPEATED':
|
|
119
|
+
if (!(step.name in record)) {
|
|
120
|
+
record[step.name] = [];
|
|
121
|
+
}
|
|
122
|
+
const ix = rLevels[rIndex++];
|
|
123
|
+
while (record[step.name].length <= ix) {
|
|
124
|
+
record[step.name].push({});
|
|
125
|
+
}
|
|
126
|
+
record = record[step.name][ix];
|
|
127
|
+
break;
|
|
128
|
+
default:
|
|
129
|
+
record[step.name] = record[step.name] || {};
|
|
130
|
+
record = record[step.name];
|
|
125
131
|
}
|
|
126
132
|
}
|
|
127
133
|
|
|
128
134
|
if (dLevel === field.dLevelMax) {
|
|
129
135
|
const value = Types.fromPrimitive(
|
|
130
|
-
field.originalType || field.primitiveType,
|
|
136
|
+
field.originalType || field.primitiveType, columnData.values[vIndex], field);
|
|
131
137
|
vIndex++;
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
record[field.name].
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
138
|
+
switch (field.repetitionType) {
|
|
139
|
+
case 'REPEATED':
|
|
140
|
+
if (!(field.name in record)) {
|
|
141
|
+
record[field.name] = [];
|
|
142
|
+
}
|
|
143
|
+
const ix = rLevels[rIndex];
|
|
144
|
+
while (record[field.name].length <= ix) {
|
|
145
|
+
record[field.name].push(null);
|
|
146
|
+
}
|
|
147
|
+
record[field.name][ix] = value;
|
|
148
|
+
break;
|
|
149
|
+
default:
|
|
150
|
+
record[field.name] = value;
|
|
143
151
|
}
|
|
144
152
|
}
|
|
145
153
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shred.js","names":["ParquetBuffer","Types","shredBuffer","schema","columnData","field","fieldList","key","dlevels","rlevels","values","pageHeaders","count","rowCount","shredRecord","record","buffer","data","shredRecordFields","fields","Array","prototype","push","apply","rLevel","dLevel","name","undefined","constructor","length","Boolean","repetitionType","Error","isNested","i","rlvl","rLevelMax","dLevelMax","toPrimitive","originalType","primitiveType","materializeRecords","records","materializeColumn","findField","branch","findFieldBranch","rLevels","fill","vIndex","rIndex","step","ix","value","fromPrimitive"],"sources":["../../../../src/parquetjs/schema/shred.ts"],"sourcesContent":["// Forked from https://github.com/kbajalc/parquets under MIT license (Copyright (c) 2017 ironSource Ltd.)\n\nimport {ParquetBuffer, ParquetData, ParquetField, ParquetRecord} from './declare';\nimport {ParquetSchema} from './schema';\nimport * as Types from './types';\n\nexport {ParquetBuffer};\n\nexport function shredBuffer(schema: ParquetSchema): ParquetBuffer {\n const columnData: Record<string, ParquetData> = {};\n for (const field of schema.fieldList) {\n columnData[field.key] = {\n dlevels: [],\n rlevels: [],\n values: [],\n pageHeaders: [],\n count: 0\n };\n }\n return {rowCount: 0, columnData};\n}\n\n/**\n * 'Shred' a record into a list of <value, repetition_level, definition_level>\n * tuples per column using the Google Dremel Algorithm..\n *\n * The buffer argument must point to an object into which the shredded record\n * will be returned. You may re-use the buffer for repeated calls to this function\n * to append to an existing buffer, as long as the schema is unchanged.\n *\n * The format in which the shredded records will be stored in the buffer is as\n * follows:\n *\n * buffer = {\n * columnData: [\n * 'my_col': {\n * dlevels: [d1, d2, .. dN],\n * rlevels: [r1, r2, .. rN],\n * values: [v1, v2, .. vN],\n * }, ...\n * ],\n * rowCount: X,\n * }\n */\nexport function shredRecord(schema: ParquetSchema, record: any, buffer: ParquetBuffer): void {\n /* shred the record, this may raise an exception */\n const data = shredBuffer(schema).columnData;\n\n shredRecordFields(schema.fields, record, data, 0, 0);\n\n /* if no error during shredding, add the shredded record to the buffer */\n if (buffer.rowCount === 0) {\n buffer.rowCount = 1;\n buffer.columnData = data;\n return;\n }\n buffer.rowCount += 1;\n for (const field of schema.fieldList) {\n Array.prototype.push.apply(buffer.columnData[field.key].rlevels, data[field.key].rlevels);\n Array.prototype.push.apply(buffer.columnData[field.key].dlevels, data[field.key].dlevels);\n Array.prototype.push.apply(buffer.columnData[field.key].values, data[field.key].values);\n buffer.columnData[field.key].count += data[field.key].count;\n }\n}\n\n// eslint-disable-next-line max-statements, complexity\nfunction shredRecordFields(\n fields: Record<string, ParquetField>,\n record: any,\n data: Record<string, ParquetData>,\n rLevel: number,\n dLevel: number\n) {\n for (const name in fields) {\n const field = fields[name];\n\n // fetch values\n let values: any[] = [];\n if (\n record &&\n field.name in record &&\n record[field.name] !== undefined &&\n record[field.name] !== null\n ) {\n if (record[field.name].constructor === Array) {\n values = record[field.name];\n } else {\n values.push(record[field.name]);\n }\n }\n // check values\n if (values.length === 0 && Boolean(record) && field.repetitionType === 'REQUIRED') {\n throw new Error(`missing required field: ${field.name}`);\n }\n if (values.length > 1 && field.repetitionType !== 'REPEATED') {\n throw new Error(`too many values for field: ${field.name}`);\n }\n\n // push null\n if (values.length === 0) {\n if (field.isNested) {\n shredRecordFields(field.fields!, null, data, rLevel, dLevel);\n } else {\n data[field.key].count += 1;\n data[field.key].rlevels.push(rLevel);\n data[field.key].dlevels.push(dLevel);\n }\n continue; // eslint-disable-line no-continue\n }\n\n // push values\n for (let i = 0; i < values.length; i++) {\n const rlvl = i === 0 ? rLevel : field.rLevelMax;\n if (field.isNested) {\n shredRecordFields(field.fields!, values[i], data, rlvl, field.dLevelMax);\n } else {\n data[field.key].count += 1;\n data[field.key].rlevels.push(rlvl);\n data[field.key].dlevels.push(field.dLevelMax);\n data[field.key].values.push(\n Types.toPrimitive((field.originalType || field.primitiveType)!, values[i])\n );\n }\n }\n }\n}\n\n/**\n * 'Materialize' a list of <value, repetition_level, definition_level>\n * tuples back to nested records (objects/arrays) using the Google Dremel\n * Algorithm..\n *\n * The buffer argument must point to an object with the following structure (i.e.\n * the same structure that is returned by shredRecords):\n *\n * buffer = {\n * columnData: [\n * 'my_col': {\n * dlevels: [d1, d2, .. dN],\n * rlevels: [r1, r2, .. rN],\n * values: [v1, v2, .. vN],\n * }, ...\n * ],\n * rowCount: X,\n * }\n */\nexport function materializeRecords(schema: ParquetSchema, buffer: ParquetBuffer): ParquetRecord[] {\n const records: ParquetRecord[] = [];\n for (let i = 0; i < buffer.rowCount; i++) records.push({});\n for (const key in buffer.columnData) {\n materializeColumn(schema, buffer, key, records);\n }\n return records;\n}\n\n// eslint-disable-next-line max-statements, complexity\nfunction materializeColumn(\n schema: ParquetSchema,\n buffer: ParquetBuffer,\n key: string,\n records: ParquetRecord[]\n) {\n const data = buffer.columnData[key];\n if (!data.count) return;\n\n const field = schema.findField(key);\n const branch = schema.findFieldBranch(key);\n\n // tslint:disable-next-line:prefer-array-literal\n const rLevels: number[] = new Array(field.rLevelMax + 1).fill(0);\n let vIndex = 0;\n for (let i = 0; i < data.count; i++) {\n const dLevel = data.dlevels[i];\n const rLevel = data.rlevels[i];\n rLevels[rLevel]++;\n rLevels.fill(0, rLevel + 1);\n\n let rIndex = 0;\n let record = records[rLevels[rIndex++] - 1];\n\n // Internal nodes\n for (const step of branch) {\n if (step === field) break;\n if (dLevel < step.dLevelMax) break;\n if (step.repetitionType === 'REPEATED') {\n if (!(step.name in record)) {\n // eslint-disable max-depth\n record[step.name] = [];\n }\n const ix = rLevels[rIndex++];\n while (record[step.name].length <= ix) {\n // eslint-disable max-depth\n record[step.name].push({});\n }\n record = record[step.name][ix];\n } else {\n record[step.name] = record[step.name] || {};\n record = record[step.name];\n }\n }\n\n // Leaf node\n if (dLevel === field.dLevelMax) {\n const value = Types.fromPrimitive(\n // @ts-ignore\n field.originalType || field.primitiveType,\n data.values[vIndex],\n field\n );\n vIndex++;\n if (field.repetitionType === 'REPEATED') {\n if (!(field.name in record)) {\n // eslint-disable max-depth\n record[field.name] = [];\n }\n const ix = rLevels[rIndex];\n while (record[field.name].length <= ix) {\n // eslint-disable max-depth\n record[field.name].push(null);\n }\n record[field.name][ix] = value;\n } else {\n record[field.name] = value;\n }\n }\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shred.js","names":["ParquetBuffer","Types","shredBuffer","schema","columnData","field","fieldList","key","dlevels","rlevels","values","pageHeaders","count","rowCount","shredRecord","record","buffer","data","shredRecordFields","fields","Array","prototype","push","apply","rLevel","dLevel","name","undefined","constructor","length","Boolean","repetitionType","Error","isNested","i","rlvl","rLevelMax","dLevelMax","toPrimitive","originalType","primitiveType","materializeRecords","records","materializeColumn","findField","branch","findFieldBranch","rLevels","fill","vIndex","rIndex","step","ix","value","fromPrimitive"],"sources":["../../../../src/parquetjs/schema/shred.ts"],"sourcesContent":["// Forked from https://github.com/kbajalc/parquets under MIT license (Copyright (c) 2017 ironSource Ltd.)\n\nimport {ParquetBuffer, ParquetData, ParquetField, ParquetRecord} from './declare';\nimport {ParquetSchema} from './schema';\nimport * as Types from './types';\n\nexport {ParquetBuffer};\n\nexport function shredBuffer(schema: ParquetSchema): ParquetBuffer {\n const columnData: Record<string, ParquetData> = {};\n for (const field of schema.fieldList) {\n columnData[field.key] = {\n dlevels: [],\n rlevels: [],\n values: [],\n pageHeaders: [],\n count: 0\n };\n }\n return {rowCount: 0, columnData};\n}\n\n/**\n * 'Shred' a record into a list of <value, repetition_level, definition_level>\n * tuples per column using the Google Dremel Algorithm..\n *\n * The buffer argument must point to an object into which the shredded record\n * will be returned. You may re-use the buffer for repeated calls to this function\n * to append to an existing buffer, as long as the schema is unchanged.\n *\n * The format in which the shredded records will be stored in the buffer is as\n * follows:\n *\n * buffer = {\n * columnData: [\n * 'my_col': {\n * dlevels: [d1, d2, .. dN],\n * rlevels: [r1, r2, .. rN],\n * values: [v1, v2, .. vN],\n * }, ...\n * ],\n * rowCount: X,\n * }\n */\nexport function shredRecord(schema: ParquetSchema, record: any, buffer: ParquetBuffer): void {\n /* shred the record, this may raise an exception */\n const data = shredBuffer(schema).columnData;\n\n shredRecordFields(schema.fields, record, data, 0, 0);\n\n /* if no error during shredding, add the shredded record to the buffer */\n if (buffer.rowCount === 0) {\n buffer.rowCount = 1;\n buffer.columnData = data;\n return;\n }\n buffer.rowCount += 1;\n for (const field of schema.fieldList) {\n Array.prototype.push.apply(buffer.columnData[field.key].rlevels, data[field.key].rlevels);\n Array.prototype.push.apply(buffer.columnData[field.key].dlevels, data[field.key].dlevels);\n Array.prototype.push.apply(buffer.columnData[field.key].values, data[field.key].values);\n buffer.columnData[field.key].count += data[field.key].count;\n }\n}\n\n// eslint-disable-next-line max-statements, complexity\nfunction shredRecordFields(\n fields: Record<string, ParquetField>,\n record: any,\n data: Record<string, ParquetData>,\n rLevel: number,\n dLevel: number\n) {\n for (const name in fields) {\n const field = fields[name];\n\n // fetch values\n let values: any[] = [];\n if (\n record &&\n field.name in record &&\n record[field.name] !== undefined &&\n record[field.name] !== null\n ) {\n if (record[field.name].constructor === Array) {\n values = record[field.name];\n } else {\n values.push(record[field.name]);\n }\n }\n // check values\n if (values.length === 0 && Boolean(record) && field.repetitionType === 'REQUIRED') {\n throw new Error(`missing required field: ${field.name}`);\n }\n if (values.length > 1 && field.repetitionType !== 'REPEATED') {\n throw new Error(`too many values for field: ${field.name}`);\n }\n\n // push null\n if (values.length === 0) {\n if (field.isNested) {\n shredRecordFields(field.fields!, null, data, rLevel, dLevel);\n } else {\n data[field.key].count += 1;\n data[field.key].rlevels.push(rLevel);\n data[field.key].dlevels.push(dLevel);\n }\n continue; // eslint-disable-line no-continue\n }\n\n // push values\n for (let i = 0; i < values.length; i++) {\n const rlvl = i === 0 ? rLevel : field.rLevelMax;\n if (field.isNested) {\n shredRecordFields(field.fields!, values[i], data, rlvl, field.dLevelMax);\n } else {\n data[field.key].count += 1;\n data[field.key].rlevels.push(rlvl);\n data[field.key].dlevels.push(field.dLevelMax);\n data[field.key].values.push(\n Types.toPrimitive((field.originalType || field.primitiveType)!, values[i])\n );\n }\n }\n }\n}\n\n/**\n * 'Materialize' a list of <value, repetition_level, definition_level>\n * tuples back to nested records (objects/arrays) using the Google Dremel\n * Algorithm..\n *\n * The buffer argument must point to an object with the following structure (i.e.\n * the same structure that is returned by shredRecords):\n *\n * buffer = {\n * columnData: [\n * 'my_col': {\n * dlevels: [d1, d2, .. dN],\n * rlevels: [r1, r2, .. rN],\n * values: [v1, v2, .. vN],\n * }, ...\n * ],\n * rowCount: X,\n * }\n */\nexport function materializeRecords(schema: ParquetSchema, buffer: ParquetBuffer): ParquetRecord[] {\n const records: ParquetRecord[] = [];\n for (let i = 0; i < buffer.rowCount; i++) {\n records.push({});\n }\n for (const key in buffer.columnData) {\n const columnData = buffer.columnData[key];\n if (columnData.count) {\n materializeColumn(schema, columnData, key, records);\n }\n }\n return records;\n}\n\n// eslint-disable-next-line max-statements, complexity\nfunction materializeColumn(\n schema: ParquetSchema,\n columnData: ParquetData,\n key: string,\n records: ParquetRecord[]\n): void {\n const field = schema.findField(key);\n const branch = schema.findFieldBranch(key);\n\n // tslint:disable-next-line:prefer-array-literal\n const rLevels: number[] = new Array(field.rLevelMax + 1).fill(0);\n let vIndex = 0;\n for (let i = 0; i < columnData.count; i++) {\n const dLevel = columnData.dlevels[i];\n const rLevel = columnData.rlevels[i];\n rLevels[rLevel]++;\n rLevels.fill(0, rLevel + 1);\n\n let rIndex = 0;\n let record = records[rLevels[rIndex++] - 1];\n\n // Internal nodes - Build a nested row object\n for (const step of branch) {\n if (step === field || dLevel < step.dLevelMax) {\n break;\n }\n\n switch (step.repetitionType) {\n case 'REPEATED':\n if (!(step.name in record)) {\n // eslint-disable max-depth\n record[step.name] = [];\n }\n const ix = rLevels[rIndex++];\n while (record[step.name].length <= ix) {\n // eslint-disable max-depth\n record[step.name].push({});\n }\n record = record[step.name][ix];\n break;\n\n default:\n record[step.name] = record[step.name] || {};\n record = record[step.name];\n }\n }\n\n // Leaf node - Add the value\n if (dLevel === field.dLevelMax) {\n const value = Types.fromPrimitive(\n // @ts-ignore\n field.originalType || field.primitiveType,\n columnData.values[vIndex],\n field\n );\n vIndex++;\n\n switch (field.repetitionType) {\n case 'REPEATED':\n if (!(field.name in record)) {\n // eslint-disable max-depth\n record[field.name] = [];\n }\n const ix = rLevels[rIndex];\n while (record[field.name].length <= ix) {\n // eslint-disable max-depth\n record[field.name].push(null);\n }\n record[field.name][ix] = value;\n break;\n\n default:\n record[field.name] = value;\n }\n }\n }\n}\n\n// Columnar export\n\n/**\n * 'Materialize' a list of <value, repetition_level, definition_level>\n * tuples back to nested records (objects/arrays) using the Google Dremel\n * Algorithm..\n *\n * The buffer argument must point to an object with the following structure (i.e.\n * the same structure that is returned by shredRecords):\n *\n * buffer = {\n * columnData: [\n * 'my_col': {\n * dlevels: [d1, d2, .. dN],\n * rlevels: [r1, r2, .. rN],\n * values: [v1, v2, .. vN],\n * }, ...\n * ],\n * rowCount: X,\n * }\n *\nexport function extractColumns(schema: ParquetSchema, buffer: ParquetBuffer): Record<string, unknown> {\n const columns: ParquetRecord = {};\n for (const key in buffer.columnData) {\n const columnData = buffer.columnData[key];\n if (columnData.count) {\n extractColumn(schema, columnData, key, columns);\n }\n }\n return columns;\n}\n\n// eslint-disable-next-line max-statements, complexity\nfunction extractColumn(\n schema: ParquetSchema,\n columnData: ParquetData,\n key: string,\n columns: Record<string, unknown> \n) {\n if (columnData.count <= 0) {\n return;\n }\n\n const record = columns;\n\n const field = schema.findField(key);\n const branch = schema.findFieldBranch(key);\n\n // tslint:disable-next-line:prefer-array-literal\n const rLevels: number[] = new Array(field.rLevelMax + 1).fill(0);\n let vIndex = 0;\n\n let i = 0;\n const dLevel = columnData.dlevels[i];\n const rLevel = columnData.rlevels[i];\n rLevels[rLevel]++;\n rLevels.fill(0, rLevel + 1);\n\n let rIndex = 0;\n let record = records[rLevels[rIndex++] - 1];\n\n // Internal nodes\n for (const step of branch) {\n if (step === field || dLevel < step.dLevelMax) {\n break;\n }\n\n switch (step.repetitionType) {\n case 'REPEATED':\n if (!(step.name in record)) {\n // eslint-disable max-depth\n record[step.name] = [];\n }\n const ix = rLevels[rIndex++];\n while (record[step.name].length <= ix) {\n // eslint-disable max-depth\n record[step.name].push({});\n }\n record = record[step.name][ix];\n break;\n\n default:\n record[step.name] = record[step.name] || {};\n record = record[step.name];\n }\n }\n\n // Leaf node\n if (dLevel === field.dLevelMax) {\n const value = Types.fromPrimitive(\n // @ts-ignore\n field.originalType || field.primitiveType,\n columnData.values[vIndex],\n field\n );\n vIndex++;\n\n switch (field.repetitionType) {\n case 'REPEATED':\n if (!(field.name in record)) {\n // eslint-disable max-depth\n record[field.name] = [];\n }\n const ix = rLevels[rIndex];\n while (record[field.name].length <= ix) {\n // eslint-disable max-depth\n record[field.name].push(null);\n }\n record[field.name][ix] = value;\n break;\n\n default:\n record[field.name] = value;\n }\n }\n}\n*/\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":["BSON","PARQUET_LOGICAL_TYPES","BOOLEAN","primitiveType","toPrimitive","toPrimitive_BOOLEAN","fromPrimitive","fromPrimitive_BOOLEAN","INT32","toPrimitive_INT32","INT64","toPrimitive_INT64","INT96","toPrimitive_INT96","FLOAT","toPrimitive_FLOAT","DOUBLE","toPrimitive_DOUBLE","BYTE_ARRAY","toPrimitive_BYTE_ARRAY","FIXED_LEN_BYTE_ARRAY","UTF8","originalType","toPrimitive_UTF8","fromPrimitive_UTF8","TIME_MILLIS","toPrimitive_TIME_MILLIS","TIME_MICROS","toPrimitive_TIME_MICROS","DATE","toPrimitive_DATE","fromPrimitive_DATE","TIMESTAMP_MILLIS","toPrimitive_TIMESTAMP_MILLIS","fromPrimitive_TIMESTAMP_MILLIS","TIMESTAMP_MICROS","toPrimitive_TIMESTAMP_MICROS","fromPrimitive_TIMESTAMP_MICROS","UINT_8","toPrimitive_UINT8","UINT_16","toPrimitive_UINT16","UINT_32","toPrimitive_UINT32","UINT_64","toPrimitive_UINT64","INT_8","toPrimitive_INT8","INT_16","toPrimitive_INT16","INT_32","INT_64","JSON","toPrimitive_JSON","fromPrimitive_JSON","toPrimitive_BSON","fromPrimitive_BSON","INTERVAL","typeLength","toPrimitive_INTERVAL","fromPrimitive_INTERVAL","DECIMAL_INT32","decimalToPrimitive_INT32","decimalFromPrimitive_INT","DECIMAL_INT64","decimalToPrimitive_INT64","DECIMAL_BYTE_ARRAY","decimalToPrimitive_BYTE_ARRAY","decimalFromPrimitive_BYTE_ARRAY","DECIMAL_FIXED_LEN_BYTE_ARRAY","type","value","field","Error","Boolean","v","parseFloat","isNaN","parseInt","primitiveValue","scale","Math","round","presision","Buffer","from","toString","stringify","parse","serialize","deserialize","kMillisPerDay","Date","getTime","months","days","milliseconds","buf","alloc","writeUInt32LE","readUInt32LE","millis","presisionInt","number","length","i","component"],"sources":["../../../../src/parquetjs/schema/types.ts"],"sourcesContent":["// Forked from https://github.com/kbajalc/parquets under MIT license (Copyright (c) 2017 ironSource Ltd.)\n/* eslint-disable camelcase */\nimport BSON from 'bson';\nimport {OriginalType, ParquetField, ParquetType, PrimitiveType} from './declare';\n\nexport interface ParquetTypeKit {\n primitiveType: PrimitiveType;\n originalType?: OriginalType;\n typeLength?: number;\n toPrimitive: Function;\n fromPrimitive?: Function;\n}\n\nexport const PARQUET_LOGICAL_TYPES: Record<ParquetType, ParquetTypeKit> = {\n BOOLEAN: {\n primitiveType: 'BOOLEAN',\n toPrimitive: toPrimitive_BOOLEAN,\n fromPrimitive: fromPrimitive_BOOLEAN\n },\n INT32: {\n primitiveType: 'INT32',\n toPrimitive: toPrimitive_INT32\n },\n INT64: {\n primitiveType: 'INT64',\n toPrimitive: toPrimitive_INT64\n },\n INT96: {\n primitiveType: 'INT96',\n toPrimitive: toPrimitive_INT96\n },\n FLOAT: {\n primitiveType: 'FLOAT',\n toPrimitive: toPrimitive_FLOAT\n },\n DOUBLE: {\n primitiveType: 'DOUBLE',\n toPrimitive: toPrimitive_DOUBLE\n },\n BYTE_ARRAY: {\n primitiveType: 'BYTE_ARRAY',\n toPrimitive: toPrimitive_BYTE_ARRAY\n },\n FIXED_LEN_BYTE_ARRAY: {\n primitiveType: 'FIXED_LEN_BYTE_ARRAY',\n toPrimitive: toPrimitive_BYTE_ARRAY\n },\n UTF8: {\n primitiveType: 'BYTE_ARRAY',\n originalType: 'UTF8',\n toPrimitive: toPrimitive_UTF8,\n fromPrimitive: fromPrimitive_UTF8\n },\n TIME_MILLIS: {\n primitiveType: 'INT32',\n originalType: 'TIME_MILLIS',\n toPrimitive: toPrimitive_TIME_MILLIS\n },\n TIME_MICROS: {\n primitiveType: 'INT64',\n originalType: 'TIME_MICROS',\n toPrimitive: toPrimitive_TIME_MICROS\n },\n DATE: {\n primitiveType: 'INT32',\n originalType: 'DATE',\n toPrimitive: toPrimitive_DATE,\n fromPrimitive: fromPrimitive_DATE\n },\n TIMESTAMP_MILLIS: {\n primitiveType: 'INT64',\n originalType: 'TIMESTAMP_MILLIS',\n toPrimitive: toPrimitive_TIMESTAMP_MILLIS,\n fromPrimitive: fromPrimitive_TIMESTAMP_MILLIS\n },\n TIMESTAMP_MICROS: {\n primitiveType: 'INT64',\n originalType: 'TIMESTAMP_MICROS',\n toPrimitive: toPrimitive_TIMESTAMP_MICROS,\n fromPrimitive: fromPrimitive_TIMESTAMP_MICROS\n },\n UINT_8: {\n primitiveType: 'INT32',\n originalType: 'UINT_8',\n toPrimitive: toPrimitive_UINT8\n },\n UINT_16: {\n primitiveType: 'INT32',\n originalType: 'UINT_16',\n toPrimitive: toPrimitive_UINT16\n },\n UINT_32: {\n primitiveType: 'INT32',\n originalType: 'UINT_32',\n toPrimitive: toPrimitive_UINT32\n },\n UINT_64: {\n primitiveType: 'INT64',\n originalType: 'UINT_64',\n toPrimitive: toPrimitive_UINT64\n },\n INT_8: {\n primitiveType: 'INT32',\n originalType: 'INT_8',\n toPrimitive: toPrimitive_INT8\n },\n INT_16: {\n primitiveType: 'INT32',\n originalType: 'INT_16',\n toPrimitive: toPrimitive_INT16\n },\n INT_32: {\n primitiveType: 'INT32',\n originalType: 'INT_32',\n toPrimitive: toPrimitive_INT32\n },\n INT_64: {\n primitiveType: 'INT64',\n originalType: 'INT_64',\n toPrimitive: toPrimitive_INT64\n },\n JSON: {\n primitiveType: 'BYTE_ARRAY',\n originalType: 'JSON',\n toPrimitive: toPrimitive_JSON,\n fromPrimitive: fromPrimitive_JSON\n },\n BSON: {\n primitiveType: 'BYTE_ARRAY',\n originalType: 'BSON',\n toPrimitive: toPrimitive_BSON,\n fromPrimitive: fromPrimitive_BSON\n },\n INTERVAL: {\n primitiveType: 'FIXED_LEN_BYTE_ARRAY',\n originalType: 'INTERVAL',\n typeLength: 12,\n toPrimitive: toPrimitive_INTERVAL,\n fromPrimitive: fromPrimitive_INTERVAL\n },\n DECIMAL_INT32: {\n primitiveType: 'INT32',\n originalType: 'DECIMAL_INT32',\n toPrimitive: decimalToPrimitive_INT32,\n fromPrimitive: decimalFromPrimitive_INT\n },\n DECIMAL_INT64: {\n primitiveType: 'INT64',\n originalType: 'DECIMAL_INT64',\n toPrimitive: decimalToPrimitive_INT64,\n fromPrimitive: decimalFromPrimitive_INT\n },\n DECIMAL_BYTE_ARRAY: {\n primitiveType: 'BYTE_ARRAY',\n originalType: 'DECIMAL_BYTE_ARRAY',\n toPrimitive: decimalToPrimitive_BYTE_ARRAY,\n fromPrimitive: decimalFromPrimitive_BYTE_ARRAY\n },\n DECIMAL_FIXED_LEN_BYTE_ARRAY: {\n primitiveType: 'FIXED_LEN_BYTE_ARRAY',\n originalType: 'DECIMAL_FIXED_LEN_BYTE_ARRAY',\n toPrimitive: decimalToPrimitive_BYTE_ARRAY,\n fromPrimitive: decimalFromPrimitive_BYTE_ARRAY\n }\n};\n\n/**\n * Convert a value from it's native representation to the internal/underlying\n * primitive type\n */\nexport function toPrimitive(type: ParquetType, value: any, field?: ParquetField) {\n if (!(type in PARQUET_LOGICAL_TYPES)) {\n throw new Error(`invalid type: ${type}`);\n }\n\n return PARQUET_LOGICAL_TYPES[type].toPrimitive(value, field);\n}\n\n/**\n * Convert a value from it's internal/underlying primitive representation to\n * the native representation\n */\nexport function fromPrimitive(type: ParquetType, value: any, field?: ParquetField) {\n if (!(type in PARQUET_LOGICAL_TYPES)) {\n throw new Error(`invalid type: ${type}`);\n }\n\n if ('fromPrimitive' in PARQUET_LOGICAL_TYPES[type]) {\n return PARQUET_LOGICAL_TYPES[type].fromPrimitive?.(value, field);\n // tslint:disable-next-line:no-else-after-return\n }\n return value;\n}\n\nfunction toPrimitive_BOOLEAN(value: any) {\n return Boolean(value);\n}\n\nfunction fromPrimitive_BOOLEAN(value: any) {\n return Boolean(value);\n}\n\nfunction toPrimitive_FLOAT(value: any) {\n const v = parseFloat(value);\n if (isNaN(v)) {\n throw new Error(`invalid value for FLOAT: ${value}`);\n }\n\n return v;\n}\n\nfunction toPrimitive_DOUBLE(value: any) {\n const v = parseFloat(value);\n if (isNaN(v)) {\n throw new Error(`invalid value for DOUBLE: ${value}`);\n }\n\n return v;\n}\n\nfunction toPrimitive_INT8(value: any) {\n const v = parseInt(value, 10);\n if (v < -0x80 || v > 0x7f || isNaN(v)) {\n throw new Error(`invalid value for INT8: ${value}`);\n }\n\n return v;\n}\n\nfunction toPrimitive_UINT8(value: any) {\n const v = parseInt(value, 10);\n if (v < 0 || v > 0xff || isNaN(v)) {\n throw new Error(`invalid value for UINT8: ${value}`);\n }\n\n return v;\n}\n\nfunction toPrimitive_INT16(value: any) {\n const v = parseInt(value, 10);\n if (v < -0x8000 || v > 0x7fff || isNaN(v)) {\n throw new Error(`invalid value for INT16: ${value}`);\n }\n\n return v;\n}\n\nfunction toPrimitive_UINT16(value: any) {\n const v = parseInt(value, 10);\n if (v < 0 || v > 0xffff || isNaN(v)) {\n throw new Error(`invalid value for UINT16: ${value}`);\n }\n\n return v;\n}\n\nfunction toPrimitive_INT32(value: any) {\n const v = parseInt(value, 10);\n if (v < -0x80000000 || v > 0x7fffffff || isNaN(v)) {\n throw new Error(`invalid value for INT32: ${value}`);\n }\n\n return v;\n}\n\nfunction decimalToPrimitive_INT32(value: number, field: ParquetField) {\n const primitiveValue = value * 10 ** (field.scale || 0);\n const v = Math.round(((primitiveValue * 10 ** -field.presision!) % 1) * 10 ** field.presision!);\n if (v < -0x80000000 || v > 0x7fffffff || isNaN(v)) {\n throw new Error(`invalid value for INT32: ${value}`);\n }\n\n return v;\n}\n\nfunction toPrimitive_UINT32(value: any) {\n const v = parseInt(value, 10);\n if (v < 0 || v > 0xffffffffffff || isNaN(v)) {\n throw new Error(`invalid value for UINT32: ${value}`);\n }\n\n return v;\n}\n\nfunction toPrimitive_INT64(value: any) {\n const v = parseInt(value, 10);\n if (isNaN(v)) {\n throw new Error(`invalid value for INT64: ${value}`);\n }\n\n return v;\n}\n\nfunction decimalToPrimitive_INT64(value: number, field: ParquetField) {\n const primitiveValue = value * 10 ** (field.scale || 0);\n const v = Math.round(((primitiveValue * 10 ** -field.presision!) % 1) * 10 ** field.presision!);\n if (isNaN(v)) {\n throw new Error(`invalid value for INT64: ${value}`);\n }\n\n return v;\n}\n\nfunction toPrimitive_UINT64(value: any) {\n const v = parseInt(value, 10);\n if (v < 0 || isNaN(v)) {\n throw new Error(`invalid value for UINT64: ${value}`);\n }\n\n return v;\n}\n\nfunction toPrimitive_INT96(value: any) {\n const v = parseInt(value, 10);\n if (isNaN(v)) {\n throw new Error(`invalid value for INT96: ${value}`);\n }\n\n return v;\n}\n\nfunction toPrimitive_BYTE_ARRAY(value: any) {\n return Buffer.from(value);\n}\n\nfunction decimalToPrimitive_BYTE_ARRAY(value: any) {\n // TBD\n return Buffer.from(value);\n}\n\nfunction toPrimitive_UTF8(value: any) {\n return Buffer.from(value, 'utf8');\n}\n\nfunction fromPrimitive_UTF8(value: any) {\n return value.toString();\n}\n\nfunction toPrimitive_JSON(value: any) {\n return Buffer.from(JSON.stringify(value));\n}\n\nfunction fromPrimitive_JSON(value: any) {\n return JSON.parse(value);\n}\n\nfunction toPrimitive_BSON(value: any) {\n return Buffer.from(BSON.serialize(value));\n}\n\nfunction fromPrimitive_BSON(value: any) {\n return BSON.deserialize(value);\n}\n\nfunction toPrimitive_TIME_MILLIS(value: any) {\n const v = parseInt(value, 10);\n if (v < 0 || v > 0xffffffffffffffff || isNaN(v)) {\n throw new Error(`invalid value for TIME_MILLIS: ${value}`);\n }\n\n return v;\n}\n\nfunction toPrimitive_TIME_MICROS(value: any) {\n const v = parseInt(value, 10);\n if (v < 0 || isNaN(v)) {\n throw new Error(`invalid value for TIME_MICROS: ${value}`);\n }\n\n return v;\n}\n\nconst kMillisPerDay = 86400000;\n\nfunction toPrimitive_DATE(value: any) {\n /* convert from date */\n if (value instanceof Date) {\n return value.getTime() / kMillisPerDay;\n }\n\n /* convert from integer */\n {\n const v = parseInt(value, 10);\n if (v < 0 || isNaN(v)) {\n throw new Error(`invalid value for DATE: ${value}`);\n }\n\n return v;\n }\n}\n\nfunction fromPrimitive_DATE(value: any) {\n return new Date(value * kMillisPerDay);\n}\n\nfunction toPrimitive_TIMESTAMP_MILLIS(value: any) {\n /* convert from date */\n if (value instanceof Date) {\n return value.getTime();\n }\n\n /* convert from integer */\n {\n const v = parseInt(value, 10);\n if (v < 0 || isNaN(v)) {\n throw new Error(`invalid value for TIMESTAMP_MILLIS: ${value}`);\n }\n\n return v;\n }\n}\n\nfunction fromPrimitive_TIMESTAMP_MILLIS(value: any) {\n return new Date(value);\n}\n\nfunction toPrimitive_TIMESTAMP_MICROS(value: any) {\n /* convert from date */\n if (value instanceof Date) {\n return value.getTime() * 1000;\n }\n\n /* convert from integer */\n {\n const v = parseInt(value, 10);\n if (v < 0 || isNaN(v)) {\n throw new Error(`invalid value for TIMESTAMP_MICROS: ${value}`);\n }\n\n return v;\n }\n}\n\nfunction fromPrimitive_TIMESTAMP_MICROS(value: any) {\n return new Date(value / 1000);\n}\n\nfunction toPrimitive_INTERVAL(value: any) {\n if (!value.months || !value.days || !value.milliseconds) {\n throw new Error(\n 'value for INTERVAL must be object { months: ..., days: ..., milliseconds: ... }'\n );\n }\n\n const buf = Buffer.alloc(12);\n\n buf.writeUInt32LE(value.months, 0);\n buf.writeUInt32LE(value.days, 4);\n buf.writeUInt32LE(value.milliseconds, 8);\n return buf;\n}\n\nfunction fromPrimitive_INTERVAL(value: any) {\n const buf = Buffer.from(value);\n const months = buf.readUInt32LE(0);\n const days = buf.readUInt32LE(4);\n const millis = buf.readUInt32LE(8);\n\n return {months, days, milliseconds: millis};\n}\n\nfunction decimalFromPrimitive_INT(value: any, field: ParquetField) {\n const presisionInt = Math.round(((value * 10 ** -field.presision!) % 1) * 10 ** field.presision!);\n return presisionInt * 10 ** -(field.scale || 0);\n}\n\nfunction decimalFromPrimitive_BYTE_ARRAY(value: any, field: ParquetField) {\n let number = 0;\n if (value.length <= 4) {\n // Bytewise operators faster. Use them if it is possible\n for (let i = 0; i < value.length; i++) {\n // `value.length - i - 1` bytes have reverse order (big-endian)\n const component = value[i] << (8 * (value.length - i - 1));\n number += component;\n }\n } else {\n for (let i = 0; i < value.length; i++) {\n // `value.length - i - 1` bytes have reverse order (big-endian)\n const component = value[i] * 2 ** (8 * (value.length - 1 - i));\n number += component;\n }\n }\n\n const presisionInt = Math.round(\n ((number * 10 ** -field.presision!) % 1) * 10 ** field.presision!\n );\n return presisionInt * 10 ** -(field.scale || 0);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.js","names":["BSON","PARQUET_LOGICAL_TYPES","BOOLEAN","primitiveType","toPrimitive","toPrimitive_BOOLEAN","fromPrimitive","fromPrimitive_BOOLEAN","INT32","toPrimitive_INT32","INT64","toPrimitive_INT64","INT96","toPrimitive_INT96","FLOAT","toPrimitive_FLOAT","DOUBLE","toPrimitive_DOUBLE","BYTE_ARRAY","toPrimitive_BYTE_ARRAY","FIXED_LEN_BYTE_ARRAY","UTF8","originalType","toPrimitive_UTF8","fromPrimitive_UTF8","TIME_MILLIS","toPrimitive_TIME_MILLIS","TIME_MICROS","toPrimitive_TIME_MICROS","DATE","toPrimitive_DATE","fromPrimitive_DATE","TIMESTAMP_MILLIS","toPrimitive_TIMESTAMP_MILLIS","fromPrimitive_TIMESTAMP_MILLIS","TIMESTAMP_MICROS","toPrimitive_TIMESTAMP_MICROS","fromPrimitive_TIMESTAMP_MICROS","UINT_8","toPrimitive_UINT8","UINT_16","toPrimitive_UINT16","UINT_32","toPrimitive_UINT32","UINT_64","toPrimitive_UINT64","INT_8","toPrimitive_INT8","INT_16","toPrimitive_INT16","INT_32","INT_64","JSON","toPrimitive_JSON","fromPrimitive_JSON","toPrimitive_BSON","fromPrimitive_BSON","INTERVAL","typeLength","toPrimitive_INTERVAL","fromPrimitive_INTERVAL","DECIMAL_INT32","decimalToPrimitive_INT32","decimalFromPrimitive_INT","DECIMAL_INT64","decimalToPrimitive_INT64","DECIMAL_BYTE_ARRAY","decimalToPrimitive_BYTE_ARRAY","decimalFromPrimitive_BYTE_ARRAY","DECIMAL_FIXED_LEN_BYTE_ARRAY","type","value","field","Error","Boolean","v","parseFloat","isNaN","parseInt","primitiveValue","scale","Math","round","presision","Buffer","from","toString","stringify","parse","serialize","deserialize","kMillisPerDay","Date","getTime","months","days","milliseconds","buf","alloc","writeUInt32LE","readUInt32LE","millis","presisionInt","number","length","i","component"],"sources":["../../../../src/parquetjs/schema/types.ts"],"sourcesContent":["// Forked from https://github.com/kbajalc/parquets under MIT license (Copyright (c) 2017 ironSource Ltd.)\n/* eslint-disable camelcase */\nimport BSON from 'bson';\nimport {OriginalType, ParquetField, ParquetType, PrimitiveType} from './declare';\n\nexport interface ParquetTypeKit {\n primitiveType: PrimitiveType;\n originalType?: OriginalType;\n typeLength?: number;\n toPrimitive: Function;\n fromPrimitive?: Function;\n}\n\nexport const PARQUET_LOGICAL_TYPES: Record<ParquetType, ParquetTypeKit> = {\n BOOLEAN: {\n primitiveType: 'BOOLEAN',\n toPrimitive: toPrimitive_BOOLEAN,\n fromPrimitive: fromPrimitive_BOOLEAN\n },\n INT32: {\n primitiveType: 'INT32',\n toPrimitive: toPrimitive_INT32\n },\n INT64: {\n primitiveType: 'INT64',\n toPrimitive: toPrimitive_INT64\n },\n INT96: {\n primitiveType: 'INT96',\n toPrimitive: toPrimitive_INT96\n },\n FLOAT: {\n primitiveType: 'FLOAT',\n toPrimitive: toPrimitive_FLOAT\n },\n DOUBLE: {\n primitiveType: 'DOUBLE',\n toPrimitive: toPrimitive_DOUBLE\n },\n BYTE_ARRAY: {\n primitiveType: 'BYTE_ARRAY',\n toPrimitive: toPrimitive_BYTE_ARRAY\n },\n FIXED_LEN_BYTE_ARRAY: {\n primitiveType: 'FIXED_LEN_BYTE_ARRAY',\n toPrimitive: toPrimitive_BYTE_ARRAY\n },\n UTF8: {\n primitiveType: 'BYTE_ARRAY',\n originalType: 'UTF8',\n toPrimitive: toPrimitive_UTF8,\n fromPrimitive: fromPrimitive_UTF8\n },\n TIME_MILLIS: {\n primitiveType: 'INT32',\n originalType: 'TIME_MILLIS',\n toPrimitive: toPrimitive_TIME_MILLIS\n },\n TIME_MICROS: {\n primitiveType: 'INT64',\n originalType: 'TIME_MICROS',\n toPrimitive: toPrimitive_TIME_MICROS\n },\n DATE: {\n primitiveType: 'INT32',\n originalType: 'DATE',\n toPrimitive: toPrimitive_DATE,\n fromPrimitive: fromPrimitive_DATE\n },\n TIMESTAMP_MILLIS: {\n primitiveType: 'INT64',\n originalType: 'TIMESTAMP_MILLIS',\n toPrimitive: toPrimitive_TIMESTAMP_MILLIS,\n fromPrimitive: fromPrimitive_TIMESTAMP_MILLIS\n },\n TIMESTAMP_MICROS: {\n primitiveType: 'INT64',\n originalType: 'TIMESTAMP_MICROS',\n toPrimitive: toPrimitive_TIMESTAMP_MICROS,\n fromPrimitive: fromPrimitive_TIMESTAMP_MICROS\n },\n UINT_8: {\n primitiveType: 'INT32',\n originalType: 'UINT_8',\n toPrimitive: toPrimitive_UINT8\n },\n UINT_16: {\n primitiveType: 'INT32',\n originalType: 'UINT_16',\n toPrimitive: toPrimitive_UINT16\n },\n UINT_32: {\n primitiveType: 'INT32',\n originalType: 'UINT_32',\n toPrimitive: toPrimitive_UINT32\n },\n UINT_64: {\n primitiveType: 'INT64',\n originalType: 'UINT_64',\n toPrimitive: toPrimitive_UINT64\n },\n INT_8: {\n primitiveType: 'INT32',\n originalType: 'INT_8',\n toPrimitive: toPrimitive_INT8\n },\n INT_16: {\n primitiveType: 'INT32',\n originalType: 'INT_16',\n toPrimitive: toPrimitive_INT16\n },\n INT_32: {\n primitiveType: 'INT32',\n originalType: 'INT_32',\n toPrimitive: toPrimitive_INT32\n },\n INT_64: {\n primitiveType: 'INT64',\n originalType: 'INT_64',\n toPrimitive: toPrimitive_INT64\n },\n JSON: {\n primitiveType: 'BYTE_ARRAY',\n originalType: 'JSON',\n toPrimitive: toPrimitive_JSON,\n fromPrimitive: fromPrimitive_JSON\n },\n BSON: {\n primitiveType: 'BYTE_ARRAY',\n originalType: 'BSON',\n toPrimitive: toPrimitive_BSON,\n fromPrimitive: fromPrimitive_BSON\n },\n INTERVAL: {\n primitiveType: 'FIXED_LEN_BYTE_ARRAY',\n originalType: 'INTERVAL',\n typeLength: 12,\n toPrimitive: toPrimitive_INTERVAL,\n fromPrimitive: fromPrimitive_INTERVAL\n },\n DECIMAL_INT32: {\n primitiveType: 'INT32',\n originalType: 'DECIMAL_INT32',\n toPrimitive: decimalToPrimitive_INT32,\n fromPrimitive: decimalFromPrimitive_INT\n },\n DECIMAL_INT64: {\n primitiveType: 'INT64',\n originalType: 'DECIMAL_INT64',\n toPrimitive: decimalToPrimitive_INT64,\n fromPrimitive: decimalFromPrimitive_INT\n },\n DECIMAL_BYTE_ARRAY: {\n primitiveType: 'BYTE_ARRAY',\n originalType: 'DECIMAL_BYTE_ARRAY',\n toPrimitive: decimalToPrimitive_BYTE_ARRAY,\n fromPrimitive: decimalFromPrimitive_BYTE_ARRAY\n },\n DECIMAL_FIXED_LEN_BYTE_ARRAY: {\n primitiveType: 'FIXED_LEN_BYTE_ARRAY',\n originalType: 'DECIMAL_FIXED_LEN_BYTE_ARRAY',\n toPrimitive: decimalToPrimitive_BYTE_ARRAY,\n fromPrimitive: decimalFromPrimitive_BYTE_ARRAY\n }\n};\n\n/**\n * Convert a value from it's native representation to the internal/underlying\n * primitive type\n */\nexport function toPrimitive(type: ParquetType, value: unknown, field?: ParquetField): unknown {\n if (!(type in PARQUET_LOGICAL_TYPES)) {\n throw new Error(`invalid type: ${type}`);\n }\n\n return PARQUET_LOGICAL_TYPES[type].toPrimitive(value, field);\n}\n\n/**\n * Convert a value from it's internal/underlying primitive representation to\n * the native representation\n */\nexport function fromPrimitive(type: ParquetType, value: unknown, field?: ParquetField) {\n if (!(type in PARQUET_LOGICAL_TYPES)) {\n throw new Error(`invalid type: ${type}`);\n }\n\n if ('fromPrimitive' in PARQUET_LOGICAL_TYPES[type]) {\n return PARQUET_LOGICAL_TYPES[type].fromPrimitive?.(value, field);\n // tslint:disable-next-line:no-else-after-return\n }\n return value;\n}\n\nfunction toPrimitive_BOOLEAN(value: unknown): boolean {\n return Boolean(value);\n}\n\nfunction fromPrimitive_BOOLEAN(value: any): boolean {\n return Boolean(value);\n}\n\nfunction toPrimitive_FLOAT(value: any): number {\n const v = parseFloat(value);\n if (isNaN(v)) {\n throw new Error(`invalid value for FLOAT: ${value}`);\n }\n return v;\n}\n\nfunction toPrimitive_DOUBLE(value: any): number {\n const v = parseFloat(value);\n if (isNaN(v)) {\n throw new Error(`invalid value for DOUBLE: ${value}`);\n }\n return v;\n}\n\nfunction toPrimitive_INT8(value: any) {\n const v = parseInt(value, 10);\n if (v < -0x80 || v > 0x7f || isNaN(v)) {\n throw new Error(`invalid value for INT8: ${value}`);\n }\n\n return v;\n}\n\nfunction toPrimitive_UINT8(value: any) {\n const v = parseInt(value, 10);\n if (v < 0 || v > 0xff || isNaN(v)) {\n throw new Error(`invalid value for UINT8: ${value}`);\n }\n\n return v;\n}\n\nfunction toPrimitive_INT16(value: any) {\n const v = parseInt(value, 10);\n if (v < -0x8000 || v > 0x7fff || isNaN(v)) {\n throw new Error(`invalid value for INT16: ${value}`);\n }\n\n return v;\n}\n\nfunction toPrimitive_UINT16(value: any) {\n const v = parseInt(value, 10);\n if (v < 0 || v > 0xffff || isNaN(v)) {\n throw new Error(`invalid value for UINT16: ${value}`);\n }\n\n return v;\n}\n\nfunction toPrimitive_INT32(value: any) {\n const v = parseInt(value, 10);\n if (v < -0x80000000 || v > 0x7fffffff || isNaN(v)) {\n throw new Error(`invalid value for INT32: ${value}`);\n }\n\n return v;\n}\n\nfunction decimalToPrimitive_INT32(value: number, field: ParquetField): number {\n const primitiveValue = value * 10 ** (field.scale || 0);\n const v = Math.round(((primitiveValue * 10 ** -field.presision!) % 1) * 10 ** field.presision!);\n if (v < -0x80000000 || v > 0x7fffffff || isNaN(v)) {\n throw new Error(`invalid value for INT32: ${value}`);\n }\n return v;\n}\n\nfunction toPrimitive_UINT32(value: any): number {\n const v = parseInt(value, 10);\n if (v < 0 || v > 0xffffffffffff || isNaN(v)) {\n throw new Error(`invalid value for UINT32: ${value}`);\n }\n return v;\n}\n\nfunction toPrimitive_INT64(value: any): number {\n const v = parseInt(value, 10);\n if (isNaN(v)) {\n throw new Error(`invalid value for INT64: ${value}`);\n }\n return v;\n}\n\nfunction decimalToPrimitive_INT64(value: number, field: ParquetField) {\n const primitiveValue = value * 10 ** (field.scale || 0);\n const v = Math.round(((primitiveValue * 10 ** -field.presision!) % 1) * 10 ** field.presision!);\n if (isNaN(v)) {\n throw new Error(`invalid value for INT64: ${value}`);\n }\n\n return v;\n}\n\nfunction toPrimitive_UINT64(value: any) {\n const v = parseInt(value, 10);\n if (v < 0 || isNaN(v)) {\n throw new Error(`invalid value for UINT64: ${value}`);\n }\n\n return v;\n}\n\nfunction toPrimitive_INT96(value: any) {\n const v = parseInt(value, 10);\n if (isNaN(v)) {\n throw new Error(`invalid value for INT96: ${value}`);\n }\n\n return v;\n}\n\nfunction toPrimitive_BYTE_ARRAY(value: any): Buffer {\n return Buffer.from(value);\n}\n\nfunction decimalToPrimitive_BYTE_ARRAY(value: any): Buffer {\n // TBD\n return Buffer.from(value);\n}\n\nfunction toPrimitive_UTF8(value: any): Buffer {\n return Buffer.from(value, 'utf8');\n}\n\nfunction fromPrimitive_UTF8(value: any): string {\n return value.toString();\n}\n\nfunction toPrimitive_JSON(value: any): Buffer {\n return Buffer.from(JSON.stringify(value));\n}\n\nfunction fromPrimitive_JSON(value: any): unknown {\n return JSON.parse(value);\n}\n\nfunction toPrimitive_BSON(value: any): Buffer {\n return Buffer.from(BSON.serialize(value));\n}\n\nfunction fromPrimitive_BSON(value: any) {\n return BSON.deserialize(value);\n}\n\nfunction toPrimitive_TIME_MILLIS(value: any) {\n const v = parseInt(value, 10);\n if (v < 0 || v > 0xffffffffffffffff || isNaN(v)) {\n throw new Error(`invalid value for TIME_MILLIS: ${value}`);\n }\n\n return v;\n}\n\nfunction toPrimitive_TIME_MICROS(value: any): number {\n const v = parseInt(value, 10);\n if (v < 0 || isNaN(v)) {\n throw new Error(`invalid value for TIME_MICROS: ${value}`);\n }\n return v;\n}\n\nconst kMillisPerDay = 86400000;\n\nfunction toPrimitive_DATE(value: any): number {\n /* convert from date */\n if (value instanceof Date) {\n return value.getTime() / kMillisPerDay;\n }\n\n /* convert from integer */\n {\n const v = parseInt(value, 10);\n if (v < 0 || isNaN(v)) {\n throw new Error(`invalid value for DATE: ${value}`);\n }\n\n return v;\n }\n}\n\nfunction fromPrimitive_DATE(value: any): Date {\n return new Date(value * kMillisPerDay);\n}\n\nfunction toPrimitive_TIMESTAMP_MILLIS(value: any): number {\n /* convert from date */\n if (value instanceof Date) {\n return value.getTime();\n }\n\n /* convert from integer */\n {\n const v = parseInt(value, 10);\n if (v < 0 || isNaN(v)) {\n throw new Error(`invalid value for TIMESTAMP_MILLIS: ${value}`);\n }\n\n return v;\n }\n}\n\nfunction fromPrimitive_TIMESTAMP_MILLIS(value: any): Date {\n return new Date(value);\n}\n\nfunction toPrimitive_TIMESTAMP_MICROS(value: any) {\n /* convert from date */\n if (value instanceof Date) {\n return value.getTime() * 1000;\n }\n\n /* convert from integer */\n {\n const v = parseInt(value, 10);\n if (v < 0 || isNaN(v)) {\n throw new Error(`invalid value for TIMESTAMP_MICROS: ${value}`);\n }\n\n return v;\n }\n}\n\nfunction fromPrimitive_TIMESTAMP_MICROS(value: any) {\n return new Date(value / 1000);\n}\n\nfunction toPrimitive_INTERVAL(value: any) {\n if (!value.months || !value.days || !value.milliseconds) {\n throw new Error(\n 'value for INTERVAL must be object { months: ..., days: ..., milliseconds: ... }'\n );\n }\n\n const buf = Buffer.alloc(12);\n\n buf.writeUInt32LE(value.months, 0);\n buf.writeUInt32LE(value.days, 4);\n buf.writeUInt32LE(value.milliseconds, 8);\n return buf;\n}\n\nfunction fromPrimitive_INTERVAL(value: any) {\n const buf = Buffer.from(value);\n const months = buf.readUInt32LE(0);\n const days = buf.readUInt32LE(4);\n const millis = buf.readUInt32LE(8);\n\n return {months, days, milliseconds: millis};\n}\n\nfunction decimalFromPrimitive_INT(value: any, field: ParquetField) {\n const presisionInt = Math.round(((value * 10 ** -field.presision!) % 1) * 10 ** field.presision!);\n return presisionInt * 10 ** -(field.scale || 0);\n}\n\nfunction decimalFromPrimitive_BYTE_ARRAY(value: any, field: ParquetField) {\n let number = 0;\n if (value.length <= 4) {\n // Bytewise operators faster. Use them if it is possible\n for (let i = 0; i < value.length; i++) {\n // `value.length - i - 1` bytes have reverse order (big-endian)\n const component = value[i] << (8 * (value.length - i - 1));\n number += component;\n }\n } else {\n for (let i = 0; i < value.length; i++) {\n // `value.length - i - 1` bytes have reverse order (big-endian)\n const component = value[i] * 2 ** (8 * (value.length - 1 - i));\n number += component;\n }\n }\n\n const presisionInt = Math.round(\n ((number * 10 ** -field.presision!) % 1) * 10 ** field.presision!\n );\n return presisionInt * 10 ** -(field.scale || 0);\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-utils.js","names":["fs","load","name","module","global","require","oswrite","os","buf","Promise","resolve","reject","write","err","osclose","close","osopen","path","opts","outputStream","createWriteStream","once","fd"],"sources":["../../../../src/parquetjs/utils/file-utils.ts"],"sourcesContent":["// Forked from https://github.com/kbajalc/parquets under MIT license (Copyright (c) 2017 ironSource Ltd.)\nimport fs
|
|
1
|
+
{"version":3,"file":"file-utils.js","names":["fs","load","name","module","global","require","oswrite","os","buf","Promise","resolve","reject","write","err","osclose","close","osopen","path","opts","outputStream","createWriteStream","once","fd"],"sources":["../../../../src/parquetjs/utils/file-utils.ts"],"sourcesContent":["// Forked from https://github.com/kbajalc/parquets under MIT license (Copyright (c) 2017 ironSource Ltd.)\nimport {fs, stream} from '@loaders.gl/loader-utils';\n\nexport function load(name: string): any {\n return (module || (global as any)).require(name);\n}\nexport interface WriteStreamOptions {\n flags?: string;\n encoding?: string;\n fd?: number;\n mode?: number;\n autoClose?: boolean;\n start?: number;\n}\n\nexport function oswrite(os: stream.Writable, buf: Buffer): Promise<void> {\n return new Promise((resolve, reject) => {\n os.write(buf, (err) => {\n if (err) {\n reject(err);\n } else {\n resolve();\n }\n });\n });\n}\n\nexport function osclose(os: stream.Writable): Promise<void> {\n return new Promise((resolve, reject) => {\n (os as any).close((err: any) => {\n if (err) {\n reject(err);\n } else {\n resolve();\n }\n });\n });\n}\n\nexport function osopen(path: string, opts?: WriteStreamOptions): Promise<fs.WriteStream> {\n return new Promise((resolve, reject) => {\n const outputStream = fs.createWriteStream(path, opts as any);\n outputStream.once('open', (fd) => resolve(outputStream));\n outputStream.once('error', (err) => reject(err));\n });\n}\n"],"mappings":";AACA,SAAQA,EAAE,QAAe,0BAA0B;AAEnD,OAAO,SAASC,IAAI,CAACC,IAAY,EAAO;EACtC,OAAO,CAACC,MAAM,IAAKC,MAAc,EAAEC,OAAO,CAACH,IAAI,CAAC;AAClD;AAUA,OAAO,SAASI,OAAO,CAACC,EAAmB,EAAEC,GAAW,EAAiB;EACvE,OAAO,IAAIC,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;IACtCJ,EAAE,CAACK,KAAK,CAACJ,GAAG,EAAGK,GAAG,IAAK;MACrB,IAAIA,GAAG,EAAE;QACPF,MAAM,CAACE,GAAG,CAAC;MACb,CAAC,MAAM;QACLH,OAAO,EAAE;MACX;IACF,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ;AAEA,OAAO,SAASI,OAAO,CAACP,EAAmB,EAAiB;EAC1D,OAAO,IAAIE,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;IACrCJ,EAAE,CAASQ,KAAK,CAAEF,GAAQ,IAAK;MAC9B,IAAIA,GAAG,EAAE;QACPF,MAAM,CAACE,GAAG,CAAC;MACb,CAAC,MAAM;QACLH,OAAO,EAAE;MACX;IACF,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ;AAEA,OAAO,SAASM,MAAM,CAACC,IAAY,EAAEC,IAAyB,EAA2B;EACvF,OAAO,IAAIT,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;IACtC,MAAMQ,YAAY,GAAGnB,EAAE,CAACoB,iBAAiB,CAACH,IAAI,EAAEC,IAAI,CAAQ;IAC5DC,YAAY,CAACE,IAAI,CAAC,MAAM,EAAGC,EAAE,IAAKZ,OAAO,CAACS,YAAY,CAAC,CAAC;IACxDA,YAAY,CAACE,IAAI,CAAC,OAAO,EAAGR,GAAG,IAAKF,MAAM,CAACE,GAAG,CAAC,CAAC;EAClD,CAAC,CAAC;AACJ"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { LoaderWithParser } from '@loaders.gl/loader-utils';
|
|
2
2
|
import { ParquetWasmLoader as ParquetWasmWorkerLoader } from './parquet-wasm-loader';
|
|
3
3
|
import { ParquetLoader as ParquetWorkerLoader } from './parquet-loader';
|
|
4
|
-
import { parseParquet, parseParquetFileInBatches } from './lib/parse-parquet';
|
|
4
|
+
import { parseParquet, parseParquetFileInBatches } from './lib/parsers/parse-parquet-to-rows';
|
|
5
|
+
import { parseParquetInColumns, parseParquetFileInColumnarBatches } from './lib/parsers/parse-parquet-to-columns';
|
|
5
6
|
import { parseParquet as parseParquetWasm } from './lib/wasm/parse-parquet-wasm';
|
|
6
7
|
export { ParquetWorkerLoader, ParquetWasmWorkerLoader };
|
|
7
8
|
/** ParquetJS table loader */
|
|
@@ -10,7 +11,23 @@ export declare const ParquetLoader: {
|
|
|
10
11
|
parseFileInBatches: typeof parseParquetFileInBatches;
|
|
11
12
|
name: string;
|
|
12
13
|
id: string;
|
|
13
|
-
module: string;
|
|
14
|
+
module: string; /** ParquetJS table loader */
|
|
15
|
+
version: any;
|
|
16
|
+
worker: boolean;
|
|
17
|
+
category: string;
|
|
18
|
+
extensions: string[];
|
|
19
|
+
mimeTypes: string[];
|
|
20
|
+
binary: boolean;
|
|
21
|
+
tests: string[];
|
|
22
|
+
options: import("./parquet-loader").ParquetLoaderOptions;
|
|
23
|
+
};
|
|
24
|
+
/** ParquetJS table loader */
|
|
25
|
+
export declare const ParquetColumnarLoader: {
|
|
26
|
+
parse: typeof parseParquetInColumns;
|
|
27
|
+
parseFileInBatches: typeof parseParquetFileInColumnarBatches;
|
|
28
|
+
name: string;
|
|
29
|
+
id: string;
|
|
30
|
+
module: string; /** ParquetJS table loader */
|
|
14
31
|
version: any;
|
|
15
32
|
worker: boolean;
|
|
16
33
|
category: string;
|
|
@@ -39,7 +56,10 @@ export { ParquetWasmWriter } from './parquet-wasm-writer';
|
|
|
39
56
|
export { preloadCompressions } from './parquetjs/compression';
|
|
40
57
|
export { ParquetSchema } from './parquetjs/schema/schema';
|
|
41
58
|
export { ParquetReader } from './parquetjs/parser/parquet-reader';
|
|
42
|
-
export {
|
|
43
|
-
export { convertParquetToArrowSchema } from './lib/convert-schema';
|
|
59
|
+
export { ParquetEncoder } from './parquetjs/encoder/parquet-encoder';
|
|
60
|
+
export { convertSchemaFromParquet, convertSchemaFromParquet as convertParquetToArrowSchema } from './lib/arrow/convert-schema-from-parquet';
|
|
44
61
|
export declare const _typecheckParquetLoader: LoaderWithParser;
|
|
62
|
+
export { default as geoJSONSchema } from './lib/geo/geoparquet-schema';
|
|
63
|
+
export type { GeoMetadata } from './lib/geo/decode-geo-metadata';
|
|
64
|
+
export { getGeoMetadata, setGeoMetadata, unpackGeoMetadata } from './lib/geo/decode-geo-metadata';
|
|
45
65
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAI/D,OAAO,EAAC,iBAAiB,IAAI,uBAAuB,EAAC,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAC,aAAa,IAAI,mBAAmB,EAAC,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAC,YAAY,EAAE,yBAAyB,EAAC,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAI/D,OAAO,EAAC,iBAAiB,IAAI,uBAAuB,EAAC,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAC,aAAa,IAAI,mBAAmB,EAAC,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAC,YAAY,EAAE,yBAAyB,EAAC,MAAM,qCAAqC,CAAC;AAC5F,OAAO,EACL,qBAAqB,EACrB,iCAAiC,EAClC,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAC,YAAY,IAAI,gBAAgB,EAAC,MAAM,+BAA+B,CAAC;AAE/E,OAAO,EAAC,mBAAmB,EAAE,uBAAuB,EAAC,CAAC;AAEtD,6BAA6B;AAC7B,eAAO,MAAM,aAAa;;;;;oBAM1B,6BAA6B;;;;;;;;;CAF5B,CAAC;AAEF,6BAA6B;AAC7B,eAAO,MAAM,qBAAqB;;;;;oBADlC,6BAA6B;;;;;;;;;CAK5B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;CAG7B,CAAC;AAIF,OAAO,EAAC,aAAa,IAAI,cAAc,EAAC,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAC;AAIxD,OAAO,EAAC,mBAAmB,EAAC,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAC,aAAa,EAAC,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAC,aAAa,EAAC,MAAM,mCAAmC,CAAC;AAChE,OAAO,EAAC,cAAc,EAAC,MAAM,qCAAqC,CAAC;AAEnE,OAAO,EACL,wBAAwB,EACxB,wBAAwB,IAAI,2BAA2B,EACxD,MAAM,yCAAyC,CAAC;AAGjD,eAAO,MAAM,uBAAuB,EAAE,gBAAgC,CAAC;AAGvE,OAAO,EAAC,OAAO,IAAI,aAAa,EAAC,MAAM,6BAA6B,CAAC;AAErE,YAAY,EAAC,WAAW,EAAC,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAC,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAC,MAAM,+BAA+B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,18 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports._typecheckParquetLoader = exports.convertParquetToArrowSchema = exports.
|
|
6
|
+
exports.unpackGeoMetadata = exports.setGeoMetadata = exports.getGeoMetadata = exports.geoJSONSchema = exports._typecheckParquetLoader = exports.convertParquetToArrowSchema = exports.convertSchemaFromParquet = exports.ParquetEncoder = exports.ParquetReader = exports.ParquetSchema = exports.preloadCompressions = exports.ParquetWasmWriter = exports._ParquetWriter = exports.ParquetWasmLoader = exports.ParquetColumnarLoader = exports.ParquetLoader = exports.ParquetWasmWorkerLoader = exports.ParquetWorkerLoader = void 0;
|
|
4
7
|
// ParquetLoader
|
|
5
8
|
const parquet_wasm_loader_1 = require("./parquet-wasm-loader");
|
|
6
9
|
Object.defineProperty(exports, "ParquetWasmWorkerLoader", { enumerable: true, get: function () { return parquet_wasm_loader_1.ParquetWasmLoader; } });
|
|
7
10
|
const parquet_loader_1 = require("./parquet-loader");
|
|
8
11
|
Object.defineProperty(exports, "ParquetWorkerLoader", { enumerable: true, get: function () { return parquet_loader_1.ParquetLoader; } });
|
|
9
|
-
const
|
|
12
|
+
const parse_parquet_to_rows_1 = require("./lib/parsers/parse-parquet-to-rows");
|
|
13
|
+
const parse_parquet_to_columns_1 = require("./lib/parsers/parse-parquet-to-columns");
|
|
10
14
|
const parse_parquet_wasm_1 = require("./lib/wasm/parse-parquet-wasm");
|
|
11
15
|
/** ParquetJS table loader */
|
|
12
16
|
exports.ParquetLoader = {
|
|
13
17
|
...parquet_loader_1.ParquetLoader,
|
|
14
|
-
parse:
|
|
15
|
-
parseFileInBatches:
|
|
18
|
+
parse: parse_parquet_to_rows_1.parseParquet,
|
|
19
|
+
parseFileInBatches: parse_parquet_to_rows_1.parseParquetFileInBatches
|
|
20
|
+
};
|
|
21
|
+
/** ParquetJS table loader */
|
|
22
|
+
exports.ParquetColumnarLoader = {
|
|
23
|
+
...parquet_loader_1.ParquetLoader,
|
|
24
|
+
parse: parse_parquet_to_columns_1.parseParquetInColumns,
|
|
25
|
+
parseFileInBatches: parse_parquet_to_columns_1.parseParquetFileInColumnarBatches
|
|
16
26
|
};
|
|
17
27
|
exports.ParquetWasmLoader = {
|
|
18
28
|
...parquet_wasm_loader_1.ParquetWasmLoader,
|
|
@@ -30,10 +40,17 @@ var schema_1 = require("./parquetjs/schema/schema");
|
|
|
30
40
|
Object.defineProperty(exports, "ParquetSchema", { enumerable: true, get: function () { return schema_1.ParquetSchema; } });
|
|
31
41
|
var parquet_reader_1 = require("./parquetjs/parser/parquet-reader");
|
|
32
42
|
Object.defineProperty(exports, "ParquetReader", { enumerable: true, get: function () { return parquet_reader_1.ParquetReader; } });
|
|
33
|
-
var
|
|
34
|
-
Object.defineProperty(exports, "
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
Object.defineProperty(exports, "convertParquetToArrowSchema", { enumerable: true, get: function () { return
|
|
43
|
+
var parquet_encoder_1 = require("./parquetjs/encoder/parquet-encoder");
|
|
44
|
+
Object.defineProperty(exports, "ParquetEncoder", { enumerable: true, get: function () { return parquet_encoder_1.ParquetEncoder; } });
|
|
45
|
+
var convert_schema_from_parquet_1 = require("./lib/arrow/convert-schema-from-parquet");
|
|
46
|
+
Object.defineProperty(exports, "convertSchemaFromParquet", { enumerable: true, get: function () { return convert_schema_from_parquet_1.convertSchemaFromParquet; } });
|
|
47
|
+
Object.defineProperty(exports, "convertParquetToArrowSchema", { enumerable: true, get: function () { return convert_schema_from_parquet_1.convertSchemaFromParquet; } });
|
|
38
48
|
// TESTS
|
|
39
49
|
exports._typecheckParquetLoader = exports.ParquetLoader;
|
|
50
|
+
// Geo Metadata
|
|
51
|
+
var geoparquet_schema_1 = require("./lib/geo/geoparquet-schema");
|
|
52
|
+
Object.defineProperty(exports, "geoJSONSchema", { enumerable: true, get: function () { return __importDefault(geoparquet_schema_1).default; } });
|
|
53
|
+
var decode_geo_metadata_1 = require("./lib/geo/decode-geo-metadata");
|
|
54
|
+
Object.defineProperty(exports, "getGeoMetadata", { enumerable: true, get: function () { return decode_geo_metadata_1.getGeoMetadata; } });
|
|
55
|
+
Object.defineProperty(exports, "setGeoMetadata", { enumerable: true, get: function () { return decode_geo_metadata_1.setGeoMetadata; } });
|
|
56
|
+
Object.defineProperty(exports, "unpackGeoMetadata", { enumerable: true, get: function () { return decode_geo_metadata_1.unpackGeoMetadata; } });
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=convert-columns-to-row-group.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert-columns-to-row-group.d.ts","sourceRoot":"","sources":["../../../src/lib/arrow/convert-columns-to-row-group.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Schema } from '@loaders.gl/schema';
|
|
2
|
+
import { ParquetBuffer } from '@loaders.gl/parquet/parquetjs/schema/declare';
|
|
3
|
+
export declare function convertParquetRowGroupToColumns(schema: Schema, rowGroup: ParquetBuffer): Record<string, any[]>;
|
|
4
|
+
//# sourceMappingURL=convert-row-group-to-columns.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert-row-group-to-columns.d.ts","sourceRoot":"","sources":["../../../src/lib/arrow/convert-row-group-to-columns.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,MAAM,EAAC,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAC,aAAa,EAAC,MAAM,8CAA8C,CAAC;AAE3E,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,aAAa,GACtB,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAMvB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// loaders.gl, MIT license
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.convertParquetRowGroupToColumns = void 0;
|
|
5
|
+
function convertParquetRowGroupToColumns(schema, rowGroup) {
|
|
6
|
+
const columns = {};
|
|
7
|
+
for (const [columnName, data] of Object.entries(rowGroup.columnData)) {
|
|
8
|
+
columns[columnName] = columns[columnName] || data.values;
|
|
9
|
+
}
|
|
10
|
+
return columns;
|
|
11
|
+
}
|
|
12
|
+
exports.convertParquetRowGroupToColumns = convertParquetRowGroupToColumns;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ParquetSchema } from '../../parquetjs/schema/schema';
|
|
2
|
+
import type { ParquetType } from '../../parquetjs/schema/declare';
|
|
3
|
+
import { FileMetaData } from '@loaders.gl/parquet/parquetjs/parquet-thrift';
|
|
4
|
+
import { Schema, DataType } from '@loaders.gl/schema';
|
|
5
|
+
export declare const PARQUET_TYPE_MAPPING: {
|
|
6
|
+
[type in ParquetType]: typeof DataType;
|
|
7
|
+
};
|
|
8
|
+
export declare function convertSchemaFromParquet(parquetSchema: ParquetSchema, parquetMetadata?: FileMetaData): Schema;
|
|
9
|
+
//# sourceMappingURL=convert-schema-from-parquet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert-schema-from-parquet.d.ts","sourceRoot":"","sources":["../../../src/lib/arrow/convert-schema-from-parquet.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAgC,WAAW,EAAC,MAAM,gCAAgC,CAAC;AAC/F,OAAO,EAAC,YAAY,EAAC,MAAM,8CAA8C,CAAC;AAE1E,OAAO,EACL,MAAM,EAGN,QAAQ,EAaT,MAAM,oBAAoB,CAAC;AAE5B,eAAO,MAAM,oBAAoB,EAAE;KAAE,IAAI,IAAI,WAAW,GAAG,OAAO,QAAQ;CA+BzE,CAAC;AAEF,wBAAgB,wBAAwB,CACtC,aAAa,EAAE,aAAa,EAC5B,eAAe,CAAC,EAAE,YAAY,GAC7B,MAAM,CAIR"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
// loaders.gl, MIT license
|
|
2
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
+
exports.convertSchemaFromParquet = exports.PARQUET_TYPE_MAPPING = void 0;
|
|
4
5
|
const schema_1 = require("@loaders.gl/schema");
|
|
5
6
|
exports.PARQUET_TYPE_MAPPING = {
|
|
6
7
|
BOOLEAN: schema_1.Bool,
|
|
@@ -27,36 +28,26 @@ exports.PARQUET_TYPE_MAPPING = {
|
|
|
27
28
|
INT_64: schema_1.Int64,
|
|
28
29
|
JSON: schema_1.Binary,
|
|
29
30
|
BSON: schema_1.Binary,
|
|
30
|
-
// TODO check
|
|
31
|
+
// TODO check interval type
|
|
31
32
|
INTERVAL: schema_1.Binary,
|
|
32
33
|
DECIMAL_INT32: schema_1.Float32,
|
|
33
34
|
DECIMAL_INT64: schema_1.Float64,
|
|
34
35
|
DECIMAL_BYTE_ARRAY: schema_1.Float64,
|
|
35
36
|
DECIMAL_FIXED_LEN_BYTE_ARRAY: schema_1.Float64
|
|
36
37
|
};
|
|
37
|
-
function
|
|
38
|
+
function convertSchemaFromParquet(parquetSchema, parquetMetadata) {
|
|
38
39
|
const fields = getFields(parquetSchema.schema);
|
|
39
|
-
|
|
40
|
-
return new schema_1.Schema(fields);
|
|
41
|
-
}
|
|
42
|
-
exports.convertParquetToArrowSchema = convertParquetToArrowSchema;
|
|
43
|
-
function getFieldMetadata(field) {
|
|
44
|
-
const metadata = new Map();
|
|
45
|
-
for (const key in field) {
|
|
46
|
-
if (key !== 'name') {
|
|
47
|
-
const value = typeof field[key] !== 'string' ? JSON.stringify(field[key]) : field[key];
|
|
48
|
-
metadata.set(key, value);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
return metadata;
|
|
40
|
+
const metadata = parquetMetadata && getSchemaMetadata(parquetMetadata);
|
|
41
|
+
return new schema_1.Schema(fields, metadata);
|
|
52
42
|
}
|
|
43
|
+
exports.convertSchemaFromParquet = convertSchemaFromParquet;
|
|
53
44
|
function getFields(schema) {
|
|
54
45
|
const fields = [];
|
|
55
46
|
for (const name in schema) {
|
|
56
47
|
const field = schema[name];
|
|
57
48
|
if (field.fields) {
|
|
58
|
-
const
|
|
59
|
-
const nestedField = new schema_1.Field(name, new schema_1.Struct(
|
|
49
|
+
const childFields = getFields(field.fields);
|
|
50
|
+
const nestedField = new schema_1.Field(name, new schema_1.Struct(childFields), field.optional);
|
|
60
51
|
fields.push(nestedField);
|
|
61
52
|
}
|
|
62
53
|
else {
|
|
@@ -68,3 +59,24 @@ function getFields(schema) {
|
|
|
68
59
|
}
|
|
69
60
|
return fields;
|
|
70
61
|
}
|
|
62
|
+
function getFieldMetadata(field) {
|
|
63
|
+
const metadata = new Map();
|
|
64
|
+
for (const key in field) {
|
|
65
|
+
if (key !== 'name') {
|
|
66
|
+
let value = field[key] || '';
|
|
67
|
+
value = typeof field[key] !== 'string' ? JSON.stringify(field[key]) : field[key];
|
|
68
|
+
metadata.set(key, value);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return metadata;
|
|
72
|
+
}
|
|
73
|
+
function getSchemaMetadata(parquetMetadata) {
|
|
74
|
+
const metadata = new Map();
|
|
75
|
+
const keyValueList = parquetMetadata.key_value_metadata || [];
|
|
76
|
+
for (const { key, value } of keyValueList) {
|
|
77
|
+
if (typeof value === 'string') {
|
|
78
|
+
metadata.set(key, value);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return metadata;
|
|
82
|
+
}
|