@genome-spy/core 0.70.0 → 0.72.0

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 (280) hide show
  1. package/dist/bundle/index.es.js +3923 -3598
  2. package/dist/bundle/index.js +150 -143
  3. package/dist/bundle/parquetRead-BnAGCa4_.js +1663 -0
  4. package/dist/schema.json +0 -48
  5. package/dist/src/data/formats/parquet.d.ts +12 -0
  6. package/dist/src/data/formats/parquet.d.ts.map +1 -0
  7. package/dist/src/data/formats/parquet.js +29 -0
  8. package/dist/src/data/formats/parquetRead.d.ts +18 -0
  9. package/dist/src/data/formats/parquetRead.d.ts.map +1 -0
  10. package/dist/src/data/formats/parquetRead.js +326 -0
  11. package/dist/src/data/sources/urlSource.d.ts.map +1 -1
  12. package/dist/src/data/sources/urlSource.js +8 -3
  13. package/dist/src/encoder/encoder.d.ts +2 -2
  14. package/dist/src/fonts/bmFontManager.d.ts +1 -1
  15. package/dist/src/genome/genome.d.ts +1 -1
  16. package/dist/src/genomeSpy/containerUi.d.ts.map +1 -1
  17. package/dist/src/genomeSpy/containerUi.js +0 -1
  18. package/dist/src/genomeSpy/viewHighlight.js +2 -2
  19. package/dist/src/genomeSpy.d.ts +3 -3
  20. package/dist/src/genomeSpy.d.ts.map +1 -1
  21. package/dist/src/genomeSpy.js +29 -3
  22. package/dist/src/gl/hashTable.d.ts +78 -0
  23. package/dist/src/gl/hashTable.d.ts.map +1 -0
  24. package/dist/src/gl/hashTable.js +164 -0
  25. package/dist/src/gl/includes/common.glsl.js +1 -1
  26. package/dist/src/gl/webGLHelper.d.ts.map +1 -1
  27. package/dist/src/gl/webGLHelper.js +12 -6
  28. package/dist/src/marks/mark.d.ts +2 -2
  29. package/dist/src/marks/mark.d.ts.map +1 -1
  30. package/dist/src/marks/mark.js +2 -3
  31. package/dist/src/spec/view.d.ts +0 -10
  32. package/dist/src/utils/keyboardZoomMotion.d.ts +93 -0
  33. package/dist/src/utils/keyboardZoomMotion.d.ts.map +1 -0
  34. package/dist/src/utils/keyboardZoomMotion.js +285 -0
  35. package/dist/src/utils/radixSort.d.ts.map +1 -1
  36. package/dist/src/utils/radixSort.js +26 -1
  37. package/dist/src/view/axisGridView.d.ts +1 -1
  38. package/dist/src/view/axisGridView.js +0 -1
  39. package/dist/src/view/axisView.d.ts +1 -1
  40. package/dist/src/view/concatView.d.ts +6 -3
  41. package/dist/src/view/concatView.d.ts.map +1 -1
  42. package/dist/src/view/concatView.js +9 -2
  43. package/dist/src/view/containerMutationHelper.d.ts +6 -6
  44. package/dist/src/view/containerMutationHelper.d.ts.map +1 -1
  45. package/dist/src/view/containerView.d.ts +7 -5
  46. package/dist/src/view/containerView.d.ts.map +1 -1
  47. package/dist/src/view/containerView.js +4 -1
  48. package/dist/src/view/facetView.d.ts +2 -2
  49. package/dist/src/view/flowBuilder.d.ts +1 -1
  50. package/dist/src/view/flowBuilder.d.ts.map +1 -1
  51. package/dist/src/view/gridView/gridChild.d.ts +3 -3
  52. package/dist/src/view/gridView/gridChild.d.ts.map +1 -1
  53. package/dist/src/view/gridView/gridChild.js +0 -2
  54. package/dist/src/view/gridView/gridView.d.ts +13 -11
  55. package/dist/src/view/gridView/gridView.d.ts.map +1 -1
  56. package/dist/src/view/gridView/gridView.js +17 -26
  57. package/dist/src/view/gridView/keyboardZoomController.d.ts +21 -0
  58. package/dist/src/view/gridView/keyboardZoomController.d.ts.map +1 -0
  59. package/dist/src/view/gridView/keyboardZoomController.js +202 -0
  60. package/dist/src/view/gridView/scrollbar.d.ts +1 -1
  61. package/dist/src/view/gridView/scrollbar.d.ts.map +1 -1
  62. package/dist/src/view/gridView/scrollbar.js +0 -1
  63. package/dist/src/view/gridView/selectionRect.d.ts +1 -1
  64. package/dist/src/view/gridView/selectionRect.d.ts.map +1 -1
  65. package/dist/src/view/gridView/selectionRect.js +0 -1
  66. package/dist/src/view/gridView/separatorView.js +0 -1
  67. package/dist/src/view/gridView/zoomNavigationUtils.d.ts +19 -0
  68. package/dist/src/view/gridView/zoomNavigationUtils.d.ts.map +1 -0
  69. package/dist/src/view/gridView/zoomNavigationUtils.js +51 -0
  70. package/dist/src/view/layerView.d.ts +8 -5
  71. package/dist/src/view/layerView.d.ts.map +1 -1
  72. package/dist/src/view/layerView.js +6 -2
  73. package/dist/src/view/title.d.ts.map +1 -1
  74. package/dist/src/view/title.js +0 -1
  75. package/dist/src/view/unitView.d.ts +8 -5
  76. package/dist/src/view/unitView.d.ts.map +1 -1
  77. package/dist/src/view/unitView.js +5 -1
  78. package/dist/src/view/view.d.ts +13 -9
  79. package/dist/src/view/view.d.ts.map +1 -1
  80. package/dist/src/view/view.js +7 -1
  81. package/dist/src/view/viewError.d.ts +1 -1
  82. package/dist/src/view/viewError.d.ts.map +1 -1
  83. package/dist/src/view/viewFactory.d.ts +3 -44
  84. package/dist/src/view/viewFactory.d.ts.map +1 -1
  85. package/dist/src/view/viewFactory.js +28 -69
  86. package/dist/src/view/viewSelectors.d.ts.map +1 -1
  87. package/dist/src/view/viewSelectors.js +123 -160
  88. package/dist/src/view/viewSpecGuards.d.ts +43 -0
  89. package/dist/src/view/viewSpecGuards.d.ts.map +1 -0
  90. package/dist/src/view/viewSpecGuards.js +69 -0
  91. package/dist/src/view/viewUtils.d.ts +1 -1
  92. package/dist/src/view/viewUtils.d.ts.map +1 -1
  93. package/dist/src/view/zoom.d.ts +1 -0
  94. package/dist/src/view/zoom.d.ts.map +1 -1
  95. package/dist/src/view/zoom.js +5 -1
  96. package/package.json +4 -3
  97. package/dist/src/data/collector.test.d.ts +0 -2
  98. package/dist/src/data/collector.test.d.ts.map +0 -1
  99. package/dist/src/data/dataFlow.test.d.ts +0 -2
  100. package/dist/src/data/dataFlow.test.d.ts.map +0 -1
  101. package/dist/src/data/flow.test.d.ts +0 -2
  102. package/dist/src/data/flow.test.d.ts.map +0 -1
  103. package/dist/src/data/flowInit.test.d.ts +0 -2
  104. package/dist/src/data/flowInit.test.d.ts.map +0 -1
  105. package/dist/src/data/flowNode.test.d.ts +0 -2
  106. package/dist/src/data/flowNode.test.d.ts.map +0 -1
  107. package/dist/src/data/flowOptimizer.test.d.ts +0 -2
  108. package/dist/src/data/flowOptimizer.test.d.ts.map +0 -1
  109. package/dist/src/data/formats/fasta.test.d.ts +0 -2
  110. package/dist/src/data/formats/fasta.test.d.ts.map +0 -1
  111. package/dist/src/data/keyIndex.test.d.ts +0 -2
  112. package/dist/src/data/keyIndex.test.d.ts.map +0 -1
  113. package/dist/src/data/sources/inlineSource.test.d.ts +0 -2
  114. package/dist/src/data/sources/inlineSource.test.d.ts.map +0 -1
  115. package/dist/src/data/sources/sequenceSource.test.d.ts +0 -2
  116. package/dist/src/data/sources/sequenceSource.test.d.ts.map +0 -1
  117. package/dist/src/data/transforms/aggregate.test.d.ts +0 -2
  118. package/dist/src/data/transforms/aggregate.test.d.ts.map +0 -1
  119. package/dist/src/data/transforms/clone.test.d.ts +0 -2
  120. package/dist/src/data/transforms/clone.test.d.ts.map +0 -1
  121. package/dist/src/data/transforms/coverage.test.d.ts +0 -2
  122. package/dist/src/data/transforms/coverage.test.d.ts.map +0 -1
  123. package/dist/src/data/transforms/filter.test.d.ts +0 -2
  124. package/dist/src/data/transforms/filter.test.d.ts.map +0 -1
  125. package/dist/src/data/transforms/filterScoredLabels.test.d.ts +0 -2
  126. package/dist/src/data/transforms/filterScoredLabels.test.d.ts.map +0 -1
  127. package/dist/src/data/transforms/flatten.test.d.ts +0 -2
  128. package/dist/src/data/transforms/flatten.test.d.ts.map +0 -1
  129. package/dist/src/data/transforms/flattenDelimited.test.d.ts +0 -2
  130. package/dist/src/data/transforms/flattenDelimited.test.d.ts.map +0 -1
  131. package/dist/src/data/transforms/flattenSequence.test.d.ts +0 -2
  132. package/dist/src/data/transforms/flattenSequence.test.d.ts.map +0 -1
  133. package/dist/src/data/transforms/formula.test.d.ts +0 -2
  134. package/dist/src/data/transforms/formula.test.d.ts.map +0 -1
  135. package/dist/src/data/transforms/identifier.test.d.ts +0 -2
  136. package/dist/src/data/transforms/identifier.test.d.ts.map +0 -1
  137. package/dist/src/data/transforms/pileup.test.d.ts +0 -2
  138. package/dist/src/data/transforms/pileup.test.d.ts.map +0 -1
  139. package/dist/src/data/transforms/project.test.d.ts +0 -2
  140. package/dist/src/data/transforms/project.test.d.ts.map +0 -1
  141. package/dist/src/data/transforms/regexExtract.test.d.ts +0 -2
  142. package/dist/src/data/transforms/regexExtract.test.d.ts.map +0 -1
  143. package/dist/src/data/transforms/regexFold.test.d.ts +0 -2
  144. package/dist/src/data/transforms/regexFold.test.d.ts.map +0 -1
  145. package/dist/src/data/transforms/sample.test.d.ts +0 -2
  146. package/dist/src/data/transforms/sample.test.d.ts.map +0 -1
  147. package/dist/src/data/transforms/stack.test.d.ts +0 -2
  148. package/dist/src/data/transforms/stack.test.d.ts.map +0 -1
  149. package/dist/src/encoder/accessor.test.d.ts +0 -2
  150. package/dist/src/encoder/accessor.test.d.ts.map +0 -1
  151. package/dist/src/encoder/encoder.test.d.ts +0 -2
  152. package/dist/src/encoder/encoder.test.d.ts.map +0 -1
  153. package/dist/src/encoder/metadataChannels.test.d.ts +0 -2
  154. package/dist/src/encoder/metadataChannels.test.d.ts.map +0 -1
  155. package/dist/src/genome/genome.test.d.ts +0 -2
  156. package/dist/src/genome/genome.test.d.ts.map +0 -1
  157. package/dist/src/genome/genomes.test.d.ts +0 -2
  158. package/dist/src/genome/genomes.test.d.ts.map +0 -1
  159. package/dist/src/genome/scaleIndex.test.d.ts +0 -2
  160. package/dist/src/genome/scaleIndex.test.d.ts.map +0 -1
  161. package/dist/src/genome/scaleLocus.test.d.ts +0 -2
  162. package/dist/src/genome/scaleLocus.test.d.ts.map +0 -1
  163. package/dist/src/genomeSpy/viewDataInit.test.d.ts +0 -2
  164. package/dist/src/genomeSpy/viewDataInit.test.d.ts.map +0 -1
  165. package/dist/src/gl/colorUtils.test.d.ts +0 -2
  166. package/dist/src/gl/colorUtils.test.d.ts.map +0 -1
  167. package/dist/src/paramRuntime/expressionRef.test.d.ts +0 -2
  168. package/dist/src/paramRuntime/expressionRef.test.d.ts.map +0 -1
  169. package/dist/src/paramRuntime/graphRuntime.test.d.ts +0 -2
  170. package/dist/src/paramRuntime/graphRuntime.test.d.ts.map +0 -1
  171. package/dist/src/paramRuntime/paramRuntime.test.d.ts +0 -2
  172. package/dist/src/paramRuntime/paramRuntime.test.d.ts.map +0 -1
  173. package/dist/src/paramRuntime/paramStore.test.d.ts +0 -2
  174. package/dist/src/paramRuntime/paramStore.test.d.ts.map +0 -1
  175. package/dist/src/scale/scale.test.d.ts +0 -2
  176. package/dist/src/scale/scale.test.d.ts.map +0 -1
  177. package/dist/src/scale/ticks.test.d.ts +0 -2
  178. package/dist/src/scale/ticks.test.d.ts.map +0 -1
  179. package/dist/src/scales/axisResolution.test.d.ts +0 -2
  180. package/dist/src/scales/axisResolution.test.d.ts.map +0 -1
  181. package/dist/src/scales/domainPlanner.test.d.ts +0 -2
  182. package/dist/src/scales/domainPlanner.test.d.ts.map +0 -1
  183. package/dist/src/scales/scaleInstanceManager.test.d.ts +0 -2
  184. package/dist/src/scales/scaleInstanceManager.test.d.ts.map +0 -1
  185. package/dist/src/scales/scaleInteractionController.test.d.ts +0 -2
  186. package/dist/src/scales/scaleInteractionController.test.d.ts.map +0 -1
  187. package/dist/src/scales/scaleResolution.test.d.ts +0 -2
  188. package/dist/src/scales/scaleResolution.test.d.ts.map +0 -1
  189. package/dist/src/scales/scaleRules.test.d.ts +0 -2
  190. package/dist/src/scales/scaleRules.test.d.ts.map +0 -1
  191. package/dist/src/selection/selection.test.d.ts +0 -2
  192. package/dist/src/selection/selection.test.d.ts.map +0 -1
  193. package/dist/src/tooltip/dataTooltipHandler.test.d.ts +0 -2
  194. package/dist/src/tooltip/dataTooltipHandler.test.d.ts.map +0 -1
  195. package/dist/src/tooltip/flattenDatumRows.test.d.ts +0 -2
  196. package/dist/src/tooltip/flattenDatumRows.test.d.ts.map +0 -1
  197. package/dist/src/tooltip/tooltipContext.test.d.ts +0 -2
  198. package/dist/src/tooltip/tooltipContext.test.d.ts.map +0 -1
  199. package/dist/src/utils/addBaseUrl.test.d.ts +0 -2
  200. package/dist/src/utils/addBaseUrl.test.d.ts.map +0 -1
  201. package/dist/src/utils/binnedIndex.test.d.ts +0 -2
  202. package/dist/src/utils/binnedIndex.test.d.ts.map +0 -1
  203. package/dist/src/utils/cloner.test.d.ts +0 -2
  204. package/dist/src/utils/cloner.test.d.ts.map +0 -1
  205. package/dist/src/utils/coalesce.test.d.ts +0 -2
  206. package/dist/src/utils/coalesce.test.d.ts.map +0 -1
  207. package/dist/src/utils/concatIterables.test.d.ts +0 -2
  208. package/dist/src/utils/concatIterables.test.d.ts.map +0 -1
  209. package/dist/src/utils/deepEqual.test.d.ts +0 -2
  210. package/dist/src/utils/deepEqual.test.d.ts.map +0 -1
  211. package/dist/src/utils/domainArray.test.d.ts +0 -2
  212. package/dist/src/utils/domainArray.test.d.ts.map +0 -1
  213. package/dist/src/utils/fetchUtils.test.d.ts +0 -2
  214. package/dist/src/utils/fetchUtils.test.d.ts.map +0 -1
  215. package/dist/src/utils/indexer.test.d.ts +0 -2
  216. package/dist/src/utils/indexer.test.d.ts.map +0 -1
  217. package/dist/src/utils/interactionEvent.test.d.ts +0 -2
  218. package/dist/src/utils/interactionEvent.test.d.ts.map +0 -1
  219. package/dist/src/utils/iterateNestedMaps.test.d.ts +0 -2
  220. package/dist/src/utils/iterateNestedMaps.test.d.ts.map +0 -1
  221. package/dist/src/utils/kWayMerge.test.d.ts +0 -2
  222. package/dist/src/utils/kWayMerge.test.d.ts.map +0 -1
  223. package/dist/src/utils/mergeObjects.test.d.ts +0 -2
  224. package/dist/src/utils/mergeObjects.test.d.ts.map +0 -1
  225. package/dist/src/utils/numberExtractor.test.d.ts +0 -2
  226. package/dist/src/utils/numberExtractor.test.d.ts.map +0 -1
  227. package/dist/src/utils/propertyCacher.test.d.ts +0 -2
  228. package/dist/src/utils/propertyCacher.test.d.ts.map +0 -1
  229. package/dist/src/utils/propertyCoalescer.test.d.ts +0 -2
  230. package/dist/src/utils/propertyCoalescer.test.d.ts.map +0 -1
  231. package/dist/src/utils/radixSort.test.d.ts +0 -2
  232. package/dist/src/utils/radixSort.test.d.ts.map +0 -1
  233. package/dist/src/utils/reservationMap.test.d.ts +0 -2
  234. package/dist/src/utils/reservationMap.test.d.ts.map +0 -1
  235. package/dist/src/utils/ringBuffer.test.d.ts +0 -2
  236. package/dist/src/utils/ringBuffer.test.d.ts.map +0 -1
  237. package/dist/src/utils/throttle.test.d.ts +0 -2
  238. package/dist/src/utils/throttle.test.d.ts.map +0 -1
  239. package/dist/src/utils/topK.test.d.ts +0 -2
  240. package/dist/src/utils/topK.test.d.ts.map +0 -1
  241. package/dist/src/utils/trees.test.d.ts +0 -2
  242. package/dist/src/utils/trees.test.d.ts.map +0 -1
  243. package/dist/src/utils/ui/tooltip.test.d.ts +0 -2
  244. package/dist/src/utils/ui/tooltip.test.d.ts.map +0 -1
  245. package/dist/src/utils/url.test.d.ts +0 -2
  246. package/dist/src/utils/url.test.d.ts.map +0 -1
  247. package/dist/src/utils/variableTools.test.d.ts +0 -2
  248. package/dist/src/utils/variableTools.test.d.ts.map +0 -1
  249. package/dist/src/view/concatView.test.d.ts +0 -2
  250. package/dist/src/view/concatView.test.d.ts.map +0 -1
  251. package/dist/src/view/dataReadiness.test.d.ts +0 -2
  252. package/dist/src/view/dataReadiness.test.d.ts.map +0 -1
  253. package/dist/src/view/flowBuilder.test.d.ts +0 -2
  254. package/dist/src/view/flowBuilder.test.d.ts.map +0 -1
  255. package/dist/src/view/gridView/gridView.test.d.ts +0 -2
  256. package/dist/src/view/gridView/gridView.test.d.ts.map +0 -1
  257. package/dist/src/view/gridView/selectionRect.test.d.ts +0 -2
  258. package/dist/src/view/gridView/selectionRect.test.d.ts.map +0 -1
  259. package/dist/src/view/layerView.test.d.ts +0 -2
  260. package/dist/src/view/layerView.test.d.ts.map +0 -1
  261. package/dist/src/view/layout/flexLayout.test.d.ts +0 -2
  262. package/dist/src/view/layout/flexLayout.test.d.ts.map +0 -1
  263. package/dist/src/view/layout/grid.test.d.ts +0 -2
  264. package/dist/src/view/layout/grid.test.d.ts.map +0 -1
  265. package/dist/src/view/layout/rectangle.test.d.ts +0 -2
  266. package/dist/src/view/layout/rectangle.test.d.ts.map +0 -1
  267. package/dist/src/view/multiscale.test.d.ts +0 -2
  268. package/dist/src/view/multiscale.test.d.ts.map +0 -1
  269. package/dist/src/view/view.test.d.ts +0 -2
  270. package/dist/src/view/view.test.d.ts.map +0 -1
  271. package/dist/src/view/viewDispose.test.d.ts +0 -2
  272. package/dist/src/view/viewDispose.test.d.ts.map +0 -1
  273. package/dist/src/view/viewFactory.test.d.ts +0 -2
  274. package/dist/src/view/viewFactory.test.d.ts.map +0 -1
  275. package/dist/src/view/viewParamRuntime.test.d.ts +0 -2
  276. package/dist/src/view/viewParamRuntime.test.d.ts.map +0 -1
  277. package/dist/src/view/viewSelectors.test.d.ts +0 -2
  278. package/dist/src/view/viewSelectors.test.d.ts.map +0 -1
  279. package/dist/src/view/viewUtils.test.d.ts +0 -2
  280. package/dist/src/view/viewUtils.test.d.ts.map +0 -1
@@ -0,0 +1,1663 @@
1
+ const fe = [
2
+ "BOOLEAN",
3
+ "INT32",
4
+ "INT64",
5
+ "INT96",
6
+ // deprecated
7
+ "FLOAT",
8
+ "DOUBLE",
9
+ "BYTE_ARRAY",
10
+ "FIXED_LEN_BYTE_ARRAY"
11
+ ], b = [
12
+ "PLAIN",
13
+ "GROUP_VAR_INT",
14
+ // deprecated
15
+ "PLAIN_DICTIONARY",
16
+ "RLE",
17
+ "BIT_PACKED",
18
+ // deprecated
19
+ "DELTA_BINARY_PACKED",
20
+ "DELTA_LENGTH_BYTE_ARRAY",
21
+ "DELTA_BYTE_ARRAY",
22
+ "RLE_DICTIONARY",
23
+ "BYTE_STREAM_SPLIT"
24
+ ], xe = [
25
+ "REQUIRED",
26
+ "OPTIONAL",
27
+ "REPEATED"
28
+ ], Me = [
29
+ "UTF8",
30
+ "MAP",
31
+ "MAP_KEY_VALUE",
32
+ "LIST",
33
+ "ENUM",
34
+ "DECIMAL",
35
+ "DATE",
36
+ "TIME_MILLIS",
37
+ "TIME_MICROS",
38
+ "TIMESTAMP_MILLIS",
39
+ "TIMESTAMP_MICROS",
40
+ "UINT_8",
41
+ "UINT_16",
42
+ "UINT_32",
43
+ "UINT_64",
44
+ "INT_8",
45
+ "INT_16",
46
+ "INT_32",
47
+ "INT_64",
48
+ "JSON",
49
+ "BSON",
50
+ "INTERVAL"
51
+ ], Fe = [
52
+ "UNCOMPRESSED",
53
+ "SNAPPY",
54
+ "GZIP",
55
+ "LZO",
56
+ "BROTLI",
57
+ "LZ4",
58
+ "ZSTD",
59
+ "LZ4_RAW"
60
+ ], pe = [
61
+ "DATA_PAGE",
62
+ "INDEX_PAGE",
63
+ "DICTIONARY_PAGE",
64
+ "DATA_PAGE_V2"
65
+ ], Ce = [
66
+ "SPHERICAL",
67
+ "VINCENTY",
68
+ "THOMAS",
69
+ "ANDOYER",
70
+ "KARNEY"
71
+ ];
72
+ function W(e) {
73
+ const t = F(e);
74
+ if (t.type === 1)
75
+ return { type: "Point", coordinates: H(e, t) };
76
+ if (t.type === 2)
77
+ return { type: "LineString", coordinates: K(e, t) };
78
+ if (t.type === 3)
79
+ return { type: "Polygon", coordinates: oe(e, t) };
80
+ if (t.type === 4) {
81
+ const n = [];
82
+ for (let i = 0; i < t.count; i++)
83
+ n.push(H(e, F(e)));
84
+ return { type: "MultiPoint", coordinates: n };
85
+ } else if (t.type === 5) {
86
+ const n = [];
87
+ for (let i = 0; i < t.count; i++)
88
+ n.push(K(e, F(e)));
89
+ return { type: "MultiLineString", coordinates: n };
90
+ } else if (t.type === 6) {
91
+ const n = [];
92
+ for (let i = 0; i < t.count; i++)
93
+ n.push(oe(e, F(e)));
94
+ return { type: "MultiPolygon", coordinates: n };
95
+ } else if (t.type === 7) {
96
+ const n = [];
97
+ for (let i = 0; i < t.count; i++)
98
+ n.push(W(e));
99
+ return { type: "GeometryCollection", geometries: n };
100
+ } else
101
+ throw new Error(`Unsupported geometry type: ${t.type}`);
102
+ }
103
+ function F(e) {
104
+ const { view: t } = e, n = t.getUint8(e.offset++) === 1, i = t.getUint32(e.offset, n);
105
+ e.offset += 4;
106
+ const f = i % 1e3, o = Math.floor(i / 1e3);
107
+ let r = 0;
108
+ f > 1 && f <= 7 && (r = t.getUint32(e.offset, n), e.offset += 4);
109
+ let s = 2;
110
+ return o && s++, o === 3 && s++, { littleEndian: n, type: f, dim: s, count: r };
111
+ }
112
+ function H(e, t) {
113
+ const n = [];
114
+ for (let i = 0; i < t.dim; i++) {
115
+ const f = e.view.getFloat64(e.offset, t.littleEndian);
116
+ e.offset += 8, n.push(f);
117
+ }
118
+ return n;
119
+ }
120
+ function K(e, t) {
121
+ const n = [];
122
+ for (let i = 0; i < t.count; i++)
123
+ n.push(H(e, t));
124
+ return n;
125
+ }
126
+ function oe(e, t) {
127
+ const { view: n } = e, i = [];
128
+ for (let f = 0; f < t.count; f++) {
129
+ const o = n.getUint32(e.offset, t.littleEndian);
130
+ e.offset += 4, i.push(K(e, { ...t, count: o }));
131
+ }
132
+ return i;
133
+ }
134
+ const we = new TextDecoder(), j = {
135
+ timestampFromMilliseconds(e) {
136
+ return new Date(Number(e));
137
+ },
138
+ timestampFromMicroseconds(e) {
139
+ return new Date(Number(e / 1000n));
140
+ },
141
+ timestampFromNanoseconds(e) {
142
+ return new Date(Number(e / 1000000n));
143
+ },
144
+ dateFromDays(e) {
145
+ return new Date(e * 864e5);
146
+ },
147
+ stringFromBytes(e) {
148
+ return e && we.decode(e);
149
+ },
150
+ geometryFromBytes(e) {
151
+ return e && W({ view: new DataView(e.buffer, e.byteOffset, e.byteLength), offset: 0 });
152
+ },
153
+ geographyFromBytes(e) {
154
+ return e && W({ view: new DataView(e.buffer, e.byteOffset, e.byteLength), offset: 0 });
155
+ }
156
+ };
157
+ function se(e, t, n, i) {
158
+ if (t && n.endsWith("_DICTIONARY")) {
159
+ let f = e;
160
+ e instanceof Uint8Array && !(t instanceof Uint8Array) && (f = new t.constructor(e.length));
161
+ for (let o = 0; o < e.length; o++)
162
+ f[o] = t[e[o]];
163
+ return f;
164
+ } else
165
+ return ye(e, i);
166
+ }
167
+ function ye(e, t) {
168
+ const { element: n, parsers: i, utf8: f = !0, schemaPath: o } = t, { type: r, converted_type: s, logical_type: l } = n;
169
+ if (o?.some((u) => u.element.logical_type?.type === "VARIANT") && r === "BYTE_ARRAY" && s !== "UTF8" && l?.type !== "STRING")
170
+ return e;
171
+ if (s === "DECIMAL") {
172
+ const c = 10 ** -(n.scale || 0), d = new Array(e.length);
173
+ for (let g = 0; g < d.length; g++)
174
+ e[g] instanceof Uint8Array ? d[g] = me(e[g]) * c : d[g] = Number(e[g]) * c;
175
+ return d;
176
+ }
177
+ if (!s && r === "INT96")
178
+ return Array.from(e).map((u) => i.timestampFromNanoseconds(ke(u)));
179
+ if (s === "DATE")
180
+ return Array.from(e).map((u) => i.dateFromDays(u));
181
+ if (s === "TIMESTAMP_MILLIS")
182
+ return Array.from(e).map((u) => i.timestampFromMilliseconds(u));
183
+ if (s === "TIMESTAMP_MICROS")
184
+ return Array.from(e).map((u) => i.timestampFromMicroseconds(u));
185
+ if (s === "JSON")
186
+ return e.map((u) => JSON.parse(we.decode(u)));
187
+ if (s === "BSON")
188
+ throw new Error("parquet bson not supported");
189
+ if (s === "INTERVAL")
190
+ throw new Error("parquet interval not supported");
191
+ if (l?.type === "GEOMETRY")
192
+ return e.map((u) => i.geometryFromBytes(u));
193
+ if (l?.type === "GEOGRAPHY")
194
+ return e.map((u) => i.geographyFromBytes(u));
195
+ if (s === "UTF8" || l?.type === "STRING" || f && r === "BYTE_ARRAY")
196
+ return e.map((u) => i.stringFromBytes(u));
197
+ if (s === "UINT_64" || l?.type === "INTEGER" && l.bitWidth === 64 && !l.isSigned) {
198
+ if (e instanceof BigInt64Array)
199
+ return new BigUint64Array(e.buffer, e.byteOffset, e.length);
200
+ const u = new BigUint64Array(e.length);
201
+ for (let c = 0; c < u.length; c++) u[c] = BigInt(e[c]);
202
+ return u;
203
+ }
204
+ if (s === "UINT_32" || l?.type === "INTEGER" && l.bitWidth === 32 && !l.isSigned) {
205
+ if (e instanceof Int32Array)
206
+ return new Uint32Array(e.buffer, e.byteOffset, e.length);
207
+ const u = new Uint32Array(e.length);
208
+ for (let c = 0; c < u.length; c++) u[c] = e[c];
209
+ return u;
210
+ }
211
+ if (l?.type === "FLOAT16")
212
+ return Array.from(e).map(Ae);
213
+ if (l?.type === "TIMESTAMP") {
214
+ const { unit: u } = l;
215
+ let c = i.timestampFromMilliseconds;
216
+ u === "MICROS" && (c = i.timestampFromMicroseconds), u === "NANOS" && (c = i.timestampFromNanoseconds);
217
+ const d = new Array(e.length);
218
+ for (let g = 0; g < d.length; g++)
219
+ d[g] = c(e[g]);
220
+ return d;
221
+ }
222
+ return e;
223
+ }
224
+ function me(e) {
225
+ if (!e.length) return 0;
226
+ let t = 0n;
227
+ for (const i of e)
228
+ t = t * 256n + BigInt(i);
229
+ const n = e.length * 8;
230
+ return t >= 2n ** BigInt(n - 1) && (t -= 2n ** BigInt(n)), Number(t);
231
+ }
232
+ function ke(e) {
233
+ const t = (e >> 64n) - 2440588n, n = e & 0xffffffffffffffffn;
234
+ return t * 86400000000000n + n;
235
+ }
236
+ function Ae(e) {
237
+ if (!e) return;
238
+ const t = e[1] << 8 | e[0], n = t >> 15 ? -1 : 1, i = t >> 10 & 31, f = t & 1023;
239
+ return i === 0 ? n * 2 ** -14 * (f / 1024) : i === 31 ? f ? NaN : n * (1 / 0) : n * 2 ** (i - 15) * (1 + f / 1024);
240
+ }
241
+ function Ee(e, t, n) {
242
+ const i = e[t], f = [];
243
+ let o = 1;
244
+ if (i.num_children)
245
+ for (; f.length < i.num_children; ) {
246
+ const r = e[t + o], s = Ee(e, t + o, [...n, r.name]);
247
+ o += s.count, f.push(s);
248
+ }
249
+ return { count: o, element: i, children: f, path: n };
250
+ }
251
+ function Ie(e, t) {
252
+ let n = Ee(e, 0, []);
253
+ const i = [n];
254
+ for (const f of t) {
255
+ const o = n.children.find((r) => r.element.name === f);
256
+ if (!o) throw new Error(`parquet schema element not found: ${t}`);
257
+ i.push(o), n = o;
258
+ }
259
+ return i;
260
+ }
261
+ function Ye(e) {
262
+ const t = [];
263
+ function n(i) {
264
+ if (i.children.length)
265
+ for (const f of i.children)
266
+ n(f);
267
+ else
268
+ t.push(i.path.join("."));
269
+ }
270
+ return n(e), t;
271
+ }
272
+ function ve(e) {
273
+ let t = 0;
274
+ for (const { element: n } of e)
275
+ n.repetition_type === "REPEATED" && t++;
276
+ return t;
277
+ }
278
+ function J(e) {
279
+ let t = 0;
280
+ for (const { element: n } of e.slice(1))
281
+ n.repetition_type !== "REQUIRED" && t++;
282
+ return t;
283
+ }
284
+ function $e(e) {
285
+ if (!e || e.element.converted_type !== "LIST" || e.children.length > 1) return !1;
286
+ const t = e.children[0];
287
+ return !(t.children.length > 1 || t.element.repetition_type !== "REPEATED");
288
+ }
289
+ function qe(e) {
290
+ if (!e || e.element.converted_type !== "MAP" || e.children.length > 1) return !1;
291
+ const t = e.children[0];
292
+ return !(t.children.length !== 2 || t.element.repetition_type !== "REPEATED" || t.children.find((f) => f.element.name === "key")?.element.repetition_type === "REPEATED" || t.children.find((f) => f.element.name === "value")?.element.repetition_type === "REPEATED");
293
+ }
294
+ function be(e) {
295
+ if (e.length !== 2) return !1;
296
+ const [, t] = e;
297
+ return !(t.element.repetition_type === "REPEATED" || t.children.length);
298
+ }
299
+ const A = {
300
+ STOP: 0,
301
+ TRUE: 1,
302
+ FALSE: 2,
303
+ BYTE: 3,
304
+ I16: 4,
305
+ I32: 5,
306
+ I64: 6,
307
+ DOUBLE: 7,
308
+ BINARY: 8,
309
+ LIST: 9,
310
+ STRUCT: 12
311
+ };
312
+ function ee(e) {
313
+ let t = 0;
314
+ const n = {};
315
+ for (; e.offset < e.view.byteLength; ) {
316
+ const [i, f, o] = Le(e, t);
317
+ if (t = o, i === A.STOP)
318
+ break;
319
+ n[`field_${f}`] = k(e, i);
320
+ }
321
+ return n;
322
+ }
323
+ function k(e, t) {
324
+ switch (t) {
325
+ case A.TRUE:
326
+ return !0;
327
+ case A.FALSE:
328
+ return !1;
329
+ case A.BYTE:
330
+ return e.view.getInt8(e.offset++);
331
+ case A.I16:
332
+ case A.I32:
333
+ return Te(e);
334
+ case A.I64:
335
+ return Z(e);
336
+ case A.DOUBLE: {
337
+ const n = e.view.getFloat64(e.offset, !0);
338
+ return e.offset += 8, n;
339
+ }
340
+ case A.BINARY: {
341
+ const n = T(e), i = new Uint8Array(e.view.buffer, e.view.byteOffset + e.offset, n);
342
+ return e.offset += n, i;
343
+ }
344
+ case A.LIST: {
345
+ const n = e.view.getUint8(e.offset++), i = n & 15;
346
+ let f = n >> 4;
347
+ f === 15 && (f = T(e));
348
+ const o = i === A.TRUE || i === A.FALSE, r = new Array(f);
349
+ for (let s = 0; s < f; s++)
350
+ r[s] = o ? k(e, A.BYTE) === 1 : k(e, i);
351
+ return r;
352
+ }
353
+ case A.STRUCT: {
354
+ const n = {};
355
+ let i = 0;
356
+ for (; ; ) {
357
+ const [f, o, r] = Le(e, i);
358
+ if (i = r, f === A.STOP)
359
+ break;
360
+ n[`field_${o}`] = k(e, f);
361
+ }
362
+ return n;
363
+ }
364
+ // TODO: MAP, SET, UUID
365
+ default:
366
+ throw new Error(`thrift unhandled type: ${t}`);
367
+ }
368
+ }
369
+ function T(e) {
370
+ let t = 0, n = 0;
371
+ for (; ; ) {
372
+ const i = e.view.getUint8(e.offset++);
373
+ if (t |= (i & 127) << n, !(i & 128))
374
+ return t;
375
+ n += 7;
376
+ }
377
+ }
378
+ function je(e) {
379
+ let t = 0n, n = 0n;
380
+ for (; ; ) {
381
+ const i = e.view.getUint8(e.offset++);
382
+ if (t |= BigInt(i & 127) << n, !(i & 128))
383
+ return t;
384
+ n += 7n;
385
+ }
386
+ }
387
+ function Te(e) {
388
+ const t = T(e);
389
+ return t >>> 1 ^ -(t & 1);
390
+ }
391
+ function Z(e) {
392
+ const t = je(e);
393
+ return t >> 1n ^ -(t & 1n);
394
+ }
395
+ function Le(e, t) {
396
+ const n = e.view.getUint8(e.offset++), i = n & 15;
397
+ if (i === A.STOP)
398
+ return [0, 0, t];
399
+ const f = n >> 4, o = f ? t + f : Te(e);
400
+ return [i, o, o];
401
+ }
402
+ function Ve(e, t) {
403
+ const n = /* @__PURE__ */ new Map(), i = t?.find(({ key: o }) => o === "geo")?.value, f = (i && JSON.parse(i)?.columns) ?? {};
404
+ for (const [o, r] of Object.entries(f)) {
405
+ if (r.encoding !== "WKB")
406
+ continue;
407
+ const s = r.edges === "spherical" ? "GEOGRAPHY" : "GEOMETRY", l = r.crs?.id ?? r.crs?.ids?.[0], a = l ? `${l.authority}:${l.code.toString()}` : void 0;
408
+ n.set(o, { type: s, crs: a });
409
+ }
410
+ for (let o = 1; o < e.length; o++) {
411
+ const r = e[o], { logical_type: s, name: l, num_children: a, repetition_type: u, type: c } = r;
412
+ if (a) {
413
+ o += a;
414
+ continue;
415
+ }
416
+ c === "BYTE_ARRAY" && s === void 0 && u !== "REPEATED" && (r.logical_type = n.get(l));
417
+ }
418
+ }
419
+ const Ge = 1 << 19, ze = new TextDecoder();
420
+ function I(e) {
421
+ return e && ze.decode(e);
422
+ }
423
+ async function We(e, { parsers: t, initialFetchSize: n = Ge, geoparquet: i = !0 } = {}) {
424
+ if (!e || !(e.byteLength >= 0)) throw new Error("parquet expected AsyncBuffer");
425
+ const f = Math.max(0, e.byteLength - n), o = await e.slice(f, e.byteLength), r = new DataView(o);
426
+ if (r.getUint32(o.byteLength - 4, !0) !== 827474256)
427
+ throw new Error("parquet file invalid (footer != PAR1)");
428
+ const s = r.getUint32(o.byteLength - 8, !0);
429
+ if (s > e.byteLength - 8)
430
+ throw new Error(`parquet metadata length ${s} exceeds available buffer ${e.byteLength - 8}`);
431
+ if (s + 8 > n) {
432
+ const l = e.byteLength - s - 8, a = await e.slice(l, f), u = new ArrayBuffer(s + 8), c = new Uint8Array(u);
433
+ return c.set(new Uint8Array(a)), c.set(new Uint8Array(o), f - l), re(u, { parsers: t, geoparquet: i });
434
+ } else
435
+ return re(o, { parsers: t, geoparquet: i });
436
+ }
437
+ function re(e, { parsers: t, geoparquet: n = !0 } = {}) {
438
+ if (!(e instanceof ArrayBuffer)) throw new Error("parquet expected ArrayBuffer");
439
+ const i = new DataView(e);
440
+ if (t = { ...j, ...t }, i.byteLength < 8)
441
+ throw new Error("parquet file is too short");
442
+ if (i.getUint32(i.byteLength - 4, !0) !== 827474256)
443
+ throw new Error("parquet file invalid (footer != PAR1)");
444
+ const f = i.byteLength - 8, o = i.getUint32(f, !0);
445
+ if (o > i.byteLength - 8)
446
+ throw new Error(`parquet metadata length ${o} exceeds available buffer ${i.byteLength - 8}`);
447
+ const r = f - o, l = ee({ view: i, offset: r }), a = l.field_1, u = l.field_2.map((h) => ({
448
+ type: fe[h.field_1],
449
+ type_length: h.field_2,
450
+ repetition_type: xe[h.field_3],
451
+ name: I(h.field_4),
452
+ num_children: h.field_5,
453
+ converted_type: Me[h.field_6],
454
+ scale: h.field_7,
455
+ precision: h.field_8,
456
+ field_id: h.field_9,
457
+ logical_type: He(h.field_10)
458
+ })), c = u.filter((h) => h.type), d = l.field_3, g = l.field_4.map((h) => ({
459
+ columns: h.field_1.map((_, m) => ({
460
+ file_path: I(_.field_1),
461
+ file_offset: _.field_2,
462
+ meta_data: _.field_3 && {
463
+ type: fe[_.field_3.field_1],
464
+ encodings: _.field_3.field_2?.map((y) => b[y]),
465
+ path_in_schema: _.field_3.field_3.map(I),
466
+ codec: Fe[_.field_3.field_4],
467
+ num_values: _.field_3.field_5,
468
+ total_uncompressed_size: _.field_3.field_6,
469
+ total_compressed_size: _.field_3.field_7,
470
+ key_value_metadata: _.field_3.field_8?.map((y) => ({
471
+ key: I(y.field_1),
472
+ value: I(y.field_2)
473
+ })),
474
+ data_page_offset: _.field_3.field_9,
475
+ index_page_offset: _.field_3.field_10,
476
+ dictionary_page_offset: _.field_3.field_11,
477
+ statistics: Ke(_.field_3.field_12, c[m], t),
478
+ encoding_stats: _.field_3.field_13?.map((y) => ({
479
+ page_type: pe[y.field_1],
480
+ encoding: b[y.field_2],
481
+ count: y.field_3
482
+ })),
483
+ bloom_filter_offset: _.field_3.field_14,
484
+ bloom_filter_length: _.field_3.field_15,
485
+ size_statistics: _.field_3.field_16 && {
486
+ unencoded_byte_array_data_bytes: _.field_3.field_16.field_1,
487
+ repetition_level_histogram: _.field_3.field_16.field_2,
488
+ definition_level_histogram: _.field_3.field_16.field_3
489
+ },
490
+ geospatial_statistics: _.field_3.field_17 && {
491
+ bbox: _.field_3.field_17.field_1 && {
492
+ xmin: _.field_3.field_17.field_1.field_1,
493
+ xmax: _.field_3.field_17.field_1.field_2,
494
+ ymin: _.field_3.field_17.field_1.field_3,
495
+ ymax: _.field_3.field_17.field_1.field_4,
496
+ zmin: _.field_3.field_17.field_1.field_5,
497
+ zmax: _.field_3.field_17.field_1.field_6,
498
+ mmin: _.field_3.field_17.field_1.field_7,
499
+ mmax: _.field_3.field_17.field_1.field_8
500
+ },
501
+ geospatial_types: _.field_3.field_17.field_2
502
+ }
503
+ },
504
+ offset_index_offset: _.field_4,
505
+ offset_index_length: _.field_5,
506
+ column_index_offset: _.field_6,
507
+ column_index_length: _.field_7,
508
+ crypto_metadata: _.field_8,
509
+ encrypted_column_metadata: _.field_9
510
+ })),
511
+ total_byte_size: h.field_2,
512
+ num_rows: h.field_3,
513
+ sorting_columns: h.field_4?.map((_) => ({
514
+ column_idx: _.field_1,
515
+ descending: _.field_2,
516
+ nulls_first: _.field_3
517
+ })),
518
+ file_offset: h.field_5,
519
+ total_compressed_size: h.field_6,
520
+ ordinal: h.field_7
521
+ })), p = l.field_5?.map((h) => ({
522
+ key: I(h.field_1),
523
+ value: I(h.field_2)
524
+ })), w = I(l.field_6);
525
+ return n && Ve(u, p), {
526
+ version: a,
527
+ schema: u,
528
+ num_rows: d,
529
+ row_groups: g,
530
+ key_value_metadata: p,
531
+ created_by: w,
532
+ metadata_length: o
533
+ };
534
+ }
535
+ function Re({ schema: e }) {
536
+ return Ie(e, [])[0];
537
+ }
538
+ function He(e) {
539
+ return e?.field_1 ? { type: "STRING" } : e?.field_2 ? { type: "MAP" } : e?.field_3 ? { type: "LIST" } : e?.field_4 ? { type: "ENUM" } : e?.field_5 ? {
540
+ type: "DECIMAL",
541
+ scale: e.field_5.field_1,
542
+ precision: e.field_5.field_2
543
+ } : e?.field_6 ? { type: "DATE" } : e?.field_7 ? {
544
+ type: "TIME",
545
+ isAdjustedToUTC: e.field_7.field_1,
546
+ unit: le(e.field_7.field_2)
547
+ } : e?.field_8 ? {
548
+ type: "TIMESTAMP",
549
+ isAdjustedToUTC: e.field_8.field_1,
550
+ unit: le(e.field_8.field_2)
551
+ } : e?.field_10 ? {
552
+ type: "INTEGER",
553
+ bitWidth: e.field_10.field_1,
554
+ isSigned: e.field_10.field_2
555
+ } : e?.field_11 ? { type: "NULL" } : e?.field_12 ? { type: "JSON" } : e?.field_13 ? { type: "BSON" } : e?.field_14 ? { type: "UUID" } : e?.field_15 ? { type: "FLOAT16" } : e?.field_16 ? {
556
+ type: "VARIANT",
557
+ specification_version: e.field_16.field_1
558
+ } : e?.field_17 ? {
559
+ type: "GEOMETRY",
560
+ crs: I(e.field_17.field_1)
561
+ } : e?.field_18 ? {
562
+ type: "GEOGRAPHY",
563
+ crs: I(e.field_18.field_1),
564
+ algorithm: Ce[e.field_18.field_2]
565
+ } : e;
566
+ }
567
+ function le(e) {
568
+ if (e.field_1) return "MILLIS";
569
+ if (e.field_2) return "MICROS";
570
+ if (e.field_3) return "NANOS";
571
+ throw new Error("parquet time unit required");
572
+ }
573
+ function Ke(e, t, n) {
574
+ return e && {
575
+ max: C(e.field_1, t, n),
576
+ min: C(e.field_2, t, n),
577
+ null_count: e.field_3,
578
+ distinct_count: e.field_4,
579
+ max_value: C(e.field_5, t, n),
580
+ min_value: C(e.field_6, t, n),
581
+ is_max_value_exact: e.field_7,
582
+ is_min_value_exact: e.field_8
583
+ };
584
+ }
585
+ function C(e, t, n) {
586
+ const { type: i, converted_type: f, logical_type: o } = t;
587
+ if (e === void 0) return e;
588
+ if (i === "BOOLEAN") return e[0] === 1;
589
+ if (i === "BYTE_ARRAY") return n.stringFromBytes(e);
590
+ const r = new DataView(e.buffer, e.byteOffset, e.byteLength);
591
+ return i === "FLOAT" && r.byteLength === 4 ? r.getFloat32(0, !0) : i === "DOUBLE" && r.byteLength === 8 ? r.getFloat64(0, !0) : i === "INT32" && f === "DATE" ? n.dateFromDays(r.getInt32(0, !0)) : i === "INT64" && f === "TIMESTAMP_MILLIS" ? n.timestampFromMilliseconds(r.getBigInt64(0, !0)) : i === "INT64" && f === "TIMESTAMP_MICROS" ? n.timestampFromMicroseconds(r.getBigInt64(0, !0)) : i === "INT64" && o?.type === "TIMESTAMP" && o?.unit === "NANOS" ? n.timestampFromNanoseconds(r.getBigInt64(0, !0)) : i === "INT64" && o?.type === "TIMESTAMP" && o?.unit === "MICROS" ? n.timestampFromMicroseconds(r.getBigInt64(0, !0)) : i === "INT64" && o?.type === "TIMESTAMP" ? n.timestampFromMilliseconds(r.getBigInt64(0, !0)) : i === "INT32" && r.byteLength === 4 ? r.getInt32(0, !0) : i === "INT64" && r.byteLength === 8 ? r.getBigInt64(0, !0) : f === "DECIMAL" ? me(e) * 10 ** -(t.scale || 0) : o?.type === "FLOAT16" ? Ae(e) : e;
592
+ }
593
+ function Ne(e, t) {
594
+ for (let i = 0; i < t.length; i += 1e4)
595
+ e.push(...t.slice(i, i + 1e4));
596
+ }
597
+ function R(e, t, n = !0) {
598
+ if (n ? e === t : e == t) return !0;
599
+ if (e instanceof Uint8Array && t instanceof Uint8Array) return R(Array.from(e), Array.from(t), n);
600
+ if (!e || !t || typeof e != typeof t) return !1;
601
+ if (Array.isArray(e) && Array.isArray(t)) {
602
+ if (e.length !== t.length) return !1;
603
+ for (let f = 0; f < e.length; f++)
604
+ if (!R(e[f], t[f], n)) return !1;
605
+ return !0;
606
+ }
607
+ if (typeof e != "object") return !1;
608
+ const i = Object.keys(e);
609
+ if (i.length !== Object.keys(t).length) return !1;
610
+ for (const f of i)
611
+ if (!R(e[f], t[f], n)) return !1;
612
+ return !0;
613
+ }
614
+ function Ze(e) {
615
+ if (!e) return [];
616
+ if (e.length === 1) return e[0];
617
+ const t = [];
618
+ for (const n of e)
619
+ Ne(t, n);
620
+ return t;
621
+ }
622
+ function Q({ rowGroup: e, physicalColumns: t, filter: n, strict: i = !0 }) {
623
+ if (!n) return !1;
624
+ if ("$and" in n && Array.isArray(n.$and))
625
+ return n.$and.some((f) => Q({ rowGroup: e, physicalColumns: t, filter: f, strict: i }));
626
+ if ("$or" in n && Array.isArray(n.$or))
627
+ return n.$or.every((f) => Q({ rowGroup: e, physicalColumns: t, filter: f, strict: i }));
628
+ if ("$nor" in n && Array.isArray(n.$nor))
629
+ return !1;
630
+ for (const [f, o] of Object.entries(n)) {
631
+ const r = t.indexOf(f);
632
+ if (r === -1) continue;
633
+ const s = e.columns[r].meta_data?.statistics;
634
+ if (!s) continue;
635
+ const { min: l, max: a, min_value: u, max_value: c } = s, d = u !== void 0 ? u : l, g = c !== void 0 ? c : a;
636
+ if (!(d === void 0 || g === void 0)) {
637
+ for (const [p, w] of Object.entries(o || {}))
638
+ if (p === "$gt" && g <= w || p === "$gte" && g < w || p === "$lt" && d >= w || p === "$lte" && d > w || p === "$eq" && (w < d || w > g) || p === "$ne" && R(d, g, i) && R(d, w, i) || p === "$in" && Array.isArray(w) && w.every((h) => h < d || h > g) || p === "$nin" && Array.isArray(w) && R(d, g, i) && w.includes(d)) return !0;
639
+ }
640
+ }
641
+ return !1;
642
+ }
643
+ const Qe = 1 << 21;
644
+ function Xe({ metadata: e, rowStart: t = 0, rowEnd: n = 1 / 0, columns: i, filter: f, filterStrict: o = !0, useOffsetIndex: r = !1 }) {
645
+ if (!e) throw new Error("parquetPlan requires metadata");
646
+ const s = [], l = [], a = [], u = Ye(Re(e));
647
+ let c = 0;
648
+ for (const d of e.row_groups) {
649
+ const g = Number(d.num_rows), p = c + g;
650
+ if (g > 0 && p > t && c < n && !Q({ rowGroup: d, physicalColumns: u, filter: f, strict: o })) {
651
+ const w = [];
652
+ for (const y of d.columns) {
653
+ const E = y.meta_data;
654
+ if (y.file_path) throw new Error("parquet file_path not supported");
655
+ if (!E) throw new Error("parquet column metadata is undefined");
656
+ if (!i || i.includes(E.path_in_schema[0])) {
657
+ const D = E.dictionary_page_offset || E.data_page_offset, P = Number(D), U = Number(D + E.total_compressed_size);
658
+ if (r && y.offset_index_offset && y.offset_index_length) {
659
+ const x = Number(y.offset_index_offset);
660
+ w.push({
661
+ columnMetadata: E,
662
+ offsetIndex: {
663
+ startByte: x,
664
+ endByte: x + y.offset_index_length
665
+ },
666
+ bounds: { startByte: P, endByte: U }
667
+ });
668
+ } else
669
+ w.push({
670
+ columnMetadata: E,
671
+ range: { startByte: P, endByte: U }
672
+ });
673
+ }
674
+ }
675
+ const h = Math.max(t - c, 0), _ = Math.min(n - c, g);
676
+ s.push({ chunks: w, rowGroup: d, groupStart: c, groupRows: g, selectStart: h, selectEnd: _ });
677
+ let m;
678
+ for (const y of w)
679
+ if ("offsetIndex" in y)
680
+ a.push(y.offsetIndex);
681
+ else {
682
+ const { range: E } = y;
683
+ i ? l.push(E) : m && E.endByte - m.startByte <= Qe ? m.endByte = E.endByte : (m && l.push(m), m = { ...E });
684
+ }
685
+ m && l.push(m);
686
+ }
687
+ c = p;
688
+ }
689
+ return isFinite(n) || (n = c), l.push(...a), { metadata: e, rowStart: t, rowEnd: n, columns: i, fetches: l, groups: s };
690
+ }
691
+ function Je(e, { fetches: t }) {
692
+ const n = t.map(({ startByte: i, endByte: f }) => e.slice(i, f));
693
+ return {
694
+ byteLength: e.byteLength,
695
+ slice(i, f = e.byteLength) {
696
+ const o = t.findIndex(({ startByte: r, endByte: s }) => r <= i && f <= s);
697
+ if (o < 0)
698
+ return e.slice(i, f);
699
+ if (t[o].startByte !== i || t[o].endByte !== f) {
700
+ const r = i - t[o].startByte, s = f - t[o].startByte;
701
+ return n[o] instanceof Promise ? n[o].then((l) => l.slice(r, s)) : n[o].slice(r, s);
702
+ } else
703
+ return n[o];
704
+ }
705
+ };
706
+ }
707
+ const te = new TextDecoder(), ce = /* @__PURE__ */ new WeakMap();
708
+ function Oe(e, t = j) {
709
+ if (Array.isArray(e))
710
+ return e.map((n) => Oe(n, t));
711
+ if (typeof e != "object") return e;
712
+ if ("metadata" in e) {
713
+ const n = et(e.metadata), i = e.typed_value && Y(e.typed_value, n, t), f = e.value && S(q(e.value), n, t);
714
+ return i && f ? { ...f, ...i } : i ?? f;
715
+ }
716
+ return e;
717
+ }
718
+ function Y(e, t, n) {
719
+ if (e && typeof e == "object" && !Array.isArray(e) && !(e instanceof Uint8Array)) {
720
+ if ("typed_value" in e)
721
+ return Y(e.typed_value, t, n);
722
+ if ("value" in e && e.value instanceof Uint8Array)
723
+ return S(q(e.value), t, n);
724
+ const i = {};
725
+ for (const [f, o] of Object.entries(e))
726
+ i[f] = Y(o, t, n);
727
+ return i;
728
+ }
729
+ return e instanceof Uint8Array ? S(q(e), t, n) : Array.isArray(e) ? e.map((i) => Y(i, t, n)) : e;
730
+ }
731
+ function q(e) {
732
+ return { view: new DataView(e.buffer, e.byteOffset, e.byteLength), offset: 0 };
733
+ }
734
+ function et(e) {
735
+ let t = ce.get(e.buffer);
736
+ t || (t = /* @__PURE__ */ new Map(), ce.set(e.buffer, t));
737
+ const n = `${e.byteOffset}:${e.byteLength}`, i = t.get(n);
738
+ if (i) return i;
739
+ const f = q(e), o = f.view.getUint8(f.offset++), r = o & 15;
740
+ if (r !== 1) throw new Error(`parquet unsupported variant metadata version: ${r}`);
741
+ const s = (o >> 4 & 1) === 1, l = (o >> 6 & 3) + 1, a = L(f, l), u = new Array(a + 1);
742
+ for (let p = 0; p < u.length; p++)
743
+ u[p] = L(f, l);
744
+ const c = f.offset, d = new Array(a);
745
+ for (let p = 0; p < a; p++) {
746
+ const w = u[p], h = u[p + 1], _ = new Uint8Array(e.buffer, e.byteOffset + c + w, h - w);
747
+ d[p] = te.decode(_);
748
+ }
749
+ const g = { dictionary: d, sorted: s };
750
+ return t.set(n, g), g;
751
+ }
752
+ function L(e, t) {
753
+ let n = 0;
754
+ for (let i = 0; i < t; i++)
755
+ n |= e.view.getUint8(e.offset + i) << i * 8;
756
+ return e.offset += t, n;
757
+ }
758
+ function S(e, t, n) {
759
+ const i = e.view.getUint8(e.offset++), f = i & 3, o = i >> 2;
760
+ if (f === 0) return tt(e, o, n);
761
+ if (f === 2) return nt(e, o, t, n);
762
+ if (f === 3) return it(e, o, t, n);
763
+ const r = new Uint8Array(e.view.buffer, e.view.byteOffset + e.offset, o);
764
+ return e.offset += o, te.decode(r);
765
+ }
766
+ function tt(e, t, n) {
767
+ switch (t) {
768
+ case 0:
769
+ return null;
770
+ case 1:
771
+ return !0;
772
+ case 2:
773
+ return !1;
774
+ case 3: {
775
+ const i = e.view.getInt8(e.offset);
776
+ return e.offset += 1, i;
777
+ }
778
+ case 4: {
779
+ const i = e.view.getInt16(e.offset, !0);
780
+ return e.offset += 2, i;
781
+ }
782
+ case 5: {
783
+ const i = e.view.getInt32(e.offset, !0);
784
+ return e.offset += 4, i;
785
+ }
786
+ case 6: {
787
+ const i = e.view.getBigInt64(e.offset, !0);
788
+ return e.offset += 8, i;
789
+ }
790
+ case 7: {
791
+ const i = e.view.getFloat64(e.offset, !0);
792
+ return e.offset += 8, i;
793
+ }
794
+ case 8:
795
+ return z(e, 4);
796
+ case 9:
797
+ return z(e, 8);
798
+ case 10:
799
+ return z(e, 16);
800
+ case 11: {
801
+ const i = e.view.getInt32(e.offset, !0);
802
+ return e.offset += 4, n.dateFromDays(i);
803
+ }
804
+ case 12:
805
+ // timestamp_micros (utc)
806
+ case 13: {
807
+ const i = e.view.getBigInt64(e.offset, !0);
808
+ return e.offset += 8, n.timestampFromMicroseconds(i);
809
+ }
810
+ case 14: {
811
+ const i = e.view.getFloat32(e.offset, !0);
812
+ return e.offset += 4, i;
813
+ }
814
+ case 15:
815
+ return ue(e);
816
+ case 16: {
817
+ const i = ue(e);
818
+ return te.decode(i);
819
+ }
820
+ case 17: {
821
+ const i = e.view.getBigInt64(e.offset, !0);
822
+ return e.offset += 8, i;
823
+ }
824
+ case 18:
825
+ // timestamp_nanos (utc)
826
+ case 19: {
827
+ const i = e.view.getBigInt64(e.offset, !0);
828
+ return e.offset += 8, n.timestampFromNanoseconds(i);
829
+ }
830
+ case 20: {
831
+ const i = new Uint8Array(e.view.buffer, e.view.byteOffset + e.offset, 16);
832
+ e.offset += 16;
833
+ const f = Array.from(i, (o) => o.toString(16).padStart(2, "0")).join("");
834
+ return `${f.slice(0, 8)}-${f.slice(8, 12)}-${f.slice(12, 16)}-${f.slice(16, 20)}-${f.slice(20)}`;
835
+ }
836
+ default:
837
+ throw new Error(`parquet unsupported variant primitive type: ${t}`);
838
+ }
839
+ }
840
+ function nt(e, t, n, i) {
841
+ const f = (t & 3) + 1, o = (t >> 2 & 3) + 1, s = t >> 4 & 1 ? L(e, 4) : e.view.getUint8(e.offset++), l = new Array(s);
842
+ for (let c = 0; c < s; c++)
843
+ l[c] = L(e, o);
844
+ const a = new Array(s + 1);
845
+ for (let c = 0; c < a.length; c++)
846
+ a[c] = L(e, f);
847
+ const u = {};
848
+ for (let c = 0; c < s; c++) {
849
+ const d = n.dictionary[l[c]], g = {
850
+ view: e.view,
851
+ offset: e.offset + a[c]
852
+ };
853
+ u[d] = S(g, n, i);
854
+ }
855
+ return e.offset += a[a.length - 1], u;
856
+ }
857
+ function it(e, t, n, i) {
858
+ const f = t & 3, o = t >> 2 & 1, r = f + 1, s = L(e, o ? 4 : 1), l = new Array(s + 1);
859
+ for (let c = 0; c < l.length; c++)
860
+ l[c] = L(e, r);
861
+ const a = e.offset, u = new Array(s);
862
+ for (let c = 0; c < s; c++) {
863
+ const d = {
864
+ view: e.view,
865
+ offset: a + l[c]
866
+ };
867
+ u[c] = S(d, n, i);
868
+ }
869
+ return e.offset = a + l[l.length - 1], u;
870
+ }
871
+ function z(e, t) {
872
+ const n = e.view.getUint8(e.offset);
873
+ e.offset += 1;
874
+ let i;
875
+ if (t === 4)
876
+ i = BigInt(e.view.getInt32(e.offset, !0)), e.offset += 4;
877
+ else if (t === 8)
878
+ i = e.view.getBigInt64(e.offset, !0), e.offset += 8;
879
+ else {
880
+ const f = e.view.getBigUint64(e.offset, !0);
881
+ i = e.view.getBigInt64(e.offset + 8, !0) << 64n | f, e.offset += 16;
882
+ }
883
+ return Number(i) * 10 ** -n;
884
+ }
885
+ function ue(e) {
886
+ const t = e.view.getUint32(e.offset, !0);
887
+ e.offset += 4;
888
+ const n = new Uint8Array(e.view.buffer, e.view.byteOffset + e.offset, t);
889
+ return e.offset += t, n;
890
+ }
891
+ function ae(e, t, n, i, f) {
892
+ const o = J(f);
893
+ if (!t?.length && !n.length) {
894
+ if (!o || !i.length) return i;
895
+ t = new Array(i.length).fill(o);
896
+ }
897
+ const r = t?.length || n.length, s = f.map(({ element: p }) => p.repetition_type);
898
+ let l = 0;
899
+ const a = [e];
900
+ let u = e, c = 0, d = 0, g = 0;
901
+ if (n[0])
902
+ for (; c < s.length - 2 && g < n[0]; )
903
+ c++, s[c] !== "REQUIRED" && (u = u.at(-1), a.push(u), d++), s[c] === "REPEATED" && g++;
904
+ for (let p = 0; p < r; p++) {
905
+ const w = t?.length ? t[p] : o, h = n[p];
906
+ for (; c && (h < g || s[c] !== "REPEATED"); )
907
+ s[c] !== "REQUIRED" && (a.pop(), d--), s[c] === "REPEATED" && g--, c--;
908
+ for (u = a.at(-1); (c < s.length - 2 || s[c + 1] === "REPEATED") && (d < w || s[c + 1] === "REQUIRED"); ) {
909
+ if (c++, s[c] !== "REQUIRED") {
910
+ const _ = [];
911
+ u.push(_), u = _, a.push(_), d++;
912
+ }
913
+ s[c] === "REPEATED" && g++;
914
+ }
915
+ w === o ? u.push(i[l++]) : c === s.length - 2 ? u.push(null) : u.push([]);
916
+ }
917
+ if (!e.length)
918
+ for (let p = 0; p < o; p++) {
919
+ const w = [];
920
+ u.push(w), u = w;
921
+ }
922
+ return e;
923
+ }
924
+ function O(e, t, n, i = 0) {
925
+ const f = t.path.join("."), o = t.element.repetition_type === "OPTIONAL", r = o ? i + 1 : i;
926
+ if ($e(t)) {
927
+ let s = t.children[0], l = r;
928
+ s.children.length === 1 && (s = s.children[0], l++), O(e, s, n, l);
929
+ const a = s.path.join("."), u = e.get(a);
930
+ if (!u) throw new Error("parquet list column missing values");
931
+ o && $(u, i), e.set(f, u), e.delete(a);
932
+ return;
933
+ }
934
+ if (qe(t)) {
935
+ const s = t.children[0].element.name;
936
+ O(e, t.children[0].children[0], n, r + 1), O(e, t.children[0].children[1], n, r + 1);
937
+ const l = e.get(`${f}.${s}.key`), a = e.get(`${f}.${s}.value`);
938
+ if (!l) throw new Error("parquet map column missing keys");
939
+ if (!a) throw new Error("parquet map column missing values");
940
+ if (l.length !== a.length)
941
+ throw new Error("parquet map column key/value length mismatch");
942
+ const u = Se(l, a, r);
943
+ o && $(u, i), e.delete(`${f}.${s}.key`), e.delete(`${f}.${s}.value`), e.set(f, u);
944
+ return;
945
+ }
946
+ if (t.children.length) {
947
+ const s = t.element.repetition_type === "REQUIRED" ? i : i + 1, l = {};
948
+ for (const u of t.children) {
949
+ O(e, u, n, s);
950
+ const c = e.get(u.path.join("."));
951
+ if (!c) throw new Error("parquet struct missing child data");
952
+ l[u.element.name] = c;
953
+ }
954
+ for (const u of t.children)
955
+ e.delete(u.path.join("."));
956
+ let a = Be(l, s);
957
+ t.element.logical_type?.type === "VARIANT" && (a = Oe(a, n)), o && $(a, i), e.set(f, a);
958
+ }
959
+ }
960
+ function $(e, t) {
961
+ for (let n = 0; n < e.length; n++)
962
+ t ? $(e[n], t - 1) : e[n] = e[n][0];
963
+ }
964
+ function Se(e, t, n) {
965
+ const i = [];
966
+ for (let f = 0; f < e.length; f++)
967
+ if (n)
968
+ i.push(Se(e[f], t[f], n - 1));
969
+ else if (e[f]) {
970
+ const o = {};
971
+ for (let r = 0; r < e[f].length; r++) {
972
+ const s = t[f][r];
973
+ o[e[f][r]] = s === void 0 ? null : s;
974
+ }
975
+ i.push(o);
976
+ } else
977
+ i.push(void 0);
978
+ return i;
979
+ }
980
+ function Be(e, t) {
981
+ const n = Object.keys(e), i = e[n[0]]?.length, f = [];
982
+ for (let o = 0; o < i; o++) {
983
+ const r = {};
984
+ for (const s of n) {
985
+ if (e[s].length !== i) throw new Error("parquet struct parsing error");
986
+ r[s] = e[s][o];
987
+ }
988
+ t ? f.push(Be(r, t - 1)) : f.push(r);
989
+ }
990
+ return f;
991
+ }
992
+ function B(e, t, n) {
993
+ const i = n instanceof Int32Array, f = T(e), o = T(e);
994
+ T(e);
995
+ let r = Z(e), s = 0;
996
+ n[s++] = i ? Number(r) : r;
997
+ const l = f / o;
998
+ for (; s < t; ) {
999
+ const a = Z(e), u = new Uint8Array(o);
1000
+ for (let c = 0; c < o; c++)
1001
+ u[c] = e.view.getUint8(e.offset++);
1002
+ for (let c = 0; c < o && s < t; c++) {
1003
+ const d = BigInt(u[c]);
1004
+ if (d) {
1005
+ let g = 0n, p = l;
1006
+ const w = (1n << d) - 1n;
1007
+ for (; p && s < t; ) {
1008
+ let h = BigInt(e.view.getUint8(e.offset)) >> g & w;
1009
+ for (g += d; g >= 8; )
1010
+ g -= 8n, e.offset++, g && (h |= BigInt(e.view.getUint8(e.offset)) << d - g & w);
1011
+ const _ = a + h;
1012
+ r += _, n[s++] = i ? Number(r) : r, p--;
1013
+ }
1014
+ p && (e.offset += Math.ceil((p * Number(d) + Number(g)) / 8));
1015
+ } else
1016
+ for (let g = 0; g < l && s < t; g++)
1017
+ r += a, n[s++] = i ? Number(r) : r;
1018
+ }
1019
+ }
1020
+ }
1021
+ function De(e, t, n) {
1022
+ const i = new Int32Array(t);
1023
+ B(e, t, i);
1024
+ for (let f = 0; f < t; f++)
1025
+ n[f] = new Uint8Array(e.view.buffer, e.view.byteOffset + e.offset, i[f]), e.offset += i[f];
1026
+ }
1027
+ function ft(e, t, n) {
1028
+ const i = new Int32Array(t);
1029
+ B(e, t, i);
1030
+ const f = new Int32Array(t);
1031
+ B(e, t, f);
1032
+ for (let o = 0; o < t; o++) {
1033
+ const r = new Uint8Array(e.view.buffer, e.view.byteOffset + e.offset, f[o]);
1034
+ i[o] ? (n[o] = new Uint8Array(i[o] + f[o]), n[o].set(n[o - 1].subarray(0, i[o])), n[o].set(r, i[o])) : n[o] = r, e.offset += f[o];
1035
+ }
1036
+ }
1037
+ function V(e) {
1038
+ return 32 - Math.clz32(e);
1039
+ }
1040
+ function v(e, t, n, i) {
1041
+ i === void 0 && (i = e.view.getUint32(e.offset, !0), e.offset += 4);
1042
+ const f = e.offset;
1043
+ let o = 0;
1044
+ for (; o < n.length; ) {
1045
+ const r = T(e);
1046
+ if (r & 1)
1047
+ o = st(e, r, t, n, o);
1048
+ else {
1049
+ const s = r >>> 1;
1050
+ ot(e, s, t, n, o), o += s;
1051
+ }
1052
+ }
1053
+ e.offset = f + i;
1054
+ }
1055
+ function ot(e, t, n, i, f) {
1056
+ const o = n + 7 >> 3;
1057
+ let r = 0;
1058
+ for (let s = 0; s < o; s++)
1059
+ r |= e.view.getUint8(e.offset++) << (s << 3);
1060
+ for (let s = 0; s < t; s++)
1061
+ i[f + s] = r;
1062
+ }
1063
+ function st(e, t, n, i, f) {
1064
+ let o = t >> 1 << 3;
1065
+ const r = (1 << n) - 1;
1066
+ let s = 0;
1067
+ if (e.offset < e.view.byteLength)
1068
+ s = e.view.getUint8(e.offset++);
1069
+ else if (r)
1070
+ throw new Error(`parquet bitpack offset ${e.offset} out of range`);
1071
+ let l = 8, a = 0;
1072
+ for (; o; )
1073
+ a > 8 ? (a -= 8, l -= 8, s >>>= 8) : l - a < n ? (s |= e.view.getUint8(e.offset) << l, e.offset++, l += 8) : (f < i.length && (i[f++] = s >> a & r), o--, a += n);
1074
+ return f;
1075
+ }
1076
+ function Pe(e, t, n, i) {
1077
+ const f = rt(n, i), o = new Uint8Array(t * f);
1078
+ for (let r = 0; r < f; r++)
1079
+ for (let s = 0; s < t; s++)
1080
+ o[s * f + r] = e.view.getUint8(e.offset++);
1081
+ if (n === "FLOAT") return new Float32Array(o.buffer);
1082
+ if (n === "DOUBLE") return new Float64Array(o.buffer);
1083
+ if (n === "INT32") return new Int32Array(o.buffer);
1084
+ if (n === "INT64") return new BigInt64Array(o.buffer);
1085
+ if (n === "FIXED_LEN_BYTE_ARRAY") {
1086
+ const r = new Array(t);
1087
+ for (let s = 0; s < t; s++)
1088
+ r[s] = o.subarray(s * f, (s + 1) * f);
1089
+ return r;
1090
+ }
1091
+ throw new Error(`parquet byte_stream_split unsupported type: ${n}`);
1092
+ }
1093
+ function rt(e, t) {
1094
+ switch (e) {
1095
+ case "INT32":
1096
+ case "FLOAT":
1097
+ return 4;
1098
+ case "INT64":
1099
+ case "DOUBLE":
1100
+ return 8;
1101
+ case "FIXED_LEN_BYTE_ARRAY":
1102
+ if (!t) throw new Error("parquet byteWidth missing type_length");
1103
+ return t;
1104
+ default:
1105
+ throw new Error(`parquet unsupported type: ${e}`);
1106
+ }
1107
+ }
1108
+ function ne(e, t, n, i) {
1109
+ if (n === 0) return [];
1110
+ if (t === "BOOLEAN")
1111
+ return lt(e, n);
1112
+ if (t === "INT32")
1113
+ return ct(e, n);
1114
+ if (t === "INT64")
1115
+ return ut(e, n);
1116
+ if (t === "INT96")
1117
+ return at(e, n);
1118
+ if (t === "FLOAT")
1119
+ return _t(e, n);
1120
+ if (t === "DOUBLE")
1121
+ return dt(e, n);
1122
+ if (t === "BYTE_ARRAY")
1123
+ return gt(e, n);
1124
+ if (t === "FIXED_LEN_BYTE_ARRAY") {
1125
+ if (!i) throw new Error("parquet missing fixed length");
1126
+ return ht(e, n, i);
1127
+ } else
1128
+ throw new Error(`parquet unhandled type: ${t}`);
1129
+ }
1130
+ function lt(e, t) {
1131
+ const n = new Array(t);
1132
+ for (let i = 0; i < t; i++) {
1133
+ const f = e.offset + (i / 8 | 0), o = i % 8, r = e.view.getUint8(f);
1134
+ n[i] = (r & 1 << o) !== 0;
1135
+ }
1136
+ return e.offset += Math.ceil(t / 8), n;
1137
+ }
1138
+ function ct(e, t) {
1139
+ const n = (e.view.byteOffset + e.offset) % 4 ? new Int32Array(G(e.view.buffer, e.view.byteOffset + e.offset, t * 4)) : new Int32Array(e.view.buffer, e.view.byteOffset + e.offset, t);
1140
+ return e.offset += t * 4, n;
1141
+ }
1142
+ function ut(e, t) {
1143
+ const n = (e.view.byteOffset + e.offset) % 8 ? new BigInt64Array(G(e.view.buffer, e.view.byteOffset + e.offset, t * 8)) : new BigInt64Array(e.view.buffer, e.view.byteOffset + e.offset, t);
1144
+ return e.offset += t * 8, n;
1145
+ }
1146
+ function at(e, t) {
1147
+ const n = new Array(t);
1148
+ for (let i = 0; i < t; i++) {
1149
+ const f = e.view.getBigInt64(e.offset + i * 12, !0), o = e.view.getInt32(e.offset + i * 12 + 8, !0);
1150
+ n[i] = BigInt(o) << 64n | f;
1151
+ }
1152
+ return e.offset += t * 12, n;
1153
+ }
1154
+ function _t(e, t) {
1155
+ const n = (e.view.byteOffset + e.offset) % 4 ? new Float32Array(G(e.view.buffer, e.view.byteOffset + e.offset, t * 4)) : new Float32Array(e.view.buffer, e.view.byteOffset + e.offset, t);
1156
+ return e.offset += t * 4, n;
1157
+ }
1158
+ function dt(e, t) {
1159
+ const n = (e.view.byteOffset + e.offset) % 8 ? new Float64Array(G(e.view.buffer, e.view.byteOffset + e.offset, t * 8)) : new Float64Array(e.view.buffer, e.view.byteOffset + e.offset, t);
1160
+ return e.offset += t * 8, n;
1161
+ }
1162
+ function gt(e, t) {
1163
+ const n = new Array(t);
1164
+ for (let i = 0; i < t; i++) {
1165
+ const f = e.view.getUint32(e.offset, !0);
1166
+ e.offset += 4, n[i] = new Uint8Array(e.view.buffer, e.view.byteOffset + e.offset, f), e.offset += f;
1167
+ }
1168
+ return n;
1169
+ }
1170
+ function ht(e, t, n) {
1171
+ const i = new Array(t);
1172
+ for (let f = 0; f < t; f++)
1173
+ i[f] = new Uint8Array(e.view.buffer, e.view.byteOffset + e.offset, n), e.offset += n;
1174
+ return i;
1175
+ }
1176
+ function G(e, t, n) {
1177
+ const i = new ArrayBuffer(n);
1178
+ return new Uint8Array(i).set(new Uint8Array(e, t, n)), i;
1179
+ }
1180
+ const pt = [0, 255, 65535, 16777215, 4294967295];
1181
+ function _e(e, t, n, i, f) {
1182
+ for (let o = 0; o < f; o++)
1183
+ n[i + o] = e[t + o];
1184
+ }
1185
+ function wt(e, t) {
1186
+ const n = e.byteLength, i = t.byteLength;
1187
+ let f = 0, o = 0;
1188
+ for (; f < n; ) {
1189
+ const r = e[f];
1190
+ if (f++, r < 128)
1191
+ break;
1192
+ }
1193
+ if (i && f >= n)
1194
+ throw new Error("invalid snappy length header");
1195
+ for (; f < n; ) {
1196
+ const r = e[f];
1197
+ let s = 0;
1198
+ if (f++, f >= n)
1199
+ throw new Error("missing eof marker");
1200
+ if ((r & 3) === 0) {
1201
+ let l = (r >>> 2) + 1;
1202
+ if (l > 60) {
1203
+ if (f + 3 >= n)
1204
+ throw new Error("snappy error literal pos + 3 >= inputLength");
1205
+ const a = l - 60;
1206
+ l = e[f] + (e[f + 1] << 8) + (e[f + 2] << 16) + (e[f + 3] << 24), l = (l & pt[a]) + 1, f += a;
1207
+ }
1208
+ if (f + l > n)
1209
+ throw new Error("snappy error literal exceeds input length");
1210
+ _e(e, f, t, o, l), f += l, o += l;
1211
+ } else {
1212
+ let l = 0;
1213
+ switch (r & 3) {
1214
+ case 1:
1215
+ s = (r >>> 2 & 7) + 4, l = e[f] + (r >>> 5 << 8), f++;
1216
+ break;
1217
+ case 2:
1218
+ if (n <= f + 1)
1219
+ throw new Error("snappy error end of input");
1220
+ s = (r >>> 2) + 1, l = e[f] + (e[f + 1] << 8), f += 2;
1221
+ break;
1222
+ case 3:
1223
+ if (n <= f + 3)
1224
+ throw new Error("snappy error end of input");
1225
+ s = (r >>> 2) + 1, l = e[f] + (e[f + 1] << 8) + (e[f + 2] << 16) + (e[f + 3] << 24), f += 4;
1226
+ break;
1227
+ }
1228
+ if (l === 0 || isNaN(l))
1229
+ throw new Error(`invalid offset ${l} pos ${f} inputLength ${n}`);
1230
+ if (l > o)
1231
+ throw new Error("cannot copy from before start of buffer");
1232
+ _e(t, o - l, t, o, s), o += s;
1233
+ }
1234
+ }
1235
+ if (o !== i) throw new Error("premature end of input");
1236
+ }
1237
+ function yt(e, t, { type: n, element: i, schemaPath: f }) {
1238
+ const o = new DataView(e.buffer, e.byteOffset, e.byteLength), r = { view: o, offset: 0 };
1239
+ let s;
1240
+ const l = mt(r, t, f), { definitionLevels: a, numNulls: u } = At(r, t, f), c = t.num_values - u;
1241
+ if (t.encoding === "PLAIN")
1242
+ s = ne(r, n, c, i.type_length);
1243
+ else if (t.encoding === "PLAIN_DICTIONARY" || t.encoding === "RLE_DICTIONARY" || t.encoding === "RLE") {
1244
+ const d = n === "BOOLEAN" ? 1 : o.getUint8(r.offset++);
1245
+ d ? (s = new Array(c), n === "BOOLEAN" ? (v(r, d, s), s = s.map((g) => !!g)) : v(r, d, s, o.byteLength - r.offset)) : s = new Uint8Array(c);
1246
+ } else if (t.encoding === "BYTE_STREAM_SPLIT")
1247
+ s = Pe(r, c, n, i.type_length);
1248
+ else if (t.encoding === "DELTA_BINARY_PACKED")
1249
+ s = n === "INT32" ? new Int32Array(c) : new BigInt64Array(c), B(r, c, s);
1250
+ else if (t.encoding === "DELTA_LENGTH_BYTE_ARRAY")
1251
+ s = new Array(c), De(r, c, s);
1252
+ else
1253
+ throw new Error(`parquet unsupported encoding: ${t.encoding}`);
1254
+ return { definitionLevels: a, repetitionLevels: l, dataPage: s };
1255
+ }
1256
+ function mt(e, t, n) {
1257
+ if (n.length > 1) {
1258
+ const i = ve(n);
1259
+ if (i) {
1260
+ const f = new Array(t.num_values);
1261
+ return v(e, V(i), f), f;
1262
+ }
1263
+ }
1264
+ return [];
1265
+ }
1266
+ function At(e, t, n) {
1267
+ const i = J(n);
1268
+ if (!i) return { definitionLevels: [], numNulls: 0 };
1269
+ const f = new Array(t.num_values);
1270
+ v(e, V(i), f);
1271
+ let o = t.num_values;
1272
+ for (const r of f)
1273
+ r === i && o--;
1274
+ return o === 0 && (f.length = 0), { definitionLevels: f, numNulls: o };
1275
+ }
1276
+ function X(e, t, n, i) {
1277
+ let f;
1278
+ const o = i?.[n];
1279
+ if (n === "UNCOMPRESSED")
1280
+ f = e;
1281
+ else if (o)
1282
+ f = o(e, t);
1283
+ else if (n === "SNAPPY")
1284
+ f = new Uint8Array(t), wt(e, f);
1285
+ else
1286
+ throw new Error(`parquet unsupported compression codec: ${n}`);
1287
+ if (f?.length !== t)
1288
+ throw new Error(`parquet decompressed page length ${f?.length} does not match header ${t}`);
1289
+ return f;
1290
+ }
1291
+ function Et(e, t, n) {
1292
+ const f = { view: new DataView(e.buffer, e.byteOffset, e.byteLength), offset: 0 }, { type: o, element: r, schemaPath: s, codec: l, compressors: a } = n, u = t.data_page_header_v2;
1293
+ if (!u) throw new Error("parquet data page header v2 is undefined");
1294
+ const c = It(f, u, s);
1295
+ f.offset = u.repetition_levels_byte_length;
1296
+ const d = vt(f, u, s), g = t.uncompressed_page_size - u.definition_levels_byte_length - u.repetition_levels_byte_length;
1297
+ let p = e.subarray(f.offset);
1298
+ u.is_compressed !== !1 && (p = X(p, g, l, a));
1299
+ const w = new DataView(p.buffer, p.byteOffset, p.byteLength), h = { view: w, offset: 0 };
1300
+ let _;
1301
+ const m = u.num_values - u.num_nulls;
1302
+ if (u.encoding === "PLAIN")
1303
+ _ = ne(h, o, m, r.type_length);
1304
+ else if (u.encoding === "RLE")
1305
+ _ = new Array(m), v(h, 1, _), _ = _.map((y) => !!y);
1306
+ else if (u.encoding === "PLAIN_DICTIONARY" || u.encoding === "RLE_DICTIONARY") {
1307
+ const y = w.getUint8(h.offset++);
1308
+ _ = new Array(m), v(h, y, _, g - 1);
1309
+ } else if (u.encoding === "DELTA_BINARY_PACKED")
1310
+ _ = o === "INT32" ? new Int32Array(m) : new BigInt64Array(m), B(h, m, _);
1311
+ else if (u.encoding === "DELTA_LENGTH_BYTE_ARRAY")
1312
+ _ = new Array(m), De(h, m, _);
1313
+ else if (u.encoding === "DELTA_BYTE_ARRAY")
1314
+ _ = new Array(m), ft(h, m, _);
1315
+ else if (u.encoding === "BYTE_STREAM_SPLIT")
1316
+ _ = Pe(h, m, o, r.type_length);
1317
+ else
1318
+ throw new Error(`parquet unsupported encoding: ${u.encoding}`);
1319
+ return { definitionLevels: d, repetitionLevels: c, dataPage: _ };
1320
+ }
1321
+ function It(e, t, n) {
1322
+ const i = ve(n);
1323
+ if (!i) return [];
1324
+ const f = new Array(t.num_values);
1325
+ return v(e, V(i), f, t.repetition_levels_byte_length), f;
1326
+ }
1327
+ function vt(e, t, n) {
1328
+ const i = J(n);
1329
+ if (i) {
1330
+ const f = new Array(t.num_values);
1331
+ return v(e, V(i), f, t.definition_levels_byte_length), f;
1332
+ }
1333
+ }
1334
+ function de(e, { groupStart: t, selectStart: n, selectEnd: i }, f, o) {
1335
+ const { pathInSchema: r, schemaPath: s } = f, l = be(s), a = [];
1336
+ let u, c, d = 0, g = 0;
1337
+ const p = o && (() => {
1338
+ c && o({
1339
+ pathInSchema: r,
1340
+ columnData: c,
1341
+ rowStart: t + d - c.length,
1342
+ rowEnd: t + d
1343
+ });
1344
+ });
1345
+ for (; (l ? d < i : e.offset < e.view.byteLength - 1) && !(e.offset >= e.view.byteLength - 1); ) {
1346
+ const w = bt(e);
1347
+ if (w.type === "DICTIONARY_PAGE") {
1348
+ const { data: h } = ge(e, w, f, u, void 0, 0);
1349
+ h && (u = ye(h, f));
1350
+ } else {
1351
+ const h = c?.length || 0, _ = ge(e, w, f, u, c, n - d);
1352
+ _.skipped ? (a.length || (g += _.skipped), d += _.skipped) : _.data && c === _.data ? d += _.data.length - h : _.data && _.data.length && (p?.(), a.push(_.data), d += _.data.length, c = _.data);
1353
+ }
1354
+ }
1355
+ return p?.(), { data: a, skipped: g };
1356
+ }
1357
+ function ge(e, t, n, i, f, o) {
1358
+ const { type: r, element: s, schemaPath: l, codec: a, compressors: u } = n, c = new Uint8Array(
1359
+ e.view.buffer,
1360
+ e.view.byteOffset + e.offset,
1361
+ t.compressed_page_size
1362
+ );
1363
+ if (e.offset += t.compressed_page_size, t.type === "DATA_PAGE") {
1364
+ const d = t.data_page_header;
1365
+ if (!d) throw new Error("parquet data page header is undefined");
1366
+ if (o > d.num_values && be(l))
1367
+ return { skipped: d.num_values };
1368
+ const g = X(c, Number(t.uncompressed_page_size), a, u), { definitionLevels: p, repetitionLevels: w, dataPage: h } = yt(g, d, n), _ = se(h, i, d.encoding, n), m = Array.isArray(f) ? f : [];
1369
+ return { skipped: 0, data: ae(m, p, w, _, l) };
1370
+ } else if (t.type === "DATA_PAGE_V2") {
1371
+ const d = t.data_page_header_v2;
1372
+ if (!d) throw new Error("parquet data page header v2 is undefined");
1373
+ if (o > d.num_rows)
1374
+ return { skipped: d.num_values };
1375
+ const { definitionLevels: g, repetitionLevels: p, dataPage: w } = Et(c, t, n), h = se(w, i, d.encoding, n), _ = Array.isArray(f) ? f : [];
1376
+ return { skipped: 0, data: ae(_, g, p, h, l) };
1377
+ } else if (t.type === "DICTIONARY_PAGE") {
1378
+ const d = t.dictionary_page_header;
1379
+ if (!d) throw new Error("parquet dictionary page header is undefined");
1380
+ const g = X(
1381
+ c,
1382
+ Number(t.uncompressed_page_size),
1383
+ a,
1384
+ u
1385
+ ), p = { view: new DataView(g.buffer, g.byteOffset, g.byteLength), offset: 0 };
1386
+ return { skipped: 0, data: ne(p, r, d.num_values, s.type_length) };
1387
+ } else
1388
+ throw new Error(`parquet unsupported page type: ${t.type}`);
1389
+ }
1390
+ function bt(e) {
1391
+ const t = ee(e), n = pe[t.field_1], i = t.field_2, f = t.field_3, o = t.field_4, r = t.field_5 && {
1392
+ num_values: t.field_5.field_1,
1393
+ encoding: b[t.field_5.field_2],
1394
+ definition_level_encoding: b[t.field_5.field_3],
1395
+ repetition_level_encoding: b[t.field_5.field_4],
1396
+ statistics: t.field_5.field_5 && {
1397
+ max: t.field_5.field_5.field_1,
1398
+ min: t.field_5.field_5.field_2,
1399
+ null_count: t.field_5.field_5.field_3,
1400
+ distinct_count: t.field_5.field_5.field_4,
1401
+ max_value: t.field_5.field_5.field_5,
1402
+ min_value: t.field_5.field_5.field_6
1403
+ }
1404
+ }, s = t.field_6, l = t.field_7 && {
1405
+ num_values: t.field_7.field_1,
1406
+ encoding: b[t.field_7.field_2],
1407
+ is_sorted: t.field_7.field_3
1408
+ }, a = t.field_8 && {
1409
+ num_values: t.field_8.field_1,
1410
+ num_nulls: t.field_8.field_2,
1411
+ num_rows: t.field_8.field_3,
1412
+ encoding: b[t.field_8.field_4],
1413
+ definition_levels_byte_length: t.field_8.field_5,
1414
+ repetition_levels_byte_length: t.field_8.field_6,
1415
+ is_compressed: t.field_8.field_7 === void 0 ? !0 : t.field_8.field_7,
1416
+ // default true
1417
+ statistics: t.field_8.field_8
1418
+ };
1419
+ return {
1420
+ type: n,
1421
+ uncompressed_page_size: i,
1422
+ compressed_page_size: f,
1423
+ crc: o,
1424
+ data_page_header: r,
1425
+ index_page_header: s,
1426
+ dictionary_page_header: l,
1427
+ data_page_header_v2: a
1428
+ };
1429
+ }
1430
+ function Tt(e) {
1431
+ const t = ee(e);
1432
+ return {
1433
+ page_locations: t.field_1.map(Lt),
1434
+ unencoded_byte_array_data_bytes: t.field_2
1435
+ };
1436
+ }
1437
+ function Lt(e) {
1438
+ return {
1439
+ offset: e.field_1,
1440
+ compressed_page_size: e.field_2,
1441
+ first_row_index: e.field_3
1442
+ };
1443
+ }
1444
+ function Rt(e, { metadata: t }, n) {
1445
+ const { file: i, compressors: f, utf8: o } = e, r = [], s = { ...j, ...e.parsers };
1446
+ for (const l of n.chunks) {
1447
+ const { columnMetadata: a } = l, u = Ie(t.schema, a.path_in_schema), c = {
1448
+ pathInSchema: a.path_in_schema,
1449
+ type: a.type,
1450
+ element: u[u.length - 1].element,
1451
+ schemaPath: u,
1452
+ codec: a.codec,
1453
+ parsers: s,
1454
+ compressors: f,
1455
+ utf8: o
1456
+ };
1457
+ if (!("offsetIndex" in l)) {
1458
+ r.push({
1459
+ pathInSchema: a.path_in_schema,
1460
+ data: Promise.resolve(i.slice(l.range.startByte, l.range.endByte)).then((d) => {
1461
+ const g = { view: new DataView(d), offset: 0 };
1462
+ return de(g, n, c, e.onPage);
1463
+ })
1464
+ });
1465
+ continue;
1466
+ }
1467
+ r.push({
1468
+ pathInSchema: a.path_in_schema,
1469
+ // fetch offset index
1470
+ data: Promise.resolve(i.slice(l.offsetIndex.startByte, l.offsetIndex.endByte)).then(async (d) => {
1471
+ const g = Tt({ view: new DataView(d), offset: 0 }), { selectStart: p, selectEnd: w } = n, h = g.page_locations;
1472
+ let _ = NaN, m = NaN, y = 0;
1473
+ for (let N = 0; N < h.length; N++) {
1474
+ const M = h[N], ie = Number(M.first_row_index), Ue = N + 1 < h.length ? Number(h[N + 1].first_row_index) : n.groupRows;
1475
+ ie < w && Ue > p && (Number.isNaN(_) && (_ = Number(M.offset), y = ie), m = Number(M.offset) + M.compressed_page_size);
1476
+ }
1477
+ const E = await i.slice(_, m), D = { view: new DataView(E), offset: 0 }, P = y ? {
1478
+ ...n,
1479
+ groupStart: n.groupStart + y,
1480
+ selectStart: n.selectStart - y,
1481
+ selectEnd: n.selectEnd - y
1482
+ } : n, { data: U, skipped: x } = de(D, P, c, e.onPage);
1483
+ return {
1484
+ data: U,
1485
+ skipped: y + x
1486
+ };
1487
+ })
1488
+ });
1489
+ }
1490
+ return { groupStart: n.groupStart, groupRows: n.groupRows, asyncColumns: r };
1491
+ }
1492
+ function Nt(e, t, n) {
1493
+ const { asyncColumns: i } = e;
1494
+ n = { ...j, ...n };
1495
+ const f = [];
1496
+ for (const o of t.children)
1497
+ if (o.children.length) {
1498
+ const r = i.filter((a) => a.pathInSchema[0] === o.element.name);
1499
+ if (!r.length) continue;
1500
+ const s = /* @__PURE__ */ new Map(), l = Promise.all(r.map((a) => a.data.then(({ data: u }) => {
1501
+ s.set(a.pathInSchema.join("."), Ze(u));
1502
+ }))).then(() => {
1503
+ O(s, o, n);
1504
+ const a = s.get(o.path.join("."));
1505
+ if (!a) throw new Error("parquet column data not assembled");
1506
+ return { data: [a], skipped: 0 };
1507
+ });
1508
+ f.push({ pathInSchema: o.path, data: l });
1509
+ } else {
1510
+ const r = i.find((s) => s.pathInSchema[0] === o.element.name);
1511
+ r && f.push(r);
1512
+ }
1513
+ return { ...e, asyncColumns: f };
1514
+ }
1515
+ const he = /* @__PURE__ */ new Map(), Ot = 200;
1516
+ function St(e) {
1517
+ if (!e.metadata)
1518
+ throw new Error("parquet requires metadata");
1519
+ const t = Xe(e);
1520
+ return e.file = Je(e.file, t), t.groups.map(
1521
+ (n) => Rt(e, t, n)
1522
+ );
1523
+ }
1524
+ function Bt(e) {
1525
+ if (!e)
1526
+ return [];
1527
+ if (e.length === 1)
1528
+ return e[0];
1529
+ let t = 0;
1530
+ for (const f of e)
1531
+ t += f.length;
1532
+ const n = Array(t);
1533
+ let i = 0;
1534
+ for (const f of e) {
1535
+ for (let o = 0; o < f.length; o++)
1536
+ n[i + o] = f[o];
1537
+ i += f.length;
1538
+ }
1539
+ return n;
1540
+ }
1541
+ function Dt(e) {
1542
+ const t = e.join(""), n = he.get(t);
1543
+ if (n)
1544
+ return n;
1545
+ const i = e.map(
1546
+ (o, r) => JSON.stringify(o) + ": columnData[" + r + "][row - columnSkipped[" + r + "]]"
1547
+ ).join(`,
1548
+ `), f = (
1549
+ /** @type {RowGroupObjectBuilder} */
1550
+ new Function(
1551
+ "groupData",
1552
+ "selectStart",
1553
+ "selectCount",
1554
+ "columnData",
1555
+ "columnSkipped",
1556
+ // Keep generated code focused on the tight row loop only.
1557
+ `for (let selectRow = 0; selectRow < selectCount; selectRow++) {
1558
+ const row = selectStart + selectRow;
1559
+ groupData[selectRow] = {
1560
+ ` + i + `
1561
+ };
1562
+ }
1563
+ return groupData;`
1564
+ )
1565
+ );
1566
+ return he.set(t, f), f;
1567
+ }
1568
+ function Pt(e, t, n, i, f, o) {
1569
+ for (let r = 0; r < n; r++) {
1570
+ const s = t + r, l = {};
1571
+ for (let a = 0; a < i.length; a++)
1572
+ l[i[a]] = f[a][s - o[a]];
1573
+ e[r] = l;
1574
+ }
1575
+ return e;
1576
+ }
1577
+ async function Ut({ asyncColumns: e }, t, n) {
1578
+ const i = await Promise.all(e.map((c) => c.data)), f = e.length, o = Array(f), r = Array(f), s = Array(f);
1579
+ for (let c = 0; c < f; c++)
1580
+ o[c] = e[c].pathInSchema[0], r[c] = Bt(i[c].data), s[c] = i[c].skipped;
1581
+ const l = n - t, a = Array(l);
1582
+ return f > Ot ? Pt(
1583
+ a,
1584
+ t,
1585
+ l,
1586
+ o,
1587
+ r,
1588
+ s
1589
+ ) : Dt(o)(
1590
+ a,
1591
+ t,
1592
+ l,
1593
+ r,
1594
+ s
1595
+ );
1596
+ }
1597
+ async function xt(e) {
1598
+ if ("rowFormat" in e)
1599
+ throw new Error(
1600
+ 'parquetRead supports only object rows; use rowFormat: "object" implicitly'
1601
+ );
1602
+ if ("filter" in e || "filterStrict" in e)
1603
+ throw new Error("parquetRead does not support filtering");
1604
+ e.metadata ??= await We(e.file, e);
1605
+ const { rowStart: t = 0, rowEnd: n, onChunk: i, onComplete: f } = e, o = St(e);
1606
+ if (!f && !i) {
1607
+ for (const { asyncColumns: l } of o)
1608
+ for (const { data: a } of l)
1609
+ await a;
1610
+ return;
1611
+ }
1612
+ const r = Re(e.metadata), s = o.map(
1613
+ (l) => Nt(l, r, e.parsers)
1614
+ );
1615
+ if (i)
1616
+ for (const l of s)
1617
+ for (const a of l.asyncColumns)
1618
+ a.data.then(
1619
+ /**
1620
+ * @param {{ data: import("hyparquet").DecodedArray[]; skipped: number }} chunk
1621
+ */
1622
+ (u) => {
1623
+ let c = l.groupStart + u.skipped;
1624
+ for (const d of u.data)
1625
+ i({
1626
+ columnName: a.pathInSchema[0],
1627
+ columnData: d,
1628
+ rowStart: c,
1629
+ rowEnd: c + d.length
1630
+ }), c += d.length;
1631
+ }
1632
+ );
1633
+ if (f) {
1634
+ const l = [];
1635
+ for (const a of s) {
1636
+ const u = Math.max(t - a.groupStart, 0), c = Math.min(
1637
+ (n ?? 1 / 0) - a.groupStart,
1638
+ a.groupRows
1639
+ ), d = await Ut(
1640
+ a,
1641
+ u,
1642
+ c
1643
+ );
1644
+ Ne(l, d);
1645
+ }
1646
+ f(l);
1647
+ } else
1648
+ for (const { asyncColumns: l } of s)
1649
+ for (const { data: a } of l)
1650
+ await a;
1651
+ }
1652
+ function Mt(e) {
1653
+ return new Promise((t, n) => {
1654
+ xt({
1655
+ ...e,
1656
+ onComplete: t
1657
+ }).catch(n);
1658
+ });
1659
+ }
1660
+ export {
1661
+ xt as parquetRead,
1662
+ Mt as parquetReadObjects
1663
+ };