@loaders.gl/parquet 4.4.5 → 5.0.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (674) hide show
  1. package/LICENSE +14 -3
  2. package/dist/bundled.d.ts +9 -0
  3. package/dist/bundled.d.ts.map +1 -0
  4. package/dist/bundled.js +10 -0
  5. package/dist/bundled.js.map +1 -0
  6. package/dist/geoparquet-loader-with-parser.d.ts +33 -0
  7. package/dist/geoparquet-loader-with-parser.d.ts.map +1 -0
  8. package/dist/geoparquet-loader-with-parser.js +52 -0
  9. package/dist/geoparquet-loader-with-parser.js.map +1 -0
  10. package/dist/geoparquet-loader.d.ts +59 -0
  11. package/dist/geoparquet-loader.d.ts.map +1 -0
  12. package/dist/geoparquet-loader.js +30 -0
  13. package/dist/geoparquet-loader.js.map +1 -0
  14. package/dist/index.cjs +25873 -4776
  15. package/dist/index.cjs.map +3 -4
  16. package/dist/index.d.ts +10 -7
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +7 -11
  19. package/dist/index.js.map +1 -1
  20. package/dist/lib/arrow/convert-columns-to-row-group.js +3 -0
  21. package/dist/lib/arrow/convert-columns-to-row-group.js.map +1 -1
  22. package/dist/lib/arrow/convert-schema-from-parquet.d.ts.map +1 -1
  23. package/dist/lib/arrow/convert-schema-from-parquet.js +86 -26
  24. package/dist/lib/arrow/convert-schema-from-parquet.js.map +1 -1
  25. package/dist/lib/arrow/convert-schema-to-parquet.d.ts.map +1 -1
  26. package/dist/lib/arrow/convert-schema-to-parquet.js +16 -7
  27. package/dist/lib/arrow/convert-schema-to-parquet.js.map +1 -1
  28. package/dist/lib/arrow/create-nested-arrow-vector.d.ts +8 -0
  29. package/dist/lib/arrow/create-nested-arrow-vector.d.ts.map +1 -0
  30. package/dist/lib/arrow/create-nested-arrow-vector.js +396 -0
  31. package/dist/lib/arrow/create-nested-arrow-vector.js.map +1 -0
  32. package/dist/lib/constants.d.ts +0 -1
  33. package/dist/lib/constants.d.ts.map +1 -1
  34. package/dist/lib/constants.js +1 -2
  35. package/dist/lib/constants.js.map +1 -1
  36. package/dist/lib/encoders/encode-arrow-to-parquet.d.ts +2 -2
  37. package/dist/lib/encoders/encode-arrow-to-parquet.d.ts.map +1 -1
  38. package/dist/lib/encoders/encode-arrow-to-parquet.js +3 -10
  39. package/dist/lib/encoders/encode-arrow-to-parquet.js.map +1 -1
  40. package/dist/lib/encoders/encode-table-to-parquet-js.d.ts +5 -0
  41. package/dist/lib/encoders/encode-table-to-parquet-js.d.ts.map +1 -0
  42. package/dist/lib/encoders/encode-table-to-parquet-js.js +199 -0
  43. package/dist/lib/encoders/encode-table-to-parquet-js.js.map +1 -0
  44. package/dist/lib/geo/geospatial-metadata.d.ts +67 -0
  45. package/dist/lib/geo/geospatial-metadata.d.ts.map +1 -0
  46. package/dist/lib/geo/geospatial-metadata.js +338 -0
  47. package/dist/lib/geo/geospatial-metadata.js.map +1 -0
  48. package/dist/lib/parquet-page-index.d.ts +62 -0
  49. package/dist/lib/parquet-page-index.d.ts.map +1 -0
  50. package/dist/lib/parquet-page-index.js +377 -0
  51. package/dist/lib/parquet-page-index.js.map +1 -0
  52. package/dist/lib/parquet-predicate.d.ts +17 -0
  53. package/dist/lib/parquet-predicate.d.ts.map +1 -0
  54. package/dist/lib/parquet-predicate.js +300 -0
  55. package/dist/lib/parquet-predicate.js.map +1 -0
  56. package/dist/lib/parquet-source-worker-client.d.ts +6 -0
  57. package/dist/lib/parquet-source-worker-client.d.ts.map +1 -0
  58. package/dist/lib/parquet-source-worker-client.js +22 -0
  59. package/dist/lib/parquet-source-worker-client.js.map +1 -0
  60. package/dist/lib/parquet-source-worker-decoder.d.ts +4 -0
  61. package/dist/lib/parquet-source-worker-decoder.d.ts.map +1 -0
  62. package/dist/lib/parquet-source-worker-decoder.js +115 -0
  63. package/dist/lib/parquet-source-worker-decoder.js.map +1 -0
  64. package/dist/lib/parquet-source-worker-file.d.ts +24 -0
  65. package/dist/lib/parquet-source-worker-file.d.ts.map +1 -0
  66. package/dist/lib/parquet-source-worker-file.js +40 -0
  67. package/dist/lib/parquet-source-worker-file.js.map +1 -0
  68. package/dist/lib/parquet-source-worker-types.d.ts +97 -0
  69. package/dist/lib/parquet-source-worker-types.d.ts.map +1 -0
  70. package/dist/lib/parquet-source-worker-types.js +5 -0
  71. package/dist/lib/parquet-source-worker-types.js.map +1 -0
  72. package/dist/lib/parquet-worker-transport.d.ts +8 -0
  73. package/dist/lib/parquet-worker-transport.d.ts.map +1 -0
  74. package/dist/lib/parquet-worker-transport.js +40 -0
  75. package/dist/lib/parquet-worker-transport.js.map +1 -0
  76. package/dist/lib/parsers/convert-parquet-tables.d.ts +16 -0
  77. package/dist/lib/parsers/convert-parquet-tables.d.ts.map +1 -0
  78. package/dist/lib/parsers/convert-parquet-tables.js +30 -0
  79. package/dist/lib/parsers/convert-parquet-tables.js.map +1 -0
  80. package/dist/lib/parsers/get-parquet-schema.d.ts.map +1 -1
  81. package/dist/lib/parsers/get-parquet-schema.js +3 -1
  82. package/dist/lib/parsers/get-parquet-schema.js.map +1 -1
  83. package/dist/lib/parsers/parse-geoparquet-to-geojson.d.ts +4 -4
  84. package/dist/lib/parsers/parse-geoparquet-to-geojson.d.ts.map +1 -1
  85. package/dist/lib/parsers/parse-geoparquet-to-geojson.js +19 -6
  86. package/dist/lib/parsers/parse-geoparquet-to-geojson.js.map +1 -1
  87. package/dist/lib/parsers/parse-parquet-tables.d.ts +37 -0
  88. package/dist/lib/parsers/parse-parquet-tables.d.ts.map +1 -0
  89. package/dist/lib/parsers/parse-parquet-tables.js +50 -0
  90. package/dist/lib/parsers/parse-parquet-tables.js.map +1 -0
  91. package/dist/lib/parsers/parse-parquet-to-arrow-js.d.ts +19 -0
  92. package/dist/lib/parsers/parse-parquet-to-arrow-js.d.ts.map +1 -0
  93. package/dist/lib/parsers/parse-parquet-to-arrow-js.js +608 -0
  94. package/dist/lib/parsers/parse-parquet-to-arrow-js.js.map +1 -0
  95. package/dist/lib/parsers/parse-parquet-to-arrow.d.ts +7 -7
  96. package/dist/lib/parsers/parse-parquet-to-arrow.d.ts.map +1 -1
  97. package/dist/lib/parsers/parse-parquet-to-arrow.js +45 -32
  98. package/dist/lib/parsers/parse-parquet-to-arrow.js.map +1 -1
  99. package/dist/lib/parsers/parse-parquet-to-columns.d.ts +3 -3
  100. package/dist/lib/parsers/parse-parquet-to-columns.d.ts.map +1 -1
  101. package/dist/lib/parsers/parse-parquet-to-columns.js +1 -4
  102. package/dist/lib/parsers/parse-parquet-to-columns.js.map +1 -1
  103. package/dist/lib/parsers/parse-parquet-to-json.d.ts +3 -3
  104. package/dist/lib/parsers/parse-parquet-to-json.d.ts.map +1 -1
  105. package/dist/lib/parsers/parse-parquet-to-json.js +77 -26
  106. package/dist/lib/parsers/parse-parquet-to-json.js.map +1 -1
  107. package/dist/lib/sources/parquet-range-file.d.ts +80 -0
  108. package/dist/lib/sources/parquet-range-file.d.ts.map +1 -0
  109. package/dist/lib/sources/parquet-range-file.js +261 -0
  110. package/dist/lib/sources/parquet-range-file.js.map +1 -0
  111. package/dist/lib/sources/single-batch-queue.d.ts +24 -0
  112. package/dist/lib/sources/single-batch-queue.d.ts.map +1 -0
  113. package/dist/lib/sources/single-batch-queue.js +91 -0
  114. package/dist/lib/sources/single-batch-queue.js.map +1 -0
  115. package/dist/lib/utils/load-wasm-node.d.ts +3 -0
  116. package/dist/lib/utils/load-wasm-node.d.ts.map +1 -0
  117. package/dist/lib/utils/load-wasm-node.js +23 -0
  118. package/dist/lib/utils/load-wasm-node.js.map +1 -0
  119. package/dist/lib/utils/load-wasm.d.ts +2 -2
  120. package/dist/lib/utils/load-wasm.d.ts.map +1 -1
  121. package/dist/lib/utils/load-wasm.js +28 -12
  122. package/dist/lib/utils/load-wasm.js.map +1 -1
  123. package/dist/lib/utils/make-stream-iterator.d.ts +2 -0
  124. package/dist/lib/utils/make-stream-iterator.d.ts.map +1 -1
  125. package/dist/lib/utils/make-stream-iterator.js +123 -14
  126. package/dist/lib/utils/make-stream-iterator.js.map +1 -1
  127. package/dist/lib/utils/normalize-parquet-options.d.ts +5 -0
  128. package/dist/lib/utils/normalize-parquet-options.d.ts.map +1 -0
  129. package/dist/lib/utils/normalize-parquet-options.js +11 -0
  130. package/dist/lib/utils/normalize-parquet-options.js.map +1 -0
  131. package/dist/parquet-dataset-source.cjs +26413 -0
  132. package/dist/parquet-dataset-source.cjs.map +6 -0
  133. package/dist/parquet-dataset-source.d.ts +54 -0
  134. package/dist/parquet-dataset-source.d.ts.map +1 -0
  135. package/dist/parquet-dataset-source.js +380 -0
  136. package/dist/parquet-dataset-source.js.map +1 -0
  137. package/dist/parquet-format.d.ts +2 -0
  138. package/dist/parquet-format.d.ts.map +1 -1
  139. package/dist/parquet-format.js +2 -0
  140. package/dist/parquet-format.js.map +1 -1
  141. package/dist/parquet-js-loader-types.d.ts +57 -0
  142. package/dist/parquet-js-loader-types.d.ts.map +1 -0
  143. package/dist/parquet-js-loader-types.js +33 -0
  144. package/dist/parquet-js-loader-types.js.map +1 -0
  145. package/dist/parquet-js-loader.d.ts +32 -0
  146. package/dist/parquet-js-loader.d.ts.map +1 -0
  147. package/dist/parquet-js-loader.js +58 -0
  148. package/dist/parquet-js-loader.js.map +1 -0
  149. package/dist/parquet-js-writer.d.ts +44 -0
  150. package/dist/parquet-js-writer.d.ts.map +1 -0
  151. package/dist/parquet-js-writer.js +28 -0
  152. package/dist/parquet-js-writer.js.map +1 -0
  153. package/dist/parquet-loader-base.d.ts +25 -0
  154. package/dist/parquet-loader-base.d.ts.map +1 -0
  155. package/dist/parquet-loader-base.js +23 -0
  156. package/dist/parquet-loader-base.js.map +1 -0
  157. package/dist/parquet-loader-options.d.ts +44 -0
  158. package/dist/parquet-loader-options.d.ts.map +1 -0
  159. package/dist/parquet-loader-options.js +10 -0
  160. package/dist/parquet-loader-options.js.map +1 -0
  161. package/dist/parquet-loader-types.d.ts +61 -0
  162. package/dist/parquet-loader-types.d.ts.map +1 -0
  163. package/dist/parquet-loader-types.js +17 -0
  164. package/dist/parquet-loader-types.js.map +1 -0
  165. package/dist/parquet-loader.d.ts +42 -0
  166. package/dist/parquet-loader.d.ts.map +1 -0
  167. package/dist/parquet-loader.js +68 -0
  168. package/dist/parquet-loader.js.map +1 -0
  169. package/dist/parquet-source-capabilities.d.ts +36 -0
  170. package/dist/parquet-source-capabilities.d.ts.map +1 -0
  171. package/dist/parquet-source-capabilities.js +22 -0
  172. package/dist/parquet-source-capabilities.js.map +1 -0
  173. package/dist/parquet-source-loader-types.d.ts +72 -0
  174. package/dist/parquet-source-loader-types.d.ts.map +1 -0
  175. package/dist/parquet-source-loader-types.js +74 -0
  176. package/dist/parquet-source-loader-types.js.map +1 -0
  177. package/dist/parquet-source-loader.cjs +25975 -0
  178. package/dist/parquet-source-loader.cjs.map +6 -0
  179. package/dist/parquet-source-loader.d.ts +120 -0
  180. package/dist/parquet-source-loader.d.ts.map +1 -0
  181. package/dist/parquet-source-loader.js +812 -0
  182. package/dist/parquet-source-loader.js.map +1 -0
  183. package/dist/parquet-source-types.d.ts +384 -0
  184. package/dist/parquet-source-types.d.ts.map +1 -0
  185. package/dist/parquet-source-types.js +5 -0
  186. package/dist/parquet-source-types.js.map +1 -0
  187. package/dist/parquet-source-worker-url.d.ts +3 -0
  188. package/dist/parquet-source-worker-url.d.ts.map +1 -0
  189. package/dist/parquet-source-worker-url.js +22 -0
  190. package/dist/parquet-source-worker-url.js.map +1 -0
  191. package/dist/parquet-source-worker.js +38491 -0
  192. package/dist/parquet-source-worker.js.map +7 -0
  193. package/dist/parquet-worker-node.cjs +54779 -0
  194. package/dist/parquet-worker-node.cjs.map +7 -0
  195. package/dist/parquet-worker-url.d.ts +3 -0
  196. package/dist/parquet-worker-url.d.ts.map +1 -0
  197. package/dist/parquet-worker-url.js +15 -0
  198. package/dist/parquet-worker-url.js.map +1 -0
  199. package/dist/parquet-worker.js +19920 -0
  200. package/dist/parquet-worker.js.map +7 -0
  201. package/dist/parquet-writer.d.ts +10 -0
  202. package/dist/parquet-writer.d.ts.map +1 -0
  203. package/dist/parquet-writer.js +27 -0
  204. package/dist/parquet-writer.js.map +1 -0
  205. package/dist/parquet_wasm_bg.wasm +0 -0
  206. package/dist/parquetjs/codecs/byte-stream-split.d.ts +9 -0
  207. package/dist/parquetjs/codecs/byte-stream-split.d.ts.map +1 -0
  208. package/dist/parquetjs/codecs/byte-stream-split.js +159 -0
  209. package/dist/parquetjs/codecs/byte-stream-split.js.map +1 -0
  210. package/dist/parquetjs/codecs/declare.d.ts +20 -3
  211. package/dist/parquetjs/codecs/declare.d.ts.map +1 -1
  212. package/dist/parquetjs/codecs/declare.js +7 -1
  213. package/dist/parquetjs/codecs/declare.js.map +1 -1
  214. package/dist/parquetjs/codecs/delta.d.ts +17 -0
  215. package/dist/parquetjs/codecs/delta.d.ts.map +1 -0
  216. package/dist/parquetjs/codecs/delta.js +439 -0
  217. package/dist/parquetjs/codecs/delta.js.map +1 -0
  218. package/dist/parquetjs/codecs/dictionary.d.ts +5 -2
  219. package/dist/parquetjs/codecs/dictionary.d.ts.map +1 -1
  220. package/dist/parquetjs/codecs/dictionary.js +16 -4
  221. package/dist/parquetjs/codecs/dictionary.js.map +1 -1
  222. package/dist/parquetjs/codecs/index.d.ts.map +1 -1
  223. package/dist/parquetjs/codecs/index.js +18 -0
  224. package/dist/parquetjs/codecs/index.js.map +1 -1
  225. package/dist/parquetjs/codecs/plain.d.ts +3 -3
  226. package/dist/parquetjs/codecs/plain.d.ts.map +1 -1
  227. package/dist/parquetjs/codecs/plain.js +88 -76
  228. package/dist/parquetjs/codecs/plain.js.map +1 -1
  229. package/dist/parquetjs/codecs/rle.d.ts +3 -3
  230. package/dist/parquetjs/codecs/rle.d.ts.map +1 -1
  231. package/dist/parquetjs/codecs/rle.js +196 -68
  232. package/dist/parquetjs/codecs/rle.js.map +1 -1
  233. package/dist/parquetjs/compression.d.ts +7 -8
  234. package/dist/parquetjs/compression.d.ts.map +1 -1
  235. package/dist/parquetjs/compression.js +95 -141
  236. package/dist/parquetjs/compression.js.map +1 -1
  237. package/dist/parquetjs/encoder/dictionary-planner.d.ts +17 -0
  238. package/dist/parquetjs/encoder/dictionary-planner.d.ts.map +1 -0
  239. package/dist/parquetjs/encoder/dictionary-planner.js +64 -0
  240. package/dist/parquetjs/encoder/dictionary-planner.js.map +1 -0
  241. package/dist/parquetjs/encoder/page-planner.d.ts +11 -0
  242. package/dist/parquetjs/encoder/page-planner.d.ts.map +1 -0
  243. package/dist/parquetjs/encoder/page-planner.js +60 -0
  244. package/dist/parquetjs/encoder/page-planner.js.map +1 -0
  245. package/dist/parquetjs/encoder/parquet-encoder.d.ts +11 -4
  246. package/dist/parquetjs/encoder/parquet-encoder.d.ts.map +1 -1
  247. package/dist/parquetjs/encoder/parquet-encoder.js +259 -52
  248. package/dist/parquetjs/encoder/parquet-encoder.js.map +1 -1
  249. package/dist/parquetjs/parquet-thrift/BsonType.d.ts +1 -1
  250. package/dist/parquetjs/parquet-thrift/BsonType.d.ts.map +1 -1
  251. package/dist/parquetjs/parquet-thrift/BsonType.js +1 -1
  252. package/dist/parquetjs/parquet-thrift/BsonType.js.map +1 -1
  253. package/dist/parquetjs/parquet-thrift/ColumnChunk.d.ts +2 -2
  254. package/dist/parquetjs/parquet-thrift/ColumnChunk.d.ts.map +1 -1
  255. package/dist/parquetjs/parquet-thrift/ColumnChunk.js +2 -2
  256. package/dist/parquetjs/parquet-thrift/ColumnChunk.js.map +1 -1
  257. package/dist/parquetjs/parquet-thrift/ColumnIndex.d.ts +6 -6
  258. package/dist/parquetjs/parquet-thrift/ColumnIndex.d.ts.map +1 -1
  259. package/dist/parquetjs/parquet-thrift/ColumnIndex.js +3 -3
  260. package/dist/parquetjs/parquet-thrift/ColumnIndex.js.map +1 -1
  261. package/dist/parquetjs/parquet-thrift/ColumnMetaData.d.ts +2 -2
  262. package/dist/parquetjs/parquet-thrift/ColumnMetaData.d.ts.map +1 -1
  263. package/dist/parquetjs/parquet-thrift/ColumnMetaData.js +2 -2
  264. package/dist/parquetjs/parquet-thrift/ColumnMetaData.js.map +1 -1
  265. package/dist/parquetjs/parquet-thrift/ColumnOrder.d.ts +1 -1
  266. package/dist/parquetjs/parquet-thrift/ColumnOrder.d.ts.map +1 -1
  267. package/dist/parquetjs/parquet-thrift/ColumnOrder.js +1 -1
  268. package/dist/parquetjs/parquet-thrift/ColumnOrder.js.map +1 -1
  269. package/dist/parquetjs/parquet-thrift/DataPageHeader.d.ts +1 -1
  270. package/dist/parquetjs/parquet-thrift/DataPageHeader.d.ts.map +1 -1
  271. package/dist/parquetjs/parquet-thrift/DataPageHeader.js +1 -1
  272. package/dist/parquetjs/parquet-thrift/DataPageHeader.js.map +1 -1
  273. package/dist/parquetjs/parquet-thrift/DataPageHeaderV2.d.ts +1 -1
  274. package/dist/parquetjs/parquet-thrift/DataPageHeaderV2.d.ts.map +1 -1
  275. package/dist/parquetjs/parquet-thrift/DataPageHeaderV2.js +1 -1
  276. package/dist/parquetjs/parquet-thrift/DataPageHeaderV2.js.map +1 -1
  277. package/dist/parquetjs/parquet-thrift/DateType.d.ts +1 -1
  278. package/dist/parquetjs/parquet-thrift/DateType.d.ts.map +1 -1
  279. package/dist/parquetjs/parquet-thrift/DateType.js +1 -1
  280. package/dist/parquetjs/parquet-thrift/DateType.js.map +1 -1
  281. package/dist/parquetjs/parquet-thrift/DecimalType.d.ts +1 -1
  282. package/dist/parquetjs/parquet-thrift/DecimalType.d.ts.map +1 -1
  283. package/dist/parquetjs/parquet-thrift/DecimalType.js +1 -1
  284. package/dist/parquetjs/parquet-thrift/DecimalType.js.map +1 -1
  285. package/dist/parquetjs/parquet-thrift/DictionaryPageHeader.d.ts +1 -1
  286. package/dist/parquetjs/parquet-thrift/DictionaryPageHeader.d.ts.map +1 -1
  287. package/dist/parquetjs/parquet-thrift/DictionaryPageHeader.js +1 -1
  288. package/dist/parquetjs/parquet-thrift/DictionaryPageHeader.js.map +1 -1
  289. package/dist/parquetjs/parquet-thrift/EdgeInterpolationAlgorithm.d.ts +8 -0
  290. package/dist/parquetjs/parquet-thrift/EdgeInterpolationAlgorithm.d.ts.map +1 -0
  291. package/dist/parquetjs/parquet-thrift/EdgeInterpolationAlgorithm.js +14 -0
  292. package/dist/parquetjs/parquet-thrift/EdgeInterpolationAlgorithm.js.map +1 -0
  293. package/dist/parquetjs/parquet-thrift/Encoding.d.ts +2 -1
  294. package/dist/parquetjs/parquet-thrift/Encoding.d.ts.map +1 -1
  295. package/dist/parquetjs/parquet-thrift/Encoding.js +1 -0
  296. package/dist/parquetjs/parquet-thrift/Encoding.js.map +1 -1
  297. package/dist/parquetjs/parquet-thrift/EnumType.d.ts +1 -1
  298. package/dist/parquetjs/parquet-thrift/EnumType.d.ts.map +1 -1
  299. package/dist/parquetjs/parquet-thrift/EnumType.js +1 -1
  300. package/dist/parquetjs/parquet-thrift/EnumType.js.map +1 -1
  301. package/dist/parquetjs/parquet-thrift/FileMetaData.d.ts +2 -2
  302. package/dist/parquetjs/parquet-thrift/FileMetaData.d.ts.map +1 -1
  303. package/dist/parquetjs/parquet-thrift/FileMetaData.js +2 -2
  304. package/dist/parquetjs/parquet-thrift/FileMetaData.js.map +1 -1
  305. package/dist/parquetjs/parquet-thrift/Float16Type.d.ts +9 -0
  306. package/dist/parquetjs/parquet-thrift/Float16Type.d.ts.map +1 -0
  307. package/dist/parquetjs/parquet-thrift/Float16Type.js +27 -0
  308. package/dist/parquetjs/parquet-thrift/Float16Type.js.map +1 -0
  309. package/dist/parquetjs/parquet-thrift/GeographyType.d.ts +14 -0
  310. package/dist/parquetjs/parquet-thrift/GeographyType.d.ts.map +1 -0
  311. package/dist/parquetjs/parquet-thrift/GeographyType.js +51 -0
  312. package/dist/parquetjs/parquet-thrift/GeographyType.js.map +1 -0
  313. package/dist/parquetjs/parquet-thrift/GeometryType.d.ts +11 -0
  314. package/dist/parquetjs/parquet-thrift/GeometryType.d.ts.map +1 -0
  315. package/dist/parquetjs/parquet-thrift/GeometryType.js +41 -0
  316. package/dist/parquetjs/parquet-thrift/GeometryType.js.map +1 -0
  317. package/dist/parquetjs/parquet-thrift/IndexPageHeader.d.ts +1 -1
  318. package/dist/parquetjs/parquet-thrift/IndexPageHeader.d.ts.map +1 -1
  319. package/dist/parquetjs/parquet-thrift/IndexPageHeader.js +1 -1
  320. package/dist/parquetjs/parquet-thrift/IndexPageHeader.js.map +1 -1
  321. package/dist/parquetjs/parquet-thrift/IntType.d.ts +1 -1
  322. package/dist/parquetjs/parquet-thrift/IntType.d.ts.map +1 -1
  323. package/dist/parquetjs/parquet-thrift/IntType.js +1 -1
  324. package/dist/parquetjs/parquet-thrift/IntType.js.map +1 -1
  325. package/dist/parquetjs/parquet-thrift/JsonType.d.ts +1 -1
  326. package/dist/parquetjs/parquet-thrift/JsonType.d.ts.map +1 -1
  327. package/dist/parquetjs/parquet-thrift/JsonType.js +1 -1
  328. package/dist/parquetjs/parquet-thrift/JsonType.js.map +1 -1
  329. package/dist/parquetjs/parquet-thrift/KeyValue.d.ts +1 -1
  330. package/dist/parquetjs/parquet-thrift/KeyValue.d.ts.map +1 -1
  331. package/dist/parquetjs/parquet-thrift/KeyValue.js +1 -1
  332. package/dist/parquetjs/parquet-thrift/KeyValue.js.map +1 -1
  333. package/dist/parquetjs/parquet-thrift/ListType.d.ts +1 -1
  334. package/dist/parquetjs/parquet-thrift/ListType.d.ts.map +1 -1
  335. package/dist/parquetjs/parquet-thrift/ListType.js +1 -1
  336. package/dist/parquetjs/parquet-thrift/ListType.js.map +1 -1
  337. package/dist/parquetjs/parquet-thrift/LogicalType.d.ts +17 -1
  338. package/dist/parquetjs/parquet-thrift/LogicalType.d.ts.map +1 -1
  339. package/dist/parquetjs/parquet-thrift/LogicalType.js +97 -1
  340. package/dist/parquetjs/parquet-thrift/LogicalType.js.map +1 -1
  341. package/dist/parquetjs/parquet-thrift/MapType.d.ts +1 -1
  342. package/dist/parquetjs/parquet-thrift/MapType.d.ts.map +1 -1
  343. package/dist/parquetjs/parquet-thrift/MapType.js +1 -1
  344. package/dist/parquetjs/parquet-thrift/MapType.js.map +1 -1
  345. package/dist/parquetjs/parquet-thrift/MicroSeconds.d.ts +1 -1
  346. package/dist/parquetjs/parquet-thrift/MicroSeconds.d.ts.map +1 -1
  347. package/dist/parquetjs/parquet-thrift/MicroSeconds.js +1 -1
  348. package/dist/parquetjs/parquet-thrift/MicroSeconds.js.map +1 -1
  349. package/dist/parquetjs/parquet-thrift/MilliSeconds.d.ts +1 -1
  350. package/dist/parquetjs/parquet-thrift/MilliSeconds.d.ts.map +1 -1
  351. package/dist/parquetjs/parquet-thrift/MilliSeconds.js +1 -1
  352. package/dist/parquetjs/parquet-thrift/MilliSeconds.js.map +1 -1
  353. package/dist/parquetjs/parquet-thrift/NanoSeconds.d.ts +9 -0
  354. package/dist/parquetjs/parquet-thrift/NanoSeconds.d.ts.map +1 -0
  355. package/dist/parquetjs/parquet-thrift/NanoSeconds.js +27 -0
  356. package/dist/parquetjs/parquet-thrift/NanoSeconds.js.map +1 -0
  357. package/dist/parquetjs/parquet-thrift/NullType.d.ts +1 -1
  358. package/dist/parquetjs/parquet-thrift/NullType.d.ts.map +1 -1
  359. package/dist/parquetjs/parquet-thrift/NullType.js +1 -1
  360. package/dist/parquetjs/parquet-thrift/NullType.js.map +1 -1
  361. package/dist/parquetjs/parquet-thrift/OffsetIndex.d.ts +1 -1
  362. package/dist/parquetjs/parquet-thrift/OffsetIndex.d.ts.map +1 -1
  363. package/dist/parquetjs/parquet-thrift/OffsetIndex.js +1 -1
  364. package/dist/parquetjs/parquet-thrift/OffsetIndex.js.map +1 -1
  365. package/dist/parquetjs/parquet-thrift/PageEncodingStats.d.ts +1 -1
  366. package/dist/parquetjs/parquet-thrift/PageEncodingStats.d.ts.map +1 -1
  367. package/dist/parquetjs/parquet-thrift/PageEncodingStats.js +1 -1
  368. package/dist/parquetjs/parquet-thrift/PageEncodingStats.js.map +1 -1
  369. package/dist/parquetjs/parquet-thrift/PageHeader.d.ts +1 -1
  370. package/dist/parquetjs/parquet-thrift/PageHeader.d.ts.map +1 -1
  371. package/dist/parquetjs/parquet-thrift/PageHeader.js +1 -1
  372. package/dist/parquetjs/parquet-thrift/PageHeader.js.map +1 -1
  373. package/dist/parquetjs/parquet-thrift/PageLocation.d.ts +2 -2
  374. package/dist/parquetjs/parquet-thrift/PageLocation.d.ts.map +1 -1
  375. package/dist/parquetjs/parquet-thrift/PageLocation.js +2 -2
  376. package/dist/parquetjs/parquet-thrift/PageLocation.js.map +1 -1
  377. package/dist/parquetjs/parquet-thrift/RowGroup.d.ts +2 -2
  378. package/dist/parquetjs/parquet-thrift/RowGroup.d.ts.map +1 -1
  379. package/dist/parquetjs/parquet-thrift/RowGroup.js +2 -2
  380. package/dist/parquetjs/parquet-thrift/RowGroup.js.map +1 -1
  381. package/dist/parquetjs/parquet-thrift/SchemaElement.d.ts +1 -1
  382. package/dist/parquetjs/parquet-thrift/SchemaElement.d.ts.map +1 -1
  383. package/dist/parquetjs/parquet-thrift/SchemaElement.js +1 -1
  384. package/dist/parquetjs/parquet-thrift/SchemaElement.js.map +1 -1
  385. package/dist/parquetjs/parquet-thrift/SortingColumn.d.ts +1 -1
  386. package/dist/parquetjs/parquet-thrift/SortingColumn.d.ts.map +1 -1
  387. package/dist/parquetjs/parquet-thrift/SortingColumn.js +1 -1
  388. package/dist/parquetjs/parquet-thrift/SortingColumn.js.map +1 -1
  389. package/dist/parquetjs/parquet-thrift/Statistics.d.ts +14 -10
  390. package/dist/parquetjs/parquet-thrift/Statistics.d.ts.map +1 -1
  391. package/dist/parquetjs/parquet-thrift/Statistics.js +38 -2
  392. package/dist/parquetjs/parquet-thrift/Statistics.js.map +1 -1
  393. package/dist/parquetjs/parquet-thrift/StringType.d.ts +1 -1
  394. package/dist/parquetjs/parquet-thrift/StringType.d.ts.map +1 -1
  395. package/dist/parquetjs/parquet-thrift/StringType.js +1 -1
  396. package/dist/parquetjs/parquet-thrift/StringType.js.map +1 -1
  397. package/dist/parquetjs/parquet-thrift/TimeType.d.ts +1 -1
  398. package/dist/parquetjs/parquet-thrift/TimeType.d.ts.map +1 -1
  399. package/dist/parquetjs/parquet-thrift/TimeType.js +1 -1
  400. package/dist/parquetjs/parquet-thrift/TimeType.js.map +1 -1
  401. package/dist/parquetjs/parquet-thrift/TimeUnit.d.ts +5 -1
  402. package/dist/parquetjs/parquet-thrift/TimeUnit.d.ts.map +1 -1
  403. package/dist/parquetjs/parquet-thrift/TimeUnit.js +25 -1
  404. package/dist/parquetjs/parquet-thrift/TimeUnit.js.map +1 -1
  405. package/dist/parquetjs/parquet-thrift/TimestampType.d.ts +1 -1
  406. package/dist/parquetjs/parquet-thrift/TimestampType.d.ts.map +1 -1
  407. package/dist/parquetjs/parquet-thrift/TimestampType.js +1 -1
  408. package/dist/parquetjs/parquet-thrift/TimestampType.js.map +1 -1
  409. package/dist/parquetjs/parquet-thrift/TypeDefinedOrder.d.ts +1 -1
  410. package/dist/parquetjs/parquet-thrift/TypeDefinedOrder.d.ts.map +1 -1
  411. package/dist/parquetjs/parquet-thrift/TypeDefinedOrder.js +1 -1
  412. package/dist/parquetjs/parquet-thrift/TypeDefinedOrder.js.map +1 -1
  413. package/dist/parquetjs/parquet-thrift/UUIDType.d.ts +1 -1
  414. package/dist/parquetjs/parquet-thrift/UUIDType.d.ts.map +1 -1
  415. package/dist/parquetjs/parquet-thrift/UUIDType.js +1 -1
  416. package/dist/parquetjs/parquet-thrift/UUIDType.js.map +1 -1
  417. package/dist/parquetjs/parquet-thrift/VariantType.d.ts +11 -0
  418. package/dist/parquetjs/parquet-thrift/VariantType.d.ts.map +1 -0
  419. package/dist/parquetjs/parquet-thrift/VariantType.js +41 -0
  420. package/dist/parquetjs/parquet-thrift/VariantType.js.map +1 -0
  421. package/dist/parquetjs/parquet-thrift/index.d.ts +6 -2
  422. package/dist/parquetjs/parquet-thrift/index.d.ts.map +1 -1
  423. package/dist/parquetjs/parquet-thrift/index.js +6 -2
  424. package/dist/parquetjs/parquet-thrift/index.js.map +1 -1
  425. package/dist/parquetjs/parser/decoders.d.ts +14 -3
  426. package/dist/parquetjs/parser/decoders.d.ts.map +1 -1
  427. package/dist/parquetjs/parser/decoders.js +381 -117
  428. package/dist/parquetjs/parser/decoders.js.map +1 -1
  429. package/dist/parquetjs/parser/parquet-reader.d.ts +35 -10
  430. package/dist/parquetjs/parser/parquet-reader.d.ts.map +1 -1
  431. package/dist/parquetjs/parser/parquet-reader.js +179 -59
  432. package/dist/parquetjs/parser/parquet-reader.js.map +1 -1
  433. package/dist/parquetjs/schema/declare.d.ts +62 -8
  434. package/dist/parquetjs/schema/declare.d.ts.map +1 -1
  435. package/dist/parquetjs/schema/declare.js.map +1 -1
  436. package/dist/parquetjs/schema/schema.d.ts +3 -0
  437. package/dist/parquetjs/schema/schema.d.ts.map +1 -1
  438. package/dist/parquetjs/schema/schema.js +21 -3
  439. package/dist/parquetjs/schema/schema.js.map +1 -1
  440. package/dist/parquetjs/schema/shred.d.ts +2 -0
  441. package/dist/parquetjs/schema/shred.d.ts.map +1 -1
  442. package/dist/parquetjs/schema/shred.js +71 -23
  443. package/dist/parquetjs/schema/shred.js.map +1 -1
  444. package/dist/parquetjs/schema/types.d.ts.map +1 -1
  445. package/dist/parquetjs/schema/types.js +272 -51
  446. package/dist/parquetjs/schema/types.js.map +1 -1
  447. package/dist/parquetjs/utils/binary-utils.d.ts +41 -0
  448. package/dist/parquetjs/utils/binary-utils.d.ts.map +1 -0
  449. package/dist/parquetjs/utils/binary-utils.js +106 -0
  450. package/dist/parquetjs/utils/binary-utils.js.map +1 -0
  451. package/dist/parquetjs/utils/file-utils.d.ts +1 -1
  452. package/dist/parquetjs/utils/file-utils.d.ts.map +1 -1
  453. package/dist/parquetjs/utils/file-utils.js +3 -3
  454. package/dist/parquetjs/utils/file-utils.js.map +1 -1
  455. package/dist/parquetjs/utils/read-utils.d.ts +14 -6
  456. package/dist/parquetjs/utils/read-utils.d.ts.map +1 -1
  457. package/dist/parquetjs/utils/read-utils.js +46 -39
  458. package/dist/parquetjs/utils/read-utils.js.map +1 -1
  459. package/dist/parquetjs/utils/thrift-runtime.d.ts +106 -0
  460. package/dist/parquetjs/utils/thrift-runtime.d.ts.map +1 -0
  461. package/dist/parquetjs/utils/thrift-runtime.js +50 -0
  462. package/dist/parquetjs/utils/thrift-runtime.js.map +1 -0
  463. package/dist/parquetjs/utils/uint8-array-compact-protocol-writer.d.ts +78 -0
  464. package/dist/parquetjs/utils/uint8-array-compact-protocol-writer.d.ts.map +1 -0
  465. package/dist/parquetjs/utils/uint8-array-compact-protocol-writer.js +213 -0
  466. package/dist/parquetjs/utils/uint8-array-compact-protocol-writer.js.map +1 -0
  467. package/dist/parquetjs/utils/uint8-array-compact-protocol.d.ts +80 -0
  468. package/dist/parquetjs/utils/uint8-array-compact-protocol.d.ts.map +1 -0
  469. package/dist/parquetjs/utils/uint8-array-compact-protocol.js +276 -0
  470. package/dist/parquetjs/utils/uint8-array-compact-protocol.js.map +1 -0
  471. package/dist/parquetjs/utils/uint8-array-transport.d.ts +25 -0
  472. package/dist/parquetjs/utils/uint8-array-transport.d.ts.map +1 -0
  473. package/dist/parquetjs/utils/uint8-array-transport.js +62 -0
  474. package/dist/parquetjs/utils/uint8-array-transport.js.map +1 -0
  475. package/dist/polyfills/process.d.ts +12 -0
  476. package/dist/polyfills/process.d.ts.map +1 -0
  477. package/dist/polyfills/process.js +17 -0
  478. package/dist/polyfills/process.js.map +1 -0
  479. package/dist/unbundled.d.ts +9 -0
  480. package/dist/unbundled.d.ts.map +1 -0
  481. package/dist/unbundled.js +10 -0
  482. package/dist/unbundled.js.map +1 -0
  483. package/dist/wasm.d.ts +3 -0
  484. package/dist/wasm.d.ts.map +1 -0
  485. package/dist/wasm.js +6 -0
  486. package/dist/wasm.js.map +1 -0
  487. package/dist/workers/parquet-source-worker.d.ts +2 -0
  488. package/dist/workers/parquet-source-worker.d.ts.map +1 -0
  489. package/dist/workers/parquet-source-worker.js +17 -0
  490. package/dist/workers/parquet-source-worker.js.map +1 -0
  491. package/dist/workers/parquet-worker-node.d.ts +2 -0
  492. package/dist/workers/parquet-worker-node.d.ts.map +1 -0
  493. package/dist/workers/parquet-worker-node.js +5 -0
  494. package/dist/workers/parquet-worker-node.js.map +1 -0
  495. package/dist/workers/parquet-worker.d.ts +2 -0
  496. package/dist/workers/parquet-worker.d.ts.map +1 -0
  497. package/dist/workers/parquet-worker.js +27 -0
  498. package/dist/workers/parquet-worker.js.map +1 -0
  499. package/package.json +63 -33
  500. package/src/bundled.ts +33 -0
  501. package/src/geoparquet-loader-with-parser.ts +95 -0
  502. package/src/geoparquet-loader.ts +54 -0
  503. package/src/index.ts +49 -23
  504. package/src/lib/arrow/convert-columns-to-row-group.ts +3 -0
  505. package/src/lib/arrow/convert-schema-from-parquet.ts +97 -30
  506. package/src/lib/arrow/convert-schema-to-parquet.ts +16 -7
  507. package/src/lib/arrow/create-nested-arrow-vector.ts +589 -0
  508. package/src/lib/constants.ts +0 -2
  509. package/src/lib/encoders/encode-arrow-to-parquet.ts +10 -16
  510. package/src/lib/encoders/encode-table-to-parquet-js.ts +261 -0
  511. package/src/lib/geo/geospatial-metadata.ts +457 -0
  512. package/src/lib/parquet-page-index.ts +581 -0
  513. package/src/lib/parquet-predicate.ts +374 -0
  514. package/src/lib/parquet-source-worker-client.ts +39 -0
  515. package/src/lib/parquet-source-worker-decoder.ts +156 -0
  516. package/src/lib/parquet-source-worker-file.ts +56 -0
  517. package/src/lib/parquet-source-worker-types.ts +107 -0
  518. package/src/lib/parquet-worker-transport.ts +57 -0
  519. package/src/lib/parsers/convert-parquet-tables.ts +39 -0
  520. package/src/lib/parsers/get-parquet-schema.ts +3 -1
  521. package/src/lib/parsers/parse-geoparquet-to-geojson.ts +27 -14
  522. package/src/lib/parsers/parse-parquet-tables.ts +82 -0
  523. package/src/lib/parsers/parse-parquet-to-arrow-js.ts +829 -0
  524. package/src/lib/parsers/parse-parquet-to-arrow.ts +63 -36
  525. package/src/lib/parsers/parse-parquet-to-columns.ts +6 -7
  526. package/src/lib/parsers/parse-parquet-to-json.ts +101 -33
  527. package/src/lib/sources/parquet-range-file.ts +359 -0
  528. package/src/lib/sources/single-batch-queue.ts +95 -0
  529. package/src/lib/utils/load-wasm-node.ts +25 -0
  530. package/src/lib/utils/load-wasm.ts +36 -13
  531. package/src/lib/utils/make-stream-iterator.ts +126 -14
  532. package/src/lib/utils/normalize-parquet-options.ts +14 -0
  533. package/src/parquet-dataset-source.ts +488 -0
  534. package/src/parquet-format.ts +2 -0
  535. package/src/parquet-js-loader-types.ts +52 -0
  536. package/src/parquet-js-loader.ts +83 -0
  537. package/src/parquet-js-writer.ts +68 -0
  538. package/src/parquet-loader-base.ts +34 -0
  539. package/src/parquet-loader-options.ts +51 -0
  540. package/src/parquet-loader-types.ts +35 -0
  541. package/src/parquet-loader.ts +115 -0
  542. package/src/parquet-source-capabilities.ts +56 -0
  543. package/src/parquet-source-loader-types.ts +87 -0
  544. package/src/parquet-source-loader.ts +1265 -0
  545. package/src/parquet-source-types.ts +458 -0
  546. package/src/parquet-source-worker-url.ts +23 -0
  547. package/src/parquet-worker-url.ts +18 -0
  548. package/src/parquet-writer.ts +42 -0
  549. package/src/parquetjs/LICENSE +23 -1
  550. package/src/parquetjs/codecs/byte-stream-split.ts +221 -0
  551. package/src/parquetjs/codecs/declare.ts +35 -3
  552. package/src/parquetjs/codecs/delta.ts +587 -0
  553. package/src/parquetjs/codecs/dictionary.ts +22 -4
  554. package/src/parquetjs/codecs/index.ts +18 -0
  555. package/src/parquetjs/codecs/plain.ts +149 -87
  556. package/src/parquetjs/codecs/rle.ts +268 -82
  557. package/src/parquetjs/compression.ts +110 -155
  558. package/src/parquetjs/encoder/dictionary-planner.ts +99 -0
  559. package/src/parquetjs/encoder/page-planner.ts +83 -0
  560. package/src/parquetjs/encoder/parquet-encoder.ts +378 -77
  561. package/src/parquetjs/parquet-thrift/BsonType.ts +1 -1
  562. package/src/parquetjs/parquet-thrift/ColumnChunk.ts +2 -2
  563. package/src/parquetjs/parquet-thrift/ColumnIndex.ts +13 -13
  564. package/src/parquetjs/parquet-thrift/ColumnMetaData.ts +2 -2
  565. package/src/parquetjs/parquet-thrift/ColumnOrder.ts +1 -1
  566. package/src/parquetjs/parquet-thrift/DataPageHeader.ts +1 -1
  567. package/src/parquetjs/parquet-thrift/DataPageHeaderV2.ts +1 -1
  568. package/src/parquetjs/parquet-thrift/DateType.ts +1 -1
  569. package/src/parquetjs/parquet-thrift/DecimalType.ts +1 -1
  570. package/src/parquetjs/parquet-thrift/DictionaryPageHeader.ts +1 -1
  571. package/src/parquetjs/parquet-thrift/EdgeInterpolationAlgorithm.ts +13 -0
  572. package/src/parquetjs/parquet-thrift/Encoding.ts +2 -1
  573. package/src/parquetjs/parquet-thrift/EnumType.ts +1 -1
  574. package/src/parquetjs/parquet-thrift/FileMetaData.ts +2 -2
  575. package/src/parquetjs/parquet-thrift/Float16Type.ts +28 -0
  576. package/src/parquetjs/parquet-thrift/GeographyType.ts +54 -0
  577. package/src/parquetjs/parquet-thrift/GeometryType.ts +43 -0
  578. package/src/parquetjs/parquet-thrift/IndexPageHeader.ts +1 -1
  579. package/src/parquetjs/parquet-thrift/IntType.ts +1 -1
  580. package/src/parquetjs/parquet-thrift/JsonType.ts +1 -1
  581. package/src/parquetjs/parquet-thrift/KeyValue.ts +1 -1
  582. package/src/parquetjs/parquet-thrift/ListType.ts +1 -1
  583. package/src/parquetjs/parquet-thrift/LogicalType.ts +97 -1
  584. package/src/parquetjs/parquet-thrift/MapType.ts +1 -1
  585. package/src/parquetjs/parquet-thrift/MicroSeconds.ts +1 -1
  586. package/src/parquetjs/parquet-thrift/MilliSeconds.ts +1 -1
  587. package/src/parquetjs/parquet-thrift/NanoSeconds.ts +28 -0
  588. package/src/parquetjs/parquet-thrift/NullType.ts +1 -1
  589. package/src/parquetjs/parquet-thrift/OffsetIndex.ts +1 -1
  590. package/src/parquetjs/parquet-thrift/PageEncodingStats.ts +1 -1
  591. package/src/parquetjs/parquet-thrift/PageHeader.ts +1 -1
  592. package/src/parquetjs/parquet-thrift/PageLocation.ts +2 -2
  593. package/src/parquetjs/parquet-thrift/RowGroup.ts +2 -2
  594. package/src/parquetjs/parquet-thrift/SchemaElement.ts +1 -1
  595. package/src/parquetjs/parquet-thrift/SortingColumn.ts +1 -1
  596. package/src/parquetjs/parquet-thrift/Statistics.ts +50 -14
  597. package/src/parquetjs/parquet-thrift/StringType.ts +1 -1
  598. package/src/parquetjs/parquet-thrift/TimeType.ts +1 -1
  599. package/src/parquetjs/parquet-thrift/TimeUnit.ts +25 -1
  600. package/src/parquetjs/parquet-thrift/TimestampType.ts +1 -1
  601. package/src/parquetjs/parquet-thrift/TypeDefinedOrder.ts +1 -1
  602. package/src/parquetjs/parquet-thrift/UUIDType.ts +1 -1
  603. package/src/parquetjs/parquet-thrift/VariantType.ts +43 -0
  604. package/src/parquetjs/parquet-thrift/index.ts +6 -4
  605. package/src/parquetjs/parser/decoders.ts +487 -133
  606. package/src/parquetjs/parser/parquet-reader.ts +297 -71
  607. package/src/parquetjs/schema/declare.ts +99 -7
  608. package/src/parquetjs/schema/schema.ts +23 -3
  609. package/src/parquetjs/schema/shred.ts +112 -35
  610. package/src/parquetjs/schema/types.ts +294 -61
  611. package/src/parquetjs/utils/binary-utils.ts +132 -0
  612. package/src/parquetjs/utils/file-utils.ts +4 -4
  613. package/src/parquetjs/utils/read-utils.ts +56 -55
  614. package/src/parquetjs/utils/thrift-runtime.ts +109 -0
  615. package/src/parquetjs/utils/uint8-array-compact-protocol-writer.ts +254 -0
  616. package/src/parquetjs/utils/uint8-array-compact-protocol.ts +322 -0
  617. package/src/parquetjs/utils/uint8-array-transport.ts +79 -0
  618. package/src/polyfills/process.ts +17 -0
  619. package/src/unbundled.ts +33 -0
  620. package/src/wasm.ts +6 -0
  621. package/src/workers/parquet-source-worker.ts +21 -0
  622. package/src/workers/parquet-worker-node.ts +5 -0
  623. package/src/workers/parquet-worker.ts +31 -0
  624. package/dist/parquet-arrow-loader.d.ts +0 -43
  625. package/dist/parquet-arrow-loader.d.ts.map +0 -1
  626. package/dist/parquet-arrow-loader.js +0 -49
  627. package/dist/parquet-arrow-loader.js.map +0 -1
  628. package/dist/parquet-arrow-writer.d.ts +0 -9
  629. package/dist/parquet-arrow-writer.d.ts.map +0 -1
  630. package/dist/parquet-arrow-writer.js +0 -23
  631. package/dist/parquet-arrow-writer.js.map +0 -1
  632. package/dist/parquet-json-loader.d.ts +0 -148
  633. package/dist/parquet-json-loader.d.ts.map +0 -1
  634. package/dist/parquet-json-loader.js +0 -106
  635. package/dist/parquet-json-loader.js.map +0 -1
  636. package/dist/parquet-json-writer.d.ts +0 -19
  637. package/dist/parquet-json-writer.d.ts.map +0 -1
  638. package/dist/parquet-json-writer.js +0 -20
  639. package/dist/parquet-json-writer.js.map +0 -1
  640. package/dist/polyfills/buffer/buffer-polyfill.browser.d.ts +0 -3
  641. package/dist/polyfills/buffer/buffer-polyfill.browser.d.ts.map +0 -1
  642. package/dist/polyfills/buffer/buffer-polyfill.browser.js +0 -12
  643. package/dist/polyfills/buffer/buffer-polyfill.browser.js.map +0 -1
  644. package/dist/polyfills/buffer/buffer-polyfill.node.d.ts +0 -3
  645. package/dist/polyfills/buffer/buffer-polyfill.node.d.ts.map +0 -1
  646. package/dist/polyfills/buffer/buffer-polyfill.node.js +0 -17
  647. package/dist/polyfills/buffer/buffer-polyfill.node.js.map +0 -1
  648. package/dist/polyfills/buffer/buffer.d.ts +0 -222
  649. package/dist/polyfills/buffer/buffer.d.ts.map +0 -1
  650. package/dist/polyfills/buffer/buffer.js +0 -1868
  651. package/dist/polyfills/buffer/buffer.js.map +0 -1
  652. package/dist/polyfills/buffer/index.d.ts +0 -4
  653. package/dist/polyfills/buffer/index.d.ts.map +0 -1
  654. package/dist/polyfills/buffer/index.js +0 -9
  655. package/dist/polyfills/buffer/index.js.map +0 -1
  656. package/dist/polyfills/buffer/install-buffer-polyfill.d.ts +0 -2
  657. package/dist/polyfills/buffer/install-buffer-polyfill.d.ts.map +0 -1
  658. package/dist/polyfills/buffer/install-buffer-polyfill.js +0 -10
  659. package/dist/polyfills/buffer/install-buffer-polyfill.js.map +0 -1
  660. package/dist/workers/parquet-json-worker.d.ts +0 -2
  661. package/dist/workers/parquet-json-worker.d.ts.map +0 -1
  662. package/dist/workers/parquet-json-worker.js +0 -7
  663. package/dist/workers/parquet-json-worker.js.map +0 -1
  664. package/src/parquet-arrow-loader.ts +0 -74
  665. package/src/parquet-arrow-writer.ts +0 -33
  666. package/src/parquet-json-loader.ts +0 -160
  667. package/src/parquet-json-writer.ts +0 -27
  668. package/src/parquetjs/modules.d.ts +0 -25
  669. package/src/polyfills/buffer/buffer-polyfill.browser.ts +0 -14
  670. package/src/polyfills/buffer/buffer-polyfill.node.ts +0 -19
  671. package/src/polyfills/buffer/buffer.ts +0 -2205
  672. package/src/polyfills/buffer/index.ts +0 -11
  673. package/src/polyfills/buffer/install-buffer-polyfill.ts +0 -12
  674. package/src/workers/parquet-json-worker.ts +0 -8
@@ -5,8 +5,16 @@
5
5
  // Forked from https://github.com/kbajalc/parquets under MIT license
6
6
 
7
7
  /* eslint-disable camelcase */
8
- import {BSONLoader, BSONWriter} from '@loaders.gl/bson';
8
+ import {BSONWriter, parseBSONSync} from '@loaders.gl/bson';
9
9
  import {OriginalType, ParquetField, ParquetType, PrimitiveType} from './declare';
10
+ import {
11
+ decodeUtf8,
12
+ encodeUtf8,
13
+ readUInt32LE,
14
+ toArrayBuffer,
15
+ toUint8Array,
16
+ writeUInt32LE
17
+ } from '../utils/binary-utils';
10
18
 
11
19
  export interface ParquetTypeKit {
12
20
  primitiveType: PrimitiveType;
@@ -56,6 +64,12 @@ export const PARQUET_LOGICAL_TYPES: Record<ParquetType, ParquetTypeKit> = {
56
64
  toPrimitive: toPrimitive_UTF8,
57
65
  fromPrimitive: fromPrimitive_UTF8
58
66
  },
67
+ ENUM: {
68
+ primitiveType: 'BYTE_ARRAY',
69
+ originalType: 'ENUM',
70
+ toPrimitive: toPrimitive_UTF8,
71
+ fromPrimitive: fromPrimitive_UTF8
72
+ },
59
73
  TIME_MILLIS: {
60
74
  primitiveType: 'INT32',
61
75
  originalType: 'TIME_MILLIS',
@@ -66,6 +80,11 @@ export const PARQUET_LOGICAL_TYPES: Record<ParquetType, ParquetTypeKit> = {
66
80
  originalType: 'TIME_MICROS',
67
81
  toPrimitive: toPrimitive_TIME_MICROS
68
82
  },
83
+ TIME_NANOS: {
84
+ primitiveType: 'INT64',
85
+ originalType: 'TIME_NANOS',
86
+ toPrimitive: toPrimitive_TIME_NANOS
87
+ },
69
88
  DATE: {
70
89
  primitiveType: 'INT32',
71
90
  originalType: 'DATE',
@@ -84,6 +103,11 @@ export const PARQUET_LOGICAL_TYPES: Record<ParquetType, ParquetTypeKit> = {
84
103
  toPrimitive: toPrimitive_TIMESTAMP_MICROS,
85
104
  fromPrimitive: fromPrimitive_TIMESTAMP_MICROS
86
105
  },
106
+ TIMESTAMP_NANOS: {
107
+ primitiveType: 'INT64',
108
+ originalType: 'TIMESTAMP_NANOS',
109
+ toPrimitive: toPrimitive_TIMESTAMP_NANOS
110
+ },
87
111
  UINT_8: {
88
112
  primitiveType: 'INT32',
89
113
  originalType: 'UINT_8',
@@ -136,6 +160,39 @@ export const PARQUET_LOGICAL_TYPES: Record<ParquetType, ParquetTypeKit> = {
136
160
  toPrimitive: toPrimitive_BSON,
137
161
  fromPrimitive: fromPrimitive_BSON
138
162
  },
163
+ UUID: {
164
+ primitiveType: 'FIXED_LEN_BYTE_ARRAY',
165
+ originalType: 'UUID',
166
+ typeLength: 16,
167
+ toPrimitive: toPrimitive_BYTE_ARRAY
168
+ },
169
+ FLOAT16: {
170
+ primitiveType: 'FIXED_LEN_BYTE_ARRAY',
171
+ originalType: 'FLOAT16',
172
+ typeLength: 2,
173
+ toPrimitive: toPrimitive_FLOAT16,
174
+ fromPrimitive: fromPrimitive_FLOAT16
175
+ },
176
+ UNKNOWN: {
177
+ primitiveType: 'BYTE_ARRAY',
178
+ originalType: 'UNKNOWN',
179
+ toPrimitive: toPrimitive_BYTE_ARRAY
180
+ },
181
+ VARIANT: {
182
+ primitiveType: 'BYTE_ARRAY',
183
+ originalType: 'VARIANT',
184
+ toPrimitive: toPrimitive_BYTE_ARRAY
185
+ },
186
+ GEOMETRY: {
187
+ primitiveType: 'BYTE_ARRAY',
188
+ originalType: 'GEOMETRY',
189
+ toPrimitive: toPrimitive_BYTE_ARRAY
190
+ },
191
+ GEOGRAPHY: {
192
+ primitiveType: 'BYTE_ARRAY',
193
+ originalType: 'GEOGRAPHY',
194
+ toPrimitive: toPrimitive_BYTE_ARRAY
195
+ },
139
196
  INTERVAL: {
140
197
  primitiveType: 'FIXED_LEN_BYTE_ARRAY',
141
198
  originalType: 'INTERVAL',
@@ -207,15 +264,82 @@ function fromPrimitive_BOOLEAN(value: any): boolean {
207
264
 
208
265
  function toPrimitive_FLOAT(value: any): number {
209
266
  const v = parseFloat(value);
210
- if (isNaN(v)) {
267
+ if (Number.isNaN(v)) {
211
268
  throw new Error(`invalid value for FLOAT: ${value}`);
212
269
  }
213
270
  return v;
214
271
  }
215
272
 
273
+ /** Converts a JavaScript number to the two-byte IEEE 754 binary16 representation. */
274
+ function toPrimitive_FLOAT16(value: unknown): Uint8Array {
275
+ const numberValue = Number(value);
276
+ if (Number.isNaN(numberValue) && !Number.isNaN(value)) {
277
+ throw new Error(`invalid value for FLOAT16: ${value}`);
278
+ }
279
+
280
+ const float32 = new Float32Array([numberValue]);
281
+ const bits = new Uint32Array(float32.buffer)[0];
282
+ const sign = (bits >>> 16) & 0x8000;
283
+ const exponent = (bits >>> 23) & 0xff;
284
+ const mantissa = bits & 0x7fffff;
285
+ let half: number;
286
+ if (exponent === 0xff) {
287
+ half = sign | 0x7c00 | (mantissa ? 0x0200 : 0);
288
+ } else {
289
+ const halfExponent = exponent - 127 + 15;
290
+ if (halfExponent >= 0x1f) {
291
+ half = sign | 0x7c00;
292
+ } else if (halfExponent <= 0) {
293
+ if (halfExponent < -10) {
294
+ half = sign;
295
+ } else {
296
+ const normalizedMantissa = mantissa | 0x800000;
297
+ half = sign | roundRightShiftToNearestEven(normalizedMantissa, 14 - halfExponent);
298
+ }
299
+ } else {
300
+ const halfMantissa = roundRightShiftToNearestEven(mantissa, 13);
301
+ if (halfMantissa === 0x400) {
302
+ const roundedExponent = halfExponent + 1;
303
+ half = roundedExponent >= 0x1f ? sign | 0x7c00 : sign | (roundedExponent << 10);
304
+ } else {
305
+ half = sign | (halfExponent << 10) | halfMantissa;
306
+ }
307
+ }
308
+ }
309
+ return new Uint8Array([half & 0xff, half >>> 8]);
310
+ }
311
+
312
+ /** Rounds a non-negative integer right shift using IEEE round-to-nearest, ties-to-even. */
313
+ function roundRightShiftToNearestEven(value: number, shift: number): number {
314
+ const divisor = 2 ** shift;
315
+ const quotient = Math.floor(value / divisor);
316
+ const remainder = value - quotient * divisor;
317
+ const halfway = divisor / 2;
318
+ return quotient + (remainder > halfway || (remainder === halfway && quotient % 2 === 1) ? 1 : 0);
319
+ }
320
+
321
+ /** Converts little-endian IEEE 754 binary16 bytes to a JavaScript number. */
322
+ function fromPrimitive_FLOAT16(value: unknown): number {
323
+ const bytes = toUint8Array(value as ArrayBuffer | ArrayBufferView);
324
+ if (bytes.byteLength !== 2) {
325
+ throw new Error(`invalid FLOAT16 byte length: ${bytes.byteLength}`);
326
+ }
327
+ const half = bytes[0] | (bytes[1] << 8);
328
+ const sign = half & 0x8000 ? -1 : 1;
329
+ const exponent = (half >>> 10) & 0x1f;
330
+ const mantissa = half & 0x03ff;
331
+ if (exponent === 0x1f) {
332
+ return mantissa ? Number.NaN : sign * Number.POSITIVE_INFINITY;
333
+ }
334
+ if (exponent === 0) {
335
+ return sign * 2 ** -14 * (mantissa / 1024);
336
+ }
337
+ return sign * 2 ** (exponent - 15) * (1 + mantissa / 1024);
338
+ }
339
+
216
340
  function toPrimitive_DOUBLE(value: any): number {
217
341
  const v = parseFloat(value);
218
- if (isNaN(v)) {
342
+ if (Number.isNaN(v)) {
219
343
  throw new Error(`invalid value for DOUBLE: ${value}`);
220
344
  }
221
345
  return v;
@@ -223,7 +347,7 @@ function toPrimitive_DOUBLE(value: any): number {
223
347
 
224
348
  function toPrimitive_INT8(value: any) {
225
349
  const v = parseInt(value, 10);
226
- if (v < -0x80 || v > 0x7f || isNaN(v)) {
350
+ if (v < -0x80 || v > 0x7f || Number.isNaN(v)) {
227
351
  throw new Error(`invalid value for INT8: ${value}`);
228
352
  }
229
353
 
@@ -232,7 +356,7 @@ function toPrimitive_INT8(value: any) {
232
356
 
233
357
  function toPrimitive_UINT8(value: any) {
234
358
  const v = parseInt(value, 10);
235
- if (v < 0 || v > 0xff || isNaN(v)) {
359
+ if (v < 0 || v > 0xff || Number.isNaN(v)) {
236
360
  throw new Error(`invalid value for UINT8: ${value}`);
237
361
  }
238
362
 
@@ -241,7 +365,7 @@ function toPrimitive_UINT8(value: any) {
241
365
 
242
366
  function toPrimitive_INT16(value: any) {
243
367
  const v = parseInt(value, 10);
244
- if (v < -0x8000 || v > 0x7fff || isNaN(v)) {
368
+ if (v < -0x8000 || v > 0x7fff || Number.isNaN(v)) {
245
369
  throw new Error(`invalid value for INT16: ${value}`);
246
370
  }
247
371
 
@@ -250,7 +374,7 @@ function toPrimitive_INT16(value: any) {
250
374
 
251
375
  function toPrimitive_UINT16(value: any) {
252
376
  const v = parseInt(value, 10);
253
- if (v < 0 || v > 0xffff || isNaN(v)) {
377
+ if (v < 0 || v > 0xffff || Number.isNaN(v)) {
254
378
  throw new Error(`invalid value for UINT16: ${value}`);
255
379
  }
256
380
 
@@ -259,7 +383,7 @@ function toPrimitive_UINT16(value: any) {
259
383
 
260
384
  function toPrimitive_INT32(value: any) {
261
385
  const v = parseInt(value, 10);
262
- if (v < -0x80000000 || v > 0x7fffffff || isNaN(v)) {
386
+ if (v < -0x80000000 || v > 0x7fffffff || Number.isNaN(v)) {
263
387
  throw new Error(`invalid value for INT32: ${value}`);
264
388
  }
265
389
 
@@ -269,7 +393,7 @@ function toPrimitive_INT32(value: any) {
269
393
  function decimalToPrimitive_INT32(value: number, field: ParquetField): number {
270
394
  const primitiveValue = value * 10 ** (field.scale || 0);
271
395
  const v = Math.round(((primitiveValue * 10 ** -field.presision!) % 1) * 10 ** field.presision!);
272
- if (v < -0x80000000 || v > 0x7fffffff || isNaN(v)) {
396
+ if (v < -0x80000000 || v > 0x7fffffff || Number.isNaN(v)) {
273
397
  throw new Error(`invalid value for INT32: ${value}`);
274
398
  }
275
399
  return v;
@@ -277,99 +401,198 @@ function decimalToPrimitive_INT32(value: number, field: ParquetField): number {
277
401
 
278
402
  function toPrimitive_UINT32(value: any): number {
279
403
  const v = parseInt(value, 10);
280
- if (v < 0 || v > 0xffffffffffff || isNaN(v)) {
404
+ if (v < 0 || v > 0xffffffff || Number.isNaN(v)) {
281
405
  throw new Error(`invalid value for UINT32: ${value}`);
282
406
  }
283
407
  return v;
284
408
  }
285
409
 
286
- function toPrimitive_INT64(value: any): number {
287
- const v = parseInt(value, 10);
288
- if (isNaN(v)) {
410
+ function toPrimitive_INT64(value: unknown): number | bigint {
411
+ if (typeof value === 'number') {
412
+ if (!Number.isSafeInteger(value)) {
413
+ throw new Error(`invalid value for INT64: ${value}`);
414
+ }
415
+ return value;
416
+ }
417
+
418
+ let primitiveValue: bigint;
419
+ try {
420
+ primitiveValue = BigInt(value as bigint | boolean | string);
421
+ } catch {
289
422
  throw new Error(`invalid value for INT64: ${value}`);
290
423
  }
291
- return v;
424
+ if (primitiveValue < -(2n ** 63n) || primitiveValue > 2n ** 63n - 1n) {
425
+ throw new Error(`invalid value for INT64: ${value}`);
426
+ }
427
+ return primitiveValue;
292
428
  }
293
429
 
294
430
  function decimalToPrimitive_INT64(value: number, field: ParquetField) {
295
431
  const primitiveValue = value * 10 ** (field.scale || 0);
296
432
  const v = Math.round(((primitiveValue * 10 ** -field.presision!) % 1) * 10 ** field.presision!);
297
- if (isNaN(v)) {
433
+ if (Number.isNaN(v)) {
298
434
  throw new Error(`invalid value for INT64: ${value}`);
299
435
  }
300
436
 
301
437
  return v;
302
438
  }
303
439
 
304
- function toPrimitive_UINT64(value: any) {
305
- const v = parseInt(value, 10);
306
- if (v < 0 || isNaN(v)) {
440
+ function toPrimitive_UINT64(value: unknown): bigint {
441
+ const primitiveValue = BigInt(value as bigint | boolean | number | string);
442
+ if (primitiveValue < 0n || primitiveValue > 2n ** 64n - 1n) {
307
443
  throw new Error(`invalid value for UINT64: ${value}`);
308
444
  }
309
-
310
- return v;
445
+ return BigInt.asIntN(64, primitiveValue);
311
446
  }
312
447
 
313
448
  function toPrimitive_INT96(value: any) {
314
449
  const v = parseInt(value, 10);
315
- if (isNaN(v)) {
450
+ if (Number.isNaN(v)) {
316
451
  throw new Error(`invalid value for INT96: ${value}`);
317
452
  }
318
453
 
319
454
  return v;
320
455
  }
321
456
 
322
- function toPrimitive_BYTE_ARRAY(value: any): Buffer {
323
- return Buffer.from(value);
457
+ function toPrimitive_BYTE_ARRAY(value: any): Uint8Array {
458
+ return typeof value === 'string' ? encodeUtf8(value) : toUint8Array(value);
324
459
  }
325
460
 
326
- function decimalToPrimitive_BYTE_ARRAY(value: any): Buffer {
327
- // TBD
328
- return Buffer.from(value);
461
+ function decimalToPrimitive_BYTE_ARRAY(value: unknown, field: ParquetField): Uint8Array {
462
+ if (value instanceof ArrayBuffer || ArrayBuffer.isView(value)) {
463
+ const bytes = toUint8Array(value);
464
+ if (field.typeLength !== undefined && bytes.byteLength !== field.typeLength) {
465
+ throw new Error(
466
+ `invalid DECIMAL byte width: expected ${field.typeLength}, received ${bytes.byteLength}`
467
+ );
468
+ }
469
+ return bytes;
470
+ }
471
+
472
+ const unscaledValue = getUnscaledDecimalInteger(value, field.scale || 0);
473
+ const precision = field.precision ?? field.presision;
474
+ if (precision !== undefined && getDecimalDigitCount(unscaledValue) > precision) {
475
+ throw new Error(`DECIMAL value ${value} exceeds precision ${precision}`);
476
+ }
477
+ const byteWidth = field.typeLength ?? getSignedBigIntByteWidth(unscaledValue);
478
+ const bitWidth = BigInt(byteWidth * 8);
479
+ const minimum = -(1n << (bitWidth - 1n));
480
+ const maximum = (1n << (bitWidth - 1n)) - 1n;
481
+ if (unscaledValue < minimum || unscaledValue > maximum) {
482
+ throw new Error(`DECIMAL value ${value} does not fit in ${byteWidth} bytes`);
483
+ }
484
+
485
+ const bytes = new Uint8Array(byteWidth);
486
+ let unsignedValue = BigInt.asUintN(byteWidth * 8, unscaledValue);
487
+ for (let byteIndex = byteWidth - 1; byteIndex >= 0; byteIndex--) {
488
+ bytes[byteIndex] = Number(unsignedValue & 0xffn);
489
+ unsignedValue >>= 8n;
490
+ }
491
+ return bytes;
329
492
  }
330
493
 
331
- function toPrimitive_UTF8(value: any): Buffer {
332
- return Buffer.from(value, 'utf8');
494
+ /** Converts a logical decimal value to its exact scaled integer. */
495
+ function getUnscaledDecimalInteger(value: unknown, scale: number): bigint {
496
+ if (!Number.isInteger(scale) || scale < 0) {
497
+ throw new Error(`invalid DECIMAL scale: ${scale}`);
498
+ }
499
+ if (typeof value === 'bigint') {
500
+ return value * 10n ** BigInt(scale);
501
+ }
502
+ if (typeof value === 'number') {
503
+ const scaledValue = Math.round(value * 10 ** scale);
504
+ if (!Number.isFinite(value) || !Number.isSafeInteger(scaledValue)) {
505
+ throw new Error(`DECIMAL number ${value} cannot be represented exactly; use a string`);
506
+ }
507
+ return BigInt(scaledValue);
508
+ }
509
+ if (typeof value !== 'string') {
510
+ throw new Error(`invalid value for DECIMAL: ${value}`);
511
+ }
512
+
513
+ const match = /^([+-]?)(\d+)(?:\.(\d*))?(?:[eE]([+-]?\d+))?$/.exec(value.trim());
514
+ if (!match) {
515
+ throw new Error(`invalid value for DECIMAL: ${value}`);
516
+ }
517
+ const sign = match[1] === '-' ? -1n : 1n;
518
+ const fraction = match[3] || '';
519
+ let unscaledValue = BigInt(`${match[2]}${fraction}` || '0');
520
+ const decimalShift = scale + Number(match[4] || 0) - fraction.length;
521
+ if (decimalShift >= 0) {
522
+ unscaledValue *= 10n ** BigInt(decimalShift);
523
+ } else {
524
+ const divisor = 10n ** BigInt(-decimalShift);
525
+ if (unscaledValue % divisor !== 0n) {
526
+ throw new Error(`DECIMAL value ${value} has more fractional digits than scale ${scale}`);
527
+ }
528
+ unscaledValue /= divisor;
529
+ }
530
+ return sign * unscaledValue;
531
+ }
532
+
533
+ /** Returns the number of base-10 digits in a signed integer, treating zero as one digit. */
534
+ function getDecimalDigitCount(value: bigint): number {
535
+ return (value < 0n ? -value : value).toString().length;
536
+ }
537
+
538
+ /** Returns the smallest two's-complement byte width that can contain a signed integer. */
539
+ function getSignedBigIntByteWidth(value: bigint): number {
540
+ let byteWidth = 1;
541
+ while (value < -(1n << BigInt(byteWidth * 8 - 1)) || value >= 1n << BigInt(byteWidth * 8 - 1)) {
542
+ byteWidth++;
543
+ }
544
+ return byteWidth;
545
+ }
546
+
547
+ function toPrimitive_UTF8(value: any): Uint8Array {
548
+ return encodeUtf8(String(value));
333
549
  }
334
550
 
335
551
  function fromPrimitive_UTF8(value: any): string {
336
- return value.toString();
552
+ return decodeUtf8(toUint8Array(value));
337
553
  }
338
554
 
339
- function toPrimitive_JSON(value: any): Buffer {
340
- return Buffer.from(JSON.stringify(value));
555
+ function toPrimitive_JSON(value: any): Uint8Array {
556
+ return encodeUtf8(JSON.stringify(value));
341
557
  }
342
558
 
343
559
  function fromPrimitive_JSON(value: any): unknown {
344
- return JSON.parse(value);
560
+ return JSON.parse(decodeUtf8(toUint8Array(value)));
345
561
  }
346
562
 
347
- function toPrimitive_BSON(value: any): Buffer {
563
+ function toPrimitive_BSON(value: any): Uint8Array {
348
564
  // @ts-ignore
349
565
  const arrayBuffer: ArrayBuffer = BSONWriter.encodeSync?.(value);
350
- return Buffer.from(arrayBuffer);
566
+ return toUint8Array(arrayBuffer);
351
567
  }
352
568
 
353
569
  function fromPrimitive_BSON(value: any) {
354
- return BSONLoader.parseSync?.(value);
570
+ return parseBSONSync(toArrayBuffer(value));
355
571
  }
356
572
 
357
573
  function toPrimitive_TIME_MILLIS(value: any) {
358
574
  const v = parseInt(value, 10);
359
- // eslint-disable-next-line @typescript-eslint/no-loss-of-precision
360
- if (v < 0 || v > 0xffffffffffffffff || isNaN(v)) {
575
+ if (v < 0 || v >= kMillisPerDay || Number.isNaN(v)) {
361
576
  throw new Error(`invalid value for TIME_MILLIS: ${value}`);
362
577
  }
363
578
 
364
579
  return v;
365
580
  }
366
581
 
367
- function toPrimitive_TIME_MICROS(value: any): number {
368
- const v = parseInt(value, 10);
369
- if (v < 0 || isNaN(v)) {
582
+ function toPrimitive_TIME_MICROS(value: unknown): bigint {
583
+ const primitiveValue = BigInt(value as bigint | boolean | number | string);
584
+ if (primitiveValue < 0n || primitiveValue >= 86_400_000_000n) {
370
585
  throw new Error(`invalid value for TIME_MICROS: ${value}`);
371
586
  }
372
- return v;
587
+ return primitiveValue;
588
+ }
589
+
590
+ function toPrimitive_TIME_NANOS(value: unknown): bigint {
591
+ const primitiveValue = BigInt(value as bigint | boolean | number | string);
592
+ if (primitiveValue < 0n || primitiveValue >= 86_400_000_000_000n) {
593
+ throw new Error(`invalid value for TIME_NANOS: ${value}`);
594
+ }
595
+ return primitiveValue;
373
596
  }
374
597
 
375
598
  const kMillisPerDay = 86400000;
@@ -383,7 +606,7 @@ function toPrimitive_DATE(value: any): number {
383
606
  /* convert from integer */
384
607
  {
385
608
  const v = parseInt(value, 10);
386
- if (v < 0 || isNaN(v)) {
609
+ if (v < -0x80000000 || v > 0x7fffffff || Number.isNaN(v)) {
387
610
  throw new Error(`invalid value for DATE: ${value}`);
388
611
  }
389
612
 
@@ -404,7 +627,7 @@ function toPrimitive_TIMESTAMP_MILLIS(value: any): number {
404
627
  /* convert from integer */
405
628
  {
406
629
  const v = parseInt(value, 10);
407
- if (v < 0 || isNaN(v)) {
630
+ if (!Number.isSafeInteger(v)) {
408
631
  throw new Error(`invalid value for TIMESTAMP_MILLIS: ${value}`);
409
632
  }
410
633
 
@@ -413,28 +636,36 @@ function toPrimitive_TIMESTAMP_MILLIS(value: any): number {
413
636
  }
414
637
 
415
638
  function fromPrimitive_TIMESTAMP_MILLIS(value: any): Date {
416
- return new Date(value);
639
+ return new Date(Number(value));
417
640
  }
418
641
 
419
- function toPrimitive_TIMESTAMP_MICROS(value: any) {
642
+ function toPrimitive_TIMESTAMP_MICROS(value: unknown): bigint {
420
643
  /* convert from date */
421
644
  if (value instanceof Date) {
422
- return value.getTime() * 1000;
645
+ return BigInt(value.getTime()) * 1000n;
423
646
  }
424
647
 
425
648
  /* convert from integer */
426
649
  {
427
- const v = parseInt(value, 10);
428
- if (v < 0 || isNaN(v)) {
650
+ let primitiveValue: bigint;
651
+ try {
652
+ primitiveValue = BigInt(value as bigint | boolean | number | string);
653
+ } catch {
429
654
  throw new Error(`invalid value for TIMESTAMP_MICROS: ${value}`);
430
655
  }
431
-
432
- return v;
656
+ return primitiveValue;
433
657
  }
434
658
  }
435
659
 
436
660
  function fromPrimitive_TIMESTAMP_MICROS(value: any) {
437
- return new Date(value / 1000);
661
+ return new Date(Number(value) / 1000);
662
+ }
663
+
664
+ function toPrimitive_TIMESTAMP_NANOS(value: unknown): bigint {
665
+ if (value instanceof Date) {
666
+ return BigInt(value.getTime()) * 1_000_000n;
667
+ }
668
+ return BigInt(value as bigint | boolean | number | string);
438
669
  }
439
670
 
440
671
  function toPrimitive_INTERVAL(value: any) {
@@ -444,26 +675,28 @@ function toPrimitive_INTERVAL(value: any) {
444
675
  );
445
676
  }
446
677
 
447
- const buf = Buffer.alloc(12);
678
+ const buf = new Uint8Array(12);
448
679
 
449
- buf.writeUInt32LE(value.months, 0);
450
- buf.writeUInt32LE(value.days, 4);
451
- buf.writeUInt32LE(value.milliseconds, 8);
680
+ writeUInt32LE(buf, value.months, 0);
681
+ writeUInt32LE(buf, value.days, 4);
682
+ writeUInt32LE(buf, value.milliseconds, 8);
452
683
  return buf;
453
684
  }
454
685
 
455
686
  function fromPrimitive_INTERVAL(value: any) {
456
- const buf = Buffer.from(value);
457
- const months = buf.readUInt32LE(0);
458
- const days = buf.readUInt32LE(4);
459
- const millis = buf.readUInt32LE(8);
687
+ const bytes = toUint8Array(value);
688
+ const months = readUInt32LE(bytes, 0);
689
+ const days = readUInt32LE(bytes, 4);
690
+ const millis = readUInt32LE(bytes, 8);
460
691
 
461
692
  return {months, days, milliseconds: millis};
462
693
  }
463
694
 
464
695
  function decimalFromPrimitive_INT(value: any, field: ParquetField) {
465
- const presisionInt = Math.round(((value * 10 ** -field.presision!) % 1) * 10 ** field.presision!);
466
- return presisionInt * 10 ** -(field.scale || 0);
696
+ const numberValue = Number(value);
697
+ const precision = field.precision ?? field.presision!;
698
+ const precisionInt = Math.round(((numberValue * 10 ** -precision) % 1) * 10 ** precision);
699
+ return precisionInt * 10 ** -(field.scale || 0);
467
700
  }
468
701
 
469
702
  function decimalFromPrimitive_BYTE_ARRAY(value: any, field: ParquetField) {
@@ -0,0 +1,132 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+
5
+ const TEXT_DECODER = new TextDecoder();
6
+ const TEXT_ENCODER = new TextEncoder();
7
+
8
+ /** Returns bytes as an exact Uint8Array view. */
9
+ export function toUint8Array(binary: ArrayBuffer | ArrayBufferView): Uint8Array {
10
+ if (binary instanceof Uint8Array) {
11
+ return binary;
12
+ }
13
+ if (ArrayBuffer.isView(binary)) {
14
+ return new Uint8Array(binary.buffer, binary.byteOffset, binary.byteLength);
15
+ }
16
+ return new Uint8Array(binary);
17
+ }
18
+
19
+ /** Returns bytes as a copied ArrayBuffer with no extra prefix/suffix bytes. */
20
+ export function toArrayBuffer(binary: ArrayBuffer | ArrayBufferView): ArrayBuffer {
21
+ const bytes = toUint8Array(binary);
22
+ return bytes.slice().buffer;
23
+ }
24
+
25
+ /** Returns a copied Uint8Array. */
26
+ export function copyUint8Array(binary: Uint8Array): Uint8Array {
27
+ return binary.slice();
28
+ }
29
+
30
+ /** Decode UTF-8 bytes. */
31
+ export function decodeUtf8(binary: Uint8Array): string {
32
+ return TEXT_DECODER.decode(binary);
33
+ }
34
+
35
+ /** Encode text as UTF-8 bytes. */
36
+ export function encodeUtf8(text: string): Uint8Array {
37
+ return TEXT_ENCODER.encode(text);
38
+ }
39
+
40
+ /** Decode an ASCII/UTF-8 range from bytes. */
41
+ export function decodeString(
42
+ binary: Uint8Array,
43
+ start: number = 0,
44
+ end: number = binary.length
45
+ ): string {
46
+ return decodeUtf8(binary.subarray(start, end));
47
+ }
48
+
49
+ function getDataView(binary: Uint8Array): DataView {
50
+ return new DataView(binary.buffer, binary.byteOffset, binary.byteLength);
51
+ }
52
+
53
+ /** Read signed little-endian 32-bit integer. */
54
+ export function readInt32LE(binary: Uint8Array, offset: number): number {
55
+ return getDataView(binary).getInt32(offset, true);
56
+ }
57
+
58
+ /** Read unsigned little-endian 32-bit integer. */
59
+ export function readUInt32LE(binary: Uint8Array, offset: number): number {
60
+ return getDataView(binary).getUint32(offset, true);
61
+ }
62
+
63
+ /** Read signed little-endian 64-bit integer without losing precision. */
64
+ export function readInt64LE(binary: Uint8Array, offset: number): bigint {
65
+ return getDataView(binary).getBigInt64(offset, true);
66
+ }
67
+
68
+ /** Read unsigned little-endian 64-bit integer without losing precision. */
69
+ export function readUInt64LE(binary: Uint8Array, offset: number): bigint {
70
+ return getDataView(binary).getBigUint64(offset, true);
71
+ }
72
+
73
+ /** Read little-endian 32-bit float. */
74
+ export function readFloatLE(binary: Uint8Array, offset: number): number {
75
+ return getDataView(binary).getFloat32(offset, true);
76
+ }
77
+
78
+ /** Read little-endian 64-bit float. */
79
+ export function readDoubleLE(binary: Uint8Array, offset: number): number {
80
+ return getDataView(binary).getFloat64(offset, true);
81
+ }
82
+
83
+ /** Concatenate bytes into one exact Uint8Array. */
84
+ export function concatUint8Arrays(chunks: Uint8Array[]): Uint8Array {
85
+ let byteLength = 0;
86
+ for (const chunk of chunks) {
87
+ byteLength += chunk.length;
88
+ }
89
+
90
+ const result = new Uint8Array(byteLength);
91
+ let offset = 0;
92
+ for (const chunk of chunks) {
93
+ result.set(chunk, offset);
94
+ offset += chunk.length;
95
+ }
96
+ return result;
97
+ }
98
+
99
+ /** Write signed little-endian 16-bit integer. */
100
+ export function writeInt16LE(binary: Uint8Array, value: number, offset: number): void {
101
+ getDataView(binary).setInt16(offset, value, true);
102
+ }
103
+
104
+ /** Write unsigned little-endian 16-bit integer. */
105
+ export function writeUInt16LE(binary: Uint8Array, value: number, offset: number): void {
106
+ getDataView(binary).setUint16(offset, value, true);
107
+ }
108
+
109
+ /** Write signed little-endian 32-bit integer. */
110
+ export function writeInt32LE(binary: Uint8Array, value: number, offset: number): void {
111
+ getDataView(binary).setInt32(offset, value, true);
112
+ }
113
+
114
+ /** Write unsigned little-endian 32-bit integer. */
115
+ export function writeUInt32LE(binary: Uint8Array, value: number, offset: number): void {
116
+ getDataView(binary).setUint32(offset, value, true);
117
+ }
118
+
119
+ /** Write signed little-endian 64-bit integer. */
120
+ export function writeInt64LE(binary: Uint8Array, value: number | bigint, offset: number): void {
121
+ getDataView(binary).setBigInt64(offset, BigInt(value), true);
122
+ }
123
+
124
+ /** Write little-endian 32-bit float. */
125
+ export function writeFloatLE(binary: Uint8Array, value: number, offset: number): void {
126
+ getDataView(binary).setFloat32(offset, value, true);
127
+ }
128
+
129
+ /** Write little-endian 64-bit float. */
130
+ export function writeDoubleLE(binary: Uint8Array, value: number, offset: number): void {
131
+ getDataView(binary).setFloat64(offset, value, true);
132
+ }