@loaders.gl/parquet 4.2.0-alpha.3 → 4.2.0-alpha.5
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/index.cjs +269 -616
- package/dist/index.cjs.map +7 -0
- package/dist/index.d.ts +12 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/lib/arrow/convert-columns-to-row-group.js +1 -2
- package/dist/lib/arrow/convert-row-group-to-columns.js +8 -6
- package/dist/lib/arrow/convert-schema-from-parquet.d.ts +3 -3
- package/dist/lib/arrow/convert-schema-from-parquet.d.ts.map +1 -1
- package/dist/lib/arrow/convert-schema-from-parquet.js +71 -82
- package/dist/lib/arrow/convert-schema-to-parquet.d.ts +1 -1
- package/dist/lib/arrow/convert-schema-to-parquet.d.ts.map +1 -1
- package/dist/lib/arrow/convert-schema-to-parquet.js +65 -35
- package/dist/lib/constants.js +15 -2
- package/dist/lib/parsers/get-parquet-schema.d.ts +1 -1
- package/dist/lib/parsers/get-parquet-schema.d.ts.map +1 -1
- package/dist/lib/parsers/get-parquet-schema.js +9 -7
- package/dist/lib/parsers/parse-geoparquet.d.ts +1 -1
- package/dist/lib/parsers/parse-geoparquet.d.ts.map +1 -1
- package/dist/lib/parsers/parse-geoparquet.js +47 -45
- package/dist/lib/parsers/parse-parquet-to-columns.d.ts +1 -1
- package/dist/lib/parsers/parse-parquet-to-columns.d.ts.map +1 -1
- package/dist/lib/parsers/parse-parquet-to-columns.js +36 -25
- package/dist/lib/parsers/parse-parquet.d.ts +1 -1
- package/dist/lib/parsers/parse-parquet.d.ts.map +1 -1
- package/dist/lib/parsers/parse-parquet.js +62 -50
- package/dist/lib/wasm/encode-parquet-wasm.d.ts +1 -1
- package/dist/lib/wasm/encode-parquet-wasm.d.ts.map +1 -1
- package/dist/lib/wasm/encode-parquet-wasm.js +49 -12
- package/dist/lib/wasm/load-wasm.js +13 -10
- package/dist/lib/wasm/parse-parquet-wasm.d.ts +1 -1
- package/dist/lib/wasm/parse-parquet-wasm.d.ts.map +1 -1
- package/dist/lib/wasm/parse-parquet-wasm.js +19 -15
- package/dist/parquet-loader.d.ts +1 -1
- package/dist/parquet-loader.d.ts.map +1 -1
- package/dist/parquet-loader.js +78 -65
- package/dist/parquet-wasm-loader.js +25 -28
- package/dist/parquet-wasm-writer.js +19 -23
- package/dist/parquet-writer.js +17 -13
- package/dist/parquetjs/codecs/declare.d.ts +1 -1
- package/dist/parquetjs/codecs/declare.d.ts.map +1 -1
- package/dist/parquetjs/codecs/declare.js +0 -1
- package/dist/parquetjs/codecs/dictionary.js +4 -8
- package/dist/parquetjs/codecs/index.d.ts +3 -3
- package/dist/parquetjs/codecs/index.d.ts.map +1 -1
- package/dist/parquetjs/codecs/index.js +20 -17
- package/dist/parquetjs/codecs/plain.d.ts +2 -2
- package/dist/parquetjs/codecs/plain.d.ts.map +1 -1
- package/dist/parquetjs/codecs/plain.js +166 -162
- package/dist/parquetjs/codecs/rle.d.ts +2 -2
- package/dist/parquetjs/codecs/rle.d.ts.map +1 -1
- package/dist/parquetjs/codecs/rle.js +124 -105
- package/dist/parquetjs/compression.d.ts +1 -1
- package/dist/parquetjs/compression.d.ts.map +1 -1
- package/dist/parquetjs/compression.js +157 -43
- package/dist/parquetjs/encoder/parquet-encoder.d.ts +3 -3
- package/dist/parquetjs/encoder/parquet-encoder.d.ts.map +1 -1
- package/dist/parquetjs/encoder/parquet-encoder.js +406 -275
- package/dist/parquetjs/parquet-thrift/BoundaryOrder.js +12 -7
- package/dist/parquetjs/parquet-thrift/BsonType.js +31 -27
- package/dist/parquetjs/parquet-thrift/ColumnChunk.d.ts +1 -1
- package/dist/parquetjs/parquet-thrift/ColumnChunk.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/ColumnChunk.js +175 -166
- package/dist/parquetjs/parquet-thrift/ColumnIndex.d.ts +1 -1
- package/dist/parquetjs/parquet-thrift/ColumnIndex.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/ColumnIndex.js +178 -166
- package/dist/parquetjs/parquet-thrift/ColumnMetaData.d.ts +6 -6
- package/dist/parquetjs/parquet-thrift/ColumnMetaData.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/ColumnMetaData.js +359 -333
- package/dist/parquetjs/parquet-thrift/ColumnOrder.d.ts +1 -1
- package/dist/parquetjs/parquet-thrift/ColumnOrder.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/ColumnOrder.js +73 -68
- package/dist/parquetjs/parquet-thrift/CompressionCodec.js +17 -12
- package/dist/parquetjs/parquet-thrift/ConvertedType.js +31 -26
- package/dist/parquetjs/parquet-thrift/DataPageHeader.d.ts +2 -2
- package/dist/parquetjs/parquet-thrift/DataPageHeader.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/DataPageHeader.js +136 -124
- package/dist/parquetjs/parquet-thrift/DataPageHeaderV2.d.ts +2 -2
- package/dist/parquetjs/parquet-thrift/DataPageHeaderV2.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/DataPageHeaderV2.js +198 -181
- package/dist/parquetjs/parquet-thrift/DateType.js +31 -27
- package/dist/parquetjs/parquet-thrift/DecimalType.js +76 -69
- package/dist/parquetjs/parquet-thrift/DictionaryPageHeader.d.ts +1 -1
- package/dist/parquetjs/parquet-thrift/DictionaryPageHeader.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/DictionaryPageHeader.js +93 -86
- package/dist/parquetjs/parquet-thrift/Encoding.js +17 -12
- package/dist/parquetjs/parquet-thrift/EnumType.js +31 -27
- package/dist/parquetjs/parquet-thrift/FieldRepetitionType.js +12 -7
- package/dist/parquetjs/parquet-thrift/FileMetaData.d.ts +4 -4
- package/dist/parquetjs/parquet-thrift/FileMetaData.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/FileMetaData.js +217 -205
- package/dist/parquetjs/parquet-thrift/IndexPageHeader.js +31 -27
- package/dist/parquetjs/parquet-thrift/IntType.js +76 -69
- package/dist/parquetjs/parquet-thrift/JsonType.js +31 -27
- package/dist/parquetjs/parquet-thrift/KeyValue.js +73 -67
- package/dist/parquetjs/parquet-thrift/ListType.js +31 -27
- package/dist/parquetjs/parquet-thrift/LogicalType.d.ts +13 -13
- package/dist/parquetjs/parquet-thrift/LogicalType.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/LogicalType.js +325 -344
- package/dist/parquetjs/parquet-thrift/MapType.js +31 -27
- package/dist/parquetjs/parquet-thrift/MicroSeconds.js +31 -27
- package/dist/parquetjs/parquet-thrift/MilliSeconds.js +31 -27
- package/dist/parquetjs/parquet-thrift/NullType.js +31 -27
- package/dist/parquetjs/parquet-thrift/OffsetIndex.d.ts +1 -1
- package/dist/parquetjs/parquet-thrift/OffsetIndex.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/OffsetIndex.js +66 -60
- package/dist/parquetjs/parquet-thrift/PageEncodingStats.d.ts +2 -2
- package/dist/parquetjs/parquet-thrift/PageEncodingStats.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/PageEncodingStats.js +98 -88
- package/dist/parquetjs/parquet-thrift/PageHeader.d.ts +5 -5
- package/dist/parquetjs/parquet-thrift/PageHeader.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/PageHeader.js +185 -175
- package/dist/parquetjs/parquet-thrift/PageLocation.js +108 -96
- package/dist/parquetjs/parquet-thrift/PageType.js +13 -8
- package/dist/parquetjs/parquet-thrift/RowGroup.d.ts +2 -2
- package/dist/parquetjs/parquet-thrift/RowGroup.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/RowGroup.js +145 -133
- package/dist/parquetjs/parquet-thrift/SchemaElement.d.ts +4 -4
- package/dist/parquetjs/parquet-thrift/SchemaElement.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/SchemaElement.js +211 -205
- package/dist/parquetjs/parquet-thrift/SortingColumn.js +98 -88
- package/dist/parquetjs/parquet-thrift/Statistics.js +143 -137
- package/dist/parquetjs/parquet-thrift/StringType.js +31 -27
- package/dist/parquetjs/parquet-thrift/TimeType.d.ts +1 -1
- package/dist/parquetjs/parquet-thrift/TimeType.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/TimeType.js +76 -69
- package/dist/parquetjs/parquet-thrift/TimeUnit.d.ts +2 -2
- package/dist/parquetjs/parquet-thrift/TimeUnit.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/TimeUnit.js +94 -91
- package/dist/parquetjs/parquet-thrift/TimestampType.d.ts +1 -1
- package/dist/parquetjs/parquet-thrift/TimestampType.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/TimestampType.js +76 -69
- package/dist/parquetjs/parquet-thrift/Type.js +17 -12
- package/dist/parquetjs/parquet-thrift/TypeDefinedOrder.js +31 -27
- package/dist/parquetjs/parquet-thrift/UUIDType.js +31 -27
- package/dist/parquetjs/parquet-thrift/index.d.ts +44 -44
- package/dist/parquetjs/parquet-thrift/index.d.ts.map +1 -1
- package/dist/parquetjs/parquet-thrift/index.js +6 -1
- package/dist/parquetjs/parser/decoders.d.ts +3 -3
- package/dist/parquetjs/parser/decoders.d.ts.map +1 -1
- package/dist/parquetjs/parser/decoders.js +306 -242
- package/dist/parquetjs/parser/parquet-reader.d.ts +3 -3
- package/dist/parquetjs/parser/parquet-reader.d.ts.map +1 -1
- package/dist/parquetjs/parser/parquet-reader.js +179 -157
- package/dist/parquetjs/schema/declare.d.ts +1 -1
- package/dist/parquetjs/schema/declare.d.ts.map +1 -1
- package/dist/parquetjs/schema/declare.js +6 -9
- package/dist/parquetjs/schema/schema.d.ts +1 -1
- package/dist/parquetjs/schema/schema.d.ts.map +1 -1
- package/dist/parquetjs/schema/schema.js +139 -120
- package/dist/parquetjs/schema/shred.d.ts +2 -2
- package/dist/parquetjs/schema/shred.d.ts.map +1 -1
- package/dist/parquetjs/schema/shred.js +301 -204
- package/dist/parquetjs/schema/types.d.ts +1 -1
- package/dist/parquetjs/schema/types.d.ts.map +1 -1
- package/dist/parquetjs/schema/types.js +328 -314
- package/dist/parquetjs/utils/file-utils.js +24 -23
- package/dist/parquetjs/utils/read-utils.d.ts +1 -1
- package/dist/parquetjs/utils/read-utils.d.ts.map +1 -1
- package/dist/parquetjs/utils/read-utils.js +79 -69
- package/dist/polyfills/buffer/buffer-polyfill.browser.js +8 -3
- package/dist/polyfills/buffer/buffer-polyfill.node.js +13 -8
- package/dist/polyfills/buffer/buffer.js +1750 -1367
- package/dist/polyfills/buffer/index.d.ts +3 -3
- package/dist/polyfills/buffer/index.d.ts.map +1 -1
- package/dist/polyfills/buffer/index.js +5 -1
- package/dist/polyfills/buffer/install-buffer-polyfill.js +2 -1
- package/dist/polyfills/util.js +4 -1
- package/dist/workers/parquet-worker.js +3 -1
- package/package.json +15 -13
- package/src/index.ts +1 -1
- package/src/lib/parsers/parse-parquet-to-columns.ts +1 -1
- package/src/lib/parsers/parse-parquet.ts +1 -1
- package/src/parquetjs/encoder/parquet-encoder.ts +2 -2
- package/src/parquetjs/parser/decoders.ts +2 -2
- package/src/parquetjs/parser/parquet-reader.ts +1 -1
- package/src/parquetjs/schema/schema.ts +1 -1
- package/src/parquetjs/utils/read-utils.ts +2 -2
- package/dist/index.js.map +0 -1
- package/dist/lib/arrow/convert-columns-to-row-group.js.map +0 -1
- package/dist/lib/arrow/convert-row-group-to-columns.js.map +0 -1
- package/dist/lib/arrow/convert-schema-from-parquet.js.map +0 -1
- package/dist/lib/arrow/convert-schema-to-parquet.js.map +0 -1
- package/dist/lib/constants.js.map +0 -1
- package/dist/lib/parsers/get-parquet-schema.js.map +0 -1
- package/dist/lib/parsers/parse-geoparquet.js.map +0 -1
- package/dist/lib/parsers/parse-parquet-to-columns.js.map +0 -1
- package/dist/lib/parsers/parse-parquet.js.map +0 -1
- package/dist/lib/wasm/encode-parquet-wasm.js.map +0 -1
- package/dist/lib/wasm/load-wasm.js.map +0 -1
- package/dist/lib/wasm/parse-parquet-wasm.js.map +0 -1
- package/dist/lib/wip/convert-schema-deep.java.disabled +0 -910
- package/dist/lib/wip/convert-schema-deep.rs.disabled +0 -976
- package/dist/parquet-loader.js.map +0 -1
- package/dist/parquet-wasm-loader.js.map +0 -1
- package/dist/parquet-wasm-writer.js.map +0 -1
- package/dist/parquet-writer.js.map +0 -1
- package/dist/parquetjs/LICENSE +0 -20
- package/dist/parquetjs/codecs/declare.js.map +0 -1
- package/dist/parquetjs/codecs/dictionary.js.map +0 -1
- package/dist/parquetjs/codecs/index.js.map +0 -1
- package/dist/parquetjs/codecs/plain.js.map +0 -1
- package/dist/parquetjs/codecs/rle.js.map +0 -1
- package/dist/parquetjs/compression.js.map +0 -1
- package/dist/parquetjs/encoder/parquet-encoder.js.map +0 -1
- package/dist/parquetjs/modules.d.ts +0 -21
- package/dist/parquetjs/parquet-thrift/BoundaryOrder.js.map +0 -1
- package/dist/parquetjs/parquet-thrift/BsonType.js.map +0 -1
- package/dist/parquetjs/parquet-thrift/ColumnChunk.js.map +0 -1
- package/dist/parquetjs/parquet-thrift/ColumnIndex.js.map +0 -1
- package/dist/parquetjs/parquet-thrift/ColumnMetaData.js.map +0 -1
- package/dist/parquetjs/parquet-thrift/ColumnOrder.js.map +0 -1
- package/dist/parquetjs/parquet-thrift/CompressionCodec.js.map +0 -1
- package/dist/parquetjs/parquet-thrift/ConvertedType.js.map +0 -1
- package/dist/parquetjs/parquet-thrift/DataPageHeader.js.map +0 -1
- package/dist/parquetjs/parquet-thrift/DataPageHeaderV2.js.map +0 -1
- package/dist/parquetjs/parquet-thrift/DateType.js.map +0 -1
- package/dist/parquetjs/parquet-thrift/DecimalType.js.map +0 -1
- package/dist/parquetjs/parquet-thrift/DictionaryPageHeader.js.map +0 -1
- package/dist/parquetjs/parquet-thrift/Encoding.js.map +0 -1
- package/dist/parquetjs/parquet-thrift/EnumType.js.map +0 -1
- package/dist/parquetjs/parquet-thrift/FieldRepetitionType.js.map +0 -1
- package/dist/parquetjs/parquet-thrift/FileMetaData.js.map +0 -1
- package/dist/parquetjs/parquet-thrift/IndexPageHeader.js.map +0 -1
- package/dist/parquetjs/parquet-thrift/IntType.js.map +0 -1
- package/dist/parquetjs/parquet-thrift/JsonType.js.map +0 -1
- package/dist/parquetjs/parquet-thrift/KeyValue.js.map +0 -1
- package/dist/parquetjs/parquet-thrift/ListType.js.map +0 -1
- package/dist/parquetjs/parquet-thrift/LogicalType.js.map +0 -1
- package/dist/parquetjs/parquet-thrift/MapType.js.map +0 -1
- package/dist/parquetjs/parquet-thrift/MicroSeconds.js.map +0 -1
- package/dist/parquetjs/parquet-thrift/MilliSeconds.js.map +0 -1
- package/dist/parquetjs/parquet-thrift/NullType.js.map +0 -1
- package/dist/parquetjs/parquet-thrift/OffsetIndex.js.map +0 -1
- package/dist/parquetjs/parquet-thrift/PageEncodingStats.js.map +0 -1
- package/dist/parquetjs/parquet-thrift/PageHeader.js.map +0 -1
- package/dist/parquetjs/parquet-thrift/PageLocation.js.map +0 -1
- package/dist/parquetjs/parquet-thrift/PageType.js.map +0 -1
- package/dist/parquetjs/parquet-thrift/RowGroup.js.map +0 -1
- package/dist/parquetjs/parquet-thrift/SchemaElement.js.map +0 -1
- package/dist/parquetjs/parquet-thrift/SortingColumn.js.map +0 -1
- package/dist/parquetjs/parquet-thrift/Statistics.js.map +0 -1
- package/dist/parquetjs/parquet-thrift/StringType.js.map +0 -1
- package/dist/parquetjs/parquet-thrift/TimeType.js.map +0 -1
- package/dist/parquetjs/parquet-thrift/TimeUnit.js.map +0 -1
- package/dist/parquetjs/parquet-thrift/TimestampType.js.map +0 -1
- package/dist/parquetjs/parquet-thrift/Type.js.map +0 -1
- package/dist/parquetjs/parquet-thrift/TypeDefinedOrder.js.map +0 -1
- package/dist/parquetjs/parquet-thrift/UUIDType.js.map +0 -1
- package/dist/parquetjs/parquet-thrift/index.js.map +0 -1
- package/dist/parquetjs/parser/decoders.js.map +0 -1
- package/dist/parquetjs/parser/parquet-reader.js.map +0 -1
- package/dist/parquetjs/schema/declare.js.map +0 -1
- package/dist/parquetjs/schema/schema.js.map +0 -1
- package/dist/parquetjs/schema/shred.js.map +0 -1
- package/dist/parquetjs/schema/types.js.map +0 -1
- package/dist/parquetjs/utils/file-utils.js.map +0 -1
- package/dist/parquetjs/utils/read-utils.js.map +0 -1
- package/dist/polyfills/buffer/buffer-polyfill.browser.js.map +0 -1
- package/dist/polyfills/buffer/buffer-polyfill.node.js.map +0 -1
- package/dist/polyfills/buffer/buffer.js.map +0 -1
- package/dist/polyfills/buffer/index.js.map +0 -1
- package/dist/polyfills/buffer/install-buffer-polyfill.js.map +0 -1
- package/dist/polyfills/util.js.map +0 -1
- package/dist/workers/parquet-worker.js.map +0 -1
|
@@ -1,397 +1,411 @@
|
|
|
1
|
+
// Forked from https://github.com/kbajalc/parquets under MIT license (Copyright (c) 2017 ironSource Ltd.)
|
|
2
|
+
/* eslint-disable camelcase */
|
|
1
3
|
import { BSONLoader, BSONWriter } from '@loaders.gl/bson';
|
|
2
4
|
export const PARQUET_LOGICAL_TYPES = {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
5
|
+
BOOLEAN: {
|
|
6
|
+
primitiveType: 'BOOLEAN',
|
|
7
|
+
toPrimitive: toPrimitive_BOOLEAN,
|
|
8
|
+
fromPrimitive: fromPrimitive_BOOLEAN
|
|
9
|
+
},
|
|
10
|
+
INT32: {
|
|
11
|
+
primitiveType: 'INT32',
|
|
12
|
+
toPrimitive: toPrimitive_INT32
|
|
13
|
+
},
|
|
14
|
+
INT64: {
|
|
15
|
+
primitiveType: 'INT64',
|
|
16
|
+
toPrimitive: toPrimitive_INT64
|
|
17
|
+
},
|
|
18
|
+
INT96: {
|
|
19
|
+
primitiveType: 'INT96',
|
|
20
|
+
toPrimitive: toPrimitive_INT96
|
|
21
|
+
},
|
|
22
|
+
FLOAT: {
|
|
23
|
+
primitiveType: 'FLOAT',
|
|
24
|
+
toPrimitive: toPrimitive_FLOAT
|
|
25
|
+
},
|
|
26
|
+
DOUBLE: {
|
|
27
|
+
primitiveType: 'DOUBLE',
|
|
28
|
+
toPrimitive: toPrimitive_DOUBLE
|
|
29
|
+
},
|
|
30
|
+
BYTE_ARRAY: {
|
|
31
|
+
primitiveType: 'BYTE_ARRAY',
|
|
32
|
+
toPrimitive: toPrimitive_BYTE_ARRAY
|
|
33
|
+
},
|
|
34
|
+
FIXED_LEN_BYTE_ARRAY: {
|
|
35
|
+
primitiveType: 'FIXED_LEN_BYTE_ARRAY',
|
|
36
|
+
toPrimitive: toPrimitive_BYTE_ARRAY
|
|
37
|
+
},
|
|
38
|
+
UTF8: {
|
|
39
|
+
primitiveType: 'BYTE_ARRAY',
|
|
40
|
+
originalType: 'UTF8',
|
|
41
|
+
toPrimitive: toPrimitive_UTF8,
|
|
42
|
+
fromPrimitive: fromPrimitive_UTF8
|
|
43
|
+
},
|
|
44
|
+
TIME_MILLIS: {
|
|
45
|
+
primitiveType: 'INT32',
|
|
46
|
+
originalType: 'TIME_MILLIS',
|
|
47
|
+
toPrimitive: toPrimitive_TIME_MILLIS
|
|
48
|
+
},
|
|
49
|
+
TIME_MICROS: {
|
|
50
|
+
primitiveType: 'INT64',
|
|
51
|
+
originalType: 'TIME_MICROS',
|
|
52
|
+
toPrimitive: toPrimitive_TIME_MICROS
|
|
53
|
+
},
|
|
54
|
+
DATE: {
|
|
55
|
+
primitiveType: 'INT32',
|
|
56
|
+
originalType: 'DATE',
|
|
57
|
+
toPrimitive: toPrimitive_DATE,
|
|
58
|
+
fromPrimitive: fromPrimitive_DATE
|
|
59
|
+
},
|
|
60
|
+
TIMESTAMP_MILLIS: {
|
|
61
|
+
primitiveType: 'INT64',
|
|
62
|
+
originalType: 'TIMESTAMP_MILLIS',
|
|
63
|
+
toPrimitive: toPrimitive_TIMESTAMP_MILLIS,
|
|
64
|
+
fromPrimitive: fromPrimitive_TIMESTAMP_MILLIS
|
|
65
|
+
},
|
|
66
|
+
TIMESTAMP_MICROS: {
|
|
67
|
+
primitiveType: 'INT64',
|
|
68
|
+
originalType: 'TIMESTAMP_MICROS',
|
|
69
|
+
toPrimitive: toPrimitive_TIMESTAMP_MICROS,
|
|
70
|
+
fromPrimitive: fromPrimitive_TIMESTAMP_MICROS
|
|
71
|
+
},
|
|
72
|
+
UINT_8: {
|
|
73
|
+
primitiveType: 'INT32',
|
|
74
|
+
originalType: 'UINT_8',
|
|
75
|
+
toPrimitive: toPrimitive_UINT8
|
|
76
|
+
},
|
|
77
|
+
UINT_16: {
|
|
78
|
+
primitiveType: 'INT32',
|
|
79
|
+
originalType: 'UINT_16',
|
|
80
|
+
toPrimitive: toPrimitive_UINT16
|
|
81
|
+
},
|
|
82
|
+
UINT_32: {
|
|
83
|
+
primitiveType: 'INT32',
|
|
84
|
+
originalType: 'UINT_32',
|
|
85
|
+
toPrimitive: toPrimitive_UINT32
|
|
86
|
+
},
|
|
87
|
+
UINT_64: {
|
|
88
|
+
primitiveType: 'INT64',
|
|
89
|
+
originalType: 'UINT_64',
|
|
90
|
+
toPrimitive: toPrimitive_UINT64
|
|
91
|
+
},
|
|
92
|
+
INT_8: {
|
|
93
|
+
primitiveType: 'INT32',
|
|
94
|
+
originalType: 'INT_8',
|
|
95
|
+
toPrimitive: toPrimitive_INT8
|
|
96
|
+
},
|
|
97
|
+
INT_16: {
|
|
98
|
+
primitiveType: 'INT32',
|
|
99
|
+
originalType: 'INT_16',
|
|
100
|
+
toPrimitive: toPrimitive_INT16
|
|
101
|
+
},
|
|
102
|
+
INT_32: {
|
|
103
|
+
primitiveType: 'INT32',
|
|
104
|
+
originalType: 'INT_32',
|
|
105
|
+
toPrimitive: toPrimitive_INT32
|
|
106
|
+
},
|
|
107
|
+
INT_64: {
|
|
108
|
+
primitiveType: 'INT64',
|
|
109
|
+
originalType: 'INT_64',
|
|
110
|
+
toPrimitive: toPrimitive_INT64
|
|
111
|
+
},
|
|
112
|
+
JSON: {
|
|
113
|
+
primitiveType: 'BYTE_ARRAY',
|
|
114
|
+
originalType: 'JSON',
|
|
115
|
+
toPrimitive: toPrimitive_JSON,
|
|
116
|
+
fromPrimitive: fromPrimitive_JSON
|
|
117
|
+
},
|
|
118
|
+
BSON: {
|
|
119
|
+
primitiveType: 'BYTE_ARRAY',
|
|
120
|
+
originalType: 'BSON',
|
|
121
|
+
toPrimitive: toPrimitive_BSON,
|
|
122
|
+
fromPrimitive: fromPrimitive_BSON
|
|
123
|
+
},
|
|
124
|
+
INTERVAL: {
|
|
125
|
+
primitiveType: 'FIXED_LEN_BYTE_ARRAY',
|
|
126
|
+
originalType: 'INTERVAL',
|
|
127
|
+
typeLength: 12,
|
|
128
|
+
toPrimitive: toPrimitive_INTERVAL,
|
|
129
|
+
fromPrimitive: fromPrimitive_INTERVAL
|
|
130
|
+
},
|
|
131
|
+
DECIMAL_INT32: {
|
|
132
|
+
primitiveType: 'INT32',
|
|
133
|
+
originalType: 'DECIMAL_INT32',
|
|
134
|
+
toPrimitive: decimalToPrimitive_INT32,
|
|
135
|
+
fromPrimitive: decimalFromPrimitive_INT
|
|
136
|
+
},
|
|
137
|
+
DECIMAL_INT64: {
|
|
138
|
+
primitiveType: 'INT64',
|
|
139
|
+
originalType: 'DECIMAL_INT64',
|
|
140
|
+
toPrimitive: decimalToPrimitive_INT64,
|
|
141
|
+
fromPrimitive: decimalFromPrimitive_INT
|
|
142
|
+
},
|
|
143
|
+
DECIMAL_BYTE_ARRAY: {
|
|
144
|
+
primitiveType: 'BYTE_ARRAY',
|
|
145
|
+
originalType: 'DECIMAL_BYTE_ARRAY',
|
|
146
|
+
toPrimitive: decimalToPrimitive_BYTE_ARRAY,
|
|
147
|
+
fromPrimitive: decimalFromPrimitive_BYTE_ARRAY
|
|
148
|
+
},
|
|
149
|
+
DECIMAL_FIXED_LEN_BYTE_ARRAY: {
|
|
150
|
+
primitiveType: 'FIXED_LEN_BYTE_ARRAY',
|
|
151
|
+
originalType: 'DECIMAL_FIXED_LEN_BYTE_ARRAY',
|
|
152
|
+
toPrimitive: decimalToPrimitive_BYTE_ARRAY,
|
|
153
|
+
fromPrimitive: decimalFromPrimitive_BYTE_ARRAY
|
|
154
|
+
}
|
|
153
155
|
};
|
|
156
|
+
/**
|
|
157
|
+
* Convert a value from it's native representation to the internal/underlying
|
|
158
|
+
* primitive type
|
|
159
|
+
*/
|
|
154
160
|
export function toPrimitive(type, value, field) {
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
161
|
+
if (!(type in PARQUET_LOGICAL_TYPES)) {
|
|
162
|
+
throw new Error(`invalid type: ${type}`);
|
|
163
|
+
}
|
|
164
|
+
return PARQUET_LOGICAL_TYPES[type].toPrimitive(value, field);
|
|
159
165
|
}
|
|
166
|
+
/**
|
|
167
|
+
* Convert a value from it's internal/underlying primitive representation to
|
|
168
|
+
* the native representation
|
|
169
|
+
*/
|
|
160
170
|
export function fromPrimitive(type, value, field) {
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
171
|
+
if (!(type in PARQUET_LOGICAL_TYPES)) {
|
|
172
|
+
throw new Error(`invalid type: ${type}`);
|
|
173
|
+
}
|
|
174
|
+
if ('fromPrimitive' in PARQUET_LOGICAL_TYPES[type]) {
|
|
175
|
+
return PARQUET_LOGICAL_TYPES[type].fromPrimitive?.(value, field);
|
|
176
|
+
// tslint:disable-next-line:no-else-after-return
|
|
177
|
+
}
|
|
178
|
+
return value;
|
|
169
179
|
}
|
|
170
180
|
function toPrimitive_BOOLEAN(value) {
|
|
171
|
-
|
|
181
|
+
return Boolean(value);
|
|
172
182
|
}
|
|
173
183
|
function fromPrimitive_BOOLEAN(value) {
|
|
174
|
-
|
|
184
|
+
return Boolean(value);
|
|
175
185
|
}
|
|
176
186
|
function toPrimitive_FLOAT(value) {
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
187
|
+
const v = parseFloat(value);
|
|
188
|
+
if (isNaN(v)) {
|
|
189
|
+
throw new Error(`invalid value for FLOAT: ${value}`);
|
|
190
|
+
}
|
|
191
|
+
return v;
|
|
182
192
|
}
|
|
183
193
|
function toPrimitive_DOUBLE(value) {
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
194
|
+
const v = parseFloat(value);
|
|
195
|
+
if (isNaN(v)) {
|
|
196
|
+
throw new Error(`invalid value for DOUBLE: ${value}`);
|
|
197
|
+
}
|
|
198
|
+
return v;
|
|
189
199
|
}
|
|
190
200
|
function toPrimitive_INT8(value) {
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
201
|
+
const v = parseInt(value, 10);
|
|
202
|
+
if (v < -0x80 || v > 0x7f || isNaN(v)) {
|
|
203
|
+
throw new Error(`invalid value for INT8: ${value}`);
|
|
204
|
+
}
|
|
205
|
+
return v;
|
|
196
206
|
}
|
|
197
207
|
function toPrimitive_UINT8(value) {
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
208
|
+
const v = parseInt(value, 10);
|
|
209
|
+
if (v < 0 || v > 0xff || isNaN(v)) {
|
|
210
|
+
throw new Error(`invalid value for UINT8: ${value}`);
|
|
211
|
+
}
|
|
212
|
+
return v;
|
|
203
213
|
}
|
|
204
214
|
function toPrimitive_INT16(value) {
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
215
|
+
const v = parseInt(value, 10);
|
|
216
|
+
if (v < -0x8000 || v > 0x7fff || isNaN(v)) {
|
|
217
|
+
throw new Error(`invalid value for INT16: ${value}`);
|
|
218
|
+
}
|
|
219
|
+
return v;
|
|
210
220
|
}
|
|
211
221
|
function toPrimitive_UINT16(value) {
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
222
|
+
const v = parseInt(value, 10);
|
|
223
|
+
if (v < 0 || v > 0xffff || isNaN(v)) {
|
|
224
|
+
throw new Error(`invalid value for UINT16: ${value}`);
|
|
225
|
+
}
|
|
226
|
+
return v;
|
|
217
227
|
}
|
|
218
228
|
function toPrimitive_INT32(value) {
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
229
|
+
const v = parseInt(value, 10);
|
|
230
|
+
if (v < -0x80000000 || v > 0x7fffffff || isNaN(v)) {
|
|
231
|
+
throw new Error(`invalid value for INT32: ${value}`);
|
|
232
|
+
}
|
|
233
|
+
return v;
|
|
224
234
|
}
|
|
225
235
|
function decimalToPrimitive_INT32(value, field) {
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
236
|
+
const primitiveValue = value * 10 ** (field.scale || 0);
|
|
237
|
+
const v = Math.round(((primitiveValue * 10 ** -field.presision) % 1) * 10 ** field.presision);
|
|
238
|
+
if (v < -0x80000000 || v > 0x7fffffff || isNaN(v)) {
|
|
239
|
+
throw new Error(`invalid value for INT32: ${value}`);
|
|
240
|
+
}
|
|
241
|
+
return v;
|
|
232
242
|
}
|
|
233
243
|
function toPrimitive_UINT32(value) {
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
244
|
+
const v = parseInt(value, 10);
|
|
245
|
+
if (v < 0 || v > 0xffffffffffff || isNaN(v)) {
|
|
246
|
+
throw new Error(`invalid value for UINT32: ${value}`);
|
|
247
|
+
}
|
|
248
|
+
return v;
|
|
239
249
|
}
|
|
240
250
|
function toPrimitive_INT64(value) {
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
251
|
+
const v = parseInt(value, 10);
|
|
252
|
+
if (isNaN(v)) {
|
|
253
|
+
throw new Error(`invalid value for INT64: ${value}`);
|
|
254
|
+
}
|
|
255
|
+
return v;
|
|
246
256
|
}
|
|
247
257
|
function decimalToPrimitive_INT64(value, field) {
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
258
|
+
const primitiveValue = value * 10 ** (field.scale || 0);
|
|
259
|
+
const v = Math.round(((primitiveValue * 10 ** -field.presision) % 1) * 10 ** field.presision);
|
|
260
|
+
if (isNaN(v)) {
|
|
261
|
+
throw new Error(`invalid value for INT64: ${value}`);
|
|
262
|
+
}
|
|
263
|
+
return v;
|
|
254
264
|
}
|
|
255
265
|
function toPrimitive_UINT64(value) {
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
266
|
+
const v = parseInt(value, 10);
|
|
267
|
+
if (v < 0 || isNaN(v)) {
|
|
268
|
+
throw new Error(`invalid value for UINT64: ${value}`);
|
|
269
|
+
}
|
|
270
|
+
return v;
|
|
261
271
|
}
|
|
262
272
|
function toPrimitive_INT96(value) {
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
273
|
+
const v = parseInt(value, 10);
|
|
274
|
+
if (isNaN(v)) {
|
|
275
|
+
throw new Error(`invalid value for INT96: ${value}`);
|
|
276
|
+
}
|
|
277
|
+
return v;
|
|
268
278
|
}
|
|
269
279
|
function toPrimitive_BYTE_ARRAY(value) {
|
|
270
|
-
|
|
280
|
+
return Buffer.from(value);
|
|
271
281
|
}
|
|
272
282
|
function decimalToPrimitive_BYTE_ARRAY(value) {
|
|
273
|
-
|
|
283
|
+
// TBD
|
|
284
|
+
return Buffer.from(value);
|
|
274
285
|
}
|
|
275
286
|
function toPrimitive_UTF8(value) {
|
|
276
|
-
|
|
287
|
+
return Buffer.from(value, 'utf8');
|
|
277
288
|
}
|
|
278
289
|
function fromPrimitive_UTF8(value) {
|
|
279
|
-
|
|
290
|
+
return value.toString();
|
|
280
291
|
}
|
|
281
292
|
function toPrimitive_JSON(value) {
|
|
282
|
-
|
|
293
|
+
return Buffer.from(JSON.stringify(value));
|
|
283
294
|
}
|
|
284
295
|
function fromPrimitive_JSON(value) {
|
|
285
|
-
|
|
296
|
+
return JSON.parse(value);
|
|
286
297
|
}
|
|
287
298
|
function toPrimitive_BSON(value) {
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
return Buffer.from(arrayBuffer);
|
|
299
|
+
const arrayBuffer = BSONWriter.encodeSync?.(value);
|
|
300
|
+
return Buffer.from(arrayBuffer);
|
|
291
301
|
}
|
|
292
302
|
function fromPrimitive_BSON(value) {
|
|
293
|
-
|
|
294
|
-
return (_BSONLoader$parseSync = BSONLoader.parseSync) === null || _BSONLoader$parseSync === void 0 ? void 0 : _BSONLoader$parseSync.call(BSONLoader, value);
|
|
303
|
+
return BSONLoader.parseSync?.(value);
|
|
295
304
|
}
|
|
296
305
|
function toPrimitive_TIME_MILLIS(value) {
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
306
|
+
const v = parseInt(value, 10);
|
|
307
|
+
if (v < 0 || v > 0xffffffffffffffff || isNaN(v)) {
|
|
308
|
+
throw new Error(`invalid value for TIME_MILLIS: ${value}`);
|
|
309
|
+
}
|
|
310
|
+
return v;
|
|
302
311
|
}
|
|
303
312
|
function toPrimitive_TIME_MICROS(value) {
|
|
304
|
-
const v = parseInt(value, 10);
|
|
305
|
-
if (v < 0 || isNaN(v)) {
|
|
306
|
-
throw new Error(`invalid value for TIME_MICROS: ${value}`);
|
|
307
|
-
}
|
|
308
|
-
return v;
|
|
309
|
-
}
|
|
310
|
-
const kMillisPerDay = 86400000;
|
|
311
|
-
function toPrimitive_DATE(value) {
|
|
312
|
-
if (value instanceof Date) {
|
|
313
|
-
return value.getTime() / kMillisPerDay;
|
|
314
|
-
}
|
|
315
|
-
{
|
|
316
313
|
const v = parseInt(value, 10);
|
|
317
314
|
if (v < 0 || isNaN(v)) {
|
|
318
|
-
|
|
315
|
+
throw new Error(`invalid value for TIME_MICROS: ${value}`);
|
|
319
316
|
}
|
|
320
317
|
return v;
|
|
321
|
-
|
|
318
|
+
}
|
|
319
|
+
const kMillisPerDay = 86400000;
|
|
320
|
+
function toPrimitive_DATE(value) {
|
|
321
|
+
/* convert from date */
|
|
322
|
+
if (value instanceof Date) {
|
|
323
|
+
return value.getTime() / kMillisPerDay;
|
|
324
|
+
}
|
|
325
|
+
/* convert from integer */
|
|
326
|
+
{
|
|
327
|
+
const v = parseInt(value, 10);
|
|
328
|
+
if (v < 0 || isNaN(v)) {
|
|
329
|
+
throw new Error(`invalid value for DATE: ${value}`);
|
|
330
|
+
}
|
|
331
|
+
return v;
|
|
332
|
+
}
|
|
322
333
|
}
|
|
323
334
|
function fromPrimitive_DATE(value) {
|
|
324
|
-
|
|
335
|
+
return new Date(value * kMillisPerDay);
|
|
325
336
|
}
|
|
326
337
|
function toPrimitive_TIMESTAMP_MILLIS(value) {
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
338
|
+
/* convert from date */
|
|
339
|
+
if (value instanceof Date) {
|
|
340
|
+
return value.getTime();
|
|
341
|
+
}
|
|
342
|
+
/* convert from integer */
|
|
343
|
+
{
|
|
344
|
+
const v = parseInt(value, 10);
|
|
345
|
+
if (v < 0 || isNaN(v)) {
|
|
346
|
+
throw new Error(`invalid value for TIMESTAMP_MILLIS: ${value}`);
|
|
347
|
+
}
|
|
348
|
+
return v;
|
|
334
349
|
}
|
|
335
|
-
return v;
|
|
336
|
-
}
|
|
337
350
|
}
|
|
338
351
|
function fromPrimitive_TIMESTAMP_MILLIS(value) {
|
|
339
|
-
|
|
352
|
+
return new Date(value);
|
|
340
353
|
}
|
|
341
354
|
function toPrimitive_TIMESTAMP_MICROS(value) {
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
355
|
+
/* convert from date */
|
|
356
|
+
if (value instanceof Date) {
|
|
357
|
+
return value.getTime() * 1000;
|
|
358
|
+
}
|
|
359
|
+
/* convert from integer */
|
|
360
|
+
{
|
|
361
|
+
const v = parseInt(value, 10);
|
|
362
|
+
if (v < 0 || isNaN(v)) {
|
|
363
|
+
throw new Error(`invalid value for TIMESTAMP_MICROS: ${value}`);
|
|
364
|
+
}
|
|
365
|
+
return v;
|
|
349
366
|
}
|
|
350
|
-
return v;
|
|
351
|
-
}
|
|
352
367
|
}
|
|
353
368
|
function fromPrimitive_TIMESTAMP_MICROS(value) {
|
|
354
|
-
|
|
369
|
+
return new Date(value / 1000);
|
|
355
370
|
}
|
|
356
371
|
function toPrimitive_INTERVAL(value) {
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
372
|
+
if (!value.months || !value.days || !value.milliseconds) {
|
|
373
|
+
throw new Error('value for INTERVAL must be object { months: ..., days: ..., milliseconds: ... }');
|
|
374
|
+
}
|
|
375
|
+
const buf = Buffer.alloc(12);
|
|
376
|
+
buf.writeUInt32LE(value.months, 0);
|
|
377
|
+
buf.writeUInt32LE(value.days, 4);
|
|
378
|
+
buf.writeUInt32LE(value.milliseconds, 8);
|
|
379
|
+
return buf;
|
|
365
380
|
}
|
|
366
381
|
function fromPrimitive_INTERVAL(value) {
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
months,
|
|
373
|
-
days,
|
|
374
|
-
milliseconds: millis
|
|
375
|
-
};
|
|
382
|
+
const buf = Buffer.from(value);
|
|
383
|
+
const months = buf.readUInt32LE(0);
|
|
384
|
+
const days = buf.readUInt32LE(4);
|
|
385
|
+
const millis = buf.readUInt32LE(8);
|
|
386
|
+
return { months, days, milliseconds: millis };
|
|
376
387
|
}
|
|
377
388
|
function decimalFromPrimitive_INT(value, field) {
|
|
378
|
-
|
|
379
|
-
|
|
389
|
+
const presisionInt = Math.round(((value * 10 ** -field.presision) % 1) * 10 ** field.presision);
|
|
390
|
+
return presisionInt * 10 ** -(field.scale || 0);
|
|
380
391
|
}
|
|
381
392
|
function decimalFromPrimitive_BYTE_ARRAY(value, field) {
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
393
|
+
let number = 0;
|
|
394
|
+
if (value.length <= 4) {
|
|
395
|
+
// Bytewise operators faster. Use them if it is possible
|
|
396
|
+
for (let i = 0; i < value.length; i++) {
|
|
397
|
+
// `value.length - i - 1` bytes have reverse order (big-endian)
|
|
398
|
+
const component = value[i] << (8 * (value.length - i - 1));
|
|
399
|
+
number += component;
|
|
400
|
+
}
|
|
387
401
|
}
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
402
|
+
else {
|
|
403
|
+
for (let i = 0; i < value.length; i++) {
|
|
404
|
+
// `value.length - i - 1` bytes have reverse order (big-endian)
|
|
405
|
+
const component = value[i] * 2 ** (8 * (value.length - 1 - i));
|
|
406
|
+
number += component;
|
|
407
|
+
}
|
|
392
408
|
}
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
return presisionInt * 10 ** -(field.scale || 0);
|
|
409
|
+
const presisionInt = Math.round(((number * 10 ** -field.presision) % 1) * 10 ** field.presision);
|
|
410
|
+
return presisionInt * 10 ** -(field.scale || 0);
|
|
396
411
|
}
|
|
397
|
-
//# sourceMappingURL=types.js.map
|