@loaders.gl/pointclouds 5.0.0-beta.1 → 5.0.0-beta.10

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 (372) hide show
  1. package/LAS-README.md +1 -1
  2. package/PCD-README.md +1 -1
  3. package/PLY-README.md +1 -1
  4. package/README.md +5 -1
  5. package/dist/dist.dev.js +3584 -2211
  6. package/dist/dist.min.js +20 -20
  7. package/dist/index.cjs +0 -6
  8. package/dist/index.cjs.map +2 -2
  9. package/dist/index.d.ts +3 -3
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +3 -3
  12. package/dist/index.js.map +1 -1
  13. package/dist/las/bundled.cjs +0 -3
  14. package/dist/las/bundled.cjs.map +2 -2
  15. package/dist/las/bundled.d.ts +0 -1
  16. package/dist/las/bundled.d.ts.map +1 -1
  17. package/dist/las/bundled.js +0 -1
  18. package/dist/las/bundled.js.map +1 -1
  19. package/dist/las/index.cjs +0 -3
  20. package/dist/las/index.cjs.map +3 -3
  21. package/dist/las/index.d.ts +0 -2
  22. package/dist/las/index.d.ts.map +1 -1
  23. package/dist/las/index.js +0 -3
  24. package/dist/las/index.js.map +1 -1
  25. package/dist/las/las-copc-loader-types.cjs +1 -1
  26. package/dist/las/las-copc-loader-types.cjs.map +2 -2
  27. package/dist/las/las-copc-loader-types.d.ts +13 -9
  28. package/dist/las/las-copc-loader-types.d.ts.map +1 -1
  29. package/dist/las/las-copc-loader-types.js +1 -1
  30. package/dist/las/las-copc-loader-types.js.map +1 -1
  31. package/dist/las/las-copc-loader.cjs +8 -5
  32. package/dist/las/las-copc-loader.cjs.map +2 -2
  33. package/dist/las/las-copc-loader.d.ts +8 -6
  34. package/dist/las/las-copc-loader.d.ts.map +1 -1
  35. package/dist/las/las-copc-loader.js +11 -6
  36. package/dist/las/las-copc-loader.js.map +1 -1
  37. package/dist/las/las-loader-shared.cjs +4 -2
  38. package/dist/las/las-loader-shared.cjs.map +2 -2
  39. package/dist/las/las-loader-shared.d.ts +9 -7
  40. package/dist/las/las-loader-shared.d.ts.map +1 -1
  41. package/dist/las/las-loader-shared.js +4 -2
  42. package/dist/las/las-loader-shared.js.map +1 -1
  43. package/dist/las/las-loader-types.cjs +3 -6
  44. package/dist/las/las-loader-types.cjs.map +2 -2
  45. package/dist/las/las-loader-types.d.ts +18 -45
  46. package/dist/las/las-loader-types.d.ts.map +1 -1
  47. package/dist/las/las-loader-types.js +1 -3
  48. package/dist/las/las-loader-types.js.map +1 -1
  49. package/dist/las/las-loader.cjs +61 -13
  50. package/dist/las/las-loader.cjs.map +3 -3
  51. package/dist/las/las-loader.d.ts +51 -5
  52. package/dist/las/las-loader.d.ts.map +1 -1
  53. package/dist/las/las-loader.js +56 -6
  54. package/dist/las/las-loader.js.map +1 -1
  55. package/dist/las/las-writer.cjs +3 -3
  56. package/dist/las/las-writer.cjs.map +2 -2
  57. package/dist/las/las-writer.d.ts +4 -3
  58. package/dist/las/las-writer.d.ts.map +1 -1
  59. package/dist/las/las-writer.js +4 -6
  60. package/dist/las/las-writer.js.map +1 -1
  61. package/dist/las/laz-rs-loader-types.cjs +1 -1
  62. package/dist/las/laz-rs-loader-types.cjs.map +2 -2
  63. package/dist/las/laz-rs-loader-types.d.ts +13 -9
  64. package/dist/las/laz-rs-loader-types.d.ts.map +1 -1
  65. package/dist/las/laz-rs-loader-types.js +1 -1
  66. package/dist/las/laz-rs-loader-types.js.map +1 -1
  67. package/dist/las/laz-rs-loader.cjs +8 -5
  68. package/dist/las/laz-rs-loader.cjs.map +2 -2
  69. package/dist/las/laz-rs-loader.d.ts +8 -6
  70. package/dist/las/laz-rs-loader.d.ts.map +1 -1
  71. package/dist/las/laz-rs-loader.js +11 -6
  72. package/dist/las/laz-rs-loader.js.map +1 -1
  73. package/dist/las/lazperf-loader-types.cjs +1 -1
  74. package/dist/las/lazperf-loader-types.cjs.map +2 -2
  75. package/dist/las/lazperf-loader-types.d.ts +14 -10
  76. package/dist/las/lazperf-loader-types.d.ts.map +1 -1
  77. package/dist/las/lazperf-loader-types.js +1 -1
  78. package/dist/las/lazperf-loader-types.js.map +1 -1
  79. package/dist/las/lazperf-loader.cjs +9 -6
  80. package/dist/las/lazperf-loader.cjs.map +2 -2
  81. package/dist/las/lazperf-loader.d.ts +9 -7
  82. package/dist/las/lazperf-loader.d.ts.map +1 -1
  83. package/dist/las/lazperf-loader.js +12 -7
  84. package/dist/las/lazperf-loader.js.map +1 -1
  85. package/dist/las/lib/copc/parse-las.cjs +1 -1
  86. package/dist/las/lib/copc/parse-las.cjs.map +2 -2
  87. package/dist/las/lib/copc/parse-las.js +1 -1
  88. package/dist/las/lib/copc/parse-las.js.map +1 -1
  89. package/dist/las/lib/get-las-schema.cjs +5 -0
  90. package/dist/las/lib/get-las-schema.cjs.map +2 -2
  91. package/dist/las/lib/get-las-schema.d.ts.map +1 -1
  92. package/dist/las/lib/get-las-schema.js +6 -0
  93. package/dist/las/lib/get-las-schema.js.map +1 -1
  94. package/dist/las/lib/las-extra-bytes.cjs +6 -1
  95. package/dist/las/lib/las-extra-bytes.cjs.map +2 -2
  96. package/dist/las/lib/las-extra-bytes.d.ts.map +1 -1
  97. package/dist/las/lib/las-extra-bytes.js +6 -4
  98. package/dist/las/lib/las-extra-bytes.js.map +1 -1
  99. package/dist/las/lib/laz-perf/parse-las.cjs +9 -8
  100. package/dist/las/lib/laz-perf/parse-las.cjs.map +3 -3
  101. package/dist/las/lib/laz-perf/parse-las.js +9 -8
  102. package/dist/las/lib/laz-perf/parse-las.js.map +1 -1
  103. package/dist/las/lib/laz-rs-wasm/parse-las.cjs +9 -8
  104. package/dist/las/lib/laz-rs-wasm/parse-las.cjs.map +3 -3
  105. package/dist/las/lib/laz-rs-wasm/parse-las.js +9 -8
  106. package/dist/las/lib/laz-rs-wasm/parse-las.js.map +1 -1
  107. package/dist/las/lib/typescript/parse-las.cjs +135 -13
  108. package/dist/las/lib/typescript/parse-las.cjs.map +3 -3
  109. package/dist/las/lib/typescript/parse-las.d.ts.map +1 -1
  110. package/dist/las/lib/typescript/parse-las.js +106 -10
  111. package/dist/las/lib/typescript/parse-las.js.map +1 -1
  112. package/dist/las/unbundled.cjs +0 -2
  113. package/dist/las/unbundled.cjs.map +2 -2
  114. package/dist/las/unbundled.d.ts +1 -1
  115. package/dist/las/unbundled.d.ts.map +1 -1
  116. package/dist/las/unbundled.js +1 -1
  117. package/dist/las/unbundled.js.map +1 -1
  118. package/dist/las/workers/las-worker.cjs +5 -5
  119. package/dist/las/workers/las-worker.cjs.map +2 -2
  120. package/dist/las/workers/las-worker.js +6 -6
  121. package/dist/las/workers/las-worker.js.map +1 -1
  122. package/dist/las-copc-loader-types.cjs +51 -0
  123. package/dist/las-copc-loader-types.cjs.map +7 -0
  124. package/dist/las-copc-loader-types.d.ts +2 -0
  125. package/dist/las-copc-loader-types.d.ts.map +1 -0
  126. package/dist/las-copc-loader-types.js +2 -0
  127. package/dist/las-copc-loader-types.js.map +1 -0
  128. package/dist/las-copc-loader.cjs +62 -0
  129. package/dist/las-copc-loader.cjs.map +7 -0
  130. package/dist/las-copc-loader.d.ts +2 -0
  131. package/dist/las-copc-loader.d.ts.map +1 -0
  132. package/dist/las-copc-loader.js +2 -0
  133. package/dist/las-copc-loader.js.map +1 -0
  134. package/dist/las-loader-types.cjs +53 -0
  135. package/dist/las-loader-types.cjs.map +7 -0
  136. package/dist/las-loader-types.d.ts +2 -0
  137. package/dist/las-loader-types.d.ts.map +1 -0
  138. package/dist/las-loader-types.js +2 -0
  139. package/dist/las-loader-types.js.map +1 -0
  140. package/dist/las-loader.cjs +130 -0
  141. package/dist/las-loader.cjs.map +7 -0
  142. package/dist/las-loader.d.ts +2 -0
  143. package/dist/las-loader.d.ts.map +1 -0
  144. package/dist/las-loader.js +2 -0
  145. package/dist/las-loader.js.map +1 -0
  146. package/dist/las-worker.js +1219 -253
  147. package/dist/las-writer.cjs +1056 -0
  148. package/dist/las-writer.cjs.map +7 -0
  149. package/dist/las-writer.d.ts +2 -0
  150. package/dist/las-writer.d.ts.map +1 -0
  151. package/dist/las-writer.js +2 -0
  152. package/dist/las-writer.js.map +1 -0
  153. package/dist/laz-rs-loader-types.cjs +51 -0
  154. package/dist/laz-rs-loader-types.cjs.map +7 -0
  155. package/dist/laz-rs-loader-types.d.ts +2 -0
  156. package/dist/laz-rs-loader-types.d.ts.map +1 -0
  157. package/dist/laz-rs-loader-types.js +2 -0
  158. package/dist/laz-rs-loader-types.js.map +1 -0
  159. package/dist/laz-rs-loader.cjs +277 -0
  160. package/dist/laz-rs-loader.cjs.map +7 -0
  161. package/dist/laz-rs-loader.d.ts +2 -0
  162. package/dist/laz-rs-loader.d.ts.map +1 -0
  163. package/dist/laz-rs-loader.js +2 -0
  164. package/dist/laz-rs-loader.js.map +1 -0
  165. package/dist/lazperf-loader-types.cjs +51 -0
  166. package/dist/lazperf-loader-types.cjs.map +7 -0
  167. package/dist/lazperf-loader-types.d.ts +2 -0
  168. package/dist/lazperf-loader-types.d.ts.map +1 -0
  169. package/dist/lazperf-loader-types.js +2 -0
  170. package/dist/lazperf-loader-types.js.map +1 -0
  171. package/dist/lazperf-loader.cjs +65 -0
  172. package/dist/lazperf-loader.cjs.map +7 -0
  173. package/dist/lazperf-loader.d.ts +2 -0
  174. package/dist/lazperf-loader.d.ts.map +1 -0
  175. package/dist/lazperf-loader.js +2 -0
  176. package/dist/lazperf-loader.js.map +1 -0
  177. package/dist/pcd/bundled.cjs +2 -4
  178. package/dist/pcd/bundled.cjs.map +2 -2
  179. package/dist/pcd/bundled.d.ts +1 -1
  180. package/dist/pcd/bundled.d.ts.map +1 -1
  181. package/dist/pcd/bundled.js +1 -1
  182. package/dist/pcd/bundled.js.map +1 -1
  183. package/dist/pcd/index.cjs +0 -3
  184. package/dist/pcd/index.cjs.map +3 -3
  185. package/dist/pcd/index.d.ts +0 -2
  186. package/dist/pcd/index.d.ts.map +1 -1
  187. package/dist/pcd/index.js +0 -3
  188. package/dist/pcd/index.js.map +1 -1
  189. package/dist/pcd/pcd-loader-types.cjs +9 -10
  190. package/dist/pcd/pcd-loader-types.cjs.map +2 -2
  191. package/dist/pcd/pcd-loader-types.d.ts +18 -41
  192. package/dist/pcd/pcd-loader-types.d.ts.map +1 -1
  193. package/dist/pcd/pcd-loader-types.js +6 -6
  194. package/dist/pcd/pcd-loader-types.js.map +1 -1
  195. package/dist/pcd/pcd-loader.cjs +82 -25
  196. package/dist/pcd/pcd-loader.cjs.map +3 -3
  197. package/dist/pcd/pcd-loader.d.ts +42 -6
  198. package/dist/pcd/pcd-loader.d.ts.map +1 -1
  199. package/dist/pcd/pcd-loader.js +72 -21
  200. package/dist/pcd/pcd-loader.js.map +1 -1
  201. package/dist/pcd/pcd-writer.cjs +3 -3
  202. package/dist/pcd/pcd-writer.cjs.map +2 -2
  203. package/dist/pcd/pcd-writer.d.ts +5 -4
  204. package/dist/pcd/pcd-writer.d.ts.map +1 -1
  205. package/dist/pcd/pcd-writer.js +4 -4
  206. package/dist/pcd/pcd-writer.js.map +1 -1
  207. package/dist/pcd/unbundled.cjs +2 -4
  208. package/dist/pcd/unbundled.cjs.map +2 -2
  209. package/dist/pcd/unbundled.d.ts +1 -1
  210. package/dist/pcd/unbundled.d.ts.map +1 -1
  211. package/dist/pcd/unbundled.js +1 -1
  212. package/dist/pcd/unbundled.js.map +1 -1
  213. package/dist/pcd/workers/pcd-worker.cjs +5 -5
  214. package/dist/pcd/workers/pcd-worker.cjs.map +2 -2
  215. package/dist/pcd/workers/pcd-worker.js +6 -6
  216. package/dist/pcd/workers/pcd-worker.js.map +1 -1
  217. package/dist/pcd-loader-types.cjs +65 -0
  218. package/dist/pcd-loader-types.cjs.map +7 -0
  219. package/dist/pcd-loader-types.d.ts +2 -0
  220. package/dist/pcd-loader-types.d.ts.map +1 -0
  221. package/dist/pcd-loader-types.js +2 -0
  222. package/dist/pcd-loader-types.js.map +1 -0
  223. package/dist/pcd-loader.cjs +203 -0
  224. package/dist/pcd-loader.cjs.map +7 -0
  225. package/dist/pcd-loader.d.ts +2 -0
  226. package/dist/pcd-loader.d.ts.map +1 -0
  227. package/dist/pcd-loader.js +2 -0
  228. package/dist/pcd-loader.js.map +1 -0
  229. package/dist/pcd-worker.js +1457 -418
  230. package/dist/pcd-writer.cjs +136 -0
  231. package/dist/pcd-writer.cjs.map +7 -0
  232. package/dist/pcd-writer.d.ts +2 -0
  233. package/dist/pcd-writer.d.ts.map +1 -0
  234. package/dist/pcd-writer.js +2 -0
  235. package/dist/pcd-writer.js.map +1 -0
  236. package/dist/ply/bundled.cjs +2 -4
  237. package/dist/ply/bundled.cjs.map +2 -2
  238. package/dist/ply/bundled.d.ts +1 -1
  239. package/dist/ply/bundled.d.ts.map +1 -1
  240. package/dist/ply/bundled.js +1 -1
  241. package/dist/ply/bundled.js.map +1 -1
  242. package/dist/ply/index.cjs +0 -3
  243. package/dist/ply/index.cjs.map +3 -3
  244. package/dist/ply/index.d.ts +0 -2
  245. package/dist/ply/index.d.ts.map +1 -1
  246. package/dist/ply/index.js +0 -3
  247. package/dist/ply/index.js.map +1 -1
  248. package/dist/ply/lib/get-ply-schema.cjs +4 -2
  249. package/dist/ply/lib/get-ply-schema.cjs.map +2 -2
  250. package/dist/ply/lib/get-ply-schema.d.ts +6 -0
  251. package/dist/ply/lib/get-ply-schema.d.ts.map +1 -1
  252. package/dist/ply/lib/get-ply-schema.js +1 -1
  253. package/dist/ply/lib/get-ply-schema.js.map +1 -1
  254. package/dist/ply/lib/parse-ply-arrow.cjs +1 -1
  255. package/dist/ply/lib/parse-ply-arrow.cjs.map +2 -2
  256. package/dist/ply/lib/parse-ply-arrow.js +2 -2
  257. package/dist/ply/lib/parse-ply-arrow.js.map +1 -1
  258. package/dist/ply/lib/parse-ply-in-batches.cjs +14 -8
  259. package/dist/ply/lib/parse-ply-in-batches.cjs.map +3 -3
  260. package/dist/ply/lib/parse-ply-in-batches.d.ts.map +1 -1
  261. package/dist/ply/lib/parse-ply-in-batches.js +9 -4
  262. package/dist/ply/lib/parse-ply-in-batches.js.map +1 -1
  263. package/dist/ply/lib/parse-ply.cjs +3 -0
  264. package/dist/ply/lib/parse-ply.cjs.map +2 -2
  265. package/dist/ply/lib/parse-ply.d.ts +1 -1
  266. package/dist/ply/lib/parse-ply.d.ts.map +1 -1
  267. package/dist/ply/lib/parse-ply.js +4 -0
  268. package/dist/ply/lib/parse-ply.js.map +1 -1
  269. package/dist/ply/ply-loader-types.cjs +9 -10
  270. package/dist/ply/ply-loader-types.cjs.map +2 -2
  271. package/dist/ply/ply-loader-types.d.ts +19 -42
  272. package/dist/ply/ply-loader-types.d.ts.map +1 -1
  273. package/dist/ply/ply-loader-types.js +6 -6
  274. package/dist/ply/ply-loader-types.js.map +1 -1
  275. package/dist/ply/ply-loader.cjs +82 -24
  276. package/dist/ply/ply-loader.cjs.map +3 -3
  277. package/dist/ply/ply-loader.d.ts +43 -6
  278. package/dist/ply/ply-loader.d.ts.map +1 -1
  279. package/dist/ply/ply-loader.js +71 -19
  280. package/dist/ply/ply-loader.js.map +1 -1
  281. package/dist/ply/ply-writer.cjs +3 -3
  282. package/dist/ply/ply-writer.cjs.map +2 -2
  283. package/dist/ply/ply-writer.d.ts +5 -4
  284. package/dist/ply/ply-writer.d.ts.map +1 -1
  285. package/dist/ply/ply-writer.js +4 -4
  286. package/dist/ply/ply-writer.js.map +1 -1
  287. package/dist/ply/unbundled.cjs +2 -4
  288. package/dist/ply/unbundled.cjs.map +2 -2
  289. package/dist/ply/unbundled.d.ts +1 -1
  290. package/dist/ply/unbundled.d.ts.map +1 -1
  291. package/dist/ply/unbundled.js +1 -1
  292. package/dist/ply/unbundled.js.map +1 -1
  293. package/dist/ply/workers/ply-worker.cjs +6 -6
  294. package/dist/ply/workers/ply-worker.cjs.map +2 -2
  295. package/dist/ply/workers/ply-worker.js +8 -8
  296. package/dist/ply/workers/ply-worker.js.map +1 -1
  297. package/dist/ply-loader-types.cjs +66 -0
  298. package/dist/ply-loader-types.cjs.map +7 -0
  299. package/dist/ply-loader-types.d.ts +2 -0
  300. package/dist/ply-loader-types.d.ts.map +1 -0
  301. package/dist/ply-loader-types.js +2 -0
  302. package/dist/ply-loader-types.js.map +1 -0
  303. package/dist/ply-loader.cjs +194 -0
  304. package/dist/ply-loader.cjs.map +7 -0
  305. package/dist/ply-loader.d.ts +2 -0
  306. package/dist/ply-loader.d.ts.map +1 -0
  307. package/dist/ply-loader.js +2 -0
  308. package/dist/ply-loader.js.map +1 -0
  309. package/dist/ply-worker.js +2099 -312
  310. package/dist/ply-writer.cjs +177 -0
  311. package/dist/ply-writer.cjs.map +7 -0
  312. package/dist/ply-writer.d.ts +2 -0
  313. package/dist/ply-writer.d.ts.map +1 -0
  314. package/dist/ply-writer.js +2 -0
  315. package/dist/ply-writer.js.map +1 -0
  316. package/package.json +75 -71
  317. package/src/index.ts +3 -3
  318. package/src/las/bundled.ts +0 -1
  319. package/src/las/index.ts +0 -4
  320. package/src/las/las-copc-loader-types.ts +3 -3
  321. package/src/las/las-copc-loader.ts +12 -12
  322. package/src/las/las-loader-shared.ts +9 -7
  323. package/src/las/las-loader-types.ts +3 -6
  324. package/src/las/las-loader.ts +63 -9
  325. package/src/las/las-writer.ts +17 -13
  326. package/src/las/laz-rs-loader-types.ts +3 -3
  327. package/src/las/laz-rs-loader.ts +11 -11
  328. package/src/las/lazperf-loader-types.ts +3 -3
  329. package/src/las/lazperf-loader.ts +13 -13
  330. package/src/las/lib/copc/parse-las.ts +1 -1
  331. package/src/las/lib/get-las-schema.ts +5 -0
  332. package/src/las/lib/las-extra-bytes.ts +6 -4
  333. package/src/las/lib/laz-perf/parse-las.ts +8 -9
  334. package/src/las/lib/laz-rs-wasm/parse-las.ts +8 -9
  335. package/src/las/lib/typescript/parse-las.ts +143 -11
  336. package/src/las/libs/laz-rs-wasm/README.md +5 -0
  337. package/src/las/libs/laz-rs-wasm/package.json +6 -0
  338. package/src/las/unbundled.ts +1 -1
  339. package/src/las/workers/las-worker.ts +6 -6
  340. package/src/las-copc-loader-types.ts +1 -0
  341. package/src/las-copc-loader.ts +1 -0
  342. package/src/las-loader-types.ts +1 -0
  343. package/src/las-loader.ts +1 -0
  344. package/src/las-writer.ts +1 -0
  345. package/src/laz-rs-loader-types.ts +1 -0
  346. package/src/laz-rs-loader.ts +1 -0
  347. package/src/lazperf-loader-types.ts +1 -0
  348. package/src/lazperf-loader.ts +1 -0
  349. package/src/pcd/bundled.ts +1 -4
  350. package/src/pcd/index.ts +0 -4
  351. package/src/pcd/pcd-loader-types.ts +10 -11
  352. package/src/pcd/pcd-loader.ts +97 -29
  353. package/src/pcd/pcd-writer.ts +12 -8
  354. package/src/pcd/unbundled.ts +1 -1
  355. package/src/pcd/workers/pcd-worker.ts +6 -6
  356. package/src/pcd-loader-types.ts +1 -0
  357. package/src/pcd-loader.ts +1 -0
  358. package/src/pcd-writer.ts +1 -0
  359. package/src/ply/bundled.ts +1 -4
  360. package/src/ply/index.ts +0 -4
  361. package/src/ply/lib/get-ply-schema.ts +1 -1
  362. package/src/ply/lib/parse-ply-arrow.ts +2 -2
  363. package/src/ply/lib/parse-ply-in-batches.ts +9 -4
  364. package/src/ply/lib/parse-ply.ts +4 -1
  365. package/src/ply/ply-loader-types.ts +10 -11
  366. package/src/ply/ply-loader.ts +94 -24
  367. package/src/ply/ply-writer.ts +12 -8
  368. package/src/ply/unbundled.ts +1 -1
  369. package/src/ply/workers/ply-worker.ts +8 -8
  370. package/src/ply-loader-types.ts +1 -0
  371. package/src/ply-loader.ts +1 -0
  372. package/src/ply-writer.ts +1 -0
@@ -20,45 +20,35 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/pcd/pcd-loader.ts
21
21
  var pcd_loader_exports = {};
22
22
  __export(pcd_loader_exports, {
23
+ PCDColumnLoader: () => PCDColumnLoader,
23
24
  PCDLoaderWithParser: () => PCDLoaderWithParser
24
25
  });
25
26
  module.exports = __toCommonJS(pcd_loader_exports);
26
- var import_loader_utils = require("@loaders.gl/core/loader-utils");
27
- var import_arrow_transport = require("@loaders.gl/core/schema-utils/arrow-transport");
28
27
  var import_schema_utils = require("@loaders.gl/core/schema-utils");
28
+ var import_loader_utils = require("@loaders.gl/core/loader-utils");
29
+ var import_arrow_worker_transport = require("@loaders.gl/core/arrow-worker-transport");
30
+ var import_schema_utils2 = require("@loaders.gl/core/schema-utils");
29
31
  var import_parse_pcd = require("./lib/parse-pcd.cjs");
30
32
  var import_pcd_loader_types = require("./pcd-loader-types.cjs");
31
33
  var { preload: _PCDLoaderPreload, ...PCDLoaderMetadataWithoutPreload } = import_pcd_loader_types.PCDLoader;
32
34
  function convertPCDMesh(mesh, options) {
33
- const table = (0, import_schema_utils.convertMeshToTable)(mesh, "arrow-table");
35
+ const table = (0, import_schema_utils2.convertMeshToArrowTableWrapper)(mesh);
34
36
  return options?.pcd?.shape === "mesh" ? convertPCDTableToMesh(table, mesh) : { ...table, loader: mesh.loader, loaderData: mesh.loaderData };
35
37
  }
36
- var PCDLoaderWithParser = {
38
+ var PCDColumnLoader = {
37
39
  ...PCDLoaderMetadataWithoutPreload,
40
+ dataType: null,
41
+ batchType: null,
38
42
  parse: async (arrayBuffer, options) => convertPCDMesh((0, import_parse_pcd.parsePCD)(arrayBuffer, options), options),
39
43
  parseSync: (arrayBuffer, options) => convertPCDMesh((0, import_parse_pcd.parsePCD)(arrayBuffer, options), options),
40
- parseInBatches: async function* (arrayBuffer, options) {
41
- const batchSize = getNumericBatchSize(options);
42
- const data = await (0, import_loader_utils.concatenateArrayBuffersAsync)(arrayBuffer);
43
- const textData = new TextDecoder().decode(data);
44
- const pcdHeader = (0, import_parse_pcd.parsePCDHeader)(textData);
45
- if (pcdHeader.data === "ascii") {
46
- yield* parsePCDASCIIInBatches(data, options, batchSize);
47
- return;
48
- }
49
- if (pcdHeader.data === "binary") {
50
- yield* parsePCDBinaryInBatches(data, options, batchSize);
51
- return;
52
- }
53
- yield makePCDBatch((0, import_parse_pcd.parsePCD)(data, options), options);
54
- },
55
- serializeWorkerResult: import_arrow_transport.serializeArrowWorkerTable,
44
+ parseInBatches: (input, options) => (0, import_schema_utils.refineArrowTableBatches)(parsePCDWithMetadataInBatches(input, options)),
45
+ serializeWorkerResult: import_arrow_worker_transport.serializeArrowWorkerTable,
56
46
  deserializeWorkerResult: deserializePCDWorkerResult,
57
- serializeWorkerBatch: import_arrow_transport.serializeArrowWorkerTable,
47
+ serializeWorkerBatch: import_arrow_worker_transport.serializeArrowWorkerTable,
58
48
  deserializeWorkerBatch: deserializePCDWorkerBatch
59
49
  };
60
50
  function getNumericBatchSize(options) {
61
- const batchSize = options?.batchSize ?? options?.core?.batchSize;
51
+ const batchSize = options?.core?.batchSize;
62
52
  return typeof batchSize === "number" ? batchSize : void 0;
63
53
  }
64
54
  function* parsePCDASCIIInBatches(data, options, batchSize) {
@@ -93,7 +83,7 @@ function* parsePCDBinaryInBatches(data, options, batchSize) {
93
83
  }
94
84
  }
95
85
  function makePCDBatch(mesh, options) {
96
- const table = (0, import_schema_utils.convertMeshToTable)(mesh, "arrow-table");
86
+ const table = (0, import_schema_utils2.convertMeshToArrowTableWrapper)(mesh);
97
87
  if (options?.pcd?.shape === "mesh") {
98
88
  return convertPCDTableToMesh(table, mesh);
99
89
  }
@@ -105,7 +95,7 @@ function makePCDBatch(mesh, options) {
105
95
  }
106
96
  function convertPCDTableToMesh(table, sourceMesh) {
107
97
  return {
108
- ...(0, import_schema_utils.convertTableToMesh)(table),
98
+ ...(0, import_schema_utils2.convertTableToMesh)(table),
109
99
  loader: sourceMesh.loader,
110
100
  loaderData: sourceMesh.loaderData
111
101
  };
@@ -131,14 +121,81 @@ function makePCDHeaderText(pcdHeader, pointCount) {
131
121
  `;
132
122
  }
133
123
  function deserializePCDWorkerResult(result, options) {
134
- const table = (0, import_arrow_transport.deserializeArrowWorkerTable)(result);
124
+ const table = (0, import_arrow_worker_transport.deserializeArrowWorkerTable)(result);
135
125
  return options?.pcd?.shape === "mesh" ? convertPCDTableToMesh(table, table) : table;
136
126
  }
137
127
  function deserializePCDWorkerBatch(result, options) {
138
128
  return deserializePCDWorkerResult(result, options);
139
129
  }
130
+ async function* parsePCDWithMetadataInBatches(arrayBuffer, options) {
131
+ const batchSize = getNumericBatchSize(options);
132
+ const data = await (0, import_loader_utils.concatenateArrayBuffersAsync)(arrayBuffer);
133
+ const textData = new TextDecoder().decode(data);
134
+ const pcdHeader = (0, import_parse_pcd.parsePCDHeader)(textData);
135
+ if (pcdHeader.data === "ascii") {
136
+ yield* parsePCDASCIIInBatches(data, options, batchSize);
137
+ return;
138
+ }
139
+ if (pcdHeader.data === "binary") {
140
+ yield* parsePCDBinaryInBatches(data, options, batchSize);
141
+ return;
142
+ }
143
+ yield makePCDBatch((0, import_parse_pcd.parsePCD)(data, options), options);
144
+ }
145
+ var PCDLoaderWithParser = {
146
+ ...PCDColumnLoader,
147
+ dataType: import_pcd_loader_types.PCDLoader.dataType,
148
+ batchType: import_pcd_loader_types.PCDLoader.batchType,
149
+ parse: async (input, options) => unwrapPCDTable(await PCDColumnLoader.parse(input, options)),
150
+ parseSync: (input, options) => unwrapPCDTable(PCDColumnLoader.parseSync(input, options)),
151
+ async *parseInBatches(input, options) {
152
+ for await (const batch of PCDColumnLoader.parseInBatches(input, options)) {
153
+ if (isColumnBatch(batch)) {
154
+ batch.data.schema.metadata.set(
155
+ "loaders.gl.pcd.header",
156
+ JSON.stringify(batch.loaderData)
157
+ );
158
+ for (const recordBatch of batch.data.batches) {
159
+ recordBatch.schema.metadata.set(
160
+ "loaders.gl.pcd.header",
161
+ batch.data.schema.metadata.get("loaders.gl.pcd.header")
162
+ );
163
+ }
164
+ if (batch.data.batches.length) yield* batch.data.batches;
165
+ else yield (0, import_schema_utils.makeArrowMetadataBatch)(batch.data.schema);
166
+ } else yield batch;
167
+ }
168
+ },
169
+ deserializeWorkerResult: (result, options) => unwrapPCDTable(PCDColumnLoader.deserializeWorkerResult(result, options)),
170
+ deserializeWorkerBatch(result, options) {
171
+ const batch = PCDColumnLoader.deserializeWorkerBatch(result, options);
172
+ if (isColumnBatch(batch)) {
173
+ const recordBatch = batch.data.batches[0] ?? (0, import_schema_utils.makeArrowMetadataBatch)(batch.data.schema);
174
+ recordBatch.schema.metadata.set(
175
+ "loaders.gl.pcd.header",
176
+ JSON.stringify(batch.loaderData)
177
+ );
178
+ return recordBatch;
179
+ }
180
+ return batch;
181
+ }
182
+ };
183
+ function unwrapPCDTable(result) {
184
+ if ("shape" in result && result.shape === "arrow-table") {
185
+ result.data.schema.metadata.set(
186
+ "loaders.gl.pcd.header",
187
+ JSON.stringify(result.loaderData)
188
+ );
189
+ return result.data;
190
+ }
191
+ return result;
192
+ }
193
+ function isColumnBatch(batch) {
194
+ return "shape" in batch && batch.shape === "arrow-table";
195
+ }
140
196
  // Annotate the CommonJS export names for ESM import in node:
141
197
  0 && (module.exports = {
198
+ PCDColumnLoader,
142
199
  PCDLoaderWithParser
143
200
  });
144
201
  //# sourceMappingURL=pcd-loader.cjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/pcd/pcd-loader.ts"],
4
- "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {PCDLoaderOptions} from './pcd-loader-types';\n\nimport {\n concatenateArrayBuffersAsync,\n makeTableScanBatch,\n type LoaderWithParser\n} from '@loaders.gl/core/loader-utils';\nimport type {ArrowTableBatch, MeshArrowTable} from '@loaders.gl/core/schema';\nimport {\n deserializeArrowWorkerTable,\n serializeArrowWorkerTable\n} from '@loaders.gl/core/schema-utils/arrow-transport';\nimport {convertMeshToTable, convertTableToMesh} from '@loaders.gl/core/schema-utils';\nimport type {PCDMesh} from './lib/pcd-types';\nimport {parsePCD, parsePCDHeader} from './lib/parse-pcd';\nimport {PCDLoader as PCDLoaderMetadata} from './pcd-loader-types';\n\nconst {preload: _PCDLoaderPreload, ...PCDLoaderMetadataWithoutPreload} = PCDLoaderMetadata;\n\ntype PCDParsedBatch = PCDMesh | ArrowTableBatch;\n\nfunction convertPCDMesh(mesh: PCDMesh, options?: PCDLoaderOptions): PCDMesh | MeshArrowTable {\n const table = convertMeshToTable(mesh, 'arrow-table');\n return options?.pcd?.shape === 'mesh'\n ? convertPCDTableToMesh(table, mesh)\n : {...table, loader: mesh.loader, loaderData: mesh.loaderData};\n}\n\n/**\n * Loader for PCD - Point Cloud Data\n */\nexport const PCDLoaderWithParser = {\n ...PCDLoaderMetadataWithoutPreload,\n parse: async (arrayBuffer, options) => convertPCDMesh(parsePCD(arrayBuffer, options), options),\n parseSync: (arrayBuffer, options) => convertPCDMesh(parsePCD(arrayBuffer, options), options),\n parseInBatches: async function* (\n arrayBuffer:\n | AsyncIterable<ArrayBufferLike | ArrayBufferView>\n | Iterable<ArrayBufferLike | ArrayBufferView>,\n options\n ): AsyncIterable<PCDParsedBatch> {\n const batchSize = getNumericBatchSize(options);\n const data = await concatenateArrayBuffersAsync(arrayBuffer);\n const textData = new TextDecoder().decode(data);\n const pcdHeader = parsePCDHeader(textData);\n\n if (pcdHeader.data === 'ascii') {\n yield* parsePCDASCIIInBatches(data, options, batchSize);\n return;\n }\n\n if (pcdHeader.data === 'binary') {\n yield* parsePCDBinaryInBatches(data, options, batchSize);\n return;\n }\n\n yield makePCDBatch(parsePCD(data, options), options);\n },\n serializeWorkerResult: serializeArrowWorkerTable,\n deserializeWorkerResult: deserializePCDWorkerResult,\n serializeWorkerBatch: serializeArrowWorkerTable,\n deserializeWorkerBatch: deserializePCDWorkerBatch\n} as const satisfies LoaderWithParser<PCDMesh | MeshArrowTable, PCDParsedBatch, PCDLoaderOptions>;\n\n/** Returns a numeric batch size when batching has an explicit row count. */\nfunction getNumericBatchSize(options?: PCDLoaderOptions): number | undefined {\n const batchSize = options?.batchSize ?? options?.core?.batchSize;\n return typeof batchSize === 'number' ? batchSize : undefined;\n}\n\nfunction* parsePCDASCIIInBatches(\n data: ArrayBuffer,\n options?: PCDLoaderOptions,\n batchSize?: number\n): Iterable<PCDParsedBatch> {\n const textData = new TextDecoder().decode(data);\n const pcdHeader = parsePCDHeader(textData);\n const lines = textData\n .slice(pcdHeader.headerLen)\n .split(/\\r?\\n/)\n .filter(line => line.trim().length > 0);\n const normalizedBatchSize = batchSize || lines.length || 1;\n\n for (let rowIndex = 0; rowIndex < lines.length; rowIndex += normalizedBatchSize) {\n const batchLines = lines.slice(rowIndex, rowIndex + normalizedBatchSize);\n const batchText = `${makePCDHeaderText(pcdHeader, batchLines.length)}${batchLines.join('\\n')}\\n`;\n yield makePCDBatch(parsePCD(new TextEncoder().encode(batchText).buffer, options), options);\n }\n}\n\nfunction* parsePCDBinaryInBatches(\n data: ArrayBuffer,\n options?: PCDLoaderOptions,\n batchSize?: number\n): Iterable<PCDParsedBatch> {\n const textData = new TextDecoder().decode(data);\n const pcdHeader = parsePCDHeader(textData);\n const normalizedBatchSize = batchSize || pcdHeader.points || 1;\n const dataBytes = new Uint8Array(data);\n\n for (let pointIndex = 0; pointIndex < pcdHeader.points; pointIndex += normalizedBatchSize) {\n const pointCount = Math.min(normalizedBatchSize, pcdHeader.points - pointIndex);\n const headerBytes = new TextEncoder().encode(makePCDHeaderText(pcdHeader, pointCount));\n const rowByteOffset = pcdHeader.headerLen + pointIndex * pcdHeader.rowSize;\n const rowByteLength = pointCount * pcdHeader.rowSize;\n const batchBytes = new Uint8Array(headerBytes.length + rowByteLength);\n batchBytes.set(headerBytes, 0);\n batchBytes.set(\n dataBytes.subarray(rowByteOffset, rowByteOffset + rowByteLength),\n headerBytes.length\n );\n yield makePCDBatch(parsePCD(batchBytes.buffer, options), options);\n }\n}\n\nfunction makePCDBatch(mesh: PCDMesh, options?: PCDLoaderOptions): PCDParsedBatch {\n const table = convertMeshToTable(mesh, 'arrow-table');\n if (options?.pcd?.shape === 'mesh') {\n return convertPCDTableToMesh(table, mesh);\n }\n\n return makeTableScanBatch({\n ...table,\n loader: mesh.loader,\n loaderData: mesh.loaderData\n } as MeshArrowTable);\n}\n\n/** Convert the parser's Arrow table to legacy PCD mesh output. */\nfunction convertPCDTableToMesh(table: MeshArrowTable, sourceMesh: PCDMesh): PCDMesh {\n return {\n ...(convertTableToMesh(table) as PCDMesh),\n loader: sourceMesh.loader,\n loaderData: sourceMesh.loaderData\n };\n}\n\nfunction makePCDHeaderText(pcdHeader: any, pointCount: number): string {\n const lines = pcdHeader.str\n .split(/\\r?\\n/)\n .filter(line => line.trim().length > 0)\n .map(line => {\n if (/^WIDTH\\s+/i.test(line)) {\n return `WIDTH ${pointCount}`;\n }\n if (/^HEIGHT\\s+/i.test(line)) {\n return 'HEIGHT 1';\n }\n if (/^POINTS\\s+/i.test(line)) {\n return `POINTS ${pointCount}`;\n }\n return line;\n });\n\n if (!lines.some(line => /^POINTS\\s+/i.test(line))) {\n const dataLineIndex = lines.findIndex(line => /^DATA\\s+/i.test(line));\n lines.splice(dataLineIndex >= 0 ? dataLineIndex : lines.length, 0, `POINTS ${pointCount}`);\n }\n\n return `${lines.join('\\n')}\\n`;\n}\n\n/** Hydrates worker columns before reconstructing legacy PCD meshes on the caller. */\nfunction deserializePCDWorkerResult(\n result: unknown,\n options?: PCDLoaderOptions\n): PCDMesh | MeshArrowTable {\n const table = deserializeArrowWorkerTable(result);\n return options?.pcd?.shape === 'mesh' ? convertPCDTableToMesh(table, table) : table;\n}\n\n/** Restores the existing PCD batch shape after caller-side hydration. */\nfunction deserializePCDWorkerBatch(result: unknown, options?: PCDLoaderOptions): PCDParsedBatch {\n return deserializePCDWorkerResult(result, options) as PCDParsedBatch;\n}\n"],
5
- "mappings": "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",
6
- "names": ["PCDLoaderMetadata"]
4
+ "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {refineArrowTableBatches, makeArrowMetadataBatch} from '@loaders.gl/core/schema-utils';\nimport type {Table, RecordBatch} from 'apache-arrow';\nimport type {PCDLoaderOptions} from './pcd-loader-types';\n\nimport {\n concatenateArrayBuffersAsync,\n makeTableScanBatch,\n type LoaderWithParser\n} from '@loaders.gl/core/loader-utils';\nimport type {ArrowTableBatch, MeshArrowTable} from '@loaders.gl/core/schema';\nimport {\n deserializeArrowWorkerTable,\n serializeArrowWorkerTable\n} from '@loaders.gl/core/arrow-worker-transport';\nimport {convertMeshToArrowTableWrapper, convertTableToMesh} from '@loaders.gl/core/schema-utils';\nimport type {PCDMesh} from './lib/pcd-types';\nimport {parsePCD, parsePCDHeader} from './lib/parse-pcd';\nimport {PCDLoader as PCDLoaderMetadata} from './pcd-loader-types';\n\nconst {preload: _PCDLoaderPreload, ...PCDLoaderMetadataWithoutPreload} = PCDLoaderMetadata;\n\ntype PCDParsedBatch = PCDMesh | ArrowTableBatch;\n\nfunction convertPCDMesh(mesh: PCDMesh, options?: PCDLoaderOptions): PCDMesh | MeshArrowTable {\n const table = convertMeshToArrowTableWrapper(mesh);\n return options?.pcd?.shape === 'mesh'\n ? convertPCDTableToMesh(table, mesh)\n : {...table, loader: mesh.loader, loaderData: mesh.loaderData};\n}\n\n/**\n * Loader for PCD - Point Cloud Data\n */\nexport const PCDColumnLoader = {\n ...PCDLoaderMetadataWithoutPreload,\n dataType: null as unknown as PCDMesh | MeshArrowTable,\n batchType: null as unknown as PCDMesh | ArrowTableBatch,\n parse: async (arrayBuffer, options) => convertPCDMesh(parsePCD(arrayBuffer, options), options),\n parseSync: (arrayBuffer, options) => convertPCDMesh(parsePCD(arrayBuffer, options), options),\n parseInBatches: (input, options) =>\n refineArrowTableBatches(parsePCDWithMetadataInBatches(input, options)),\n serializeWorkerResult: serializeArrowWorkerTable,\n deserializeWorkerResult: deserializePCDWorkerResult,\n serializeWorkerBatch: serializeArrowWorkerTable,\n deserializeWorkerBatch: deserializePCDWorkerBatch\n} as const satisfies LoaderWithParser<PCDMesh | MeshArrowTable, PCDParsedBatch, PCDLoaderOptions>;\n\n/** Returns a numeric batch size when batching has an explicit row count. */\nfunction getNumericBatchSize(options?: PCDLoaderOptions): number | undefined {\n const batchSize = options?.core?.batchSize;\n return typeof batchSize === 'number' ? batchSize : undefined;\n}\n\nfunction* parsePCDASCIIInBatches(\n data: ArrayBuffer,\n options?: PCDLoaderOptions,\n batchSize?: number\n): Iterable<PCDParsedBatch> {\n const textData = new TextDecoder().decode(data);\n const pcdHeader = parsePCDHeader(textData);\n const lines = textData\n .slice(pcdHeader.headerLen)\n .split(/\\r?\\n/)\n .filter(line => line.trim().length > 0);\n const normalizedBatchSize = batchSize || lines.length || 1;\n\n for (let rowIndex = 0; rowIndex < lines.length; rowIndex += normalizedBatchSize) {\n const batchLines = lines.slice(rowIndex, rowIndex + normalizedBatchSize);\n const batchText = `${makePCDHeaderText(pcdHeader, batchLines.length)}${batchLines.join('\\n')}\\n`;\n yield makePCDBatch(parsePCD(new TextEncoder().encode(batchText).buffer, options), options);\n }\n}\n\nfunction* parsePCDBinaryInBatches(\n data: ArrayBuffer,\n options?: PCDLoaderOptions,\n batchSize?: number\n): Iterable<PCDParsedBatch> {\n const textData = new TextDecoder().decode(data);\n const pcdHeader = parsePCDHeader(textData);\n const normalizedBatchSize = batchSize || pcdHeader.points || 1;\n const dataBytes = new Uint8Array(data);\n\n for (let pointIndex = 0; pointIndex < pcdHeader.points; pointIndex += normalizedBatchSize) {\n const pointCount = Math.min(normalizedBatchSize, pcdHeader.points - pointIndex);\n const headerBytes = new TextEncoder().encode(makePCDHeaderText(pcdHeader, pointCount));\n const rowByteOffset = pcdHeader.headerLen + pointIndex * pcdHeader.rowSize;\n const rowByteLength = pointCount * pcdHeader.rowSize;\n const batchBytes = new Uint8Array(headerBytes.length + rowByteLength);\n batchBytes.set(headerBytes, 0);\n batchBytes.set(\n dataBytes.subarray(rowByteOffset, rowByteOffset + rowByteLength),\n headerBytes.length\n );\n yield makePCDBatch(parsePCD(batchBytes.buffer, options), options);\n }\n}\n\nfunction makePCDBatch(mesh: PCDMesh, options?: PCDLoaderOptions): PCDParsedBatch {\n const table = convertMeshToArrowTableWrapper(mesh);\n if (options?.pcd?.shape === 'mesh') {\n return convertPCDTableToMesh(table, mesh);\n }\n\n return makeTableScanBatch({\n ...table,\n loader: mesh.loader,\n loaderData: mesh.loaderData\n } as MeshArrowTable);\n}\n\n/** Convert the parser's Arrow table to legacy PCD mesh output. */\nfunction convertPCDTableToMesh(table: MeshArrowTable, sourceMesh: PCDMesh): PCDMesh {\n return {\n ...(convertTableToMesh(table) as PCDMesh),\n loader: sourceMesh.loader,\n loaderData: sourceMesh.loaderData\n };\n}\n\nfunction makePCDHeaderText(pcdHeader: any, pointCount: number): string {\n const lines = pcdHeader.str\n .split(/\\r?\\n/)\n .filter(line => line.trim().length > 0)\n .map(line => {\n if (/^WIDTH\\s+/i.test(line)) {\n return `WIDTH ${pointCount}`;\n }\n if (/^HEIGHT\\s+/i.test(line)) {\n return 'HEIGHT 1';\n }\n if (/^POINTS\\s+/i.test(line)) {\n return `POINTS ${pointCount}`;\n }\n return line;\n });\n\n if (!lines.some(line => /^POINTS\\s+/i.test(line))) {\n const dataLineIndex = lines.findIndex(line => /^DATA\\s+/i.test(line));\n lines.splice(dataLineIndex >= 0 ? dataLineIndex : lines.length, 0, `POINTS ${pointCount}`);\n }\n\n return `${lines.join('\\n')}\\n`;\n}\n\n/** Hydrates worker columns before reconstructing legacy PCD meshes on the caller. */\nfunction deserializePCDWorkerResult(\n result: unknown,\n options?: PCDLoaderOptions\n): PCDMesh | MeshArrowTable {\n const table = deserializeArrowWorkerTable(result);\n return options?.pcd?.shape === 'mesh' ? convertPCDTableToMesh(table, table) : table;\n}\n\n/** Restores the existing PCD batch shape after caller-side hydration. */\nfunction deserializePCDWorkerBatch(result: unknown, options?: PCDLoaderOptions): PCDParsedBatch {\n return deserializePCDWorkerResult(result, options) as PCDParsedBatch;\n}\n\n/** Parses PCD batches before shared cumulative metadata refinement. */\nasync function* parsePCDWithMetadataInBatches(\n arrayBuffer:\n | AsyncIterable<ArrayBufferLike | ArrayBufferView>\n | Iterable<ArrayBufferLike | ArrayBufferView>,\n options?: PCDLoaderOptions\n): AsyncIterable<PCDParsedBatch> {\n const batchSize = getNumericBatchSize(options);\n const data = await concatenateArrayBuffersAsync(arrayBuffer);\n const textData = new TextDecoder().decode(data);\n const pcdHeader = parsePCDHeader(textData);\n\n if (pcdHeader.data === 'ascii') {\n yield* parsePCDASCIIInBatches(data, options, batchSize);\n return;\n }\n\n if (pcdHeader.data === 'binary') {\n yield* parsePCDBinaryInBatches(data, options, batchSize);\n return;\n }\n\n yield makePCDBatch(parsePCD(data, options), options);\n}\n\n/** Exposes native Arrow output while retaining the worker's column protocol. */\nexport const PCDLoaderWithParser = {\n ...PCDColumnLoader,\n dataType: PCDLoaderMetadata.dataType,\n batchType: PCDLoaderMetadata.batchType,\n parse: async (input: ArrayBuffer, options?: PCDLoaderOptions) =>\n unwrapPCDTable(await PCDColumnLoader.parse(input, options)),\n parseSync: (input: ArrayBuffer, options?: PCDLoaderOptions) =>\n unwrapPCDTable(PCDColumnLoader.parseSync(input, options)),\n async *parseInBatches(input, options) {\n for await (const batch of PCDColumnLoader.parseInBatches(input, options)) {\n if (isColumnBatch(batch)) {\n batch.data.schema.metadata.set(\n 'loaders.gl.pcd.header',\n JSON.stringify((batch as ArrowTableBatch & {loaderData?: unknown}).loaderData)\n );\n for (const recordBatch of batch.data.batches) {\n recordBatch.schema.metadata.set(\n 'loaders.gl.pcd.header',\n batch.data.schema.metadata.get('loaders.gl.pcd.header')!\n );\n }\n if (batch.data.batches.length) yield* batch.data.batches;\n else yield makeArrowMetadataBatch(batch.data.schema);\n } else yield batch;\n }\n },\n deserializeWorkerResult: (result: unknown, options?: PCDLoaderOptions) =>\n unwrapPCDTable(PCDColumnLoader.deserializeWorkerResult(result, options)),\n deserializeWorkerBatch(result: unknown, options?: PCDLoaderOptions) {\n const batch = PCDColumnLoader.deserializeWorkerBatch(result, options);\n if (isColumnBatch(batch)) {\n const recordBatch = batch.data.batches[0] ?? makeArrowMetadataBatch(batch.data.schema);\n recordBatch.schema.metadata.set(\n 'loaders.gl.pcd.header',\n JSON.stringify((batch as ArrowTableBatch & {loaderData?: unknown}).loaderData)\n );\n return recordBatch;\n }\n return batch;\n }\n} as const satisfies LoaderWithParser<PCDMesh | Table, PCDMesh | RecordBatch, PCDLoaderOptions>;\n\n/** Returns the Arrow table with its file metadata or the requested mesh. */\nfunction unwrapPCDTable(result: PCDMesh | MeshArrowTable): PCDMesh | Table {\n if ('shape' in result && result.shape === 'arrow-table') {\n result.data.schema.metadata.set(\n 'loaders.gl.pcd.header',\n JSON.stringify((result as MeshArrowTable & {loaderData?: unknown}).loaderData)\n );\n return result.data;\n }\n return result as PCDMesh;\n}\n\n/** Identifies the private Arrow batch envelope. */\nfunction isColumnBatch(batch: PCDMesh | ArrowTableBatch): batch is ArrowTableBatch {\n return 'shape' in batch && batch.shape === 'arrow-table';\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["import_schema_utils", "PCDLoaderMetadata"]
7
7
  }
@@ -1,27 +1,28 @@
1
+ import type { Table, RecordBatch } from 'apache-arrow';
1
2
  import type { PCDLoaderOptions } from "./pcd-loader-types.js";
2
3
  import type { ArrowTableBatch, MeshArrowTable } from '@loaders.gl/core/schema';
3
- import { serializeArrowWorkerTable } from '@loaders.gl/core/schema-utils/arrow-transport';
4
+ import { serializeArrowWorkerTable } from '@loaders.gl/core/arrow-worker-transport';
4
5
  import type { PCDMesh } from "./lib/pcd-types.js";
5
6
  type PCDParsedBatch = PCDMesh | ArrowTableBatch;
6
7
  /**
7
8
  * Loader for PCD - Point Cloud Data
8
9
  */
9
- export declare const PCDLoaderWithParser: {
10
+ export declare const PCDColumnLoader: {
11
+ readonly dataType: PCDMesh | MeshArrowTable;
12
+ readonly batchType: PCDMesh | ArrowTableBatch;
10
13
  readonly parse: (arrayBuffer: ArrayBuffer, options: PCDLoaderOptions | undefined) => Promise<MeshArrowTable | PCDMesh>;
11
14
  readonly parseSync: (arrayBuffer: ArrayBuffer, options: PCDLoaderOptions | undefined) => MeshArrowTable | PCDMesh;
12
- readonly parseInBatches: (arrayBuffer: AsyncIterable<ArrayBufferLike | ArrayBufferView> | Iterable<ArrayBufferLike | ArrayBufferView>, options: PCDLoaderOptions | undefined) => AsyncIterable<PCDParsedBatch>;
15
+ readonly parseInBatches: (input: AsyncIterable<ArrayBufferLike | ArrayBufferView<ArrayBufferLike>> | Iterable<ArrayBufferLike | ArrayBufferView<ArrayBufferLike>>, options: PCDLoaderOptions | undefined) => AsyncIterable<PCDParsedBatch>;
13
16
  readonly serializeWorkerResult: typeof serializeArrowWorkerTable;
14
17
  readonly deserializeWorkerResult: typeof deserializePCDWorkerResult;
15
18
  readonly serializeWorkerBatch: typeof serializeArrowWorkerTable;
16
19
  readonly deserializeWorkerBatch: typeof deserializePCDWorkerBatch;
17
- readonly dataType: PCDMesh | MeshArrowTable;
18
- readonly batchType: PCDMesh | ArrowTableBatch;
19
20
  readonly version: any;
20
21
  readonly worker: true;
21
22
  readonly workerInBatches: true;
22
23
  readonly options: {
23
24
  readonly pcd: {
24
- readonly shape: "arrow-table";
25
+ readonly shape: "arrow";
25
26
  readonly colorFormat: "uint8norm";
26
27
  };
27
28
  };
@@ -35,10 +36,45 @@ export declare const PCDLoaderWithParser: {
35
36
  readonly category: "pointcloud";
36
37
  readonly text: true;
37
38
  readonly binary: true;
39
+ readonly defaultShape: "arrow";
40
+ readonly supportsNativeArrow: true;
38
41
  };
39
42
  /** Hydrates worker columns before reconstructing legacy PCD meshes on the caller. */
40
43
  declare function deserializePCDWorkerResult(result: unknown, options?: PCDLoaderOptions): PCDMesh | MeshArrowTable;
41
44
  /** Restores the existing PCD batch shape after caller-side hydration. */
42
45
  declare function deserializePCDWorkerBatch(result: unknown, options?: PCDLoaderOptions): PCDParsedBatch;
46
+ /** Exposes native Arrow output while retaining the worker's column protocol. */
47
+ export declare const PCDLoaderWithParser: {
48
+ readonly dataType: Table<any> | PCDMesh;
49
+ readonly batchType: RecordBatch<any> | PCDMesh;
50
+ readonly parse: (input: ArrayBuffer, options?: PCDLoaderOptions) => Promise<Table<any> | PCDMesh>;
51
+ readonly parseSync: (input: ArrayBuffer, options?: PCDLoaderOptions) => Table<any> | PCDMesh;
52
+ readonly parseInBatches: (input: AsyncIterable<ArrayBufferLike | ArrayBufferView<ArrayBufferLike>> | Iterable<ArrayBufferLike | ArrayBufferView<ArrayBufferLike>>, options: PCDLoaderOptions | undefined) => AsyncGenerator<RecordBatch<any> | PCDMesh, void, unknown>;
53
+ readonly deserializeWorkerResult: (result: unknown, options?: PCDLoaderOptions) => Table<any> | PCDMesh;
54
+ readonly deserializeWorkerBatch: (result: unknown, options?: PCDLoaderOptions) => RecordBatch<any> | PCDMesh;
55
+ readonly serializeWorkerResult: typeof serializeArrowWorkerTable;
56
+ readonly serializeWorkerBatch: typeof serializeArrowWorkerTable;
57
+ readonly version: any;
58
+ readonly worker: true;
59
+ readonly workerInBatches: true;
60
+ readonly options: {
61
+ readonly pcd: {
62
+ readonly shape: "arrow";
63
+ readonly colorFormat: "uint8norm";
64
+ };
65
+ };
66
+ readonly name: "PCD (Point Cloud Data)";
67
+ readonly id: "pcd";
68
+ readonly module: "pointclouds";
69
+ readonly encoding: "text";
70
+ readonly format: "pcd";
71
+ readonly extensions: ["pcd"];
72
+ readonly mimeTypes: ["text/plain"];
73
+ readonly category: "pointcloud";
74
+ readonly text: true;
75
+ readonly binary: true;
76
+ readonly defaultShape: "arrow";
77
+ readonly supportsNativeArrow: true;
78
+ };
43
79
  export {};
44
80
  //# sourceMappingURL=pcd-loader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pcd-loader.d.ts","sourceRoot":"","sources":["../../src/pcd/pcd-loader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,gBAAgB,EAAC,8BAA2B;AAOzD,OAAO,KAAK,EAAC,eAAe,EAAE,cAAc,EAAC,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAEL,yBAAyB,EAC1B,MAAM,+CAA+C,CAAC;AAEvD,OAAO,KAAK,EAAC,OAAO,EAAC,2BAAwB;AAM7C,KAAK,cAAc,GAAG,OAAO,GAAG,eAAe,CAAC;AAShD;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;2CAMxB,aAAa,CAAC,eAAe,GAAG,eAAe,CAAC,GAChD,QAAQ,CAAC,eAAe,GAAG,eAAe,CAAC,4CAE9C,aAAa,CAAC,cAAc,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;CAsB+D,CAAC;AAoGlG,qFAAqF;AACrF,iBAAS,0BAA0B,CACjC,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,GAAG,cAAc,CAG1B;AAED,yEAAyE;AACzE,iBAAS,yBAAyB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,cAAc,CAE9F"}
1
+ {"version":3,"file":"pcd-loader.d.ts","sourceRoot":"","sources":["../../src/pcd/pcd-loader.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,KAAK,EAAE,WAAW,EAAC,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EAAC,gBAAgB,EAAC,8BAA2B;AAOzD,OAAO,KAAK,EAAC,eAAe,EAAE,cAAc,EAAC,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAEL,yBAAyB,EAC1B,MAAM,yCAAyC,CAAC;AAEjD,OAAO,KAAK,EAAC,OAAO,EAAC,2BAAwB;AAM7C,KAAK,cAAc,GAAG,OAAO,GAAG,eAAe,CAAC;AAShD;;GAEG;AACH,eAAO,MAAM,eAAe;uBAEG,OAAO,GAAG,cAAc;wBACvB,OAAO,GAAG,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CASwC,CAAC;AAoGlG,qFAAqF;AACrF,iBAAS,0BAA0B,CACjC,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,GAAG,cAAc,CAG1B;AAED,yEAAyE;AACzE,iBAAS,yBAAyB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,cAAc,CAE9F;AA2BD,gFAAgF;AAChF,eAAO,MAAM,mBAAmB;;;4BAIT,WAAW,YAAY,gBAAgB;gCAEzC,WAAW,YAAY,gBAAgB;;+CAoBxB,OAAO,YAAY,gBAAgB;8CAEtC,OAAO,YAAY,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;CAY2B,CAAC"}
@@ -1,14 +1,15 @@
1
1
  // loaders.gl
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
+ import { refineArrowTableBatches, makeArrowMetadataBatch } from '@loaders.gl/core/schema-utils';
4
5
  import { concatenateArrayBuffersAsync, makeTableScanBatch } from '@loaders.gl/core/loader-utils';
5
- import { deserializeArrowWorkerTable, serializeArrowWorkerTable } from '@loaders.gl/core/schema-utils/arrow-transport';
6
- import { convertMeshToTable, convertTableToMesh } from '@loaders.gl/core/schema-utils';
6
+ import { deserializeArrowWorkerTable, serializeArrowWorkerTable } from '@loaders.gl/core/arrow-worker-transport';
7
+ import { convertMeshToArrowTableWrapper, convertTableToMesh } from '@loaders.gl/core/schema-utils';
7
8
  import { parsePCD, parsePCDHeader } from "./lib/parse-pcd.js";
8
9
  import { PCDLoader as PCDLoaderMetadata } from "./pcd-loader-types.js";
9
10
  const { preload: _PCDLoaderPreload, ...PCDLoaderMetadataWithoutPreload } = PCDLoaderMetadata;
10
11
  function convertPCDMesh(mesh, options) {
11
- const table = convertMeshToTable(mesh, 'arrow-table');
12
+ const table = convertMeshToArrowTableWrapper(mesh);
12
13
  return options?.pcd?.shape === 'mesh'
13
14
  ? convertPCDTableToMesh(table, mesh)
14
15
  : { ...table, loader: mesh.loader, loaderData: mesh.loaderData };
@@ -16,25 +17,13 @@ function convertPCDMesh(mesh, options) {
16
17
  /**
17
18
  * Loader for PCD - Point Cloud Data
18
19
  */
19
- export const PCDLoaderWithParser = {
20
+ export const PCDColumnLoader = {
20
21
  ...PCDLoaderMetadataWithoutPreload,
22
+ dataType: null,
23
+ batchType: null,
21
24
  parse: async (arrayBuffer, options) => convertPCDMesh(parsePCD(arrayBuffer, options), options),
22
25
  parseSync: (arrayBuffer, options) => convertPCDMesh(parsePCD(arrayBuffer, options), options),
23
- parseInBatches: async function* (arrayBuffer, options) {
24
- const batchSize = getNumericBatchSize(options);
25
- const data = await concatenateArrayBuffersAsync(arrayBuffer);
26
- const textData = new TextDecoder().decode(data);
27
- const pcdHeader = parsePCDHeader(textData);
28
- if (pcdHeader.data === 'ascii') {
29
- yield* parsePCDASCIIInBatches(data, options, batchSize);
30
- return;
31
- }
32
- if (pcdHeader.data === 'binary') {
33
- yield* parsePCDBinaryInBatches(data, options, batchSize);
34
- return;
35
- }
36
- yield makePCDBatch(parsePCD(data, options), options);
37
- },
26
+ parseInBatches: (input, options) => refineArrowTableBatches(parsePCDWithMetadataInBatches(input, options)),
38
27
  serializeWorkerResult: serializeArrowWorkerTable,
39
28
  deserializeWorkerResult: deserializePCDWorkerResult,
40
29
  serializeWorkerBatch: serializeArrowWorkerTable,
@@ -42,7 +31,7 @@ export const PCDLoaderWithParser = {
42
31
  };
43
32
  /** Returns a numeric batch size when batching has an explicit row count. */
44
33
  function getNumericBatchSize(options) {
45
- const batchSize = options?.batchSize ?? options?.core?.batchSize;
34
+ const batchSize = options?.core?.batchSize;
46
35
  return typeof batchSize === 'number' ? batchSize : undefined;
47
36
  }
48
37
  function* parsePCDASCIIInBatches(data, options, batchSize) {
@@ -76,7 +65,7 @@ function* parsePCDBinaryInBatches(data, options, batchSize) {
76
65
  }
77
66
  }
78
67
  function makePCDBatch(mesh, options) {
79
- const table = convertMeshToTable(mesh, 'arrow-table');
68
+ const table = convertMeshToArrowTableWrapper(mesh);
80
69
  if (options?.pcd?.shape === 'mesh') {
81
70
  return convertPCDTableToMesh(table, mesh);
82
71
  }
@@ -125,4 +114,66 @@ function deserializePCDWorkerResult(result, options) {
125
114
  function deserializePCDWorkerBatch(result, options) {
126
115
  return deserializePCDWorkerResult(result, options);
127
116
  }
117
+ /** Parses PCD batches before shared cumulative metadata refinement. */
118
+ async function* parsePCDWithMetadataInBatches(arrayBuffer, options) {
119
+ const batchSize = getNumericBatchSize(options);
120
+ const data = await concatenateArrayBuffersAsync(arrayBuffer);
121
+ const textData = new TextDecoder().decode(data);
122
+ const pcdHeader = parsePCDHeader(textData);
123
+ if (pcdHeader.data === 'ascii') {
124
+ yield* parsePCDASCIIInBatches(data, options, batchSize);
125
+ return;
126
+ }
127
+ if (pcdHeader.data === 'binary') {
128
+ yield* parsePCDBinaryInBatches(data, options, batchSize);
129
+ return;
130
+ }
131
+ yield makePCDBatch(parsePCD(data, options), options);
132
+ }
133
+ /** Exposes native Arrow output while retaining the worker's column protocol. */
134
+ export const PCDLoaderWithParser = {
135
+ ...PCDColumnLoader,
136
+ dataType: PCDLoaderMetadata.dataType,
137
+ batchType: PCDLoaderMetadata.batchType,
138
+ parse: async (input, options) => unwrapPCDTable(await PCDColumnLoader.parse(input, options)),
139
+ parseSync: (input, options) => unwrapPCDTable(PCDColumnLoader.parseSync(input, options)),
140
+ async *parseInBatches(input, options) {
141
+ for await (const batch of PCDColumnLoader.parseInBatches(input, options)) {
142
+ if (isColumnBatch(batch)) {
143
+ batch.data.schema.metadata.set('loaders.gl.pcd.header', JSON.stringify(batch.loaderData));
144
+ for (const recordBatch of batch.data.batches) {
145
+ recordBatch.schema.metadata.set('loaders.gl.pcd.header', batch.data.schema.metadata.get('loaders.gl.pcd.header'));
146
+ }
147
+ if (batch.data.batches.length)
148
+ yield* batch.data.batches;
149
+ else
150
+ yield makeArrowMetadataBatch(batch.data.schema);
151
+ }
152
+ else
153
+ yield batch;
154
+ }
155
+ },
156
+ deserializeWorkerResult: (result, options) => unwrapPCDTable(PCDColumnLoader.deserializeWorkerResult(result, options)),
157
+ deserializeWorkerBatch(result, options) {
158
+ const batch = PCDColumnLoader.deserializeWorkerBatch(result, options);
159
+ if (isColumnBatch(batch)) {
160
+ const recordBatch = batch.data.batches[0] ?? makeArrowMetadataBatch(batch.data.schema);
161
+ recordBatch.schema.metadata.set('loaders.gl.pcd.header', JSON.stringify(batch.loaderData));
162
+ return recordBatch;
163
+ }
164
+ return batch;
165
+ }
166
+ };
167
+ /** Returns the Arrow table with its file metadata or the requested mesh. */
168
+ function unwrapPCDTable(result) {
169
+ if ('shape' in result && result.shape === 'arrow-table') {
170
+ result.data.schema.metadata.set('loaders.gl.pcd.header', JSON.stringify(result.loaderData));
171
+ return result.data;
172
+ }
173
+ return result;
174
+ }
175
+ /** Identifies the private Arrow batch envelope. */
176
+ function isColumnBatch(batch) {
177
+ return 'shape' in batch && batch.shape === 'arrow-table';
178
+ }
128
179
  //# sourceMappingURL=pcd-loader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pcd-loader.js","sourceRoot":"","sources":["../../src/pcd/pcd-loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pcd-loader.js","sourceRoot":"","sources":["../../src/pcd/pcd-loader.ts"],"names":[],"mappings":"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"}
@@ -25,7 +25,7 @@ __export(pcd_writer_exports, {
25
25
  module.exports = __toCommonJS(pcd_writer_exports);
26
26
  var import_schema_utils = require("@loaders.gl/core/schema-utils");
27
27
  var import_pcd_format = require("./pcd-format.cjs");
28
- var VERSION = true ? "5.0.0-beta.1" : "latest";
28
+ var VERSION = true ? "5.0.0-beta.10" : "latest";
29
29
  var PCDWriter = {
30
30
  ...import_pcd_format.PCDFormat,
31
31
  dataType: null,
@@ -100,10 +100,10 @@ function encodePCD(data, options) {
100
100
  `;
101
101
  }
102
102
  function normalizeMeshArrowTable(data) {
103
- if ("shape" in data && data.shape === "arrow-table") {
103
+ if (!("attributes" in data)) {
104
104
  return data;
105
105
  }
106
- return (0, import_schema_utils.convertMeshToTable)(data, "arrow-table");
106
+ return (0, import_schema_utils.convertMeshToArrowTableWrapper)(data);
107
107
  }
108
108
  function getRequiredAttribute(mesh, attributeName) {
109
109
  const attribute = mesh.attributes[attributeName];
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/pcd/pcd-writer.ts"],
4
- "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {WriterOptions, WriterWithEncoder} from '@loaders.gl/core/loader-utils';\nimport type {Mesh, MeshArrowTable, MeshAttribute} from '@loaders.gl/core/schema';\nimport {convertMeshToTable, convertTableToMesh} from '@loaders.gl/core/schema-utils';\nimport {PCDFormat} from './pcd-format';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\n/** Options for `PCDWriter`. */\nexport type PCDWriterOptions = WriterOptions & {\n /** Reserved for future PCD writer options. */\n pcd?: Record<string, never>;\n};\n\n/**\n * Writer for the PCD point cloud format.\n */\nexport const PCDWriter = {\n ...PCDFormat,\n dataType: null as unknown as Mesh | MeshArrowTable,\n batchType: null as never,\n version: VERSION,\n options: {\n pcd: {}\n },\n text: true,\n encode: async (data, options) => encodePCDSync(data, options),\n encodeSync: encodePCDSync,\n encodeTextSync: encodePCD\n} as const satisfies WriterWithEncoder<Mesh | MeshArrowTable, never, PCDWriterOptions>;\n\n/** Encode mesh category data as PCD bytes. */\nfunction encodePCDSync(data: Mesh | MeshArrowTable, options?: PCDWriterOptions): ArrayBuffer {\n const text = encodePCD(data, options);\n return new TextEncoder().encode(text).buffer;\n}\n\n/** Encode mesh category data as ASCII PCD text. */\nfunction encodePCD(data: Mesh | MeshArrowTable, options?: PCDWriterOptions): string {\n const mesh = convertTableToMesh(normalizeMeshArrowTable(data));\n const positionAttribute = getRequiredAttribute(mesh, 'POSITION');\n const normalAttribute = mesh.attributes.NORMAL;\n const colorAttribute = mesh.attributes.COLOR_0;\n const vertexCount = positionAttribute.value.length / positionAttribute.size;\n const fieldNames = ['x', 'y', 'z'];\n const fieldSizes = ['4', '4', '4'];\n const fieldTypes = ['F', 'F', 'F'];\n const fieldCounts = ['1', '1', '1'];\n\n if (normalAttribute) {\n fieldNames.push('normal_x', 'normal_y', 'normal_z');\n fieldSizes.push('4', '4', '4');\n fieldTypes.push('F', 'F', 'F');\n fieldCounts.push('1', '1', '1');\n }\n\n if (colorAttribute) {\n fieldNames.push('rgb');\n fieldSizes.push('4');\n fieldTypes.push('F');\n fieldCounts.push('1');\n }\n\n const lines = [\n '# .PCD v0.7 - Point Cloud Data file generated by loaders.gl',\n 'VERSION 0.7',\n `FIELDS ${fieldNames.join(' ')}`,\n `SIZE ${fieldSizes.join(' ')}`,\n `TYPE ${fieldTypes.join(' ')}`,\n `COUNT ${fieldCounts.join(' ')}`,\n `WIDTH ${vertexCount}`,\n 'HEIGHT 1',\n 'VIEWPOINT 0 0 0 1 0 0 0',\n `POINTS ${vertexCount}`,\n 'DATA ascii'\n ];\n\n for (let vertexIndex = 0; vertexIndex < vertexCount; vertexIndex++) {\n const row = [\n getComponent(positionAttribute, vertexIndex, 0),\n getComponent(positionAttribute, vertexIndex, 1),\n getComponent(positionAttribute, vertexIndex, 2)\n ];\n\n if (normalAttribute) {\n row.push(\n getComponent(normalAttribute, vertexIndex, 0),\n getComponent(normalAttribute, vertexIndex, 1),\n getComponent(normalAttribute, vertexIndex, 2)\n );\n }\n\n if (colorAttribute) {\n row.push(getPackedRGB(colorAttribute, vertexIndex));\n }\n\n lines.push(row.join(' '));\n }\n\n return `${lines.join('\\n')}\\n`;\n}\n\n/** Return mesh data as a MeshArrowTable, converting plain Mesh data first. */\nfunction normalizeMeshArrowTable(data: Mesh | MeshArrowTable): MeshArrowTable {\n if ('shape' in data && data.shape === 'arrow-table') {\n return data;\n }\n return convertMeshToTable(data as Mesh, 'arrow-table');\n}\n\n/** Return a required mesh attribute or throw a format-specific error. */\nfunction getRequiredAttribute(mesh: Mesh, attributeName: string): MeshAttribute {\n const attribute = mesh.attributes[attributeName];\n if (!attribute) {\n throw new Error(`PCDWriter: ${attributeName} attribute is required`);\n }\n return attribute;\n}\n\n/** Return a single attribute component with 0 as the missing component fallback. */\nfunction getComponent(\n attribute: MeshAttribute,\n vertexIndex: number,\n componentIndex: number\n): number {\n return attribute.value[vertexIndex * attribute.size + componentIndex] || 0;\n}\n\n/** Return an RGB value packed into the PCD float convention. */\nfunction getPackedRGB(attribute: MeshAttribute, vertexIndex: number): number {\n const bytes = new Uint8Array(4);\n bytes[0] = getColorByte(attribute, vertexIndex, 0);\n bytes[1] = getColorByte(attribute, vertexIndex, 1);\n bytes[2] = getColorByte(attribute, vertexIndex, 2);\n return new DataView(bytes.buffer).getFloat32(0, true);\n}\n\n/** Return one color component as an unsigned byte. */\nfunction getColorByte(\n attribute: MeshAttribute,\n vertexIndex: number,\n componentIndex: number\n): number {\n const value = getComponent(attribute, vertexIndex, componentIndex);\n const byteValue = attribute.normalized || value <= 1 ? value * 255 : value;\n return Math.max(0, Math.min(255, Math.round(byteValue)));\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {Table} from 'apache-arrow';\nimport type {WriterOptions, WriterWithEncoder} from '@loaders.gl/core/loader-utils';\nimport type {Mesh, MeshArrowTable, MeshAttribute} from '@loaders.gl/core/schema';\nimport {convertMeshToArrowTableWrapper, convertTableToMesh} from '@loaders.gl/core/schema-utils';\nimport {PCDFormat} from './pcd-format';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\n/** Options for `PCDWriter`. */\nexport type PCDWriterOptions = WriterOptions & {\n /** Reserved for future PCD writer options. */\n pcd?: Record<string, never>;\n};\n\n/**\n * Writer for the PCD point cloud format.\n */\nexport const PCDWriter = {\n ...PCDFormat,\n dataType: null as unknown as Mesh | MeshArrowTable | Table,\n batchType: null as never,\n version: VERSION,\n options: {\n pcd: {}\n },\n text: true,\n encode: async (data, options) => encodePCDSync(data, options),\n encodeSync: encodePCDSync,\n encodeTextSync: encodePCD\n} as const satisfies WriterWithEncoder<Mesh | MeshArrowTable | Table, never, PCDWriterOptions>;\n\n/** Encode mesh category data as PCD bytes. */\nfunction encodePCDSync(\n data: Mesh | MeshArrowTable | Table,\n options?: PCDWriterOptions\n): ArrayBuffer {\n const text = encodePCD(data, options);\n return new TextEncoder().encode(text).buffer;\n}\n\n/** Encode mesh category data as ASCII PCD text. */\nfunction encodePCD(data: Mesh | MeshArrowTable | Table, options?: PCDWriterOptions): string {\n const mesh = convertTableToMesh(normalizeMeshArrowTable(data));\n const positionAttribute = getRequiredAttribute(mesh, 'POSITION');\n const normalAttribute = mesh.attributes.NORMAL;\n const colorAttribute = mesh.attributes.COLOR_0;\n const vertexCount = positionAttribute.value.length / positionAttribute.size;\n const fieldNames = ['x', 'y', 'z'];\n const fieldSizes = ['4', '4', '4'];\n const fieldTypes = ['F', 'F', 'F'];\n const fieldCounts = ['1', '1', '1'];\n\n if (normalAttribute) {\n fieldNames.push('normal_x', 'normal_y', 'normal_z');\n fieldSizes.push('4', '4', '4');\n fieldTypes.push('F', 'F', 'F');\n fieldCounts.push('1', '1', '1');\n }\n\n if (colorAttribute) {\n fieldNames.push('rgb');\n fieldSizes.push('4');\n fieldTypes.push('F');\n fieldCounts.push('1');\n }\n\n const lines = [\n '# .PCD v0.7 - Point Cloud Data file generated by loaders.gl',\n 'VERSION 0.7',\n `FIELDS ${fieldNames.join(' ')}`,\n `SIZE ${fieldSizes.join(' ')}`,\n `TYPE ${fieldTypes.join(' ')}`,\n `COUNT ${fieldCounts.join(' ')}`,\n `WIDTH ${vertexCount}`,\n 'HEIGHT 1',\n 'VIEWPOINT 0 0 0 1 0 0 0',\n `POINTS ${vertexCount}`,\n 'DATA ascii'\n ];\n\n for (let vertexIndex = 0; vertexIndex < vertexCount; vertexIndex++) {\n const row = [\n getComponent(positionAttribute, vertexIndex, 0),\n getComponent(positionAttribute, vertexIndex, 1),\n getComponent(positionAttribute, vertexIndex, 2)\n ];\n\n if (normalAttribute) {\n row.push(\n getComponent(normalAttribute, vertexIndex, 0),\n getComponent(normalAttribute, vertexIndex, 1),\n getComponent(normalAttribute, vertexIndex, 2)\n );\n }\n\n if (colorAttribute) {\n row.push(getPackedRGB(colorAttribute, vertexIndex));\n }\n\n lines.push(row.join(' '));\n }\n\n return `${lines.join('\\n')}\\n`;\n}\n\n/** Return mesh data as a MeshArrowTable, converting plain Mesh data first. */\nfunction normalizeMeshArrowTable(data: Mesh | MeshArrowTable | Table): MeshArrowTable | Table {\n if (!('attributes' in data)) {\n return data;\n }\n return convertMeshToArrowTableWrapper(data as Mesh);\n}\n\n/** Return a required mesh attribute or throw a format-specific error. */\nfunction getRequiredAttribute(mesh: Mesh, attributeName: string): MeshAttribute {\n const attribute = mesh.attributes[attributeName];\n if (!attribute) {\n throw new Error(`PCDWriter: ${attributeName} attribute is required`);\n }\n return attribute;\n}\n\n/** Return a single attribute component with 0 as the missing component fallback. */\nfunction getComponent(\n attribute: MeshAttribute,\n vertexIndex: number,\n componentIndex: number\n): number {\n return attribute.value[vertexIndex * attribute.size + componentIndex] || 0;\n}\n\n/** Return an RGB value packed into the PCD float convention. */\nfunction getPackedRGB(attribute: MeshAttribute, vertexIndex: number): number {\n const bytes = new Uint8Array(4);\n bytes[0] = getColorByte(attribute, vertexIndex, 0);\n bytes[1] = getColorByte(attribute, vertexIndex, 1);\n bytes[2] = getColorByte(attribute, vertexIndex, 2);\n return new DataView(bytes.buffer).getFloat32(0, true);\n}\n\n/** Return one color component as an unsigned byte. */\nfunction getColorByte(\n attribute: MeshAttribute,\n vertexIndex: number,\n componentIndex: number\n): number {\n const value = getComponent(attribute, vertexIndex, componentIndex);\n const byteValue = attribute.normalized || value <= 1 ? value * 255 : value;\n return Math.max(0, Math.min(255, Math.round(byteValue)));\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,3 +1,4 @@
1
+ import type { Table } from 'apache-arrow';
1
2
  import type { WriterOptions } from '@loaders.gl/core/loader-utils';
2
3
  import type { Mesh, MeshArrowTable } from '@loaders.gl/core/schema';
3
4
  /** Options for `PCDWriter`. */
@@ -9,14 +10,14 @@ export type PCDWriterOptions = WriterOptions & {
9
10
  * Writer for the PCD point cloud format.
10
11
  */
11
12
  export declare const PCDWriter: {
12
- readonly dataType: Mesh | MeshArrowTable;
13
+ readonly dataType: Mesh | MeshArrowTable | Table;
13
14
  readonly batchType: never;
14
15
  readonly version: any;
15
16
  readonly options: {
16
17
  readonly pcd: {};
17
18
  };
18
19
  readonly text: true;
19
- readonly encode: (data: Mesh | MeshArrowTable, options: PCDWriterOptions | undefined) => Promise<ArrayBuffer>;
20
+ readonly encode: (data: Mesh | Table<any> | MeshArrowTable, options: PCDWriterOptions | undefined) => Promise<ArrayBuffer>;
20
21
  readonly encodeSync: typeof encodePCDSync;
21
22
  readonly encodeTextSync: typeof encodePCD;
22
23
  readonly name: "PCD (Point Cloud Data)";
@@ -30,8 +31,8 @@ export declare const PCDWriter: {
30
31
  readonly binary: true;
31
32
  };
32
33
  /** Encode mesh category data as PCD bytes. */
33
- declare function encodePCDSync(data: Mesh | MeshArrowTable, options?: PCDWriterOptions): ArrayBuffer;
34
+ declare function encodePCDSync(data: Mesh | MeshArrowTable | Table, options?: PCDWriterOptions): ArrayBuffer;
34
35
  /** Encode mesh category data as ASCII PCD text. */
35
- declare function encodePCD(data: Mesh | MeshArrowTable, options?: PCDWriterOptions): string;
36
+ declare function encodePCD(data: Mesh | MeshArrowTable | Table, options?: PCDWriterOptions): string;
36
37
  export {};
37
38
  //# sourceMappingURL=pcd-writer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pcd-writer.d.ts","sourceRoot":"","sources":["../../src/pcd/pcd-writer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,aAAa,EAAoB,MAAM,+BAA+B,CAAC;AACpF,OAAO,KAAK,EAAC,IAAI,EAAE,cAAc,EAAgB,MAAM,yBAAyB,CAAC;AAQjF,+BAA+B;AAC/B,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG;IAC7C,8CAA8C;IAC9C,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;CAC7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS;uBAES,IAAI,GAAG,cAAc;wBAC/B,KAAK;;;;;;;;;;;;;;;;;;CAS4D,CAAC;AAEvF,8CAA8C;AAC9C,iBAAS,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,cAAc,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,WAAW,CAG3F;AAED,mDAAmD;AACnD,iBAAS,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,cAAc,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM,CA8DlF"}
1
+ {"version":3,"file":"pcd-writer.d.ts","sourceRoot":"","sources":["../../src/pcd/pcd-writer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,EAAC,aAAa,EAAoB,MAAM,+BAA+B,CAAC;AACpF,OAAO,KAAK,EAAC,IAAI,EAAE,cAAc,EAAgB,MAAM,yBAAyB,CAAC;AAQjF,+BAA+B;AAC/B,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG;IAC7C,8CAA8C;IAC9C,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;CAC7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS;uBAES,IAAI,GAAG,cAAc,GAAG,KAAK;wBACvC,KAAK;;;;;;;;;;;;;;;;;;CASoE,CAAC;AAE/F,8CAA8C;AAC9C,iBAAS,aAAa,CACpB,IAAI,EAAE,IAAI,GAAG,cAAc,GAAG,KAAK,EACnC,OAAO,CAAC,EAAE,gBAAgB,GACzB,WAAW,CAGb;AAED,mDAAmD;AACnD,iBAAS,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,cAAc,GAAG,KAAK,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM,CA8D1F"}
@@ -1,11 +1,11 @@
1
1
  // loaders.gl
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
- import { convertMeshToTable, convertTableToMesh } from '@loaders.gl/core/schema-utils';
4
+ import { convertMeshToArrowTableWrapper, convertTableToMesh } from '@loaders.gl/core/schema-utils';
5
5
  import { PCDFormat } from "./pcd-format.js";
6
6
  // __VERSION__ is injected by babel-plugin-version-inline
7
7
  // @ts-ignore TS2304: Cannot find name '__VERSION__'.
8
- const VERSION = typeof "5.0.0-beta.1" !== 'undefined' ? "5.0.0-beta.1" : 'latest';
8
+ const VERSION = typeof "5.0.0-beta.10" !== 'undefined' ? "5.0.0-beta.10" : 'latest';
9
9
  /**
10
10
  * Writer for the PCD point cloud format.
11
11
  */
@@ -81,10 +81,10 @@ function encodePCD(data, options) {
81
81
  }
82
82
  /** Return mesh data as a MeshArrowTable, converting plain Mesh data first. */
83
83
  function normalizeMeshArrowTable(data) {
84
- if ('shape' in data && data.shape === 'arrow-table') {
84
+ if (!('attributes' in data)) {
85
85
  return data;
86
86
  }
87
- return convertMeshToTable(data, 'arrow-table');
87
+ return convertMeshToArrowTableWrapper(data);
88
88
  }
89
89
  /** Return a required mesh attribute or throw a format-specific error. */
90
90
  function getRequiredAttribute(mesh, attributeName) {