@loaders.gl/parquet 4.0.0-alpha.8 → 4.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (463) hide show
  1. package/dist/dist.min.js +21 -32
  2. package/dist/dist.min.js.map +3 -3
  3. package/dist/es5/buffer-polyfill/buffer-polyfill.browser.js +12 -0
  4. package/dist/es5/buffer-polyfill/buffer-polyfill.browser.js.map +1 -0
  5. package/dist/es5/buffer-polyfill/buffer-polyfill.node.js +16 -0
  6. package/dist/es5/buffer-polyfill/buffer-polyfill.node.js.map +1 -0
  7. package/dist/es5/buffer-polyfill/buffer.js +1665 -0
  8. package/dist/es5/buffer-polyfill/buffer.js.map +1 -0
  9. package/dist/es5/buffer-polyfill/index.js +27 -0
  10. package/dist/es5/buffer-polyfill/index.js.map +1 -0
  11. package/dist/es5/buffer-polyfill/install-buffer-polyfill.js +10 -0
  12. package/dist/es5/buffer-polyfill/install-buffer-polyfill.js.map +1 -0
  13. package/dist/es5/index.js +25 -28
  14. package/dist/es5/index.js.map +1 -1
  15. package/dist/es5/lib/geo/decode-geo-column.js +53 -0
  16. package/dist/es5/lib/geo/decode-geo-column.js.map +1 -0
  17. package/dist/es5/lib/geo/decode-geo-metadata.js +52 -16
  18. package/dist/es5/lib/geo/decode-geo-metadata.js.map +1 -1
  19. package/dist/es5/lib/geo/{geoparquet-schema.js → geoparquet-metadata-schema.js} +4 -4
  20. package/dist/es5/lib/geo/geoparquet-metadata-schema.js.map +1 -0
  21. package/dist/es5/lib/geo/geoparquet-metadata-schema.json +60 -0
  22. package/dist/es5/lib/parsers/get-parquet-schema.js +41 -0
  23. package/dist/es5/lib/parsers/get-parquet-schema.js.map +1 -0
  24. package/dist/es5/lib/parsers/parse-parquet-to-columns.js +71 -72
  25. package/dist/es5/lib/parsers/parse-parquet-to-columns.js.map +1 -1
  26. package/dist/es5/lib/parsers/parse-parquet-to-rows.js +95 -62
  27. package/dist/es5/lib/parsers/parse-parquet-to-rows.js.map +1 -1
  28. package/dist/es5/parquet-loader.js +14 -14
  29. package/dist/es5/parquet-loader.js.map +1 -1
  30. package/dist/es5/parquet-wasm-loader.js +8 -11
  31. package/dist/es5/parquet-wasm-loader.js.map +1 -1
  32. package/dist/es5/parquet-wasm-writer.js +6 -7
  33. package/dist/es5/parquet-wasm-writer.js.map +1 -1
  34. package/dist/es5/parquet-writer.js +2 -3
  35. package/dist/es5/parquet-writer.js.map +1 -1
  36. package/dist/es5/parquetjs/codecs/plain.js.map +1 -1
  37. package/dist/es5/parquetjs/codecs/rle.js.map +1 -1
  38. package/dist/es5/parquetjs/encoder/parquet-encoder.js.map +1 -1
  39. package/dist/es5/parquetjs/parquet-thrift/index.js +75 -0
  40. package/dist/es5/parquetjs/parquet-thrift/index.js.map +1 -1
  41. package/dist/es5/parquetjs/parser/decoders.js +53 -36
  42. package/dist/es5/parquetjs/parser/decoders.js.map +1 -1
  43. package/dist/es5/parquetjs/parser/parquet-reader.js +15 -13
  44. package/dist/es5/parquetjs/parser/parquet-reader.js.map +1 -1
  45. package/dist/es5/parquetjs/schema/declare.js.map +1 -1
  46. package/dist/es5/parquetjs/utils/read-utils.js +6 -7
  47. package/dist/es5/parquetjs/utils/read-utils.js.map +1 -1
  48. package/dist/esm/buffer-polyfill/buffer-polyfill.browser.js +6 -0
  49. package/dist/esm/buffer-polyfill/buffer-polyfill.browser.js.map +1 -0
  50. package/dist/esm/buffer-polyfill/buffer-polyfill.node.js +10 -0
  51. package/dist/esm/buffer-polyfill/buffer-polyfill.node.js.map +1 -0
  52. package/dist/esm/buffer-polyfill/buffer.js +1489 -0
  53. package/dist/esm/buffer-polyfill/buffer.js.map +1 -0
  54. package/dist/esm/buffer-polyfill/index.js +4 -0
  55. package/dist/esm/buffer-polyfill/index.js.map +1 -0
  56. package/dist/esm/buffer-polyfill/install-buffer-polyfill.js +3 -0
  57. package/dist/esm/buffer-polyfill/install-buffer-polyfill.js.map +1 -0
  58. package/dist/esm/index.js +4 -10
  59. package/dist/esm/index.js.map +1 -1
  60. package/dist/esm/lib/geo/decode-geo-column.js +47 -0
  61. package/dist/esm/lib/geo/decode-geo-column.js.map +1 -0
  62. package/dist/esm/lib/geo/decode-geo-metadata.js +32 -5
  63. package/dist/esm/lib/geo/decode-geo-metadata.js.map +1 -1
  64. package/dist/esm/lib/geo/{geoparquet-schema.js → geoparquet-metadata-schema.js} +2 -2
  65. package/dist/esm/lib/geo/geoparquet-metadata-schema.js.map +1 -0
  66. package/dist/esm/lib/geo/geoparquet-metadata-schema.json +60 -0
  67. package/dist/esm/lib/parsers/get-parquet-schema.js +11 -0
  68. package/dist/esm/lib/parsers/get-parquet-schema.js.map +1 -0
  69. package/dist/esm/lib/parsers/parse-parquet-to-columns.js +10 -11
  70. package/dist/esm/lib/parsers/parse-parquet-to-columns.js.map +1 -1
  71. package/dist/esm/lib/parsers/parse-parquet-to-rows.js +32 -7
  72. package/dist/esm/lib/parsers/parse-parquet-to-rows.js.map +1 -1
  73. package/dist/esm/parquet-loader.js +12 -12
  74. package/dist/esm/parquet-loader.js.map +1 -1
  75. package/dist/esm/parquet-wasm-loader.js +7 -9
  76. package/dist/esm/parquet-wasm-loader.js.map +1 -1
  77. package/dist/esm/parquet-wasm-writer.js +6 -7
  78. package/dist/esm/parquet-wasm-writer.js.map +1 -1
  79. package/dist/esm/parquet-writer.js +2 -3
  80. package/dist/esm/parquet-writer.js.map +1 -1
  81. package/dist/esm/parquetjs/codecs/plain.js.map +1 -1
  82. package/dist/esm/parquetjs/codecs/rle.js.map +1 -1
  83. package/dist/esm/parquetjs/encoder/parquet-encoder.js.map +1 -1
  84. package/dist/esm/parquetjs/parquet-thrift/index.js +2 -0
  85. package/dist/esm/parquetjs/parquet-thrift/index.js.map +1 -1
  86. package/dist/esm/parquetjs/parser/decoders.js +48 -32
  87. package/dist/esm/parquetjs/parser/decoders.js.map +1 -1
  88. package/dist/esm/parquetjs/parser/parquet-reader.js +14 -12
  89. package/dist/esm/parquetjs/parser/parquet-reader.js.map +1 -1
  90. package/dist/esm/parquetjs/schema/declare.js.map +1 -1
  91. package/dist/esm/parquetjs/utils/read-utils.js +1 -1
  92. package/dist/esm/parquetjs/utils/read-utils.js.map +1 -1
  93. package/dist/parquet-worker.js +23 -34
  94. package/dist/parquet-worker.js.map +3 -3
  95. package/dist/src/buffer-polyfill/buffer-polyfill.browser.d.ts +4 -0
  96. package/dist/src/buffer-polyfill/buffer-polyfill.browser.d.ts.map +1 -0
  97. package/dist/src/buffer-polyfill/buffer-polyfill.node.d.ts +4 -0
  98. package/dist/src/buffer-polyfill/buffer-polyfill.node.d.ts.map +1 -0
  99. package/dist/src/buffer-polyfill/buffer.d.ts +222 -0
  100. package/dist/src/buffer-polyfill/buffer.d.ts.map +1 -0
  101. package/dist/src/buffer-polyfill/index.d.ts +4 -0
  102. package/dist/src/buffer-polyfill/index.d.ts.map +1 -0
  103. package/dist/src/buffer-polyfill/install-buffer-polyfill.d.ts +30 -0
  104. package/dist/src/buffer-polyfill/install-buffer-polyfill.d.ts.map +1 -0
  105. package/dist/src/bundle.d.ts.map +1 -0
  106. package/dist/src/constants.d.ts.map +1 -0
  107. package/dist/{index.d.ts → src/index.d.ts} +6 -10
  108. package/dist/src/index.d.ts.map +1 -0
  109. package/dist/src/lib/arrow/convert-columns-to-row-group.d.ts.map +1 -0
  110. package/dist/src/lib/arrow/convert-row-group-to-columns.d.ts.map +1 -0
  111. package/dist/src/lib/arrow/convert-schema-from-parquet.d.ts.map +1 -0
  112. package/dist/src/lib/arrow/convert-schema-to-parquet.d.ts.map +1 -0
  113. package/dist/src/lib/geo/decode-geo-column.d.ts +4 -0
  114. package/dist/src/lib/geo/decode-geo-column.d.ts.map +1 -0
  115. package/dist/src/lib/geo/decode-geo-metadata.d.ts +44 -0
  116. package/dist/src/lib/geo/decode-geo-metadata.d.ts.map +1 -0
  117. package/dist/{lib/geo/geoparquet-schema.d.ts → src/lib/geo/geoparquet-metadata-schema.d.ts} +2 -3
  118. package/dist/src/lib/geo/geoparquet-metadata-schema.d.ts.map +1 -0
  119. package/dist/src/lib/parsers/get-parquet-schema.d.ts +4 -0
  120. package/dist/src/lib/parsers/get-parquet-schema.d.ts.map +1 -0
  121. package/dist/src/lib/parsers/parse-parquet-to-columns.d.ts +6 -0
  122. package/dist/src/lib/parsers/parse-parquet-to-columns.d.ts.map +1 -0
  123. package/dist/src/lib/parsers/parse-parquet-to-rows.d.ts +6 -0
  124. package/dist/src/lib/parsers/parse-parquet-to-rows.d.ts.map +1 -0
  125. package/dist/src/lib/wasm/encode-parquet-wasm.d.ts.map +1 -0
  126. package/dist/src/lib/wasm/load-wasm/index.d.ts.map +1 -0
  127. package/dist/src/lib/wasm/load-wasm/load-wasm-browser.d.ts.map +1 -0
  128. package/dist/src/lib/wasm/load-wasm/load-wasm-node.d.ts.map +1 -0
  129. package/dist/src/lib/wasm/parse-parquet-wasm.d.ts.map +1 -0
  130. package/dist/src/parquet-loader.d.ts +22 -0
  131. package/dist/src/parquet-loader.d.ts.map +1 -0
  132. package/dist/src/parquet-wasm-loader.d.ts +12 -0
  133. package/dist/src/parquet-wasm-loader.d.ts.map +1 -0
  134. package/dist/src/parquet-wasm-writer.d.ts +6 -0
  135. package/dist/src/parquet-wasm-writer.d.ts.map +1 -0
  136. package/dist/src/parquet-writer.d.ts.map +1 -0
  137. package/dist/src/parquetjs/codecs/declare.d.ts.map +1 -0
  138. package/dist/src/parquetjs/codecs/dictionary.d.ts.map +1 -0
  139. package/dist/src/parquetjs/codecs/index.d.ts.map +1 -0
  140. package/dist/src/parquetjs/codecs/plain.d.ts.map +1 -0
  141. package/dist/src/parquetjs/codecs/rle.d.ts.map +1 -0
  142. package/dist/src/parquetjs/compression.d.ts.map +1 -0
  143. package/dist/src/parquetjs/encoder/parquet-encoder.d.ts.map +1 -0
  144. package/dist/src/parquetjs/parquet-thrift/BoundaryOrder.d.ts.map +1 -0
  145. package/dist/src/parquetjs/parquet-thrift/BsonType.d.ts.map +1 -0
  146. package/dist/src/parquetjs/parquet-thrift/ColumnChunk.d.ts.map +1 -0
  147. package/dist/src/parquetjs/parquet-thrift/ColumnIndex.d.ts.map +1 -0
  148. package/dist/src/parquetjs/parquet-thrift/ColumnMetaData.d.ts.map +1 -0
  149. package/dist/src/parquetjs/parquet-thrift/ColumnOrder.d.ts.map +1 -0
  150. package/dist/src/parquetjs/parquet-thrift/CompressionCodec.d.ts.map +1 -0
  151. package/dist/src/parquetjs/parquet-thrift/ConvertedType.d.ts.map +1 -0
  152. package/dist/src/parquetjs/parquet-thrift/DataPageHeader.d.ts.map +1 -0
  153. package/dist/src/parquetjs/parquet-thrift/DataPageHeaderV2.d.ts.map +1 -0
  154. package/dist/src/parquetjs/parquet-thrift/DateType.d.ts.map +1 -0
  155. package/dist/src/parquetjs/parquet-thrift/DecimalType.d.ts.map +1 -0
  156. package/dist/src/parquetjs/parquet-thrift/DictionaryPageHeader.d.ts.map +1 -0
  157. package/dist/src/parquetjs/parquet-thrift/Encoding.d.ts.map +1 -0
  158. package/dist/src/parquetjs/parquet-thrift/EnumType.d.ts.map +1 -0
  159. package/dist/src/parquetjs/parquet-thrift/FieldRepetitionType.d.ts.map +1 -0
  160. package/dist/src/parquetjs/parquet-thrift/FileMetaData.d.ts.map +1 -0
  161. package/dist/src/parquetjs/parquet-thrift/IndexPageHeader.d.ts.map +1 -0
  162. package/dist/src/parquetjs/parquet-thrift/IntType.d.ts.map +1 -0
  163. package/dist/src/parquetjs/parquet-thrift/JsonType.d.ts.map +1 -0
  164. package/dist/src/parquetjs/parquet-thrift/KeyValue.d.ts.map +1 -0
  165. package/dist/src/parquetjs/parquet-thrift/ListType.d.ts.map +1 -0
  166. package/dist/src/parquetjs/parquet-thrift/LogicalType.d.ts.map +1 -0
  167. package/dist/src/parquetjs/parquet-thrift/MapType.d.ts.map +1 -0
  168. package/dist/src/parquetjs/parquet-thrift/MicroSeconds.d.ts.map +1 -0
  169. package/dist/src/parquetjs/parquet-thrift/MilliSeconds.d.ts.map +1 -0
  170. package/dist/src/parquetjs/parquet-thrift/NullType.d.ts.map +1 -0
  171. package/dist/src/parquetjs/parquet-thrift/OffsetIndex.d.ts.map +1 -0
  172. package/dist/src/parquetjs/parquet-thrift/PageEncodingStats.d.ts.map +1 -0
  173. package/dist/src/parquetjs/parquet-thrift/PageHeader.d.ts.map +1 -0
  174. package/dist/src/parquetjs/parquet-thrift/PageLocation.d.ts.map +1 -0
  175. package/dist/src/parquetjs/parquet-thrift/PageType.d.ts.map +1 -0
  176. package/dist/src/parquetjs/parquet-thrift/RowGroup.d.ts.map +1 -0
  177. package/dist/src/parquetjs/parquet-thrift/SchemaElement.d.ts.map +1 -0
  178. package/dist/src/parquetjs/parquet-thrift/SortingColumn.d.ts.map +1 -0
  179. package/dist/src/parquetjs/parquet-thrift/Statistics.d.ts.map +1 -0
  180. package/dist/src/parquetjs/parquet-thrift/StringType.d.ts.map +1 -0
  181. package/dist/src/parquetjs/parquet-thrift/TimeType.d.ts.map +1 -0
  182. package/dist/src/parquetjs/parquet-thrift/TimeUnit.d.ts.map +1 -0
  183. package/dist/src/parquetjs/parquet-thrift/TimestampType.d.ts.map +1 -0
  184. package/dist/src/parquetjs/parquet-thrift/Type.d.ts.map +1 -0
  185. package/dist/src/parquetjs/parquet-thrift/TypeDefinedOrder.d.ts.map +1 -0
  186. package/dist/src/parquetjs/parquet-thrift/UUIDType.d.ts.map +1 -0
  187. package/dist/{parquetjs → src/parquetjs}/parquet-thrift/index.d.ts +2 -0
  188. package/dist/src/parquetjs/parquet-thrift/index.d.ts.map +1 -0
  189. package/dist/{parquetjs → src/parquetjs}/parser/decoders.d.ts +4 -4
  190. package/dist/src/parquetjs/parser/decoders.d.ts.map +1 -0
  191. package/dist/{parquetjs → src/parquetjs}/parser/parquet-reader.d.ts +5 -3
  192. package/dist/src/parquetjs/parser/parquet-reader.d.ts.map +1 -0
  193. package/dist/{parquetjs → src/parquetjs}/schema/declare.d.ts +3 -1
  194. package/dist/src/parquetjs/schema/declare.d.ts.map +1 -0
  195. package/dist/src/parquetjs/schema/schema.d.ts.map +1 -0
  196. package/dist/src/parquetjs/schema/shred.d.ts.map +1 -0
  197. package/dist/src/parquetjs/schema/types.d.ts.map +1 -0
  198. package/dist/src/parquetjs/utils/file-utils.d.ts.map +1 -0
  199. package/dist/src/parquetjs/utils/read-utils.d.ts.map +1 -0
  200. package/dist/src/workers/parquet-worker.d.ts.map +1 -0
  201. package/dist/tsconfig.tsbuildinfo +1 -0
  202. package/package.json +21 -9
  203. package/src/buffer-polyfill/buffer-polyfill.browser.ts +11 -0
  204. package/src/buffer-polyfill/buffer-polyfill.node.ts +15 -0
  205. package/src/buffer-polyfill/buffer.ts +2207 -0
  206. package/src/buffer-polyfill/index.ts +8 -0
  207. package/src/buffer-polyfill/install-buffer-polyfill.ts +3 -0
  208. package/src/index.ts +31 -17
  209. package/src/lib/geo/decode-geo-column.ts +54 -0
  210. package/src/lib/geo/decode-geo-metadata.ts +81 -15
  211. package/src/lib/geo/geoparquet-metadata-schema.json +60 -0
  212. package/src/lib/geo/{geoparquet-schema.ts → geoparquet-metadata-schema.ts} +1 -1
  213. package/src/lib/parsers/get-parquet-schema.ts +14 -0
  214. package/src/lib/parsers/parse-parquet-to-columns.ts +15 -13
  215. package/src/lib/parsers/parse-parquet-to-rows.ts +39 -11
  216. package/src/parquet-loader.ts +29 -16
  217. package/src/parquet-wasm-loader.ts +13 -13
  218. package/src/parquet-wasm-writer.ts +10 -8
  219. package/src/parquet-writer.ts +1 -3
  220. package/src/parquetjs/codecs/plain.ts +1 -0
  221. package/src/parquetjs/codecs/rle.ts +2 -0
  222. package/src/parquetjs/encoder/parquet-encoder.ts +1 -0
  223. package/src/parquetjs/parquet-thrift/index.ts +4 -0
  224. package/src/parquetjs/parser/decoders.ts +63 -41
  225. package/src/parquetjs/parser/parquet-reader.ts +19 -14
  226. package/src/parquetjs/schema/declare.ts +3 -1
  227. package/src/parquetjs/utils/read-utils.ts +2 -2
  228. package/dist/bundle.d.ts.map +0 -1
  229. package/dist/bundle.js +0 -5
  230. package/dist/constants.d.ts.map +0 -1
  231. package/dist/constants.js +0 -18
  232. package/dist/es5/lib/geo/geoparquet-schema.js.map +0 -1
  233. package/dist/esm/lib/geo/geoparquet-schema.js.map +0 -1
  234. package/dist/index.d.ts.map +0 -1
  235. package/dist/index.js +0 -58
  236. package/dist/lib/arrow/convert-columns-to-row-group.d.ts.map +0 -1
  237. package/dist/lib/arrow/convert-columns-to-row-group.js +0 -1
  238. package/dist/lib/arrow/convert-row-group-to-columns.d.ts.map +0 -1
  239. package/dist/lib/arrow/convert-row-group-to-columns.js +0 -12
  240. package/dist/lib/arrow/convert-schema-from-parquet.d.ts.map +0 -1
  241. package/dist/lib/arrow/convert-schema-from-parquet.js +0 -86
  242. package/dist/lib/arrow/convert-schema-to-parquet.d.ts.map +0 -1
  243. package/dist/lib/arrow/convert-schema-to-parquet.js +0 -71
  244. package/dist/lib/geo/decode-geo-metadata.d.ts +0 -31
  245. package/dist/lib/geo/decode-geo-metadata.d.ts.map +0 -1
  246. package/dist/lib/geo/decode-geo-metadata.js +0 -77
  247. package/dist/lib/geo/geoparquet-schema.d.ts.map +0 -1
  248. package/dist/lib/geo/geoparquet-schema.js +0 -69
  249. package/dist/lib/parsers/parse-parquet-to-columns.d.ts +0 -5
  250. package/dist/lib/parsers/parse-parquet-to-columns.d.ts.map +0 -1
  251. package/dist/lib/parsers/parse-parquet-to-columns.js +0 -46
  252. package/dist/lib/parsers/parse-parquet-to-rows.d.ts +0 -5
  253. package/dist/lib/parsers/parse-parquet-to-rows.d.ts.map +0 -1
  254. package/dist/lib/parsers/parse-parquet-to-rows.js +0 -37
  255. package/dist/lib/wasm/encode-parquet-wasm.d.ts.map +0 -1
  256. package/dist/lib/wasm/encode-parquet-wasm.js +0 -30
  257. package/dist/lib/wasm/load-wasm/index.d.ts.map +0 -1
  258. package/dist/lib/wasm/load-wasm/index.js +0 -5
  259. package/dist/lib/wasm/load-wasm/load-wasm-browser.d.ts.map +0 -1
  260. package/dist/lib/wasm/load-wasm/load-wasm-browser.js +0 -38
  261. package/dist/lib/wasm/load-wasm/load-wasm-node.d.ts.map +0 -1
  262. package/dist/lib/wasm/load-wasm/load-wasm-node.js +0 -31
  263. package/dist/lib/wasm/parse-parquet-wasm.d.ts.map +0 -1
  264. package/dist/lib/wasm/parse-parquet-wasm.js +0 -27
  265. package/dist/parquet-loader.d.ts +0 -14
  266. package/dist/parquet-loader.d.ts.map +0 -1
  267. package/dist/parquet-loader.js +0 -41
  268. package/dist/parquet-wasm-loader.d.ts +0 -23
  269. package/dist/parquet-wasm-loader.d.ts.map +0 -1
  270. package/dist/parquet-wasm-loader.js +0 -27
  271. package/dist/parquet-wasm-writer.d.ts +0 -3
  272. package/dist/parquet-wasm-writer.d.ts.map +0 -1
  273. package/dist/parquet-wasm-writer.js +0 -23
  274. package/dist/parquet-writer.d.ts.map +0 -1
  275. package/dist/parquet-writer.js +0 -22
  276. package/dist/parquetjs/codecs/declare.d.ts.map +0 -1
  277. package/dist/parquetjs/codecs/declare.js +0 -2
  278. package/dist/parquetjs/codecs/dictionary.d.ts.map +0 -1
  279. package/dist/parquetjs/codecs/dictionary.js +0 -14
  280. package/dist/parquetjs/codecs/index.d.ts.map +0 -1
  281. package/dist/parquetjs/codecs/index.js +0 -55
  282. package/dist/parquetjs/codecs/plain.d.ts.map +0 -1
  283. package/dist/parquetjs/codecs/plain.js +0 -211
  284. package/dist/parquetjs/codecs/rle.d.ts.map +0 -1
  285. package/dist/parquetjs/codecs/rle.js +0 -145
  286. package/dist/parquetjs/compression.d.ts.map +0 -1
  287. package/dist/parquetjs/compression.js +0 -183
  288. package/dist/parquetjs/encoder/parquet-encoder.d.ts.map +0 -1
  289. package/dist/parquetjs/encoder/parquet-encoder.js +0 -484
  290. package/dist/parquetjs/parquet-thrift/BoundaryOrder.d.ts.map +0 -1
  291. package/dist/parquetjs/parquet-thrift/BoundaryOrder.js +0 -15
  292. package/dist/parquetjs/parquet-thrift/BsonType.d.ts.map +0 -1
  293. package/dist/parquetjs/parquet-thrift/BsonType.js +0 -62
  294. package/dist/parquetjs/parquet-thrift/ColumnChunk.d.ts.map +0 -1
  295. package/dist/parquetjs/parquet-thrift/ColumnChunk.js +0 -211
  296. package/dist/parquetjs/parquet-thrift/ColumnIndex.d.ts.map +0 -1
  297. package/dist/parquetjs/parquet-thrift/ColumnIndex.js +0 -217
  298. package/dist/parquetjs/parquet-thrift/ColumnMetaData.d.ts.map +0 -1
  299. package/dist/parquetjs/parquet-thrift/ColumnMetaData.js +0 -402
  300. package/dist/parquetjs/parquet-thrift/ColumnOrder.d.ts.map +0 -1
  301. package/dist/parquetjs/parquet-thrift/ColumnOrder.js +0 -108
  302. package/dist/parquetjs/parquet-thrift/CompressionCodec.d.ts.map +0 -1
  303. package/dist/parquetjs/parquet-thrift/CompressionCodec.js +0 -20
  304. package/dist/parquetjs/parquet-thrift/ConvertedType.d.ts.map +0 -1
  305. package/dist/parquetjs/parquet-thrift/ConvertedType.js +0 -34
  306. package/dist/parquetjs/parquet-thrift/DataPageHeader.d.ts.map +0 -1
  307. package/dist/parquetjs/parquet-thrift/DataPageHeader.js +0 -170
  308. package/dist/parquetjs/parquet-thrift/DataPageHeaderV2.d.ts.map +0 -1
  309. package/dist/parquetjs/parquet-thrift/DataPageHeaderV2.js +0 -230
  310. package/dist/parquetjs/parquet-thrift/DateType.d.ts.map +0 -1
  311. package/dist/parquetjs/parquet-thrift/DateType.js +0 -62
  312. package/dist/parquetjs/parquet-thrift/DecimalType.d.ts.map +0 -1
  313. package/dist/parquetjs/parquet-thrift/DecimalType.js +0 -109
  314. package/dist/parquetjs/parquet-thrift/DictionaryPageHeader.d.ts.map +0 -1
  315. package/dist/parquetjs/parquet-thrift/DictionaryPageHeader.js +0 -126
  316. package/dist/parquetjs/parquet-thrift/Encoding.d.ts.map +0 -1
  317. package/dist/parquetjs/parquet-thrift/Encoding.js +0 -20
  318. package/dist/parquetjs/parquet-thrift/EnumType.d.ts.map +0 -1
  319. package/dist/parquetjs/parquet-thrift/EnumType.js +0 -62
  320. package/dist/parquetjs/parquet-thrift/FieldRepetitionType.d.ts.map +0 -1
  321. package/dist/parquetjs/parquet-thrift/FieldRepetitionType.js +0 -15
  322. package/dist/parquetjs/parquet-thrift/FileMetaData.d.ts.map +0 -1
  323. package/dist/parquetjs/parquet-thrift/FileMetaData.js +0 -260
  324. package/dist/parquetjs/parquet-thrift/IndexPageHeader.d.ts.map +0 -1
  325. package/dist/parquetjs/parquet-thrift/IndexPageHeader.js +0 -62
  326. package/dist/parquetjs/parquet-thrift/IntType.d.ts.map +0 -1
  327. package/dist/parquetjs/parquet-thrift/IntType.js +0 -109
  328. package/dist/parquetjs/parquet-thrift/JsonType.d.ts.map +0 -1
  329. package/dist/parquetjs/parquet-thrift/JsonType.js +0 -62
  330. package/dist/parquetjs/parquet-thrift/KeyValue.d.ts.map +0 -1
  331. package/dist/parquetjs/parquet-thrift/KeyValue.js +0 -106
  332. package/dist/parquetjs/parquet-thrift/ListType.d.ts.map +0 -1
  333. package/dist/parquetjs/parquet-thrift/ListType.js +0 -62
  334. package/dist/parquetjs/parquet-thrift/LogicalType.d.ts.map +0 -1
  335. package/dist/parquetjs/parquet-thrift/LogicalType.js +0 -384
  336. package/dist/parquetjs/parquet-thrift/MapType.d.ts.map +0 -1
  337. package/dist/parquetjs/parquet-thrift/MapType.js +0 -62
  338. package/dist/parquetjs/parquet-thrift/MicroSeconds.d.ts.map +0 -1
  339. package/dist/parquetjs/parquet-thrift/MicroSeconds.js +0 -62
  340. package/dist/parquetjs/parquet-thrift/MilliSeconds.d.ts.map +0 -1
  341. package/dist/parquetjs/parquet-thrift/MilliSeconds.js +0 -62
  342. package/dist/parquetjs/parquet-thrift/NullType.d.ts.map +0 -1
  343. package/dist/parquetjs/parquet-thrift/NullType.js +0 -62
  344. package/dist/parquetjs/parquet-thrift/OffsetIndex.d.ts.map +0 -1
  345. package/dist/parquetjs/parquet-thrift/OffsetIndex.js +0 -101
  346. package/dist/parquetjs/parquet-thrift/PageEncodingStats.d.ts.map +0 -1
  347. package/dist/parquetjs/parquet-thrift/PageEncodingStats.js +0 -131
  348. package/dist/parquetjs/parquet-thrift/PageHeader.d.ts.map +0 -1
  349. package/dist/parquetjs/parquet-thrift/PageHeader.js +0 -220
  350. package/dist/parquetjs/parquet-thrift/PageLocation.d.ts.map +0 -1
  351. package/dist/parquetjs/parquet-thrift/PageLocation.js +0 -145
  352. package/dist/parquetjs/parquet-thrift/PageType.d.ts.map +0 -1
  353. package/dist/parquetjs/parquet-thrift/PageType.js +0 -16
  354. package/dist/parquetjs/parquet-thrift/RowGroup.d.ts.map +0 -1
  355. package/dist/parquetjs/parquet-thrift/RowGroup.js +0 -186
  356. package/dist/parquetjs/parquet-thrift/SchemaElement.d.ts.map +0 -1
  357. package/dist/parquetjs/parquet-thrift/SchemaElement.js +0 -243
  358. package/dist/parquetjs/parquet-thrift/SortingColumn.d.ts.map +0 -1
  359. package/dist/parquetjs/parquet-thrift/SortingColumn.js +0 -131
  360. package/dist/parquetjs/parquet-thrift/Statistics.d.ts.map +0 -1
  361. package/dist/parquetjs/parquet-thrift/Statistics.js +0 -180
  362. package/dist/parquetjs/parquet-thrift/StringType.d.ts.map +0 -1
  363. package/dist/parquetjs/parquet-thrift/StringType.js +0 -62
  364. package/dist/parquetjs/parquet-thrift/TimeType.d.ts.map +0 -1
  365. package/dist/parquetjs/parquet-thrift/TimeType.js +0 -110
  366. package/dist/parquetjs/parquet-thrift/TimeUnit.d.ts.map +0 -1
  367. package/dist/parquetjs/parquet-thrift/TimeUnit.js +0 -131
  368. package/dist/parquetjs/parquet-thrift/TimestampType.d.ts.map +0 -1
  369. package/dist/parquetjs/parquet-thrift/TimestampType.js +0 -110
  370. package/dist/parquetjs/parquet-thrift/Type.d.ts.map +0 -1
  371. package/dist/parquetjs/parquet-thrift/Type.js +0 -20
  372. package/dist/parquetjs/parquet-thrift/TypeDefinedOrder.d.ts.map +0 -1
  373. package/dist/parquetjs/parquet-thrift/TypeDefinedOrder.js +0 -62
  374. package/dist/parquetjs/parquet-thrift/UUIDType.d.ts.map +0 -1
  375. package/dist/parquetjs/parquet-thrift/UUIDType.js +0 -62
  376. package/dist/parquetjs/parquet-thrift/index.d.ts.map +0 -1
  377. package/dist/parquetjs/parquet-thrift/index.js +0 -65
  378. package/dist/parquetjs/parser/decoders.d.ts.map +0 -1
  379. package/dist/parquetjs/parser/decoders.js +0 -318
  380. package/dist/parquetjs/parser/parquet-reader.d.ts.map +0 -1
  381. package/dist/parquetjs/parser/parquet-reader.js +0 -200
  382. package/dist/parquetjs/schema/declare.d.ts.map +0 -1
  383. package/dist/parquetjs/schema/declare.js +0 -12
  384. package/dist/parquetjs/schema/schema.d.ts.map +0 -1
  385. package/dist/parquetjs/schema/schema.js +0 -162
  386. package/dist/parquetjs/schema/shred.d.ts.map +0 -1
  387. package/dist/parquetjs/schema/shred.js +0 -355
  388. package/dist/parquetjs/schema/types.d.ts.map +0 -1
  389. package/dist/parquetjs/schema/types.js +0 -416
  390. package/dist/parquetjs/utils/file-utils.d.ts.map +0 -1
  391. package/dist/parquetjs/utils/file-utils.js +0 -43
  392. package/dist/parquetjs/utils/read-utils.d.ts.map +0 -1
  393. package/dist/parquetjs/utils/read-utils.js +0 -109
  394. package/dist/workers/parquet-worker.d.ts.map +0 -1
  395. package/dist/workers/parquet-worker.js +0 -5
  396. /package/dist/{bundle.d.ts → src/bundle.d.ts} +0 -0
  397. /package/dist/{constants.d.ts → src/constants.d.ts} +0 -0
  398. /package/dist/{lib → src/lib}/arrow/convert-columns-to-row-group.d.ts +0 -0
  399. /package/dist/{lib → src/lib}/arrow/convert-row-group-to-columns.d.ts +0 -0
  400. /package/dist/{lib → src/lib}/arrow/convert-schema-from-parquet.d.ts +0 -0
  401. /package/dist/{lib → src/lib}/arrow/convert-schema-to-parquet.d.ts +0 -0
  402. /package/dist/{lib → src/lib}/wasm/encode-parquet-wasm.d.ts +0 -0
  403. /package/dist/{lib → src/lib}/wasm/load-wasm/index.d.ts +0 -0
  404. /package/dist/{lib → src/lib}/wasm/load-wasm/load-wasm-browser.d.ts +0 -0
  405. /package/dist/{lib → src/lib}/wasm/load-wasm/load-wasm-node.d.ts +0 -0
  406. /package/dist/{lib → src/lib}/wasm/parse-parquet-wasm.d.ts +0 -0
  407. /package/dist/{parquet-writer.d.ts → src/parquet-writer.d.ts} +0 -0
  408. /package/dist/{parquetjs → src/parquetjs}/codecs/declare.d.ts +0 -0
  409. /package/dist/{parquetjs → src/parquetjs}/codecs/dictionary.d.ts +0 -0
  410. /package/dist/{parquetjs → src/parquetjs}/codecs/index.d.ts +0 -0
  411. /package/dist/{parquetjs → src/parquetjs}/codecs/plain.d.ts +0 -0
  412. /package/dist/{parquetjs → src/parquetjs}/codecs/rle.d.ts +0 -0
  413. /package/dist/{parquetjs → src/parquetjs}/compression.d.ts +0 -0
  414. /package/dist/{parquetjs → src/parquetjs}/encoder/parquet-encoder.d.ts +0 -0
  415. /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/BoundaryOrder.d.ts +0 -0
  416. /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/BsonType.d.ts +0 -0
  417. /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/ColumnChunk.d.ts +0 -0
  418. /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/ColumnIndex.d.ts +0 -0
  419. /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/ColumnMetaData.d.ts +0 -0
  420. /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/ColumnOrder.d.ts +0 -0
  421. /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/CompressionCodec.d.ts +0 -0
  422. /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/ConvertedType.d.ts +0 -0
  423. /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/DataPageHeader.d.ts +0 -0
  424. /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/DataPageHeaderV2.d.ts +0 -0
  425. /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/DateType.d.ts +0 -0
  426. /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/DecimalType.d.ts +0 -0
  427. /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/DictionaryPageHeader.d.ts +0 -0
  428. /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/Encoding.d.ts +0 -0
  429. /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/EnumType.d.ts +0 -0
  430. /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/FieldRepetitionType.d.ts +0 -0
  431. /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/FileMetaData.d.ts +0 -0
  432. /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/IndexPageHeader.d.ts +0 -0
  433. /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/IntType.d.ts +0 -0
  434. /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/JsonType.d.ts +0 -0
  435. /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/KeyValue.d.ts +0 -0
  436. /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/ListType.d.ts +0 -0
  437. /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/LogicalType.d.ts +0 -0
  438. /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/MapType.d.ts +0 -0
  439. /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/MicroSeconds.d.ts +0 -0
  440. /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/MilliSeconds.d.ts +0 -0
  441. /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/NullType.d.ts +0 -0
  442. /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/OffsetIndex.d.ts +0 -0
  443. /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/PageEncodingStats.d.ts +0 -0
  444. /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/PageHeader.d.ts +0 -0
  445. /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/PageLocation.d.ts +0 -0
  446. /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/PageType.d.ts +0 -0
  447. /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/RowGroup.d.ts +0 -0
  448. /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/SchemaElement.d.ts +0 -0
  449. /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/SortingColumn.d.ts +0 -0
  450. /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/Statistics.d.ts +0 -0
  451. /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/StringType.d.ts +0 -0
  452. /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/TimeType.d.ts +0 -0
  453. /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/TimeUnit.d.ts +0 -0
  454. /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/TimestampType.d.ts +0 -0
  455. /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/Type.d.ts +0 -0
  456. /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/TypeDefinedOrder.d.ts +0 -0
  457. /package/dist/{parquetjs → src/parquetjs}/parquet-thrift/UUIDType.d.ts +0 -0
  458. /package/dist/{parquetjs → src/parquetjs}/schema/schema.d.ts +0 -0
  459. /package/dist/{parquetjs → src/parquetjs}/schema/shred.d.ts +0 -0
  460. /package/dist/{parquetjs → src/parquetjs}/schema/types.d.ts +0 -0
  461. /package/dist/{parquetjs → src/parquetjs}/utils/file-utils.d.ts +0 -0
  462. /package/dist/{parquetjs → src/parquetjs}/utils/read-utils.d.ts +0 -0
  463. /package/dist/{workers → src/workers}/parquet-worker.d.ts +0 -0
@@ -0,0 +1,8 @@
1
+ // loaders.gl, MIT license
2
+ export {Buffer as BufferPolyfill} from './buffer';
3
+ export {Buffer} from './install-buffer-polyfill';
4
+ export {installBufferPolyfill} from './buffer-polyfill.node';
5
+
6
+ // import { installBufferPolyfill } from "./buffer-polyfill.node";
7
+
8
+ // installBufferPolyfill();
@@ -0,0 +1,3 @@
1
+ import {installBufferPolyfill} from './buffer-polyfill.node';
2
+
3
+ export const Buffer = installBufferPolyfill();
package/src/index.ts CHANGED
@@ -1,13 +1,17 @@
1
1
  // loaders.gl, MIT license
2
2
 
3
+ export {Buffer} from './buffer-polyfill/install-buffer-polyfill';
4
+
3
5
  import type {LoaderWithParser} from '@loaders.gl/loader-utils';
4
6
  import type {
5
7
  ObjectRowTable,
6
8
  ObjectRowTableBatch,
7
9
  ColumnarTable,
8
- ColumnarTableBatch
10
+ ColumnarTableBatch,
11
+ GeoJSONTable,
12
+ GeoJSONTableBatch
9
13
  } from '@loaders.gl/schema';
10
- import type {Table as ArrowTable} from 'apache-arrow';
14
+ // import type {Table as ApacheArrowTable} from 'apache-arrow';
11
15
 
12
16
  // ParquetLoader
13
17
 
@@ -22,24 +26,26 @@ import {
22
26
  parseParquetFileInColumnarBatches
23
27
  } from './lib/parsers/parse-parquet-to-columns';
24
28
 
25
- import {parseParquetWasm, ParquetWasmLoaderOptions} from './lib/wasm/parse-parquet-wasm';
26
- import {ParquetWasmLoader as ParquetWasmWorkerLoader} from './parquet-wasm-loader';
29
+ // import type {ParquetWasmLoaderOptions} from './lib/wasm/parse-parquet-wasm';
30
+ // import {parseParquetWasm} from './lib/wasm/parse-parquet-wasm';
31
+ // import {ParquetWasmLoader as ParquetWasmWorkerLoader} from './parquet-wasm-loader';
27
32
 
28
- export {ParquetWorkerLoader, ParquetWasmWorkerLoader};
33
+ export {ParquetWorkerLoader};
34
+ // export {ParquetWasmWorkerLoader};
29
35
 
30
36
  /** ParquetJS table loader */
31
37
  export const ParquetLoader: LoaderWithParser<
32
- ObjectRowTable,
33
- ObjectRowTableBatch,
38
+ ObjectRowTable | GeoJSONTable,
39
+ ObjectRowTableBatch | GeoJSONTableBatch,
34
40
  ParquetLoaderOptions
35
41
  > = {
36
42
  ...ParquetWorkerLoader,
37
43
  parse: parseParquet,
44
+ // @ts-expect-error
38
45
  parseFileInBatches: parseParquetFileInBatches
39
46
  };
40
47
 
41
48
  /** ParquetJS table loader */
42
- // @ts-expect-error
43
49
  export const ParquetColumnarLoader: LoaderWithParser<
44
50
  ColumnarTable,
45
51
  ColumnarTableBatch,
@@ -47,18 +53,24 @@ export const ParquetColumnarLoader: LoaderWithParser<
47
53
  > = {
48
54
  ...ParquetColumnarWorkerLoader,
49
55
  parse: parseParquetInColumns,
56
+ // @ts-expect-error
50
57
  parseFileInBatches: parseParquetFileInColumnarBatches
51
58
  };
52
59
 
53
- export const ParquetWasmLoader: LoaderWithParser<ArrowTable, never, ParquetWasmLoaderOptions> = {
54
- ...ParquetWasmWorkerLoader,
55
- parse: parseParquetWasm
56
- };
60
+ // export const ParquetWasmLoader: LoaderWithParser<
61
+ // ApacheArrowTable,
62
+ // never,
63
+ // ParquetWasmLoaderOptions
64
+ // > = {
65
+ // ...ParquetWasmWorkerLoader,
66
+ // // @ts-expect-error Getting strange errors in wasm
67
+ // parse: () => {} // parseParquetWasm
68
+ // };
57
69
 
58
70
  // ParquetWriter
59
71
 
60
72
  export {ParquetWriter as _ParquetWriter} from './parquet-writer';
61
- export {ParquetWasmWriter} from './parquet-wasm-writer';
73
+ // export {ParquetWasmWriter} from './parquet-wasm-writer';
62
74
 
63
75
  // EXPERIMENTAL - expose the internal parquetjs API
64
76
 
@@ -73,11 +85,13 @@ export {
73
85
  convertParquetSchema as convertParquetToArrowSchema
74
86
  } from './lib/arrow/convert-schema-from-parquet';
75
87
 
76
- // TESTS
77
- export const _typecheckParquetLoader: LoaderWithParser = ParquetLoader;
78
-
79
88
  // Geo Metadata
80
- export {default as geoJSONSchema} from './lib/geo/geoparquet-schema';
89
+ // import {default as GEOPARQUET_METADATA_SCHEMA} from './lib/geo/geoparquet-metadata-schema.json';
90
+ // export {GEOPARQUET_METADATA_SCHEMA};
91
+ export {GEOPARQUET_METADATA_JSON_SCHEMA} from './lib/geo/geoparquet-metadata-schema';
81
92
 
82
93
  export type {GeoMetadata} from './lib/geo/decode-geo-metadata';
83
94
  export {getGeoMetadata, setGeoMetadata, unpackGeoMetadata} from './lib/geo/decode-geo-metadata';
95
+
96
+ // Experimental
97
+ export {BufferPolyfill, installBufferPolyfill} from './buffer-polyfill';
@@ -0,0 +1,54 @@
1
+ // loaders.gl, MIT license
2
+
3
+ import type {ArrayRowTable, GeoJSONTable, ObjectRowTable, Schema} from '@loaders.gl/schema';
4
+ import type {Feature, Geometry} from '@loaders.gl/schema';
5
+ import {getTableLength, getTableRowAsObject} from '@loaders.gl/schema';
6
+ // import {binaryToGeometry} from '@loaders.gl/gis';
7
+ import {WKBLoader, WKTLoader} from '@loaders.gl/wkt';
8
+
9
+ import {GeoColumnMetadata, getGeoMetadata} from './decode-geo-metadata';
10
+
11
+ /** TODO - move to loaders.gl/gis? */
12
+ export function convertWKBTableToGeoJSON(
13
+ table: ArrayRowTable | ObjectRowTable,
14
+ schema: Schema
15
+ ): GeoJSONTable {
16
+ const geoMetadata = getGeoMetadata(schema);
17
+ const primaryColumn = geoMetadata?.primary_column;
18
+ if (!primaryColumn) {
19
+ throw new Error('no geometry column');
20
+ }
21
+ const columnMetadata = geoMetadata.columns[primaryColumn];
22
+
23
+ const features: Feature[] = [];
24
+
25
+ const length = getTableLength(table);
26
+ for (let rowIndex = 0; rowIndex < length; rowIndex++) {
27
+ const row = getTableRowAsObject(table, rowIndex);
28
+ const geometry = parseGeometry(row[primaryColumn], columnMetadata);
29
+ delete row[primaryColumn];
30
+ const feature: Feature = {type: 'Feature', geometry: geometry!, properties: row};
31
+ features.push(feature);
32
+ }
33
+
34
+ return {shape: 'geojson-table', schema, type: 'FeatureCollection', features};
35
+ }
36
+
37
+ function parseGeometry(geometry: unknown, columnMetadata: GeoColumnMetadata): Geometry | null {
38
+ switch (columnMetadata.encoding) {
39
+ case 'wkt':
40
+ return WKTLoader.parseTextSync?.(geometry as string) || null;
41
+ case 'wkb':
42
+ default:
43
+ const arrayBuffer = ArrayBuffer.isView(geometry)
44
+ ? geometry.buffer.slice(geometry.byteOffset, geometry.byteOffset + geometry.byteLength)
45
+ : (geometry as ArrayBuffer);
46
+ const geojson = WKBLoader.parseSync?.(arrayBuffer, {
47
+ wkb: {shape: 'geometry'}
48
+ }) as unknown as Geometry;
49
+ return geojson; // binaryGeometry ? binaryToGeometry(binaryGeometry) : null;
50
+ // const binaryGeometry = WKBLoader.parseSync?.(geometry);
51
+ // ts-ignore
52
+ // return binaryGeometry ? binaryToGeometry(binaryGeometry) : null;
53
+ }
54
+ }
@@ -3,7 +3,28 @@ import {Schema, Field} from '@loaders.gl/schema';
3
3
 
4
4
  /* eslint-disable camelcase */
5
5
 
6
- /** A geoarrow / geoparquet geo metadata object (stored in stringified form in the top level metadata 'geo' key) */
6
+ type GeometryType =
7
+ | 'Point'
8
+ | 'LineString'
9
+ | 'Polygon'
10
+ | 'MultiPoint'
11
+ | 'MultiLineString'
12
+ | 'MultiPolygon'
13
+ | 'GeometryCollection'
14
+ | 'Point Z'
15
+ | 'LineString Z'
16
+ | 'Polygon Z'
17
+ | 'MultiPoint Z'
18
+ | 'MultiLineString Z'
19
+ | 'MultiPolygon Z'
20
+ | 'GeometryCollection Z';
21
+
22
+ /**
23
+ * A geoarrow / geoparquet geo metadata object
24
+ * (stored in stringified form in the top level metadata 'geo' key)
25
+ * @see https://github.com/opengeospatial/geoparquet/blob/main/format-specs/geoparquet.md
26
+ * @see https://github.com/geoarrow/geoarrow/blob/main/metadata.md
27
+ * */
7
28
  export type GeoMetadata = {
8
29
  version?: string;
9
30
  primary_column?: string;
@@ -13,32 +34,55 @@ export type GeoMetadata = {
13
34
 
14
35
  /** A geoarrow / geoparquet geo metadata for one geometry column */
15
36
  export type GeoColumnMetadata = {
16
- bounding_box?:
17
- | [number, number, number, number]
18
- | [number, number, number, number, number, number];
19
- crs?: string;
20
- geometry_type?: string[];
21
- edges?: string;
37
+ encoding: 'wkb' | 'wkt';
38
+ geometry_types: GeometryType[];
39
+ crs?: object | null;
40
+ orientation?: 'counterclockwise';
41
+ bbox?: [number, number, number, number] | [number, number, number, number, number, number];
42
+ edges?: 'planar' | 'spherical';
43
+ epoch?: number;
22
44
  [key: string]: unknown;
23
45
  };
24
46
 
25
- /**
26
- * Reads the GeoMetadata object from the metadata
27
- * @note geoarrow / parquet schema is stringified into a single key-value pair in the parquet metadata */
28
- export function getGeoMetadata(schema: Schema): GeoMetadata | null {
29
- const stringifiedGeoMetadata = schema.metadata.geo;
30
- if (!stringifiedGeoMetadata) {
47
+ /** Parse a key with stringified arrow metadata */
48
+ export function parseJSONStringMetadata(
49
+ schema: Schema,
50
+ metadataKey: string
51
+ ): Record<string, unknown> | null {
52
+ const stringifiedMetadata = schema.metadata[metadataKey];
53
+ if (!stringifiedMetadata) {
31
54
  return null;
32
55
  }
33
56
 
34
57
  try {
35
- const geoMetadata = JSON.parse(stringifiedGeoMetadata) as GeoMetadata;
36
- return geoMetadata;
58
+ const metadata = JSON.parse(stringifiedMetadata);
59
+ if (!metadata || typeof metadata !== 'object') {
60
+ return null;
61
+ }
62
+ return metadata;
37
63
  } catch {
38
64
  return null;
39
65
  }
40
66
  }
41
67
 
68
+ export function unpackJSONStringMetadata(schema: Schema, metadataKey: string): void {
69
+ const json = parseJSONStringMetadata(schema, metadataKey);
70
+ for (const [key, value] of Object.entries(json || {})) {
71
+ schema.metadata[`${metadataKey}.${key}`] =
72
+ typeof value === 'string' ? value : JSON.stringify(value);
73
+ }
74
+ }
75
+
76
+ // GEO METADATA
77
+
78
+ /**
79
+ * Reads the GeoMetadata object from the metadata
80
+ * @note geoarrow / parquet schema is stringified into a single key-value pair in the parquet metadata */
81
+ export function getGeoMetadata(schema: Schema): GeoMetadata | null {
82
+ const geoMetadata = parseJSONStringMetadata(schema, 'geo') as GeoMetadata;
83
+ return geoMetadata;
84
+ }
85
+
42
86
  /**
43
87
  * Stores a geoarrow / geoparquet geo metadata object in the schema
44
88
  * @note geoarrow / geoparquet geo metadata is a single stringified JSON field
@@ -83,6 +127,7 @@ export function unpackGeoMetadata(schema: Schema): void {
83
127
  }
84
128
  }
85
129
 
130
+ // eslint-disable-next-line complexity
86
131
  function unpackGeoFieldMetadata(field: Field, columnMetadata): void {
87
132
  for (const [key, value] of Object.entries(columnMetadata || {})) {
88
133
  switch (key) {
@@ -90,7 +135,28 @@ function unpackGeoFieldMetadata(field: Field, columnMetadata): void {
90
135
  setFieldMetadata(field, `geo.${key}`, (value as string[]).join(','));
91
136
  break;
92
137
  case 'bbox':
138
+ setFieldMetadata(field, `geo.crs.${key}`, JSON.stringify(value));
139
+ break;
93
140
  case 'crs':
141
+ for (const [crsKey, crsValue] of Object.entries(value || {})) {
142
+ switch (crsKey) {
143
+ case 'id':
144
+ const crsId =
145
+ typeof crsValue === 'object'
146
+ ? `${crsValue?.authority}:${crsValue?.code}`
147
+ : JSON.stringify(crsValue);
148
+ setFieldMetadata(field, `geo.crs.${crsKey}`, crsId);
149
+ break;
150
+ default:
151
+ setFieldMetadata(
152
+ field,
153
+ `geo.crs.${crsKey}`,
154
+ typeof crsValue === 'string' ? crsValue : JSON.stringify(crsValue)
155
+ );
156
+ break;
157
+ }
158
+ }
159
+ break;
94
160
  case 'edges':
95
161
  default:
96
162
  setFieldMetadata(
@@ -0,0 +1,60 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "GeoParquet",
4
+ "description": "Parquet metadata included in the geo field.",
5
+ "type": "object",
6
+ "required": ["version", "primary_column", "columns"],
7
+ "properties": {
8
+ "version": {"type": "string", "const": "1.0.0-beta.1"},
9
+ "primary_column": {"type": "string", "minLength": 1},
10
+ "columns": {
11
+ "type": "object",
12
+ "minProperties": 1,
13
+ "patternProperties": {
14
+ ".+": {
15
+ "type": "object",
16
+ "required": ["encoding", "geometry_types"],
17
+ "properties": {
18
+ "encoding": {"type": "string", "const": "WKB"},
19
+ "geometry_types": {
20
+ "type": "array",
21
+ "uniqueItems": true,
22
+ "items": {
23
+ "type": "string",
24
+ "pattern": "^(GeometryCollection|(Multi)?(Point|LineString|Polygon))( Z)?$"
25
+ }
26
+ },
27
+ "crs": {
28
+ "oneOf": [
29
+ {
30
+ "$ref": "https://proj.org/schemas/v0.5/projjson.schema.json"
31
+ },
32
+ {"type": "null"}
33
+ ]
34
+ },
35
+ "edges": {"type": "string", "enum": ["planar", "spherical"]},
36
+ "orientation": {"type": "string", "const": "counterclockwise"},
37
+ "bbox": {
38
+ "type": "array",
39
+ "items": {"type": "number"},
40
+ "oneOf": [
41
+ {
42
+ "description": "2D bbox consisting of (xmin, ymin, xmax, ymax)",
43
+ "minItems": 4,
44
+ "maxItems": 4
45
+ },
46
+ {
47
+ "description": "3D bbox consisting of (xmin, ymin, zmin, xmax, ymax, zmax)",
48
+ "minItems": 6,
49
+ "maxItems": 6
50
+ }
51
+ ]
52
+ },
53
+ "epoch": {"type": "number"}
54
+ }
55
+ }
56
+ },
57
+ "additionalProperties": false
58
+ }
59
+ }
60
+ }
@@ -7,7 +7,7 @@
7
7
  * @see https://github.com/geoarrow/geoarrow/blob/main/metadata.md
8
8
  * @see https://github.com/opengeospatial/geoparquet/blob/main/format-specs/geoparquet.md
9
9
  */
10
- export default {
10
+ export const GEOPARQUET_METADATA_JSON_SCHEMA = {
11
11
  $schema: 'http://json-schema.org/draft-07/schema#',
12
12
  title: 'GeoParquet',
13
13
  description: 'Parquet metadata included in the geo field.',
@@ -0,0 +1,14 @@
1
+ // loaders.gl
2
+ import {Schema} from '@loaders.gl/schema';
3
+ import {ParquetReader} from '../../parquetjs/parser/parquet-reader';
4
+ import {convertParquetSchema} from '../arrow/convert-schema-from-parquet';
5
+ import {unpackGeoMetadata, unpackJSONStringMetadata} from '../geo/decode-geo-metadata';
6
+
7
+ export async function getSchemaFromParquetReader(reader: ParquetReader): Promise<Schema> {
8
+ const parquetSchema = await reader.getSchema();
9
+ const parquetMetadata = await reader.getFileMetadata();
10
+ const schema = convertParquetSchema(parquetSchema, parquetMetadata);
11
+ unpackGeoMetadata(schema);
12
+ unpackJSONStringMetadata(schema, 'pandas');
13
+ return schema;
14
+ }
@@ -1,23 +1,25 @@
1
1
  // loaders.gl, MIT license
2
2
 
3
- // import type {LoaderWithParser, Loader, LoaderOptions} from '@loaders.gl/loader-utils';
4
3
  import {ColumnarTable, ColumnarTableBatch, Schema} from '@loaders.gl/schema';
5
4
  import {makeReadableFile} from '@loaders.gl/loader-utils';
6
5
  import type {ParquetLoaderOptions} from '../../parquet-loader';
7
6
  import {ParquetReader} from '../../parquetjs/parser/parquet-reader';
8
7
  import {ParquetRowGroup} from '../../parquetjs/schema/declare';
9
8
  import {ParquetSchema} from '../../parquetjs/schema/schema';
10
- import {convertParquetSchema} from '../arrow/convert-schema-from-parquet';
11
9
  import {materializeColumns} from '../../parquetjs/schema/shred';
12
- // import {convertParquetRowGroupToColumns} from '../arrow/convert-row-group-to-columns';
13
- import {unpackGeoMetadata} from '../geo/decode-geo-metadata';
10
+ import {getSchemaFromParquetReader} from './get-parquet-schema';
11
+ import {installBufferPolyfill} from '../../buffer-polyfill';
14
12
 
15
13
  export async function parseParquetInColumns(
16
14
  arrayBuffer: ArrayBuffer,
17
15
  options?: ParquetLoaderOptions
18
16
  ): Promise<ColumnarTable> {
17
+ installBufferPolyfill();
19
18
  const blob = new Blob([arrayBuffer]);
20
- for await (const batch of parseParquetFileInColumnarBatches(blob, options)) {
19
+ const file = makeReadableFile(blob);
20
+ const reader = new ParquetReader(file);
21
+
22
+ for await (const batch of parseParquetFileInColumnarBatches(reader, options)) {
21
23
  return {
22
24
  shape: 'columnar-table',
23
25
  schema: batch.schema,
@@ -28,24 +30,24 @@ export async function parseParquetInColumns(
28
30
  }
29
31
 
30
32
  export async function* parseParquetFileInColumnarBatches(
31
- blob: Blob,
33
+ reader: ParquetReader,
32
34
  options?: ParquetLoaderOptions
33
35
  ): AsyncIterable<ColumnarTableBatch> {
34
- const file = makeReadableFile(blob);
35
- const reader = new ParquetReader(file);
36
+ // Extract schema and geo metadata
37
+ const schema = await getSchemaFromParquetReader(reader);
38
+
36
39
  const parquetSchema = await reader.getSchema();
37
- const parquetMetadata = await reader.getFileMetadata();
38
- const schema = convertParquetSchema(parquetSchema, parquetMetadata);
39
- unpackGeoMetadata(schema);
40
+
41
+ // Iterate over row batches
40
42
  const rowGroups = reader.rowGroupIterator(options?.parquet);
41
43
  for await (const rowGroup of rowGroups) {
42
- yield convertRowGroupToTableBatch(parquetSchema, rowGroup, schema);
44
+ yield convertRowGroupToTableBatch(rowGroup, parquetSchema, schema);
43
45
  }
44
46
  }
45
47
 
46
48
  function convertRowGroupToTableBatch(
47
- parquetSchema: ParquetSchema,
48
49
  rowGroup: ParquetRowGroup,
50
+ parquetSchema: ParquetSchema,
49
51
  schema: Schema
50
52
  ): ColumnarTableBatch {
51
53
  // const data = convertParquetRowGroupToColumns(schema, rowGroup);
@@ -1,44 +1,72 @@
1
1
  // import type {LoaderWithParser, Loader, LoaderOptions} from '@loaders.gl/loader-utils';
2
2
  // import {ColumnarTableBatch} from '@loaders.gl/schema';
3
3
  import {makeReadableFile} from '@loaders.gl/loader-utils';
4
- import {ObjectRowTable, ObjectRowTableBatch} from '@loaders.gl/schema';
4
+ import {GeoJSONTable, ObjectRowTable, ObjectRowTableBatch} from '@loaders.gl/schema';
5
5
  import type {ParquetLoaderOptions} from '../../parquet-loader';
6
6
  import type {ParquetRow} from '../../parquetjs/schema/declare';
7
7
  import {ParquetReader} from '../../parquetjs/parser/parquet-reader';
8
+ import {getSchemaFromParquetReader} from './get-parquet-schema';
9
+ import {installBufferPolyfill} from '../../buffer-polyfill';
10
+ import {convertWKBTableToGeoJSON} from '../geo/decode-geo-column';
8
11
 
9
12
  export async function parseParquet(
10
13
  arrayBuffer: ArrayBuffer,
11
14
  options?: ParquetLoaderOptions
12
- ): Promise<ObjectRowTable> {
15
+ ): Promise<ObjectRowTable | GeoJSONTable> {
16
+ installBufferPolyfill();
17
+
13
18
  const blob = new Blob([arrayBuffer]);
19
+ const file = makeReadableFile(blob);
20
+ const reader = new ParquetReader(file, {
21
+ preserveBinary: options?.parquet?.preserveBinary
22
+ });
23
+
24
+ const schema = await getSchemaFromParquetReader(reader);
14
25
 
15
26
  const rows: ParquetRow[] = [];
16
- for await (const batch of parseParquetFileInBatches(blob, options)) {
27
+
28
+ const rowBatches = reader.rowBatchIterator(options?.parquet);
29
+ for await (const rowBatch of rowBatches) {
17
30
  // we have only one input batch so return
18
- for (const row of batch.data) {
31
+ for (const row of rowBatch) {
19
32
  rows.push(row);
20
33
  }
21
34
  }
22
-
23
- return {
35
+ const objectRowTable: ObjectRowTable = {
24
36
  shape: 'object-row-table',
25
- // TODO - spread can fail for very large number of batches
37
+ schema,
26
38
  data: rows
27
39
  };
40
+
41
+ const shape = options?.parquet?.shape;
42
+ switch (shape) {
43
+ case 'object-row-table':
44
+ return objectRowTable;
45
+
46
+ case 'geojson-table':
47
+ try {
48
+ return convertWKBTableToGeoJSON(objectRowTable, schema);
49
+ } catch (error) {
50
+ return objectRowTable;
51
+ }
52
+
53
+ default:
54
+ throw new Error(shape);
55
+ }
28
56
  }
29
57
 
30
58
  export async function* parseParquetFileInBatches(
31
- blob: Blob,
59
+ reader: ParquetReader,
32
60
  options?: ParquetLoaderOptions
33
61
  ): AsyncIterable<ObjectRowTableBatch> {
34
- const file = makeReadableFile(blob);
35
- const reader = new ParquetReader(file);
62
+ const schema = await getSchemaFromParquetReader(reader);
36
63
  const rowBatches = reader.rowBatchIterator(options?.parquet);
37
64
  for await (const rows of rowBatches) {
38
65
  yield {
66
+ batchType: 'data',
39
67
  shape: 'object-row-table',
68
+ schema,
40
69
  data: rows,
41
- batchType: 'data',
42
70
  length: rows.length
43
71
  };
44
72
  }
@@ -4,33 +4,38 @@ import type {
4
4
  ObjectRowTable,
5
5
  ObjectRowTableBatch,
6
6
  ColumnarTable,
7
- ColumnarTableBatch
7
+ ColumnarTableBatch,
8
+ GeoJSONTable,
9
+ GeoJSONTableBatch
8
10
  } from '@loaders.gl/schema';
9
11
 
10
12
  // __VERSION__ is injected by babel-plugin-version-inline
11
13
  // @ts-ignore TS2304: Cannot find name '__VERSION__'.
12
14
  const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
13
15
 
16
+ /** Options for the parquet loader */
14
17
  export type ParquetLoaderOptions = LoaderOptions & {
18
+ /** Options for the parquet loader */
15
19
  parquet?: {
16
- type?: 'object-row-table';
17
- url?: string;
20
+ /** Format of returned parsed data */
21
+ shape?: 'object-row-table' | 'geojson-table';
22
+ /** Restrict which columns that are parsed from the table. Can save significant memory. */
18
23
  columnList?: string[] | string[][];
24
+ /** If true, binary values are not converted to strings */
25
+ preserveBinary?: boolean;
26
+ /** @deprecated not used? Set to true to indicate that this is a geoparquet file. */
19
27
  geoparquet?: boolean;
28
+ /** @deprecated URL to override loaders.gl/core parser system */
29
+ url?: string;
20
30
  };
21
31
  };
22
32
 
23
- const DEFAULT_PARQUET_LOADER_OPTIONS: ParquetLoaderOptions = {
24
- parquet: {
25
- type: 'object-row-table',
26
- url: undefined,
27
- columnList: [],
28
- geoparquet: true
29
- }
30
- };
31
-
32
33
  /** ParquetJS table loader */
33
- export const ParquetLoader: Loader<ObjectRowTable, ObjectRowTableBatch, ParquetLoaderOptions> = {
34
+ export const ParquetLoader: Loader<
35
+ ObjectRowTable | GeoJSONTable,
36
+ ObjectRowTableBatch | GeoJSONTableBatch,
37
+ ParquetLoaderOptions
38
+ > = {
34
39
  name: 'Apache Parquet',
35
40
  id: 'parquet',
36
41
  module: 'parquet',
@@ -41,10 +46,18 @@ export const ParquetLoader: Loader<ObjectRowTable, ObjectRowTableBatch, ParquetL
41
46
  mimeTypes: ['application/octet-stream'],
42
47
  binary: true,
43
48
  tests: ['PAR1', 'PARE'],
44
- options: DEFAULT_PARQUET_LOADER_OPTIONS
49
+ options: {
50
+ parquet: {
51
+ shape: 'object-row-table',
52
+ columnList: [],
53
+ geoparquet: true,
54
+ url: undefined,
55
+ preserveBinary: false
56
+ }
57
+ }
45
58
  };
46
59
 
47
- export const ParqueColumnnartLoader: Loader<
60
+ export const ParquetColumnnarLoader: Loader<
48
61
  ColumnarTable,
49
62
  ColumnarTableBatch,
50
63
  ParquetLoaderOptions
@@ -59,5 +72,5 @@ export const ParqueColumnnartLoader: Loader<
59
72
  mimeTypes: ['application/octet-stream'],
60
73
  binary: true,
61
74
  tests: ['PAR1', 'PARE'],
62
- options: DEFAULT_PARQUET_LOADER_OPTIONS
75
+ options: ParquetLoader.options
63
76
  };
@@ -1,25 +1,22 @@
1
+ // loaders.gl, MIT license
2
+
1
3
  import type {Loader, LoaderOptions} from '@loaders.gl/loader-utils';
4
+ import type {Table as ArrowTable} from 'apache-arrow';
2
5
 
3
6
  // __VERSION__ is injected by babel-plugin-version-inline
4
7
  // @ts-ignore TS2304: Cannot find name '__VERSION__'.
5
8
  const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
6
9
 
7
- export type ParquetLoaderOptions = LoaderOptions & {
10
+ /** Parquet WASM loader options */
11
+ export type ParquetWasmLoaderOptions = LoaderOptions & {
8
12
  parquet?: {
9
13
  type?: 'arrow-table';
10
14
  wasmUrl?: string;
11
15
  };
12
16
  };
13
17
 
14
- const DEFAULT_PARQUET_LOADER_OPTIONS: ParquetLoaderOptions = {
15
- parquet: {
16
- type: 'arrow-table',
17
- wasmUrl: 'https://unpkg.com/parquet-wasm@0.3.1/esm2/arrow1_bg.wasm'
18
- }
19
- };
20
-
21
- /** ParquetJS table loader */
22
- export const ParquetWasmLoader = {
18
+ /** Parquet WASM table loader */
19
+ export const ParquetWasmLoader: Loader<ArrowTable, never, ParquetWasmLoaderOptions> = {
23
20
  name: 'Apache Parquet',
24
21
  id: 'parquet-wasm',
25
22
  module: 'parquet',
@@ -30,7 +27,10 @@ export const ParquetWasmLoader = {
30
27
  mimeTypes: ['application/octet-stream'],
31
28
  binary: true,
32
29
  tests: ['PAR1', 'PARE'],
33
- options: DEFAULT_PARQUET_LOADER_OPTIONS
30
+ options: {
31
+ parquet: {
32
+ type: 'arrow-table',
33
+ wasmUrl: 'https://unpkg.com/parquet-wasm@0.3.1/esm2/arrow1_bg.wasm'
34
+ }
35
+ }
34
36
  };
35
-
36
- export const _typecheckParquetLoader: Loader = ParquetWasmLoader;