@genome-spy/core 0.72.0 → 0.74.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 (396) hide show
  1. package/LICENSE +1 -1
  2. package/dist/bundle/AbortablePromiseCache-3gHJdF3E.js +96 -0
  3. package/dist/bundle/browser-BTgw5ieH.js +126 -0
  4. package/dist/bundle/chunk-DmhlhrBa.js +11 -0
  5. package/dist/bundle/esm-BDFRLEuD.js +1248 -0
  6. package/dist/bundle/esm-BygJiwh0.js +573 -0
  7. package/dist/bundle/esm-CGX-qz1d.js +155 -0
  8. package/dist/bundle/esm-CgfVIRJ-.js +121 -0
  9. package/dist/bundle/esm-CuMSzCHy.js +298 -0
  10. package/dist/bundle/esm-DMXpJXM4.js +369 -0
  11. package/dist/bundle/esm-DQiq2Zhd.js +1426 -0
  12. package/dist/bundle/esm-DtE8VqAv.js +1015 -0
  13. package/dist/bundle/esm-sIoQYZ21.js +461 -0
  14. package/dist/bundle/index.es.js +21078 -24556
  15. package/dist/bundle/index.js +379 -383
  16. package/dist/bundle/parquetRead-DG_-F5j5.js +1609 -0
  17. package/dist/schema.json +13349 -7082
  18. package/dist/src/config/axisConfig.d.ts +16 -0
  19. package/dist/src/config/axisConfig.d.ts.map +1 -0
  20. package/dist/src/config/axisConfig.js +84 -0
  21. package/dist/src/config/defaultConfig.d.ts +3 -0
  22. package/dist/src/config/defaultConfig.d.ts.map +1 -0
  23. package/dist/src/config/defaultConfig.js +38 -0
  24. package/dist/src/config/defaults/axisDefaults.d.ts +5 -0
  25. package/dist/src/config/defaults/axisDefaults.d.ts.map +1 -0
  26. package/dist/src/config/defaults/axisDefaults.js +72 -0
  27. package/dist/src/config/defaults/markDefaults.d.ts +15 -0
  28. package/dist/src/config/defaults/markDefaults.d.ts.map +1 -0
  29. package/dist/src/config/defaults/markDefaults.js +121 -0
  30. package/dist/src/config/defaults/scaleDefaults.d.ts +5 -0
  31. package/dist/src/config/defaults/scaleDefaults.d.ts.map +1 -0
  32. package/dist/src/config/defaults/scaleDefaults.js +18 -0
  33. package/dist/src/config/defaults/titleDefaults.d.ts +5 -0
  34. package/dist/src/config/defaults/titleDefaults.d.ts.map +1 -0
  35. package/dist/src/config/defaults/titleDefaults.js +47 -0
  36. package/dist/src/config/defaults/viewDefaults.d.ts +3 -0
  37. package/dist/src/config/defaults/viewDefaults.d.ts.map +1 -0
  38. package/dist/src/config/defaults/viewDefaults.js +2 -0
  39. package/dist/src/config/markConfig.d.ts +8 -0
  40. package/dist/src/config/markConfig.d.ts.map +1 -0
  41. package/dist/src/config/markConfig.js +27 -0
  42. package/dist/src/config/mergeConfig.d.ts +8 -0
  43. package/dist/src/config/mergeConfig.d.ts.map +1 -0
  44. package/dist/src/config/mergeConfig.js +81 -0
  45. package/dist/src/config/resolveConfig.d.ts +22 -0
  46. package/dist/src/config/resolveConfig.d.ts.map +1 -0
  47. package/dist/src/config/resolveConfig.js +32 -0
  48. package/dist/src/config/scaleConfig.d.ts +40 -0
  49. package/dist/src/config/scaleConfig.d.ts.map +1 -0
  50. package/dist/src/config/scaleConfig.js +220 -0
  51. package/dist/src/config/styleUtils.d.ts +6 -0
  52. package/dist/src/config/styleUtils.d.ts.map +1 -0
  53. package/dist/src/config/styleUtils.js +10 -0
  54. package/dist/src/config/themes.d.ts +15 -0
  55. package/dist/src/config/themes.d.ts.map +1 -0
  56. package/dist/src/config/themes.js +293 -0
  57. package/dist/src/config/titleConfig.d.ts +12 -0
  58. package/dist/src/config/titleConfig.d.ts.map +1 -0
  59. package/dist/src/config/titleConfig.js +42 -0
  60. package/dist/src/config/viewConfig.d.ts +7 -0
  61. package/dist/src/config/viewConfig.d.ts.map +1 -0
  62. package/dist/src/config/viewConfig.js +29 -0
  63. package/dist/src/data/flowNode.d.ts +22 -1
  64. package/dist/src/data/flowNode.d.ts.map +1 -1
  65. package/dist/src/data/flowNode.js +37 -1
  66. package/dist/src/data/formats/bed.d.ts +8 -0
  67. package/dist/src/data/formats/bed.d.ts.map +1 -0
  68. package/dist/src/data/formats/bed.js +58 -0
  69. package/dist/src/data/formats/bedpe.d.ts +8 -0
  70. package/dist/src/data/formats/bedpe.d.ts.map +1 -0
  71. package/dist/src/data/formats/bedpe.js +164 -0
  72. package/dist/src/data/formats/fasta.d.ts.map +1 -1
  73. package/dist/src/data/formats/fasta.js +4 -0
  74. package/dist/src/data/formats/parquet.d.ts.map +1 -1
  75. package/dist/src/data/formats/parquet.js +4 -0
  76. package/dist/src/data/sources/dataSourceFactory.d.ts +2 -13
  77. package/dist/src/data/sources/dataSourceFactory.d.ts.map +1 -1
  78. package/dist/src/data/sources/dataSourceFactory.js +5 -141
  79. package/dist/src/data/sources/dataUtils.d.ts +16 -0
  80. package/dist/src/data/sources/dataUtils.d.ts.map +1 -1
  81. package/dist/src/data/sources/dataUtils.js +53 -3
  82. package/dist/src/data/sources/lazy/axisGenomeSource.d.ts.map +1 -1
  83. package/dist/src/data/sources/lazy/axisGenomeSource.js +11 -0
  84. package/dist/src/data/sources/lazy/axisTickSource.d.ts +1 -1
  85. package/dist/src/data/sources/lazy/axisTickSource.d.ts.map +1 -1
  86. package/dist/src/data/sources/lazy/axisTickSource.js +19 -8
  87. package/dist/src/data/sources/lazy/bamSource.d.ts.map +1 -1
  88. package/dist/src/data/sources/lazy/bamSource.js +11 -0
  89. package/dist/src/data/sources/lazy/bigBedSource.d.ts.map +1 -1
  90. package/dist/src/data/sources/lazy/bigBedSource.js +12 -1
  91. package/dist/src/data/sources/lazy/bigWigSource.d.ts.map +1 -1
  92. package/dist/src/data/sources/lazy/bigWigSource.js +11 -0
  93. package/dist/src/data/sources/lazy/gff3Source.d.ts.map +1 -1
  94. package/dist/src/data/sources/lazy/gff3Source.js +12 -1
  95. package/dist/src/data/sources/lazy/indexedFastaSource.d.ts.map +1 -1
  96. package/dist/src/data/sources/lazy/indexedFastaSource.js +11 -0
  97. package/dist/src/data/sources/lazy/lazyDataSourceRegistry.d.ts +27 -0
  98. package/dist/src/data/sources/lazy/lazyDataSourceRegistry.d.ts.map +1 -0
  99. package/dist/src/data/sources/lazy/lazyDataSourceRegistry.js +65 -0
  100. package/dist/src/data/sources/lazy/registerBuiltInLazySources.d.ts +2 -0
  101. package/dist/src/data/sources/lazy/registerBuiltInLazySources.d.ts.map +1 -0
  102. package/dist/src/data/sources/lazy/registerBuiltInLazySources.js +8 -0
  103. package/dist/src/data/sources/lazy/singleAxisLazySource.d.ts.map +1 -1
  104. package/dist/src/data/sources/lazy/singleAxisLazySource.js +11 -2
  105. package/dist/src/data/sources/lazy/vcfSource.d.ts.map +1 -1
  106. package/dist/src/data/sources/lazy/vcfSource.js +11 -0
  107. package/dist/src/data/sources/urlSource.d.ts +4 -0
  108. package/dist/src/data/sources/urlSource.d.ts.map +1 -1
  109. package/dist/src/data/sources/urlSource.js +138 -16
  110. package/dist/src/data/transforms/aggregate.d.ts +1 -0
  111. package/dist/src/data/transforms/aggregate.d.ts.map +1 -1
  112. package/dist/src/data/transforms/aggregate.js +30 -8
  113. package/dist/src/data/transforms/aggregateOps.d.ts.map +1 -1
  114. package/dist/src/data/transforms/aggregateOps.js +12 -1
  115. package/dist/src/data/transforms/coverage.js +2 -2
  116. package/dist/src/data/transforms/filter.js +1 -1
  117. package/dist/src/data/transforms/filterScoredLabels.d.ts +6 -0
  118. package/dist/src/data/transforms/filterScoredLabels.d.ts.map +1 -1
  119. package/dist/src/data/transforms/filterScoredLabels.js +9 -0
  120. package/dist/src/data/transforms/measureText.d.ts +1 -0
  121. package/dist/src/data/transforms/measureText.d.ts.map +1 -1
  122. package/dist/src/data/transforms/measureText.js +14 -5
  123. package/dist/src/data/transforms/pileup.d.ts.map +1 -1
  124. package/dist/src/data/transforms/pileup.js +1 -2
  125. package/dist/src/data/transforms/regexFold.d.ts.map +1 -1
  126. package/dist/src/data/transforms/regexFold.js +0 -1
  127. package/dist/src/embedFactory.d.ts +13 -0
  128. package/dist/src/embedFactory.d.ts.map +1 -0
  129. package/dist/src/embedFactory.js +127 -0
  130. package/dist/src/encoder/accessor.d.ts +3 -12
  131. package/dist/src/encoder/accessor.d.ts.map +1 -1
  132. package/dist/src/encoder/accessor.js +10 -65
  133. package/dist/src/encoder/encoder.d.ts +51 -8
  134. package/dist/src/encoder/encoder.d.ts.map +1 -1
  135. package/dist/src/encoder/encoder.js +179 -55
  136. package/dist/src/fonts/bmFontManager.js +1 -1
  137. package/dist/src/full.d.ts +2 -0
  138. package/dist/src/full.d.ts.map +1 -0
  139. package/dist/src/full.js +2 -0
  140. package/dist/src/genome/assemblyPreflight.d.ts +31 -0
  141. package/dist/src/genome/assemblyPreflight.d.ts.map +1 -0
  142. package/dist/src/genome/assemblyPreflight.js +99 -0
  143. package/dist/src/genome/genome.d.ts +10 -2
  144. package/dist/src/genome/genome.d.ts.map +1 -1
  145. package/dist/src/genome/genome.js +20 -2
  146. package/dist/src/genome/genomeStore.d.ts +34 -3
  147. package/dist/src/genome/genomeStore.d.ts.map +1 -1
  148. package/dist/src/genome/genomeStore.js +409 -18
  149. package/dist/src/genome/rootGenomeConfig.d.ts +26 -0
  150. package/dist/src/genome/rootGenomeConfig.d.ts.map +1 -0
  151. package/dist/src/genome/rootGenomeConfig.js +98 -0
  152. package/dist/src/genome/scaleLocus.d.ts.map +1 -1
  153. package/dist/src/genome/scaleLocus.js +26 -7
  154. package/dist/src/genomeSpy/cursorManager.d.ts +69 -0
  155. package/dist/src/genomeSpy/cursorManager.d.ts.map +1 -0
  156. package/dist/src/genomeSpy/cursorManager.js +131 -0
  157. package/dist/src/genomeSpy/headlessBootstrap.d.ts +113 -0
  158. package/dist/src/genomeSpy/headlessBootstrap.d.ts.map +1 -0
  159. package/dist/src/genomeSpy/headlessBootstrap.js +246 -0
  160. package/dist/src/genomeSpy/interactionController.d.ts +10 -1
  161. package/dist/src/genomeSpy/interactionController.d.ts.map +1 -1
  162. package/dist/src/genomeSpy/interactionController.js +448 -40
  163. package/dist/src/genomeSpy/interactionDispatcher.d.ts +50 -0
  164. package/dist/src/genomeSpy/interactionDispatcher.d.ts.map +1 -0
  165. package/dist/src/genomeSpy/interactionDispatcher.js +203 -0
  166. package/dist/src/genomeSpy/renderCoordinator.js +1 -1
  167. package/dist/src/genomeSpy/viewContextFactory.d.ts +4 -2
  168. package/dist/src/genomeSpy/viewContextFactory.d.ts.map +1 -1
  169. package/dist/src/genomeSpy/viewContextFactory.js +12 -4
  170. package/dist/src/genomeSpy/viewDataInit.d.ts.map +1 -1
  171. package/dist/src/genomeSpy/viewDataInit.js +7 -3
  172. package/dist/src/genomeSpy.d.ts +1 -114
  173. package/dist/src/genomeSpy.d.ts.map +1 -1
  174. package/dist/src/genomeSpy.js +7 -614
  175. package/dist/src/genomeSpyBase.d.ts +133 -0
  176. package/dist/src/genomeSpyBase.d.ts.map +1 -0
  177. package/dist/src/genomeSpyBase.js +719 -0
  178. package/dist/src/gl/arrayBuilder.d.ts.map +1 -1
  179. package/dist/src/gl/arrayBuilder.js +0 -3
  180. package/dist/src/gl/canvasSizeHelper.d.ts +74 -0
  181. package/dist/src/gl/canvasSizeHelper.d.ts.map +1 -0
  182. package/dist/src/gl/canvasSizeHelper.js +203 -0
  183. package/dist/src/gl/colorUtils.d.ts.map +1 -1
  184. package/dist/src/gl/colorUtils.js +3 -0
  185. package/dist/src/gl/dataToVertices.d.ts.map +1 -1
  186. package/dist/src/gl/dataToVertices.js +13 -8
  187. package/dist/src/gl/glslScaleGenerator.d.ts +2 -2
  188. package/dist/src/gl/glslScaleGenerator.d.ts.map +1 -1
  189. package/dist/src/gl/glslScaleGenerator.js +5 -7
  190. package/dist/src/gl/webGLHelper.d.ts +25 -11
  191. package/dist/src/gl/webGLHelper.d.ts.map +1 -1
  192. package/dist/src/gl/webGLHelper.js +59 -33
  193. package/dist/src/index.d.ts +3 -9
  194. package/dist/src/index.d.ts.map +1 -1
  195. package/dist/src/index.js +5 -111
  196. package/dist/src/marks/__snapshots__/shaderSnapshot.test.js.snap +4462 -0
  197. package/dist/src/marks/link.d.ts.map +1 -1
  198. package/dist/src/marks/link.js +5 -26
  199. package/dist/src/marks/mark.d.ts +8 -1
  200. package/dist/src/marks/mark.d.ts.map +1 -1
  201. package/dist/src/marks/mark.js +67 -21
  202. package/dist/src/marks/markUtils.d.ts +18 -1
  203. package/dist/src/marks/markUtils.d.ts.map +1 -1
  204. package/dist/src/marks/markUtils.js +52 -4
  205. package/dist/src/marks/point.d.ts.map +1 -1
  206. package/dist/src/marks/point.js +6 -26
  207. package/dist/src/marks/rect.d.ts.map +1 -1
  208. package/dist/src/marks/rect.js +13 -21
  209. package/dist/src/marks/rule.d.ts +7 -2
  210. package/dist/src/marks/rule.d.ts.map +1 -1
  211. package/dist/src/marks/rule.js +125 -16
  212. package/dist/src/marks/text.d.ts.map +1 -1
  213. package/dist/src/marks/text.js +5 -47
  214. package/dist/src/minimal.d.ts +8 -0
  215. package/dist/src/minimal.d.ts.map +1 -0
  216. package/dist/src/minimal.js +21 -0
  217. package/dist/src/paramRuntime/viewParamRuntime.d.ts +19 -0
  218. package/dist/src/paramRuntime/viewParamRuntime.d.ts.map +1 -1
  219. package/dist/src/paramRuntime/viewParamRuntime.js +35 -0
  220. package/dist/src/scale/scale.d.ts.map +1 -1
  221. package/dist/src/scale/scale.js +13 -7
  222. package/dist/src/scales/axisResolution.d.ts.map +1 -1
  223. package/dist/src/scales/axisResolution.js +9 -5
  224. package/dist/src/scales/domainPlanner.d.ts +58 -7
  225. package/dist/src/scales/domainPlanner.d.ts.map +1 -1
  226. package/dist/src/scales/domainPlanner.js +395 -40
  227. package/dist/src/scales/indexLikeDomainUtils.d.ts +29 -0
  228. package/dist/src/scales/indexLikeDomainUtils.d.ts.map +1 -0
  229. package/dist/src/scales/indexLikeDomainUtils.js +67 -0
  230. package/dist/src/scales/resolutionMemberOrder.d.ts +15 -0
  231. package/dist/src/scales/resolutionMemberOrder.d.ts.map +1 -0
  232. package/dist/src/scales/resolutionMemberOrder.js +22 -0
  233. package/dist/src/scales/scaleInstanceManager.d.ts +2 -1
  234. package/dist/src/scales/scaleInstanceManager.d.ts.map +1 -1
  235. package/dist/src/scales/scaleInstanceManager.js +10 -11
  236. package/dist/src/scales/scaleInteractionController.d.ts.map +1 -1
  237. package/dist/src/scales/scaleInteractionController.js +59 -18
  238. package/dist/src/scales/scalePropsResolver.d.ts +3 -1
  239. package/dist/src/scales/scalePropsResolver.d.ts.map +1 -1
  240. package/dist/src/scales/scalePropsResolver.js +83 -6
  241. package/dist/src/scales/scaleResolution.d.ts +39 -0
  242. package/dist/src/scales/scaleResolution.d.ts.map +1 -1
  243. package/dist/src/scales/scaleResolution.js +504 -82
  244. package/dist/src/scales/scaleResolutionTestUtils.d.ts +21 -0
  245. package/dist/src/scales/scaleResolutionTestUtils.d.ts.map +1 -0
  246. package/dist/src/scales/scaleResolutionTestUtils.js +37 -0
  247. package/dist/src/scales/scaleRules.d.ts.map +1 -1
  248. package/dist/src/scales/scaleRules.js +16 -2
  249. package/dist/src/scales/selectionDomainUtils.d.ts +52 -0
  250. package/dist/src/scales/selectionDomainUtils.d.ts.map +1 -0
  251. package/dist/src/scales/selectionDomainUtils.js +194 -0
  252. package/dist/src/scales/zoomDomainUtils.d.ts +18 -0
  253. package/dist/src/scales/zoomDomainUtils.d.ts.map +1 -0
  254. package/dist/src/scales/zoomDomainUtils.js +69 -0
  255. package/dist/src/screenshotHarness.d.ts +16 -0
  256. package/dist/src/screenshotHarness.d.ts.map +1 -0
  257. package/dist/src/screenshotHarness.js +241 -0
  258. package/dist/src/singlePageApp.js +1 -1
  259. package/dist/src/spec/axis.d.ts +41 -30
  260. package/dist/src/spec/channel.d.ts +15 -9
  261. package/dist/src/spec/config.d.ts +264 -0
  262. package/dist/src/spec/data.d.ts +30 -3
  263. package/dist/src/spec/decoration.d.ts +51 -0
  264. package/dist/src/spec/exampleFiles.d.ts +12 -0
  265. package/dist/src/spec/exampleFiles.d.ts.map +1 -0
  266. package/dist/src/spec/exampleFiles.js +52 -0
  267. package/dist/src/spec/font.d.ts +1 -1
  268. package/dist/src/spec/genome.d.ts +22 -2
  269. package/dist/src/spec/mark.d.ts +97 -13
  270. package/dist/src/spec/parameter.d.ts +62 -5
  271. package/dist/src/spec/root.d.ts +34 -1
  272. package/dist/src/spec/scale.d.ts +46 -5
  273. package/dist/src/spec/title.d.ts +13 -2
  274. package/dist/src/spec/tooltip.d.ts +1 -1
  275. package/dist/src/spec/transform.d.ts +39 -4
  276. package/dist/src/spec/view.d.ts +67 -19
  277. package/dist/src/styles/genome-spy.css +63 -55
  278. package/dist/src/styles/genome-spy.css.d.ts +1 -1
  279. package/dist/src/styles/genome-spy.css.d.ts.map +1 -1
  280. package/dist/src/styles/genome-spy.css.js +31 -22
  281. package/dist/src/testSetup.d.ts +2 -0
  282. package/dist/src/testSetup.d.ts.map +1 -0
  283. package/dist/src/testSetup.js +5 -0
  284. package/dist/src/tooltip/dataTooltipHandler.js +66 -11
  285. package/dist/src/tooltip/tooltipContext.d.ts.map +1 -1
  286. package/dist/src/tooltip/tooltipContext.js +3 -2
  287. package/dist/src/types/embedApi.d.ts +26 -0
  288. package/dist/src/types/encoder.d.ts +17 -15
  289. package/dist/src/types/scaleResolutionApi.d.ts +20 -0
  290. package/dist/src/types/viewContext.d.ts +23 -1
  291. package/dist/src/utils/expression.d.ts +2 -2
  292. package/dist/src/utils/expression.d.ts.map +1 -1
  293. package/dist/src/utils/expression.js +63 -8
  294. package/dist/src/utils/field.d.ts.map +1 -1
  295. package/dist/src/utils/field.js +0 -1
  296. package/dist/src/utils/inertia.d.ts.map +1 -1
  297. package/dist/src/utils/inertia.js +0 -1
  298. package/dist/src/utils/inferSpecBaseUrl.d.ts +14 -0
  299. package/dist/src/utils/inferSpecBaseUrl.d.ts.map +1 -0
  300. package/dist/src/utils/inferSpecBaseUrl.js +73 -0
  301. package/dist/src/utils/inputBinding.d.ts +1 -1
  302. package/dist/src/utils/interaction.d.ts +109 -0
  303. package/dist/src/utils/interaction.d.ts.map +1 -0
  304. package/dist/src/utils/interaction.js +200 -0
  305. package/dist/src/utils/interactionEvent.d.ts +62 -33
  306. package/dist/src/utils/interactionEvent.d.ts.map +1 -1
  307. package/dist/src/utils/interactionEvent.js +86 -48
  308. package/dist/src/utils/kWayMerge.js +1 -1
  309. package/dist/src/utils/mergeObjects.d.ts.map +1 -1
  310. package/dist/src/utils/mergeObjects.js +0 -2
  311. package/dist/src/utils/radixSort.d.ts.map +1 -1
  312. package/dist/src/utils/radixSort.js +0 -2
  313. package/dist/src/utils/throttle.d.ts.map +1 -1
  314. package/dist/src/utils/throttle.js +0 -2
  315. package/dist/src/utils/ui/tooltip.d.ts +1 -0
  316. package/dist/src/utils/ui/tooltip.d.ts.map +1 -1
  317. package/dist/src/utils/ui/tooltip.js +1 -0
  318. package/dist/src/utils/url.js +1 -1
  319. package/dist/src/view/axisGridView.d.ts +1 -1
  320. package/dist/src/view/axisGridView.d.ts.map +1 -1
  321. package/dist/src/view/axisGridView.js +2 -47
  322. package/dist/src/view/axisView.d.ts +2 -3
  323. package/dist/src/view/axisView.d.ts.map +1 -1
  324. package/dist/src/view/axisView.js +251 -106
  325. package/dist/src/view/concatView.d.ts +2 -1
  326. package/dist/src/view/concatView.d.ts.map +1 -1
  327. package/dist/src/view/concatView.js +4 -2
  328. package/dist/src/view/containerMutationHelper.d.ts +3 -0
  329. package/dist/src/view/containerMutationHelper.d.ts.map +1 -1
  330. package/dist/src/view/containerMutationHelper.js +12 -1
  331. package/dist/src/view/dataReadiness.d.ts +2 -2
  332. package/dist/src/view/dataReadiness.d.ts.map +1 -1
  333. package/dist/src/view/dataReadiness.js +63 -58
  334. package/dist/src/view/facetView.d.ts +1 -1
  335. package/dist/src/view/facetView.js +4 -4
  336. package/dist/src/view/flowBuilder.js +2 -2
  337. package/dist/src/view/gridView/gridChild.d.ts +13 -0
  338. package/dist/src/view/gridView/gridChild.d.ts.map +1 -1
  339. package/dist/src/view/gridView/gridChild.js +247 -49
  340. package/dist/src/view/gridView/gridView.d.ts.map +1 -1
  341. package/dist/src/view/gridView/gridView.js +296 -99
  342. package/dist/src/view/gridView/keyboardZoomController.d.ts +2 -2
  343. package/dist/src/view/gridView/keyboardZoomController.d.ts.map +1 -1
  344. package/dist/src/view/gridView/keyboardZoomController.js +1 -1
  345. package/dist/src/view/gridView/scrollbar.d.ts.map +1 -1
  346. package/dist/src/view/gridView/scrollbar.js +4 -2
  347. package/dist/src/view/gridView/selectionRect.d.ts +4 -0
  348. package/dist/src/view/gridView/selectionRect.d.ts.map +1 -1
  349. package/dist/src/view/gridView/selectionRect.js +20 -1
  350. package/dist/src/view/gridView/separatorView.d.ts +1 -0
  351. package/dist/src/view/gridView/separatorView.d.ts.map +1 -1
  352. package/dist/src/view/gridView/separatorView.js +9 -0
  353. package/dist/src/view/interactionRouting.d.ts +20 -0
  354. package/dist/src/view/interactionRouting.d.ts.map +1 -0
  355. package/dist/src/view/interactionRouting.js +53 -0
  356. package/dist/src/view/layerView.d.ts.map +1 -1
  357. package/dist/src/view/layerView.js +12 -9
  358. package/dist/src/view/layout/grid.js +1 -1
  359. package/dist/src/view/renderingContext/bufferedViewRenderingContext.d.ts.map +1 -1
  360. package/dist/src/view/renderingContext/bufferedViewRenderingContext.js +0 -2
  361. package/dist/src/view/testUtils.d.ts +17 -3
  362. package/dist/src/view/testUtils.d.ts.map +1 -1
  363. package/dist/src/view/testUtils.js +62 -69
  364. package/dist/src/view/title.d.ts +8 -1
  365. package/dist/src/view/title.d.ts.map +1 -1
  366. package/dist/src/view/title.js +66 -76
  367. package/dist/src/view/unitView.d.ts +1 -1
  368. package/dist/src/view/unitView.d.ts.map +1 -1
  369. package/dist/src/view/unitView.js +67 -17
  370. package/dist/src/view/view.d.ts +76 -30
  371. package/dist/src/view/view.d.ts.map +1 -1
  372. package/dist/src/view/view.js +136 -47
  373. package/dist/src/view/viewFactory.d.ts +11 -3
  374. package/dist/src/view/viewFactory.d.ts.map +1 -1
  375. package/dist/src/view/viewFactory.js +37 -11
  376. package/dist/src/view/viewUtils.d.ts.map +1 -1
  377. package/dist/src/view/viewUtils.js +41 -5
  378. package/dist/src/view/zoom.d.ts +15 -3
  379. package/dist/src/view/zoom.d.ts.map +1 -1
  380. package/dist/src/view/zoom.js +375 -80
  381. package/package.json +20 -10
  382. package/dist/bundle/AbortablePromiseCache-Dj0vzLnp.js +0 -149
  383. package/dist/bundle/browser-0iNU5Wit.js +0 -138
  384. package/dist/bundle/index-BYsZN7b0.js +0 -1597
  385. package/dist/bundle/index-C3kClAEN.js +0 -1771
  386. package/dist/bundle/index-C7wOh6y1.js +0 -657
  387. package/dist/bundle/index-CRaQAuki.js +0 -326
  388. package/dist/bundle/index-D9v1PCj9.js +0 -507
  389. package/dist/bundle/index-GDOuv_D5.js +0 -266
  390. package/dist/bundle/index-Gt44EOIH.js +0 -628
  391. package/dist/bundle/inflate-GtwLkvSP.js +0 -1048
  392. package/dist/bundle/parquetRead-BnAGCa4_.js +0 -1663
  393. package/dist/bundle/unzip-Bac01w6X.js +0 -1492
  394. package/dist/src/config/scaleDefaults.d.ts +0 -8
  395. package/dist/src/config/scaleDefaults.d.ts.map +0 -1
  396. package/dist/src/config/scaleDefaults.js +0 -45
@@ -1,1663 +0,0 @@
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
- };