@loaders.gl/parquet 3.4.0-alpha.2 → 3.4.0-alpha.4

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.
Files changed (251) hide show
  1. package/dist/dist.min.js +21 -28
  2. package/dist/dist.min.js.map +3 -3
  3. package/dist/es5/constants.js +0 -2
  4. package/dist/es5/constants.js.map +1 -1
  5. package/dist/es5/index.js +0 -3
  6. package/dist/es5/index.js.map +1 -1
  7. package/dist/es5/lib/arrow/convert-row-group-to-columns.js +0 -1
  8. package/dist/es5/lib/arrow/convert-row-group-to-columns.js.map +1 -1
  9. package/dist/es5/lib/arrow/convert-schema-from-parquet.js +1 -1
  10. package/dist/es5/lib/arrow/convert-schema-from-parquet.js.map +1 -1
  11. package/dist/es5/lib/arrow/convert-schema-to-parquet.js +0 -2
  12. package/dist/es5/lib/arrow/convert-schema-to-parquet.js.map +1 -1
  13. package/dist/es5/lib/geo/decode-geo-metadata.js +0 -5
  14. package/dist/es5/lib/geo/decode-geo-metadata.js.map +1 -1
  15. package/dist/es5/lib/geo/geoparquet-schema.js.map +1 -1
  16. package/dist/es5/lib/parsers/parse-parquet-to-columns.js +115 -119
  17. package/dist/es5/lib/parsers/parse-parquet-to-columns.js.map +1 -1
  18. package/dist/es5/lib/parsers/parse-parquet-to-rows.js +105 -109
  19. package/dist/es5/lib/parsers/parse-parquet-to-rows.js.map +1 -1
  20. package/dist/es5/lib/wasm/encode-parquet-wasm.js +14 -16
  21. package/dist/es5/lib/wasm/encode-parquet-wasm.js.map +1 -1
  22. package/dist/es5/lib/wasm/load-wasm/index.js.map +1 -1
  23. package/dist/es5/lib/wasm/load-wasm/load-wasm-browser.js +16 -18
  24. package/dist/es5/lib/wasm/load-wasm/load-wasm-browser.js.map +1 -1
  25. package/dist/es5/lib/wasm/load-wasm/load-wasm-node.js +6 -8
  26. package/dist/es5/lib/wasm/load-wasm/load-wasm-node.js.map +1 -1
  27. package/dist/es5/lib/wasm/parse-parquet-wasm.js +16 -18
  28. package/dist/es5/lib/wasm/parse-parquet-wasm.js.map +1 -1
  29. package/dist/es5/parquet-loader.js +1 -2
  30. package/dist/es5/parquet-loader.js.map +1 -1
  31. package/dist/es5/parquet-wasm-loader.js +1 -2
  32. package/dist/es5/parquet-wasm-loader.js.map +1 -1
  33. package/dist/es5/parquet-wasm-writer.js +1 -1
  34. package/dist/es5/parquet-wasm-writer.js.map +1 -1
  35. package/dist/es5/parquet-writer.js +1 -1
  36. package/dist/es5/parquet-writer.js.map +1 -1
  37. package/dist/es5/parquetjs/codecs/dictionary.js.map +1 -1
  38. package/dist/es5/parquetjs/codecs/index.js +0 -1
  39. package/dist/es5/parquetjs/codecs/index.js.map +1 -1
  40. package/dist/es5/parquetjs/codecs/plain.js +0 -3
  41. package/dist/es5/parquetjs/codecs/plain.js.map +1 -1
  42. package/dist/es5/parquetjs/codecs/rle.js +0 -4
  43. package/dist/es5/parquetjs/codecs/rle.js.map +1 -1
  44. package/dist/es5/parquetjs/compression.js +49 -64
  45. package/dist/es5/parquetjs/compression.js.map +1 -1
  46. package/dist/es5/parquetjs/encoder/parquet-encoder.js +301 -345
  47. package/dist/es5/parquetjs/encoder/parquet-encoder.js.map +1 -1
  48. package/dist/es5/parquetjs/parquet-thrift/BoundaryOrder.js +4 -4
  49. package/dist/es5/parquetjs/parquet-thrift/BoundaryOrder.js.map +1 -1
  50. package/dist/es5/parquetjs/parquet-thrift/BsonType.js.map +1 -1
  51. package/dist/es5/parquetjs/parquet-thrift/ColumnChunk.js.map +1 -1
  52. package/dist/es5/parquetjs/parquet-thrift/ColumnIndex.js.map +1 -1
  53. package/dist/es5/parquetjs/parquet-thrift/ColumnMetaData.js.map +1 -1
  54. package/dist/es5/parquetjs/parquet-thrift/ColumnOrder.js.map +1 -1
  55. package/dist/es5/parquetjs/parquet-thrift/CompressionCodec.js +4 -4
  56. package/dist/es5/parquetjs/parquet-thrift/CompressionCodec.js.map +1 -1
  57. package/dist/es5/parquetjs/parquet-thrift/ConvertedType.js +4 -4
  58. package/dist/es5/parquetjs/parquet-thrift/ConvertedType.js.map +1 -1
  59. package/dist/es5/parquetjs/parquet-thrift/DataPageHeader.js.map +1 -1
  60. package/dist/es5/parquetjs/parquet-thrift/DataPageHeaderV2.js.map +1 -1
  61. package/dist/es5/parquetjs/parquet-thrift/DateType.js.map +1 -1
  62. package/dist/es5/parquetjs/parquet-thrift/DecimalType.js.map +1 -1
  63. package/dist/es5/parquetjs/parquet-thrift/DictionaryPageHeader.js.map +1 -1
  64. package/dist/es5/parquetjs/parquet-thrift/Encoding.js +4 -4
  65. package/dist/es5/parquetjs/parquet-thrift/Encoding.js.map +1 -1
  66. package/dist/es5/parquetjs/parquet-thrift/EnumType.js.map +1 -1
  67. package/dist/es5/parquetjs/parquet-thrift/FieldRepetitionType.js +4 -4
  68. package/dist/es5/parquetjs/parquet-thrift/FieldRepetitionType.js.map +1 -1
  69. package/dist/es5/parquetjs/parquet-thrift/FileMetaData.js.map +1 -1
  70. package/dist/es5/parquetjs/parquet-thrift/IndexPageHeader.js.map +1 -1
  71. package/dist/es5/parquetjs/parquet-thrift/IntType.js.map +1 -1
  72. package/dist/es5/parquetjs/parquet-thrift/JsonType.js.map +1 -1
  73. package/dist/es5/parquetjs/parquet-thrift/KeyValue.js.map +1 -1
  74. package/dist/es5/parquetjs/parquet-thrift/ListType.js.map +1 -1
  75. package/dist/es5/parquetjs/parquet-thrift/LogicalType.js.map +1 -1
  76. package/dist/es5/parquetjs/parquet-thrift/MapType.js.map +1 -1
  77. package/dist/es5/parquetjs/parquet-thrift/MicroSeconds.js.map +1 -1
  78. package/dist/es5/parquetjs/parquet-thrift/MilliSeconds.js.map +1 -1
  79. package/dist/es5/parquetjs/parquet-thrift/NullType.js.map +1 -1
  80. package/dist/es5/parquetjs/parquet-thrift/OffsetIndex.js.map +1 -1
  81. package/dist/es5/parquetjs/parquet-thrift/PageEncodingStats.js.map +1 -1
  82. package/dist/es5/parquetjs/parquet-thrift/PageHeader.js.map +1 -1
  83. package/dist/es5/parquetjs/parquet-thrift/PageLocation.js.map +1 -1
  84. package/dist/es5/parquetjs/parquet-thrift/PageType.js +4 -4
  85. package/dist/es5/parquetjs/parquet-thrift/PageType.js.map +1 -1
  86. package/dist/es5/parquetjs/parquet-thrift/RowGroup.js.map +1 -1
  87. package/dist/es5/parquetjs/parquet-thrift/SchemaElement.js.map +1 -1
  88. package/dist/es5/parquetjs/parquet-thrift/SortingColumn.js.map +1 -1
  89. package/dist/es5/parquetjs/parquet-thrift/Statistics.js.map +1 -1
  90. package/dist/es5/parquetjs/parquet-thrift/StringType.js.map +1 -1
  91. package/dist/es5/parquetjs/parquet-thrift/TimeType.js.map +1 -1
  92. package/dist/es5/parquetjs/parquet-thrift/TimeUnit.js.map +1 -1
  93. package/dist/es5/parquetjs/parquet-thrift/TimestampType.js.map +1 -1
  94. package/dist/es5/parquetjs/parquet-thrift/Type.js +4 -4
  95. package/dist/es5/parquetjs/parquet-thrift/Type.js.map +1 -1
  96. package/dist/es5/parquetjs/parquet-thrift/TypeDefinedOrder.js.map +1 -1
  97. package/dist/es5/parquetjs/parquet-thrift/UUIDType.js.map +1 -1
  98. package/dist/es5/parquetjs/parquet-thrift/index.js.map +1 -1
  99. package/dist/es5/parquetjs/parser/decoders.js +244 -261
  100. package/dist/es5/parquetjs/parser/decoders.js.map +1 -1
  101. package/dist/es5/parquetjs/parser/parquet-reader.js +396 -428
  102. package/dist/es5/parquetjs/parser/parquet-reader.js.map +1 -1
  103. package/dist/es5/parquetjs/schema/declare.js +1 -3
  104. package/dist/es5/parquetjs/schema/declare.js.map +1 -1
  105. package/dist/es5/parquetjs/schema/schema.js +2 -12
  106. package/dist/es5/parquetjs/schema/schema.js.map +1 -1
  107. package/dist/es5/parquetjs/schema/shred.js +2 -14
  108. package/dist/es5/parquetjs/schema/shred.js.map +1 -1
  109. package/dist/es5/parquetjs/schema/types.js +6 -11
  110. package/dist/es5/parquetjs/schema/types.js.map +1 -1
  111. package/dist/es5/parquetjs/utils/file-utils.js +0 -1
  112. package/dist/es5/parquetjs/utils/file-utils.js.map +1 -1
  113. package/dist/es5/parquetjs/utils/read-utils.js +0 -7
  114. package/dist/es5/parquetjs/utils/read-utils.js.map +1 -1
  115. package/dist/es5/workers/parquet-worker.js.map +1 -1
  116. package/dist/esm/bundle.js +0 -1
  117. package/dist/esm/bundle.js.map +1 -1
  118. package/dist/esm/constants.js +0 -3
  119. package/dist/esm/constants.js.map +1 -1
  120. package/dist/esm/index.js +0 -8
  121. package/dist/esm/index.js.map +1 -1
  122. package/dist/esm/lib/arrow/convert-row-group-to-columns.js +0 -2
  123. package/dist/esm/lib/arrow/convert-row-group-to-columns.js.map +1 -1
  124. package/dist/esm/lib/arrow/convert-schema-from-parquet.js +0 -2
  125. package/dist/esm/lib/arrow/convert-schema-from-parquet.js.map +1 -1
  126. package/dist/esm/lib/arrow/convert-schema-to-parquet.js +0 -3
  127. package/dist/esm/lib/arrow/convert-schema-to-parquet.js.map +1 -1
  128. package/dist/esm/lib/geo/decode-geo-metadata.js +0 -6
  129. package/dist/esm/lib/geo/decode-geo-metadata.js.map +1 -1
  130. package/dist/esm/lib/geo/geoparquet-schema.js +0 -2
  131. package/dist/esm/lib/geo/geoparquet-schema.js.map +1 -1
  132. package/dist/esm/lib/parsers/parse-parquet-to-columns.js +0 -2
  133. package/dist/esm/lib/parsers/parse-parquet-to-columns.js.map +1 -1
  134. package/dist/esm/lib/parsers/parse-parquet-to-rows.js +0 -1
  135. package/dist/esm/lib/parsers/parse-parquet-to-rows.js.map +1 -1
  136. package/dist/esm/lib/wasm/encode-parquet-wasm.js +0 -1
  137. package/dist/esm/lib/wasm/encode-parquet-wasm.js.map +1 -1
  138. package/dist/esm/lib/wasm/load-wasm/load-wasm-browser.js +0 -1
  139. package/dist/esm/lib/wasm/load-wasm/load-wasm-browser.js.map +1 -1
  140. package/dist/esm/lib/wasm/load-wasm/load-wasm-node.js.map +1 -1
  141. package/dist/esm/lib/wasm/parse-parquet-wasm.js +0 -3
  142. package/dist/esm/lib/wasm/parse-parquet-wasm.js.map +1 -1
  143. package/dist/esm/parquet-loader.js +1 -3
  144. package/dist/esm/parquet-loader.js.map +1 -1
  145. package/dist/esm/parquet-wasm-loader.js +1 -3
  146. package/dist/esm/parquet-wasm-loader.js.map +1 -1
  147. package/dist/esm/parquet-wasm-writer.js +1 -2
  148. package/dist/esm/parquet-wasm-writer.js.map +1 -1
  149. package/dist/esm/parquet-writer.js +1 -2
  150. package/dist/esm/parquet-writer.js.map +1 -1
  151. package/dist/esm/parquetjs/codecs/dictionary.js.map +1 -1
  152. package/dist/esm/parquetjs/codecs/index.js +0 -2
  153. package/dist/esm/parquetjs/codecs/index.js.map +1 -1
  154. package/dist/esm/parquetjs/codecs/plain.js +0 -4
  155. package/dist/esm/parquetjs/codecs/plain.js.map +1 -1
  156. package/dist/esm/parquetjs/codecs/rle.js +0 -6
  157. package/dist/esm/parquetjs/codecs/rle.js.map +1 -1
  158. package/dist/esm/parquetjs/compression.js +2 -16
  159. package/dist/esm/parquetjs/compression.js.map +1 -1
  160. package/dist/esm/parquetjs/encoder/parquet-encoder.js +0 -38
  161. package/dist/esm/parquetjs/encoder/parquet-encoder.js.map +1 -1
  162. package/dist/esm/parquetjs/parquet-thrift/BoundaryOrder.js +3 -4
  163. package/dist/esm/parquetjs/parquet-thrift/BoundaryOrder.js.map +1 -1
  164. package/dist/esm/parquetjs/parquet-thrift/BsonType.js +0 -1
  165. package/dist/esm/parquetjs/parquet-thrift/BsonType.js.map +1 -1
  166. package/dist/esm/parquetjs/parquet-thrift/ColumnChunk.js.map +1 -1
  167. package/dist/esm/parquetjs/parquet-thrift/ColumnIndex.js.map +1 -1
  168. package/dist/esm/parquetjs/parquet-thrift/ColumnMetaData.js.map +1 -1
  169. package/dist/esm/parquetjs/parquet-thrift/ColumnOrder.js.map +1 -1
  170. package/dist/esm/parquetjs/parquet-thrift/CompressionCodec.js +3 -4
  171. package/dist/esm/parquetjs/parquet-thrift/CompressionCodec.js.map +1 -1
  172. package/dist/esm/parquetjs/parquet-thrift/ConvertedType.js +3 -4
  173. package/dist/esm/parquetjs/parquet-thrift/ConvertedType.js.map +1 -1
  174. package/dist/esm/parquetjs/parquet-thrift/DataPageHeader.js.map +1 -1
  175. package/dist/esm/parquetjs/parquet-thrift/DataPageHeaderV2.js.map +1 -1
  176. package/dist/esm/parquetjs/parquet-thrift/DateType.js +0 -1
  177. package/dist/esm/parquetjs/parquet-thrift/DateType.js.map +1 -1
  178. package/dist/esm/parquetjs/parquet-thrift/DecimalType.js.map +1 -1
  179. package/dist/esm/parquetjs/parquet-thrift/DictionaryPageHeader.js.map +1 -1
  180. package/dist/esm/parquetjs/parquet-thrift/Encoding.js +3 -4
  181. package/dist/esm/parquetjs/parquet-thrift/Encoding.js.map +1 -1
  182. package/dist/esm/parquetjs/parquet-thrift/EnumType.js +0 -1
  183. package/dist/esm/parquetjs/parquet-thrift/EnumType.js.map +1 -1
  184. package/dist/esm/parquetjs/parquet-thrift/FieldRepetitionType.js +3 -4
  185. package/dist/esm/parquetjs/parquet-thrift/FieldRepetitionType.js.map +1 -1
  186. package/dist/esm/parquetjs/parquet-thrift/FileMetaData.js.map +1 -1
  187. package/dist/esm/parquetjs/parquet-thrift/IndexPageHeader.js +0 -1
  188. package/dist/esm/parquetjs/parquet-thrift/IndexPageHeader.js.map +1 -1
  189. package/dist/esm/parquetjs/parquet-thrift/IntType.js.map +1 -1
  190. package/dist/esm/parquetjs/parquet-thrift/JsonType.js +0 -1
  191. package/dist/esm/parquetjs/parquet-thrift/JsonType.js.map +1 -1
  192. package/dist/esm/parquetjs/parquet-thrift/KeyValue.js.map +1 -1
  193. package/dist/esm/parquetjs/parquet-thrift/ListType.js +0 -1
  194. package/dist/esm/parquetjs/parquet-thrift/ListType.js.map +1 -1
  195. package/dist/esm/parquetjs/parquet-thrift/LogicalType.js.map +1 -1
  196. package/dist/esm/parquetjs/parquet-thrift/MapType.js +0 -1
  197. package/dist/esm/parquetjs/parquet-thrift/MapType.js.map +1 -1
  198. package/dist/esm/parquetjs/parquet-thrift/MicroSeconds.js +0 -1
  199. package/dist/esm/parquetjs/parquet-thrift/MicroSeconds.js.map +1 -1
  200. package/dist/esm/parquetjs/parquet-thrift/MilliSeconds.js +0 -1
  201. package/dist/esm/parquetjs/parquet-thrift/MilliSeconds.js.map +1 -1
  202. package/dist/esm/parquetjs/parquet-thrift/NullType.js +0 -1
  203. package/dist/esm/parquetjs/parquet-thrift/NullType.js.map +1 -1
  204. package/dist/esm/parquetjs/parquet-thrift/OffsetIndex.js.map +1 -1
  205. package/dist/esm/parquetjs/parquet-thrift/PageEncodingStats.js.map +1 -1
  206. package/dist/esm/parquetjs/parquet-thrift/PageHeader.js.map +1 -1
  207. package/dist/esm/parquetjs/parquet-thrift/PageLocation.js.map +1 -1
  208. package/dist/esm/parquetjs/parquet-thrift/PageType.js +3 -4
  209. package/dist/esm/parquetjs/parquet-thrift/PageType.js.map +1 -1
  210. package/dist/esm/parquetjs/parquet-thrift/RowGroup.js.map +1 -1
  211. package/dist/esm/parquetjs/parquet-thrift/SchemaElement.js.map +1 -1
  212. package/dist/esm/parquetjs/parquet-thrift/SortingColumn.js.map +1 -1
  213. package/dist/esm/parquetjs/parquet-thrift/Statistics.js.map +1 -1
  214. package/dist/esm/parquetjs/parquet-thrift/StringType.js +0 -1
  215. package/dist/esm/parquetjs/parquet-thrift/StringType.js.map +1 -1
  216. package/dist/esm/parquetjs/parquet-thrift/TimeType.js.map +1 -1
  217. package/dist/esm/parquetjs/parquet-thrift/TimeUnit.js.map +1 -1
  218. package/dist/esm/parquetjs/parquet-thrift/TimestampType.js.map +1 -1
  219. package/dist/esm/parquetjs/parquet-thrift/Type.js +3 -4
  220. package/dist/esm/parquetjs/parquet-thrift/Type.js.map +1 -1
  221. package/dist/esm/parquetjs/parquet-thrift/TypeDefinedOrder.js +0 -1
  222. package/dist/esm/parquetjs/parquet-thrift/TypeDefinedOrder.js.map +1 -1
  223. package/dist/esm/parquetjs/parquet-thrift/UUIDType.js +0 -1
  224. package/dist/esm/parquetjs/parquet-thrift/UUIDType.js.map +1 -1
  225. package/dist/esm/parquetjs/parquet-thrift/index.js +0 -1
  226. package/dist/esm/parquetjs/parquet-thrift/index.js.map +1 -1
  227. package/dist/esm/parquetjs/parser/decoders.js +1 -18
  228. package/dist/esm/parquetjs/parser/decoders.js.map +1 -1
  229. package/dist/esm/parquetjs/parser/parquet-reader.js +0 -13
  230. package/dist/esm/parquetjs/parser/parquet-reader.js.map +1 -1
  231. package/dist/esm/parquetjs/schema/declare.js +0 -2
  232. package/dist/esm/parquetjs/schema/declare.js.map +1 -1
  233. package/dist/esm/parquetjs/schema/schema.js +0 -10
  234. package/dist/esm/parquetjs/schema/schema.js.map +1 -1
  235. package/dist/esm/parquetjs/schema/shred.js +1 -15
  236. package/dist/esm/parquetjs/schema/shred.js.map +1 -1
  237. package/dist/esm/parquetjs/schema/types.js +6 -10
  238. package/dist/esm/parquetjs/schema/types.js.map +1 -1
  239. package/dist/esm/parquetjs/utils/file-utils.js +0 -1
  240. package/dist/esm/parquetjs/utils/file-utils.js.map +1 -1
  241. package/dist/esm/parquetjs/utils/read-utils.js +0 -8
  242. package/dist/esm/parquetjs/utils/read-utils.js.map +1 -1
  243. package/dist/parquet-worker.js +25 -32
  244. package/dist/parquet-worker.js.map +3 -3
  245. package/dist/parquetjs/compression.d.ts +3 -0
  246. package/dist/parquetjs/compression.d.ts.map +1 -1
  247. package/dist/parquetjs/compression.js +9 -5
  248. package/dist/parquetjs/schema/types.js +4 -6
  249. package/package.json +6 -9
  250. package/src/parquetjs/compression.ts +10 -6
  251. package/src/parquetjs/schema/types.ts +4 -3
@@ -1,5 +1,3 @@
1
-
2
-
3
1
  import { ParquetBuffer } from './declare';
4
2
  import * as Types from './types';
5
3
  export { ParquetBuffer };
@@ -19,11 +17,9 @@ export function shredBuffer(schema) {
19
17
  columnData
20
18
  };
21
19
  }
22
-
23
20
  export function shredRecord(schema, record, buffer) {
24
21
  const data = shredBuffer(schema).columnData;
25
22
  shredRecordFields(schema.fields, record, data, 0, 0);
26
-
27
23
  if (buffer.rowCount === 0) {
28
24
  buffer.rowCount = 1;
29
25
  buffer.columnData = data;
@@ -37,11 +33,9 @@ export function shredRecord(schema, record, buffer) {
37
33
  buffer.columnData[field.key].count += data[field.key].count;
38
34
  }
39
35
  }
40
-
41
36
  function shredRecordFields(fields, record, data, rLevel, dLevel) {
42
37
  for (const name in fields) {
43
38
  const field = fields[name];
44
-
45
39
  let values = [];
46
40
  if (record && field.name in record && record[field.name] !== undefined && record[field.name] !== null) {
47
41
  if (record[field.name].constructor === Array) {
@@ -56,7 +50,6 @@ function shredRecordFields(fields, record, data, rLevel, dLevel) {
56
50
  if (values.length > 1 && field.repetitionType !== 'REPEATED') {
57
51
  throw new Error("too many values for field: ".concat(field.name));
58
52
  }
59
-
60
53
  if (values.length === 0) {
61
54
  if (field.isNested) {
62
55
  shredRecordFields(field.fields, null, data, rLevel, dLevel);
@@ -67,7 +60,6 @@ function shredRecordFields(fields, record, data, rLevel, dLevel) {
67
60
  }
68
61
  continue;
69
62
  }
70
-
71
63
  for (let i = 0; i < values.length; i++) {
72
64
  const rlvl = i === 0 ? rLevel : field.rLevelMax;
73
65
  if (field.isNested) {
@@ -81,7 +73,6 @@ function shredRecordFields(fields, record, data, rLevel, dLevel) {
81
73
  }
82
74
  }
83
75
  }
84
-
85
76
  export function materializeRecords(schema, buffer) {
86
77
  const records = [];
87
78
  for (let i = 0; i < buffer.rowCount; i++) {
@@ -95,11 +86,9 @@ export function materializeRecords(schema, buffer) {
95
86
  }
96
87
  return records;
97
88
  }
98
-
99
89
  function materializeColumn(schema, columnData, key, records) {
100
90
  const field = schema.findField(key);
101
91
  const branch = schema.findFieldBranch(key);
102
-
103
92
  const rLevels = new Array(field.rLevelMax + 1).fill(0);
104
93
  let vIndex = 0;
105
94
  for (let i = 0; i < columnData.count; i++) {
@@ -109,7 +98,6 @@ function materializeColumn(schema, columnData, key, records) {
109
98
  rLevels.fill(0, rLevel + 1);
110
99
  let rIndex = 0;
111
100
  let record = records[rLevels[rIndex++] - 1];
112
-
113
101
  for (const step of branch) {
114
102
  if (step === field || dLevel < step.dLevelMax) {
115
103
  break;
@@ -130,10 +118,8 @@ function materializeColumn(schema, columnData, key, records) {
130
118
  record = record[step.name];
131
119
  }
132
120
  }
133
-
134
121
  if (dLevel === field.dLevelMax) {
135
- const value = Types.fromPrimitive(
136
- field.originalType || field.primitiveType, columnData.values[vIndex], field);
122
+ const value = Types.fromPrimitive(field.originalType || field.primitiveType, columnData.values[vIndex], field);
137
123
  vIndex++;
138
124
  switch (field.repetitionType) {
139
125
  case 'REPEATED':
@@ -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++) {\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
+ {"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","concat","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,5 +1,4 @@
1
-
2
- import BSON from 'bson';
1
+ import { BSONLoader, BSONWriter } from '@loaders.gl/bson';
3
2
  export const PARQUET_LOGICAL_TYPES = {
4
3
  BOOLEAN: {
5
4
  primitiveType: 'BOOLEAN',
@@ -152,14 +151,12 @@ export const PARQUET_LOGICAL_TYPES = {
152
151
  fromPrimitive: decimalFromPrimitive_BYTE_ARRAY
153
152
  }
154
153
  };
155
-
156
154
  export function toPrimitive(type, value, field) {
157
155
  if (!(type in PARQUET_LOGICAL_TYPES)) {
158
156
  throw new Error("invalid type: ".concat(type));
159
157
  }
160
158
  return PARQUET_LOGICAL_TYPES[type].toPrimitive(value, field);
161
159
  }
162
-
163
160
  export function fromPrimitive(type, value, field) {
164
161
  if (!(type in PARQUET_LOGICAL_TYPES)) {
165
162
  throw new Error("invalid type: ".concat(type));
@@ -168,7 +165,6 @@ export function fromPrimitive(type, value, field) {
168
165
  var _PARQUET_LOGICAL_TYPE, _PARQUET_LOGICAL_TYPE2;
169
166
  return (_PARQUET_LOGICAL_TYPE = (_PARQUET_LOGICAL_TYPE2 = PARQUET_LOGICAL_TYPES[type]).fromPrimitive) === null || _PARQUET_LOGICAL_TYPE === void 0 ? void 0 : _PARQUET_LOGICAL_TYPE.call(_PARQUET_LOGICAL_TYPE2, value, field);
170
167
  }
171
-
172
168
  return value;
173
169
  }
174
170
  function toPrimitive_BOOLEAN(value) {
@@ -289,10 +285,13 @@ function fromPrimitive_JSON(value) {
289
285
  return JSON.parse(value);
290
286
  }
291
287
  function toPrimitive_BSON(value) {
292
- return Buffer.from(BSON.serialize(value));
288
+ var _BSONWriter$encodeSyn;
289
+ const arrayBuffer = (_BSONWriter$encodeSyn = BSONWriter.encodeSync) === null || _BSONWriter$encodeSyn === void 0 ? void 0 : _BSONWriter$encodeSyn.call(BSONWriter, value);
290
+ return Buffer.from(arrayBuffer);
293
291
  }
294
292
  function fromPrimitive_BSON(value) {
295
- return BSON.deserialize(value);
293
+ var _BSONLoader$parseSync;
294
+ return (_BSONLoader$parseSync = BSONLoader.parseSync) === null || _BSONLoader$parseSync === void 0 ? void 0 : _BSONLoader$parseSync.call(BSONLoader, value);
296
295
  }
297
296
  function toPrimitive_TIME_MILLIS(value) {
298
297
  const v = parseInt(value, 10);
@@ -313,7 +312,6 @@ function toPrimitive_DATE(value) {
313
312
  if (value instanceof Date) {
314
313
  return value.getTime() / kMillisPerDay;
315
314
  }
316
-
317
315
  {
318
316
  const v = parseInt(value, 10);
319
317
  if (v < 0 || isNaN(v)) {
@@ -329,7 +327,6 @@ function toPrimitive_TIMESTAMP_MILLIS(value) {
329
327
  if (value instanceof Date) {
330
328
  return value.getTime();
331
329
  }
332
-
333
330
  {
334
331
  const v = parseInt(value, 10);
335
332
  if (v < 0 || isNaN(v)) {
@@ -345,7 +342,6 @@ function toPrimitive_TIMESTAMP_MICROS(value) {
345
342
  if (value instanceof Date) {
346
343
  return value.getTime() * 1000;
347
344
  }
348
-
349
345
  {
350
346
  const v = parseInt(value, 10);
351
347
  if (v < 0 || isNaN(v)) {
@@ -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: 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
+ {"version":3,"file":"types.js","names":["BSONLoader","BSONWriter","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","BSON","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","concat","_PARQUET_LOGICAL_TYPE","_PARQUET_LOGICAL_TYPE2","call","Boolean","v","parseFloat","isNaN","parseInt","primitiveValue","scale","Math","round","presision","Buffer","from","toString","stringify","parse","_BSONWriter$encodeSyn","arrayBuffer","encodeSync","_BSONLoader$parseSync","parseSync","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 {BSONLoader, BSONWriter} from '@loaders.gl/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 const arrayBuffer = BSONWriter.encodeSync?.(value) as ArrayBuffer;\n return Buffer.from(arrayBuffer);\n}\n\nfunction fromPrimitive_BSON(value: any) {\n return BSONLoader.parseSync?.(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,4 +1,3 @@
1
-
2
1
  import { fs } from '@loaders.gl/loader-utils';
3
2
  export function load(name) {
4
3
  return (module || global).require(name);
@@ -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, 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"}
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,IAAIA,CAACC,IAAY,EAAO;EACtC,OAAO,CAACC,MAAM,IAAKC,MAAc,EAAEC,OAAO,CAACH,IAAI,CAAC;AAClD;AAUA,OAAO,SAASI,OAAOA,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,CAAC,CAAC;MACX;IACF,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ;AAEA,OAAO,SAASI,OAAOA,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,CAAC,CAAC;MACX;IACF,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ;AAEA,OAAO,SAASM,MAAMA,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,IAAW,CAAC;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"}
@@ -7,7 +7,6 @@ class UFramedTransport extends TFramedTransport {
7
7
  _defineProperty(this, "readPos", 0);
8
8
  }
9
9
  }
10
-
11
10
  export function serializeThrift(obj) {
12
11
  const output = [];
13
12
  const transport = new TBufferedTransport(undefined, buf => {
@@ -28,7 +27,6 @@ export function decodeThrift(obj, buf, offset) {
28
27
  obj.read(protocol);
29
28
  return transport.readPos - offset;
30
29
  }
31
-
32
30
  export function getThriftEnum(klass, value) {
33
31
  for (const k in klass) {
34
32
  if (klass[k] === value) {
@@ -63,31 +61,25 @@ export function decodePageHeader(buf, offset) {
63
61
  pageHeader
64
62
  };
65
63
  }
66
-
67
64
  export function getBitWidth(val) {
68
65
  if (val === 0) {
69
66
  return 0;
70
67
  }
71
-
72
68
  return Math.ceil(Math.log2(val + 1));
73
69
  }
74
-
75
70
  export function fieldIndexOf(arr, elem) {
76
71
  for (let j = 0; j < arr.length; j++) {
77
72
  if (arr[j].length > elem.length) {
78
73
  continue;
79
74
  }
80
-
81
75
  let m = true;
82
76
  for (let i = 0; i < elem.length; i++) {
83
77
  if (arr[j][i] === elem[i] || arr[j][i] === '+' || arr[j][i] === '#') {
84
78
  continue;
85
79
  }
86
-
87
80
  if (i >= arr[j].length && arr[j][arr[j].length - 1] === '#') {
88
81
  continue;
89
82
  }
90
-
91
83
  m = false;
92
84
  break;
93
85
  }
@@ -1 +1 @@
1
- {"version":3,"file":"read-utils.js","names":["TBufferedTransport","TCompactProtocol","TFramedTransport","FileMetaData","PageHeader","UFramedTransport","serializeThrift","obj","output","transport","undefined","buf","push","protocol","write","flush","Buffer","concat","decodeThrift","offset","readPos","read","getThriftEnum","klass","value","k","Error","decodeFileMetadata","metadata","length","decodePageHeader","pageHeader","getBitWidth","val","Math","ceil","log2","fieldIndexOf","arr","elem","j","m","i"],"sources":["../../../../src/parquetjs/utils/read-utils.ts"],"sourcesContent":["import {TBufferedTransport, TCompactProtocol, TFramedTransport} from 'thrift';\nimport {FileMetaData, PageHeader} from '../parquet-thrift';\n\nclass UFramedTransport extends TFramedTransport {\n public readPos: number = 0;\n}\n\n/**\n * Helper function that serializes a thrift object into a buffer\n */\nexport function serializeThrift(obj: any): Buffer {\n const output: Buffer[] = [];\n\n const transport = new TBufferedTransport(undefined, (buf) => {\n output.push(buf as Buffer);\n });\n\n const protocol = new TCompactProtocol(transport);\n obj.write(protocol);\n transport.flush();\n\n return Buffer.concat(output);\n}\n\nexport function decodeThrift(obj: any, buf: Buffer, offset?: number) {\n if (!offset) {\n // tslint:disable-next-line:no-parameter-reassignment\n offset = 0;\n }\n\n const transport = new UFramedTransport(buf);\n transport.readPos = offset;\n const protocol = new TCompactProtocol(transport);\n obj.read(protocol);\n return transport.readPos - offset;\n}\n\n/**\n * FIXME not ideal that this is linear\n */\nexport function getThriftEnum(klass: any, value: number | string): string {\n for (const k in klass) {\n if (klass[k] === value) {\n return k;\n }\n }\n throw new Error('Invalid ENUM value');\n}\n\nexport function decodeFileMetadata(buf: Buffer, offset?: number) {\n if (!offset) {\n // tslint:disable-next-line:no-parameter-reassignment\n offset = 0;\n }\n\n const transport = new UFramedTransport(buf);\n transport.readPos = offset;\n const protocol = new TCompactProtocol(transport);\n const metadata = FileMetaData.read(protocol);\n return {length: transport.readPos - offset, metadata};\n}\n\nexport function decodePageHeader(buf: Buffer, offset?: number) {\n if (!offset) {\n // tslint:disable-next-line:no-parameter-reassignment\n offset = 0;\n }\n\n const transport = new UFramedTransport(buf);\n transport.readPos = offset;\n const protocol = new TCompactProtocol(transport);\n const pageHeader = PageHeader.read(protocol);\n return {length: transport.readPos - offset, pageHeader};\n}\n\n/**\n * Get the number of bits required to store a given value\n */\nexport function getBitWidth(val: number): number {\n if (val === 0) {\n return 0;\n // tslint:disable-next-line:no-else-after-return\n }\n return Math.ceil(Math.log2(val + 1));\n}\n\n// Supports MQTT path wildcards\n// + all immediate children\n// # all descendents\nexport function fieldIndexOf(arr: string[][], elem: string[]): number {\n for (let j = 0; j < arr.length; j++) {\n if (arr[j].length > elem.length) {\n continue; // eslint-disable-line no-continue\n }\n let m = true;\n for (let i = 0; i < elem.length; i++) {\n if (arr[j][i] === elem[i] || arr[j][i] === '+' || arr[j][i] === '#') {\n continue; // eslint-disable-line no-continue\n }\n if (i >= arr[j].length && arr[j][arr[j].length - 1] === '#') {\n continue; // eslint-disable-line no-continue\n }\n m = false;\n break;\n }\n if (m) return j;\n }\n return -1;\n}\n"],"mappings":";AAAA,SAAQA,kBAAkB,EAAEC,gBAAgB,EAAEC,gBAAgB,QAAO,QAAQ;AAC7E,SAAQC,YAAY,EAAEC,UAAU,QAAO,mBAAmB;AAE1D,MAAMC,gBAAgB,SAASH,gBAAgB,CAAC;EAAA;IAAA;IAAA,iCACrB,CAAC;EAAA;AAC5B;;AAKA,OAAO,SAASI,eAAe,CAACC,GAAQ,EAAU;EAChD,MAAMC,MAAgB,GAAG,EAAE;EAE3B,MAAMC,SAAS,GAAG,IAAIT,kBAAkB,CAACU,SAAS,EAAGC,GAAG,IAAK;IAC3DH,MAAM,CAACI,IAAI,CAACD,GAAG,CAAW;EAC5B,CAAC,CAAC;EAEF,MAAME,QAAQ,GAAG,IAAIZ,gBAAgB,CAACQ,SAAS,CAAC;EAChDF,GAAG,CAACO,KAAK,CAACD,QAAQ,CAAC;EACnBJ,SAAS,CAACM,KAAK,EAAE;EAEjB,OAAOC,MAAM,CAACC,MAAM,CAACT,MAAM,CAAC;AAC9B;AAEA,OAAO,SAASU,YAAY,CAACX,GAAQ,EAAEI,GAAW,EAAEQ,MAAe,EAAE;EACnE,IAAI,CAACA,MAAM,EAAE;IAEXA,MAAM,GAAG,CAAC;EACZ;EAEA,MAAMV,SAAS,GAAG,IAAIJ,gBAAgB,CAACM,GAAG,CAAC;EAC3CF,SAAS,CAACW,OAAO,GAAGD,MAAM;EAC1B,MAAMN,QAAQ,GAAG,IAAIZ,gBAAgB,CAACQ,SAAS,CAAC;EAChDF,GAAG,CAACc,IAAI,CAACR,QAAQ,CAAC;EAClB,OAAOJ,SAAS,CAACW,OAAO,GAAGD,MAAM;AACnC;;AAKA,OAAO,SAASG,aAAa,CAACC,KAAU,EAAEC,KAAsB,EAAU;EACxE,KAAK,MAAMC,CAAC,IAAIF,KAAK,EAAE;IACrB,IAAIA,KAAK,CAACE,CAAC,CAAC,KAAKD,KAAK,EAAE;MACtB,OAAOC,CAAC;IACV;EACF;EACA,MAAM,IAAIC,KAAK,CAAC,oBAAoB,CAAC;AACvC;AAEA,OAAO,SAASC,kBAAkB,CAAChB,GAAW,EAAEQ,MAAe,EAAE;EAC/D,IAAI,CAACA,MAAM,EAAE;IAEXA,MAAM,GAAG,CAAC;EACZ;EAEA,MAAMV,SAAS,GAAG,IAAIJ,gBAAgB,CAACM,GAAG,CAAC;EAC3CF,SAAS,CAACW,OAAO,GAAGD,MAAM;EAC1B,MAAMN,QAAQ,GAAG,IAAIZ,gBAAgB,CAACQ,SAAS,CAAC;EAChD,MAAMmB,QAAQ,GAAGzB,YAAY,CAACkB,IAAI,CAACR,QAAQ,CAAC;EAC5C,OAAO;IAACgB,MAAM,EAAEpB,SAAS,CAACW,OAAO,GAAGD,MAAM;IAAES;EAAQ,CAAC;AACvD;AAEA,OAAO,SAASE,gBAAgB,CAACnB,GAAW,EAAEQ,MAAe,EAAE;EAC7D,IAAI,CAACA,MAAM,EAAE;IAEXA,MAAM,GAAG,CAAC;EACZ;EAEA,MAAMV,SAAS,GAAG,IAAIJ,gBAAgB,CAACM,GAAG,CAAC;EAC3CF,SAAS,CAACW,OAAO,GAAGD,MAAM;EAC1B,MAAMN,QAAQ,GAAG,IAAIZ,gBAAgB,CAACQ,SAAS,CAAC;EAChD,MAAMsB,UAAU,GAAG3B,UAAU,CAACiB,IAAI,CAACR,QAAQ,CAAC;EAC5C,OAAO;IAACgB,MAAM,EAAEpB,SAAS,CAACW,OAAO,GAAGD,MAAM;IAAEY;EAAU,CAAC;AACzD;;AAKA,OAAO,SAASC,WAAW,CAACC,GAAW,EAAU;EAC/C,IAAIA,GAAG,KAAK,CAAC,EAAE;IACb,OAAO,CAAC;EAEV;;EACA,OAAOC,IAAI,CAACC,IAAI,CAACD,IAAI,CAACE,IAAI,CAACH,GAAG,GAAG,CAAC,CAAC,CAAC;AACtC;;AAKA,OAAO,SAASI,YAAY,CAACC,GAAe,EAAEC,IAAc,EAAU;EACpE,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,GAAG,CAACT,MAAM,EAAEW,CAAC,EAAE,EAAE;IACnC,IAAIF,GAAG,CAACE,CAAC,CAAC,CAACX,MAAM,GAAGU,IAAI,CAACV,MAAM,EAAE;MAC/B;IACF;;IACA,IAAIY,CAAC,GAAG,IAAI;IACZ,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,IAAI,CAACV,MAAM,EAAEa,CAAC,EAAE,EAAE;MACpC,IAAIJ,GAAG,CAACE,CAAC,CAAC,CAACE,CAAC,CAAC,KAAKH,IAAI,CAACG,CAAC,CAAC,IAAIJ,GAAG,CAACE,CAAC,CAAC,CAACE,CAAC,CAAC,KAAK,GAAG,IAAIJ,GAAG,CAACE,CAAC,CAAC,CAACE,CAAC,CAAC,KAAK,GAAG,EAAE;QACnE;MACF;;MACA,IAAIA,CAAC,IAAIJ,GAAG,CAACE,CAAC,CAAC,CAACX,MAAM,IAAIS,GAAG,CAACE,CAAC,CAAC,CAACF,GAAG,CAACE,CAAC,CAAC,CAACX,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;QAC3D;MACF;;MACAY,CAAC,GAAG,KAAK;MACT;IACF;IACA,IAAIA,CAAC,EAAE,OAAOD,CAAC;EACjB;EACA,OAAO,CAAC,CAAC;AACX"}
1
+ {"version":3,"file":"read-utils.js","names":["TBufferedTransport","TCompactProtocol","TFramedTransport","FileMetaData","PageHeader","UFramedTransport","constructor","arguments","_defineProperty","serializeThrift","obj","output","transport","undefined","buf","push","protocol","write","flush","Buffer","concat","decodeThrift","offset","readPos","read","getThriftEnum","klass","value","k","Error","decodeFileMetadata","metadata","length","decodePageHeader","pageHeader","getBitWidth","val","Math","ceil","log2","fieldIndexOf","arr","elem","j","m","i"],"sources":["../../../../src/parquetjs/utils/read-utils.ts"],"sourcesContent":["import {TBufferedTransport, TCompactProtocol, TFramedTransport} from 'thrift';\nimport {FileMetaData, PageHeader} from '../parquet-thrift';\n\nclass UFramedTransport extends TFramedTransport {\n public readPos: number = 0;\n}\n\n/**\n * Helper function that serializes a thrift object into a buffer\n */\nexport function serializeThrift(obj: any): Buffer {\n const output: Buffer[] = [];\n\n const transport = new TBufferedTransport(undefined, (buf) => {\n output.push(buf as Buffer);\n });\n\n const protocol = new TCompactProtocol(transport);\n obj.write(protocol);\n transport.flush();\n\n return Buffer.concat(output);\n}\n\nexport function decodeThrift(obj: any, buf: Buffer, offset?: number) {\n if (!offset) {\n // tslint:disable-next-line:no-parameter-reassignment\n offset = 0;\n }\n\n const transport = new UFramedTransport(buf);\n transport.readPos = offset;\n const protocol = new TCompactProtocol(transport);\n obj.read(protocol);\n return transport.readPos - offset;\n}\n\n/**\n * FIXME not ideal that this is linear\n */\nexport function getThriftEnum(klass: any, value: number | string): string {\n for (const k in klass) {\n if (klass[k] === value) {\n return k;\n }\n }\n throw new Error('Invalid ENUM value');\n}\n\nexport function decodeFileMetadata(buf: Buffer, offset?: number) {\n if (!offset) {\n // tslint:disable-next-line:no-parameter-reassignment\n offset = 0;\n }\n\n const transport = new UFramedTransport(buf);\n transport.readPos = offset;\n const protocol = new TCompactProtocol(transport);\n const metadata = FileMetaData.read(protocol);\n return {length: transport.readPos - offset, metadata};\n}\n\nexport function decodePageHeader(buf: Buffer, offset?: number) {\n if (!offset) {\n // tslint:disable-next-line:no-parameter-reassignment\n offset = 0;\n }\n\n const transport = new UFramedTransport(buf);\n transport.readPos = offset;\n const protocol = new TCompactProtocol(transport);\n const pageHeader = PageHeader.read(protocol);\n return {length: transport.readPos - offset, pageHeader};\n}\n\n/**\n * Get the number of bits required to store a given value\n */\nexport function getBitWidth(val: number): number {\n if (val === 0) {\n return 0;\n // tslint:disable-next-line:no-else-after-return\n }\n return Math.ceil(Math.log2(val + 1));\n}\n\n// Supports MQTT path wildcards\n// + all immediate children\n// # all descendents\nexport function fieldIndexOf(arr: string[][], elem: string[]): number {\n for (let j = 0; j < arr.length; j++) {\n if (arr[j].length > elem.length) {\n continue; // eslint-disable-line no-continue\n }\n let m = true;\n for (let i = 0; i < elem.length; i++) {\n if (arr[j][i] === elem[i] || arr[j][i] === '+' || arr[j][i] === '#') {\n continue; // eslint-disable-line no-continue\n }\n if (i >= arr[j].length && arr[j][arr[j].length - 1] === '#') {\n continue; // eslint-disable-line no-continue\n }\n m = false;\n break;\n }\n if (m) return j;\n }\n return -1;\n}\n"],"mappings":";AAAA,SAAQA,kBAAkB,EAAEC,gBAAgB,EAAEC,gBAAgB,QAAO,QAAQ;AAC7E,SAAQC,YAAY,EAAEC,UAAU,QAAO,mBAAmB;AAE1D,MAAMC,gBAAgB,SAASH,gBAAgB,CAAC;EAAAI,YAAA;IAAA,SAAAC,SAAA;IAAAC,eAAA,kBACrB,CAAC;EAAA;AAC5B;AAKA,OAAO,SAASC,eAAeA,CAACC,GAAQ,EAAU;EAChD,MAAMC,MAAgB,GAAG,EAAE;EAE3B,MAAMC,SAAS,GAAG,IAAIZ,kBAAkB,CAACa,SAAS,EAAGC,GAAG,IAAK;IAC3DH,MAAM,CAACI,IAAI,CAACD,GAAa,CAAC;EAC5B,CAAC,CAAC;EAEF,MAAME,QAAQ,GAAG,IAAIf,gBAAgB,CAACW,SAAS,CAAC;EAChDF,GAAG,CAACO,KAAK,CAACD,QAAQ,CAAC;EACnBJ,SAAS,CAACM,KAAK,CAAC,CAAC;EAEjB,OAAOC,MAAM,CAACC,MAAM,CAACT,MAAM,CAAC;AAC9B;AAEA,OAAO,SAASU,YAAYA,CAACX,GAAQ,EAAEI,GAAW,EAAEQ,MAAe,EAAE;EACnE,IAAI,CAACA,MAAM,EAAE;IAEXA,MAAM,GAAG,CAAC;EACZ;EAEA,MAAMV,SAAS,GAAG,IAAIP,gBAAgB,CAACS,GAAG,CAAC;EAC3CF,SAAS,CAACW,OAAO,GAAGD,MAAM;EAC1B,MAAMN,QAAQ,GAAG,IAAIf,gBAAgB,CAACW,SAAS,CAAC;EAChDF,GAAG,CAACc,IAAI,CAACR,QAAQ,CAAC;EAClB,OAAOJ,SAAS,CAACW,OAAO,GAAGD,MAAM;AACnC;AAKA,OAAO,SAASG,aAAaA,CAACC,KAAU,EAAEC,KAAsB,EAAU;EACxE,KAAK,MAAMC,CAAC,IAAIF,KAAK,EAAE;IACrB,IAAIA,KAAK,CAACE,CAAC,CAAC,KAAKD,KAAK,EAAE;MACtB,OAAOC,CAAC;IACV;EACF;EACA,MAAM,IAAIC,KAAK,CAAC,oBAAoB,CAAC;AACvC;AAEA,OAAO,SAASC,kBAAkBA,CAAChB,GAAW,EAAEQ,MAAe,EAAE;EAC/D,IAAI,CAACA,MAAM,EAAE;IAEXA,MAAM,GAAG,CAAC;EACZ;EAEA,MAAMV,SAAS,GAAG,IAAIP,gBAAgB,CAACS,GAAG,CAAC;EAC3CF,SAAS,CAACW,OAAO,GAAGD,MAAM;EAC1B,MAAMN,QAAQ,GAAG,IAAIf,gBAAgB,CAACW,SAAS,CAAC;EAChD,MAAMmB,QAAQ,GAAG5B,YAAY,CAACqB,IAAI,CAACR,QAAQ,CAAC;EAC5C,OAAO;IAACgB,MAAM,EAAEpB,SAAS,CAACW,OAAO,GAAGD,MAAM;IAAES;EAAQ,CAAC;AACvD;AAEA,OAAO,SAASE,gBAAgBA,CAACnB,GAAW,EAAEQ,MAAe,EAAE;EAC7D,IAAI,CAACA,MAAM,EAAE;IAEXA,MAAM,GAAG,CAAC;EACZ;EAEA,MAAMV,SAAS,GAAG,IAAIP,gBAAgB,CAACS,GAAG,CAAC;EAC3CF,SAAS,CAACW,OAAO,GAAGD,MAAM;EAC1B,MAAMN,QAAQ,GAAG,IAAIf,gBAAgB,CAACW,SAAS,CAAC;EAChD,MAAMsB,UAAU,GAAG9B,UAAU,CAACoB,IAAI,CAACR,QAAQ,CAAC;EAC5C,OAAO;IAACgB,MAAM,EAAEpB,SAAS,CAACW,OAAO,GAAGD,MAAM;IAAEY;EAAU,CAAC;AACzD;AAKA,OAAO,SAASC,WAAWA,CAACC,GAAW,EAAU;EAC/C,IAAIA,GAAG,KAAK,CAAC,EAAE;IACb,OAAO,CAAC;EAEV;EACA,OAAOC,IAAI,CAACC,IAAI,CAACD,IAAI,CAACE,IAAI,CAACH,GAAG,GAAG,CAAC,CAAC,CAAC;AACtC;AAKA,OAAO,SAASI,YAAYA,CAACC,GAAe,EAAEC,IAAc,EAAU;EACpE,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,GAAG,CAACT,MAAM,EAAEW,CAAC,EAAE,EAAE;IACnC,IAAIF,GAAG,CAACE,CAAC,CAAC,CAACX,MAAM,GAAGU,IAAI,CAACV,MAAM,EAAE;MAC/B;IACF;IACA,IAAIY,CAAC,GAAG,IAAI;IACZ,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,IAAI,CAACV,MAAM,EAAEa,CAAC,EAAE,EAAE;MACpC,IAAIJ,GAAG,CAACE,CAAC,CAAC,CAACE,CAAC,CAAC,KAAKH,IAAI,CAACG,CAAC,CAAC,IAAIJ,GAAG,CAACE,CAAC,CAAC,CAACE,CAAC,CAAC,KAAK,GAAG,IAAIJ,GAAG,CAACE,CAAC,CAAC,CAACE,CAAC,CAAC,KAAK,GAAG,EAAE;QACnE;MACF;MACA,IAAIA,CAAC,IAAIJ,GAAG,CAACE,CAAC,CAAC,CAACX,MAAM,IAAIS,GAAG,CAACE,CAAC,CAAC,CAACF,GAAG,CAACE,CAAC,CAAC,CAACX,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;QAC3D;MACF;MACAY,CAAC,GAAG,KAAK;MACT;IACF;IACA,IAAIA,CAAC,EAAE,OAAOD,CAAC;EACjB;EACA,OAAO,CAAC,CAAC;AACX"}