@loaders.gl/pointclouds 0.0.0-stage → 5.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (405) hide show
  1. package/LAS-README.md +12 -0
  2. package/LICENSE +24 -0
  3. package/PCD-README.md +12 -0
  4. package/PLY-README.md +38 -0
  5. package/README.md +7 -2
  6. package/THIRD-PARTY-NOTICES.md +27 -0
  7. package/dist/dist.dev.js +30141 -0
  8. package/dist/dist.min.js +54 -0
  9. package/dist/index.cjs +61 -0
  10. package/dist/index.cjs.map +7 -0
  11. package/dist/index.d.ts +16 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +13 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/las/bundled.cjs +72 -0
  16. package/dist/las/bundled.cjs.map +7 -0
  17. package/dist/las/bundled.d.ts +12 -0
  18. package/dist/las/bundled.d.ts.map +1 -0
  19. package/dist/las/bundled.js +12 -0
  20. package/dist/las/bundled.js.map +1 -0
  21. package/dist/las/index.cjs +78 -0
  22. package/dist/las/index.cjs.map +7 -0
  23. package/dist/las/index.d.ts +17 -0
  24. package/dist/las/index.d.ts.map +1 -0
  25. package/dist/las/index.js +15 -0
  26. package/dist/las/index.js.map +1 -0
  27. package/dist/las/las-copc-loader-types.cjs +49 -0
  28. package/dist/las/las-copc-loader-types.cjs.map +7 -0
  29. package/dist/las/las-copc-loader-types.d.ts +63 -0
  30. package/dist/las/las-copc-loader-types.d.ts.map +1 -0
  31. package/dist/las/las-copc-loader-types.js +14 -0
  32. package/dist/las/las-copc-loader-types.js.map +1 -0
  33. package/dist/las/las-copc-loader.cjs +57 -0
  34. package/dist/las/las-copc-loader.cjs.map +7 -0
  35. package/dist/las/las-copc-loader.d.ts +37 -0
  36. package/dist/las/las-copc-loader.d.ts.map +1 -0
  37. package/dist/las/las-copc-loader.js +40 -0
  38. package/dist/las/las-copc-loader.js.map +1 -0
  39. package/dist/las/las-format.cjs +44 -0
  40. package/dist/las/las-format.cjs.map +7 -0
  41. package/dist/las/las-format.d.ts +16 -0
  42. package/dist/las/las-format.d.ts.map +1 -0
  43. package/dist/las/las-format.js +19 -0
  44. package/dist/las/las-format.js.map +1 -0
  45. package/dist/las/las-loader-shared.cjs +82 -0
  46. package/dist/las/las-loader-shared.cjs.map +7 -0
  47. package/dist/las/las-loader-shared.d.ts +66 -0
  48. package/dist/las/las-loader-shared.d.ts.map +1 -0
  49. package/dist/las/las-loader-shared.js +58 -0
  50. package/dist/las/las-loader-shared.js.map +1 -0
  51. package/dist/las/las-loader-types.cjs +54 -0
  52. package/dist/las/las-loader-types.cjs.map +7 -0
  53. package/dist/las/las-loader-types.d.ts +104 -0
  54. package/dist/las/las-loader-types.d.ts.map +1 -0
  55. package/dist/las/las-loader-types.js +19 -0
  56. package/dist/las/las-loader-types.js.map +1 -0
  57. package/dist/las/las-loader.cjs +80 -0
  58. package/dist/las/las-loader.cjs.map +7 -0
  59. package/dist/las/las-loader.d.ts +45 -0
  60. package/dist/las/las-loader.d.ts.map +1 -0
  61. package/dist/las/las-loader.js +58 -0
  62. package/dist/las/las-loader.js.map +1 -0
  63. package/dist/las/las-writer.cjs +1054 -0
  64. package/dist/las/las-writer.cjs.map +7 -0
  65. package/dist/las/las-writer.d.ts +69 -0
  66. package/dist/las/las-writer.d.ts.map +1 -0
  67. package/dist/las/las-writer.js +994 -0
  68. package/dist/las/las-writer.js.map +1 -0
  69. package/dist/las/laz-rs-loader-types.cjs +49 -0
  70. package/dist/las/laz-rs-loader-types.cjs.map +7 -0
  71. package/dist/las/laz-rs-loader-types.d.ts +65 -0
  72. package/dist/las/laz-rs-loader-types.d.ts.map +1 -0
  73. package/dist/las/laz-rs-loader-types.js +16 -0
  74. package/dist/las/laz-rs-loader-types.js.map +1 -0
  75. package/dist/las/laz-rs-loader.cjs +272 -0
  76. package/dist/las/laz-rs-loader.cjs.map +7 -0
  77. package/dist/las/laz-rs-loader.d.ts +37 -0
  78. package/dist/las/laz-rs-loader.d.ts.map +1 -0
  79. package/dist/las/laz-rs-loader.js +38 -0
  80. package/dist/las/laz-rs-loader.js.map +1 -0
  81. package/dist/las/lazperf-loader-types.cjs +49 -0
  82. package/dist/las/lazperf-loader-types.cjs.map +7 -0
  83. package/dist/las/lazperf-loader-types.d.ts +67 -0
  84. package/dist/las/lazperf-loader-types.d.ts.map +1 -0
  85. package/dist/las/lazperf-loader-types.js +17 -0
  86. package/dist/las/lazperf-loader-types.js.map +1 -0
  87. package/dist/las/lazperf-loader.cjs +60 -0
  88. package/dist/las/lazperf-loader.cjs.map +7 -0
  89. package/dist/las/lazperf-loader.d.ts +39 -0
  90. package/dist/las/lazperf-loader.d.ts.map +1 -0
  91. package/dist/las/lazperf-loader.js +44 -0
  92. package/dist/las/lazperf-loader.js.map +1 -0
  93. package/dist/las/lib/copc/parse-las.cjs +177 -0
  94. package/dist/las/lib/copc/parse-las.cjs.map +7 -0
  95. package/dist/las/lib/copc/parse-las.d.ts +17 -0
  96. package/dist/las/lib/copc/parse-las.d.ts.map +1 -0
  97. package/dist/las/lib/copc/parse-las.js +215 -0
  98. package/dist/las/lib/copc/parse-las.js.map +1 -0
  99. package/dist/las/lib/get-las-schema.cjs +62 -0
  100. package/dist/las/lib/get-las-schema.cjs.map +7 -0
  101. package/dist/las/lib/get-las-schema.d.ts +16 -0
  102. package/dist/las/lib/get-las-schema.d.ts.map +1 -0
  103. package/dist/las/lib/get-las-schema.js +46 -0
  104. package/dist/las/lib/get-las-schema.js.map +1 -0
  105. package/dist/las/lib/las-compatibility.cjs +110 -0
  106. package/dist/las/lib/las-compatibility.cjs.map +7 -0
  107. package/dist/las/lib/las-compatibility.d.ts +40 -0
  108. package/dist/las/lib/las-compatibility.d.ts.map +1 -0
  109. package/dist/las/lib/las-compatibility.js +115 -0
  110. package/dist/las/lib/las-compatibility.js.map +1 -0
  111. package/dist/las/lib/las-extra-bytes.cjs +223 -0
  112. package/dist/las/lib/las-extra-bytes.cjs.map +7 -0
  113. package/dist/las/lib/las-extra-bytes.d.ts +35 -0
  114. package/dist/las/lib/las-extra-bytes.d.ts.map +1 -0
  115. package/dist/las/lib/las-extra-bytes.js +195 -0
  116. package/dist/las/lib/las-extra-bytes.js.map +1 -0
  117. package/dist/las/lib/las-types.cjs +19 -0
  118. package/dist/las/lib/las-types.cjs.map +7 -0
  119. package/dist/las/lib/las-types.d.ts +194 -0
  120. package/dist/las/lib/las-types.d.ts.map +1 -0
  121. package/dist/las/lib/las-types.js +5 -0
  122. package/dist/las/lib/las-types.js.map +1 -0
  123. package/dist/las/lib/las-waveform.cjs +196 -0
  124. package/dist/las/lib/las-waveform.cjs.map +7 -0
  125. package/dist/las/lib/las-waveform.d.ts +89 -0
  126. package/dist/las/lib/las-waveform.d.ts.map +1 -0
  127. package/dist/las/lib/las-waveform.js +193 -0
  128. package/dist/las/lib/las-waveform.js.map +1 -0
  129. package/dist/las/lib/laz-perf/laslaz-decoder.cjs +382 -0
  130. package/dist/las/lib/laz-perf/laslaz-decoder.cjs.map +7 -0
  131. package/dist/las/lib/laz-perf/laslaz-decoder.d.ts +129 -0
  132. package/dist/las/lib/laz-perf/laslaz-decoder.d.ts.map +1 -0
  133. package/dist/las/lib/laz-perf/laslaz-decoder.js +377 -0
  134. package/dist/las/lib/laz-perf/laslaz-decoder.js.map +1 -0
  135. package/dist/las/lib/laz-perf/parse-las.cjs +270 -0
  136. package/dist/las/lib/laz-perf/parse-las.cjs.map +7 -0
  137. package/dist/las/lib/laz-perf/parse-las.d.ts +24 -0
  138. package/dist/las/lib/laz-perf/parse-las.d.ts.map +1 -0
  139. package/dist/las/lib/laz-perf/parse-las.js +307 -0
  140. package/dist/las/lib/laz-perf/parse-las.js.map +1 -0
  141. package/dist/las/lib/laz-rs-wasm/laslaz-decoder.cjs +631 -0
  142. package/dist/las/lib/laz-rs-wasm/laslaz-decoder.cjs.map +7 -0
  143. package/dist/las/lib/laz-rs-wasm/laslaz-decoder.d.ts +129 -0
  144. package/dist/las/lib/laz-rs-wasm/laslaz-decoder.d.ts.map +1 -0
  145. package/dist/las/lib/laz-rs-wasm/laslaz-decoder.js +414 -0
  146. package/dist/las/lib/laz-rs-wasm/laslaz-decoder.js.map +1 -0
  147. package/dist/las/lib/laz-rs-wasm/parse-las.cjs +270 -0
  148. package/dist/las/lib/laz-rs-wasm/parse-las.cjs.map +7 -0
  149. package/dist/las/lib/laz-rs-wasm/parse-las.d.ts +24 -0
  150. package/dist/las/lib/laz-rs-wasm/parse-las.d.ts.map +1 -0
  151. package/dist/las/lib/laz-rs-wasm/parse-las.js +307 -0
  152. package/dist/las/lib/laz-rs-wasm/parse-las.js.map +1 -0
  153. package/dist/las/lib/typescript/parse-las.cjs +2767 -0
  154. package/dist/las/lib/typescript/parse-las.cjs.map +7 -0
  155. package/dist/las/lib/typescript/parse-las.d.ts +39 -0
  156. package/dist/las/lib/typescript/parse-las.d.ts.map +1 -0
  157. package/dist/las/lib/typescript/parse-las.js +2607 -0
  158. package/dist/las/lib/typescript/parse-las.js.map +1 -0
  159. package/dist/las/libs/laz-perf/laz-perf.cjs +18093 -0
  160. package/dist/las/libs/laz-perf/laz-perf.cjs.map +7 -0
  161. package/dist/las/libs/laz-perf/laz-perf.d.ts +2 -0
  162. package/dist/las/libs/laz-perf/laz-perf.d.ts.map +1 -0
  163. package/dist/las/libs/laz-perf/laz-perf.js +19003 -0
  164. package/dist/las/libs/laz-perf/laz-perf.js.map +1 -0
  165. package/dist/las/libs/laz-rs-wasm/laz_rs_wasm.d.ts +95 -0
  166. package/dist/las/libs/laz-rs-wasm/laz_rs_wasm.d.ts.map +1 -0
  167. package/dist/las/libs/laz-rs-wasm/laz_rs_wasm.js +442 -0
  168. package/dist/las/libs/laz-rs-wasm/laz_rs_wasm.js.map +1 -0
  169. package/dist/las/libs/laz-rs-wasm/laz_rs_wasm_bg.wasm +0 -0
  170. package/dist/las/libs/laz-rs-wasm/laz_rs_wasm_bg.wasm.d.ts +38 -0
  171. package/dist/las/unbundled.cjs +71 -0
  172. package/dist/las/unbundled.cjs.map +7 -0
  173. package/dist/las/unbundled.d.ts +11 -0
  174. package/dist/las/unbundled.d.ts.map +1 -0
  175. package/dist/las/unbundled.js +11 -0
  176. package/dist/las/unbundled.js.map +1 -0
  177. package/dist/las/workers/las-worker.cjs +23 -0
  178. package/dist/las/workers/las-worker.cjs.map +7 -0
  179. package/dist/las/workers/las-worker.d.ts +2 -0
  180. package/dist/las/workers/las-worker.d.ts.map +1 -0
  181. package/dist/las/workers/las-worker.js +23 -0
  182. package/dist/las/workers/las-worker.js.map +1 -0
  183. package/dist/las-worker.js +23058 -0
  184. package/dist/pcd/bundled.cjs +33 -0
  185. package/dist/pcd/bundled.cjs.map +7 -0
  186. package/dist/pcd/bundled.d.ts +3 -0
  187. package/dist/pcd/bundled.d.ts.map +1 -0
  188. package/dist/pcd/bundled.js +5 -0
  189. package/dist/pcd/bundled.js.map +1 -0
  190. package/dist/pcd/index.cjs +40 -0
  191. package/dist/pcd/index.cjs.map +7 -0
  192. package/dist/pcd/index.d.ts +8 -0
  193. package/dist/pcd/index.d.ts.map +1 -0
  194. package/dist/pcd/index.js +10 -0
  195. package/dist/pcd/index.js.map +1 -0
  196. package/dist/pcd/lib/decompress-lzf.cjs +80 -0
  197. package/dist/pcd/lib/decompress-lzf.cjs.map +7 -0
  198. package/dist/pcd/lib/decompress-lzf.d.ts +7 -0
  199. package/dist/pcd/lib/decompress-lzf.d.ts.map +1 -0
  200. package/dist/pcd/lib/decompress-lzf.js +62 -0
  201. package/dist/pcd/lib/decompress-lzf.js.map +1 -0
  202. package/dist/pcd/lib/get-pcd-schema.cjs +70 -0
  203. package/dist/pcd/lib/get-pcd-schema.cjs.map +7 -0
  204. package/dist/pcd/lib/get-pcd-schema.d.ts +10 -0
  205. package/dist/pcd/lib/get-pcd-schema.d.ts.map +1 -0
  206. package/dist/pcd/lib/get-pcd-schema.js +53 -0
  207. package/dist/pcd/lib/get-pcd-schema.js.map +1 -0
  208. package/dist/pcd/lib/parse-pcd.cjs +354 -0
  209. package/dist/pcd/lib/parse-pcd.cjs.map +7 -0
  210. package/dist/pcd/lib/parse-pcd.d.ts +20 -0
  211. package/dist/pcd/lib/parse-pcd.d.ts.map +1 -0
  212. package/dist/pcd/lib/parse-pcd.js +341 -0
  213. package/dist/pcd/lib/parse-pcd.js.map +1 -0
  214. package/dist/pcd/lib/pcd-types.cjs +19 -0
  215. package/dist/pcd/lib/pcd-types.cjs.map +7 -0
  216. package/dist/pcd/lib/pcd-types.d.ts +31 -0
  217. package/dist/pcd/lib/pcd-types.d.ts.map +1 -0
  218. package/dist/pcd/lib/pcd-types.js +5 -0
  219. package/dist/pcd/lib/pcd-types.js.map +1 -0
  220. package/dist/pcd/pcd-format.cjs +42 -0
  221. package/dist/pcd/pcd-format.cjs.map +7 -0
  222. package/dist/pcd/pcd-format.d.ts +16 -0
  223. package/dist/pcd/pcd-format.d.ts.map +1 -0
  224. package/dist/pcd/pcd-format.js +19 -0
  225. package/dist/pcd/pcd-format.js.map +1 -0
  226. package/dist/pcd/pcd-loader-types.cjs +64 -0
  227. package/dist/pcd/pcd-loader-types.cjs.map +7 -0
  228. package/dist/pcd/pcd-loader-types.d.ts +105 -0
  229. package/dist/pcd/pcd-loader-types.d.ts.map +1 -0
  230. package/dist/pcd/pcd-loader-types.js +35 -0
  231. package/dist/pcd/pcd-loader-types.js.map +1 -0
  232. package/dist/pcd/pcd-loader.cjs +144 -0
  233. package/dist/pcd/pcd-loader.cjs.map +7 -0
  234. package/dist/pcd/pcd-loader.d.ts +44 -0
  235. package/dist/pcd/pcd-loader.d.ts.map +1 -0
  236. package/dist/pcd/pcd-loader.js +128 -0
  237. package/dist/pcd/pcd-loader.js.map +1 -0
  238. package/dist/pcd/pcd-writer.cjs +134 -0
  239. package/dist/pcd/pcd-writer.cjs.map +7 -0
  240. package/dist/pcd/pcd-writer.d.ts +37 -0
  241. package/dist/pcd/pcd-writer.d.ts.map +1 -0
  242. package/dist/pcd/pcd-writer.js +115 -0
  243. package/dist/pcd/pcd-writer.js.map +1 -0
  244. package/dist/pcd/unbundled.cjs +33 -0
  245. package/dist/pcd/unbundled.cjs.map +7 -0
  246. package/dist/pcd/unbundled.d.ts +3 -0
  247. package/dist/pcd/unbundled.d.ts.map +1 -0
  248. package/dist/pcd/unbundled.js +5 -0
  249. package/dist/pcd/unbundled.js.map +1 -0
  250. package/dist/pcd/workers/pcd-worker.cjs +23 -0
  251. package/dist/pcd/workers/pcd-worker.cjs.map +7 -0
  252. package/dist/pcd/workers/pcd-worker.d.ts +2 -0
  253. package/dist/pcd/workers/pcd-worker.d.ts.map +1 -0
  254. package/dist/pcd/workers/pcd-worker.js +23 -0
  255. package/dist/pcd/workers/pcd-worker.js.map +1 -0
  256. package/dist/pcd-worker.js +17522 -0
  257. package/dist/ply/bundled.cjs +33 -0
  258. package/dist/ply/bundled.cjs.map +7 -0
  259. package/dist/ply/bundled.d.ts +3 -0
  260. package/dist/ply/bundled.d.ts.map +1 -0
  261. package/dist/ply/bundled.js +5 -0
  262. package/dist/ply/bundled.js.map +1 -0
  263. package/dist/ply/index.cjs +40 -0
  264. package/dist/ply/index.cjs.map +7 -0
  265. package/dist/ply/index.d.ts +8 -0
  266. package/dist/ply/index.d.ts.map +1 -0
  267. package/dist/ply/index.js +11 -0
  268. package/dist/ply/index.js.map +1 -0
  269. package/dist/ply/lib/get-ply-schema.cjs +126 -0
  270. package/dist/ply/lib/get-ply-schema.cjs.map +7 -0
  271. package/dist/ply/lib/get-ply-schema.d.ts +10 -0
  272. package/dist/ply/lib/get-ply-schema.d.ts.map +1 -0
  273. package/dist/ply/lib/get-ply-schema.js +117 -0
  274. package/dist/ply/lib/get-ply-schema.js.map +1 -0
  275. package/dist/ply/lib/normalize-ply.cjs +96 -0
  276. package/dist/ply/lib/normalize-ply.cjs.map +7 -0
  277. package/dist/ply/lib/normalize-ply.d.ts +8 -0
  278. package/dist/ply/lib/normalize-ply.d.ts.map +1 -0
  279. package/dist/ply/lib/normalize-ply.js +89 -0
  280. package/dist/ply/lib/normalize-ply.js.map +1 -0
  281. package/dist/ply/lib/parse-ply-arrow.cjs +552 -0
  282. package/dist/ply/lib/parse-ply-arrow.cjs.map +7 -0
  283. package/dist/ply/lib/parse-ply-arrow.d.ts +25 -0
  284. package/dist/ply/lib/parse-ply-arrow.d.ts.map +1 -0
  285. package/dist/ply/lib/parse-ply-arrow.js +493 -0
  286. package/dist/ply/lib/parse-ply-arrow.js.map +1 -0
  287. package/dist/ply/lib/parse-ply-in-batches.cjs +607 -0
  288. package/dist/ply/lib/parse-ply-in-batches.cjs.map +7 -0
  289. package/dist/ply/lib/parse-ply-in-batches.d.ts +9 -0
  290. package/dist/ply/lib/parse-ply-in-batches.d.ts.map +1 -0
  291. package/dist/ply/lib/parse-ply-in-batches.js +625 -0
  292. package/dist/ply/lib/parse-ply-in-batches.js.map +1 -0
  293. package/dist/ply/lib/parse-ply.cjs +755 -0
  294. package/dist/ply/lib/parse-ply.cjs.map +7 -0
  295. package/dist/ply/lib/parse-ply.d.ts +69 -0
  296. package/dist/ply/lib/parse-ply.d.ts.map +1 -0
  297. package/dist/ply/lib/parse-ply.js +851 -0
  298. package/dist/ply/lib/parse-ply.js.map +1 -0
  299. package/dist/ply/lib/ply-types.cjs +19 -0
  300. package/dist/ply/lib/ply-types.cjs.map +7 -0
  301. package/dist/ply/lib/ply-types.d.ts +37 -0
  302. package/dist/ply/lib/ply-types.d.ts.map +1 -0
  303. package/dist/ply/lib/ply-types.js +2 -0
  304. package/dist/ply/lib/ply-types.js.map +1 -0
  305. package/dist/ply/ply-format.cjs +43 -0
  306. package/dist/ply/ply-format.cjs.map +7 -0
  307. package/dist/ply/ply-format.d.ts +18 -0
  308. package/dist/ply/ply-format.d.ts.map +1 -0
  309. package/dist/ply/ply-format.js +22 -0
  310. package/dist/ply/ply-format.js.map +1 -0
  311. package/dist/ply/ply-loader-types.cjs +65 -0
  312. package/dist/ply/ply-loader-types.cjs.map +7 -0
  313. package/dist/ply/ply-loader-types.d.ts +111 -0
  314. package/dist/ply/ply-loader-types.d.ts.map +1 -0
  315. package/dist/ply/ply-loader-types.js +38 -0
  316. package/dist/ply/ply-loader-types.js.map +1 -0
  317. package/dist/ply/ply-loader.cjs +134 -0
  318. package/dist/ply/ply-loader.cjs.map +7 -0
  319. package/dist/ply/ply-loader.d.ts +44 -0
  320. package/dist/ply/ply-loader.d.ts.map +1 -0
  321. package/dist/ply/ply-loader.js +121 -0
  322. package/dist/ply/ply-loader.js.map +1 -0
  323. package/dist/ply/ply-writer.cjs +175 -0
  324. package/dist/ply/ply-writer.cjs.map +7 -0
  325. package/dist/ply/ply-writer.d.ts +37 -0
  326. package/dist/ply/ply-writer.d.ts.map +1 -0
  327. package/dist/ply/ply-writer.js +140 -0
  328. package/dist/ply/ply-writer.js.map +1 -0
  329. package/dist/ply/unbundled.cjs +33 -0
  330. package/dist/ply/unbundled.cjs.map +7 -0
  331. package/dist/ply/unbundled.d.ts +3 -0
  332. package/dist/ply/unbundled.d.ts.map +1 -0
  333. package/dist/ply/unbundled.js +5 -0
  334. package/dist/ply/unbundled.js.map +1 -0
  335. package/dist/ply/workers/ply-worker.cjs +34 -0
  336. package/dist/ply/workers/ply-worker.cjs.map +7 -0
  337. package/dist/ply/workers/ply-worker.d.ts +2 -0
  338. package/dist/ply/workers/ply-worker.d.ts.map +1 -0
  339. package/dist/ply/workers/ply-worker.js +37 -0
  340. package/dist/ply/workers/ply-worker.js.map +1 -0
  341. package/dist/ply-worker.js +19175 -0
  342. package/package.json +234 -4
  343. package/src/index.ts +19 -0
  344. package/src/las/bundled.ts +39 -0
  345. package/src/las/index.ts +70 -0
  346. package/src/las/las-copc-loader-types.ts +18 -0
  347. package/src/las/las-copc-loader.ts +61 -0
  348. package/src/las/las-format.ts +21 -0
  349. package/src/las/las-loader-shared.ts +124 -0
  350. package/src/las/las-loader-types.ts +27 -0
  351. package/src/las/las-loader.ts +109 -0
  352. package/src/las/las-writer.ts +1473 -0
  353. package/src/las/laz-rs-loader-types.ts +21 -0
  354. package/src/las/laz-rs-loader.ts +53 -0
  355. package/src/las/lazperf-loader-types.ts +22 -0
  356. package/src/las/lazperf-loader.ts +65 -0
  357. package/src/las/lib/LASZIP-LICENSE +202 -0
  358. package/src/las/lib/LASZIP-NOTICE +4 -0
  359. package/src/las/lib/copc/parse-las.ts +265 -0
  360. package/src/las/lib/get-las-schema.ts +50 -0
  361. package/src/las/lib/las-compatibility.ts +178 -0
  362. package/src/las/lib/las-extra-bytes.ts +274 -0
  363. package/src/las/lib/las-types.ts +206 -0
  364. package/src/las/lib/las-waveform.ts +292 -0
  365. package/src/las/lib/laz-perf/laslaz-decoder.ts +443 -0
  366. package/src/las/lib/laz-perf/parse-las.ts +412 -0
  367. package/src/las/lib/laz-rs-wasm/laslaz-decoder.ts +488 -0
  368. package/src/las/lib/laz-rs-wasm/parse-las.ts +412 -0
  369. package/src/las/lib/typescript/parse-las.ts +3730 -0
  370. package/src/las/libs/laz-perf/laz-perf.ts +20615 -0
  371. package/src/las/libs/laz-rs-wasm/laz_rs_wasm.d.ts +89 -0
  372. package/src/las/libs/laz-rs-wasm/laz_rs_wasm.js +497 -0
  373. package/src/las/libs/laz-rs-wasm/laz_rs_wasm_bg.wasm +0 -0
  374. package/src/las/libs/laz-rs-wasm/laz_rs_wasm_bg.wasm.d.ts +38 -0
  375. package/src/las/libs/laz-rs-wasm/package.json +19 -0
  376. package/src/las/unbundled.ts +38 -0
  377. package/src/las/workers/las-worker.ts +24 -0
  378. package/src/pcd/bundled.ts +9 -0
  379. package/src/pcd/index.ts +13 -0
  380. package/src/pcd/lib/decompress-lzf.ts +68 -0
  381. package/src/pcd/lib/get-pcd-schema.ts +66 -0
  382. package/src/pcd/lib/parse-pcd.ts +474 -0
  383. package/src/pcd/lib/pcd-types.ts +34 -0
  384. package/src/pcd/pcd-format.ts +21 -0
  385. package/src/pcd/pcd-loader-types.ts +53 -0
  386. package/src/pcd/pcd-loader.ts +179 -0
  387. package/src/pcd/pcd-writer.ts +152 -0
  388. package/src/pcd/unbundled.ts +6 -0
  389. package/src/pcd/workers/pcd-worker.ts +24 -0
  390. package/src/ply/bundled.ts +9 -0
  391. package/src/ply/index.ts +15 -0
  392. package/src/ply/lib/get-ply-schema.ts +133 -0
  393. package/src/ply/lib/normalize-ply.ts +110 -0
  394. package/src/ply/lib/parse-ply-arrow.ts +676 -0
  395. package/src/ply/lib/parse-ply-in-batches.ts +827 -0
  396. package/src/ply/lib/parse-ply.ts +1081 -0
  397. package/src/ply/lib/ply-types.ts +47 -0
  398. package/src/ply/ply-format.ts +24 -0
  399. package/src/ply/ply-loader-types.ts +61 -0
  400. package/src/ply/ply-loader.ts +185 -0
  401. package/src/ply/ply-writer.ts +215 -0
  402. package/src/ply/unbundled.ts +6 -0
  403. package/src/ply/workers/ply-worker.ts +40 -0
  404. package/third-party-licenses/plasio-LICENSE +21 -0
  405. package/third-party-licenses/three-LICENSE +21 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/las/lib/laz-rs-wasm/laslaz-decoder.ts", "../../../../src/las/libs/laz-rs-wasm/laz_rs_wasm.js"],
4
+ "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n/*\n Modified from Uday Verma and Howard Butler's plasio\n https://github.com/verma/plasio/\n MIT License\n*/\n// laslaz.js - treat as compiled code\nimport type {LASHeader} from '../las-types';\nimport {WasmLasZipDecompressor} from '../../libs/laz-rs-wasm/laz_rs_wasm';\n\ntype LASPoint = {\n position: [number, number, number];\n intensity: number;\n classification: number;\n color?: [number, number, number];\n};\n\ntype LASReader = (dv: DataView) => LASPoint;\n\ntype LASReaders = {\n [key: number]: LASReader;\n};\n\ntype LASData = {\n buffer: ArrayBuffer;\n count: number;\n hasMoreData: boolean;\n};\n\nconst POINT_FORMAT_READERS: LASReaders = {\n 0: dv => {\n return {\n position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],\n intensity: dv.getUint16(12, true),\n classification: dv.getUint8(15)\n };\n },\n 1: dv => {\n return {\n position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],\n intensity: dv.getUint16(12, true),\n classification: dv.getUint8(15)\n };\n },\n 2: dv => {\n return {\n position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],\n intensity: dv.getUint16(12, true),\n classification: dv.getUint8(15),\n color: [dv.getUint16(20, true), dv.getUint16(22, true), dv.getUint16(24, true)]\n };\n },\n 3: dv => {\n return {\n position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],\n intensity: dv.getUint16(12, true),\n classification: dv.getUint8(15),\n color: [dv.getUint16(28, true), dv.getUint16(30, true), dv.getUint16(32, true)]\n };\n },\n 4: dv => {\n return {\n position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],\n intensity: dv.getUint16(12, true),\n classification: dv.getUint8(15)\n };\n },\n 5: dv => {\n return {\n position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],\n intensity: dv.getUint16(12, true),\n classification: dv.getUint8(15),\n color: [dv.getUint16(28, true), dv.getUint16(30, true), dv.getUint16(32, true)]\n };\n },\n 6: dv => {\n return {\n position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],\n intensity: dv.getUint16(12, true),\n classification: dv.getUint8(16)\n };\n },\n 7: dv => {\n return {\n position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],\n intensity: dv.getUint16(12, true),\n classification: dv.getUint8(16),\n color: [dv.getUint16(30, true), dv.getUint16(32, true), dv.getUint16(34, true)]\n };\n },\n 8: dv => {\n return {\n position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],\n intensity: dv.getUint16(12, true),\n classification: dv.getUint8(16),\n color: [dv.getUint16(30, true), dv.getUint16(32, true), dv.getUint16(34, true)]\n };\n },\n 9: dv => {\n return {\n position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],\n intensity: dv.getUint16(12, true),\n classification: dv.getUint8(16)\n };\n },\n 10: dv => {\n return {\n position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],\n intensity: dv.getUint16(12, true),\n classification: dv.getUint8(16),\n color: [dv.getUint16(30, true), dv.getUint16(32, true), dv.getUint16(34, true)]\n };\n }\n};\n\n/**\n * Reads incoming binary data depends on the Type parameter\n * @param buf\n * @param Type\n * @param offset\n * @param count\n * @returns number | number[] from incoming binary data\n */\nfunction readAs(buf: ArrayBuffer, Type: any = {}, offset: number, count?: number) {\n count = count === undefined || count === 0 ? 1 : count;\n const sub = buf.slice(offset, offset + Type.BYTES_PER_ELEMENT * count);\n\n const r = new Type(sub);\n if (count === 1) {\n return r[0];\n }\n\n const ret: number[] = [];\n for (let i = 0; i < count; i++) {\n ret.push(r[i]);\n }\n\n return ret;\n}\n\n/**\n * Parsing of header's attributes\n * @param arraybuffer\n * @returns header as LASHeader\n */\nfunction parseLASHeader(arraybuffer: ArrayBuffer): LASHeader {\n const ver = new Uint8Array(arraybuffer, 24, 2);\n const version = ver[0] * 10 + ver[1];\n const versionAsString = `${ver[0]}.${ver[1]}`;\n\n const rawPointsFormatId = readAs(arraybuffer, Uint8Array, 32 * 3 + 8);\n const bit7 = (rawPointsFormatId & 0x80) >> 7;\n const bit6 = (rawPointsFormatId & 0x40) >> 6;\n\n const isCompressed = bit7 === 1 || bit6 === 1;\n const pointsFormatId = rawPointsFormatId & 0x3f;\n const o: Partial<LASHeader> = {\n pointsOffset: readAs(arraybuffer, Uint32Array, 32 * 3),\n pointsFormatId,\n pointsStructSize: readAs(arraybuffer, Uint16Array, 32 * 3 + 8 + 1),\n pointsCount: readAs(arraybuffer, Uint32Array, 32 * 3 + 11),\n versionAsString,\n isCompressed\n };\n\n let start = 32 * 3 + 35;\n\n o.scale = readAs(arraybuffer, Float64Array, start, 3);\n start += 24; // 8*3\n o.offset = readAs(arraybuffer, Float64Array, start, 3);\n start += 24;\n\n const bounds = readAs(arraybuffer, Float64Array, start, 6);\n start += 48; // 8*6\n o.maxs = [bounds[0], bounds[2], bounds[4]];\n o.mins = [bounds[1], bounds[3], bounds[5]];\n\n start += 20; // 8*20\n\n if (version === 14) {\n o.pointsCount = Number(readAs(arraybuffer, BigUint64Array, start));\n }\n\n const colorPointFormats = new Set([2, 3, 5, 7, 8, 10]);\n o.hasColor = colorPointFormats.has(pointsFormatId);\n // @ts-expect-error Caused when restoring lazperf\n return o;\n}\n\n// LAS Loader\n// Loads uncompressed files\n//\nclass LASLoader {\n arraybuffer: ArrayBuffer;\n readOffset: number = 0;\n header: LASHeader | null = null;\n\n constructor(arraybuffer: ArrayBuffer) {\n this.arraybuffer = arraybuffer;\n }\n\n /**\n * @returns boolean\n */\n open() {\n // Nothing needs to be done to open this\n return true;\n }\n /**\n * Parsing of incoming binary\n * @returns LASHeader\n */\n getHeader() {\n this.header = parseLASHeader(this.arraybuffer);\n return this.header;\n }\n\n /**\n * Reading data\n * @param count\n * @returns LasData\n */\n readData(count: number): LASData {\n const {header, arraybuffer} = this;\n if (!header) {\n throw new Error('Cannot start reading data till a header request is issued');\n }\n\n let {readOffset} = this;\n count = Math.min(count, header.pointsCount - readOffset);\n const start = header.pointsOffset + readOffset * header.pointsStructSize;\n const end = start + count * header.pointsStructSize;\n readOffset += count;\n this.readOffset = readOffset;\n\n return {\n buffer: arraybuffer.slice(start, end),\n count,\n hasMoreData: readOffset < header.pointsCount\n };\n }\n /**\n * Method which brings data to null to close the file\n * @returns\n */\n close() {\n // @ts-ignore Possibly null\n this.arraybuffer = null;\n return true;\n }\n}\n\n/**\n * LAZ Loader\n * Uses NaCL module to load LAZ files\n */\nclass LAZLoader {\n arraybuffer: ArrayBuffer;\n readOffset: number = 0;\n instance: WasmLasZipDecompressor | null = null;\n header: LASHeader | null = null;\n\n constructor(arraybuffer: ArrayBuffer) {\n this.arraybuffer = arraybuffer;\n }\n\n /**\n * Opens the file\n * @returns boolean\n */\n open(): boolean {\n try {\n const abInt = new Uint8Array(this.arraybuffer);\n this.instance = new WasmLasZipDecompressor(abInt);\n\n return true;\n } catch (error) {\n throw new Error(`Failed to open file: ${(error as Error).message}`);\n }\n }\n\n getHeader(): LASHeader {\n try {\n this.header = parseLASHeader(this.arraybuffer);\n return this.header;\n } catch (error) {\n throw new Error(`Failed to get header: ${(error as Error).message}`);\n }\n }\n\n /**\n * @param count\n * @returns LASData\n */\n readData(count: number): LASData {\n if (!this.instance) {\n throw new Error('You need to open the file before trying to read stuff');\n }\n\n const {header, instance} = this;\n\n if (!header) {\n throw new Error(\n 'You need to query header before reading, I maintain state that way, sorry :('\n );\n }\n\n try {\n const pointsToRead = Math.min(count, header.pointsCount - this.readOffset);\n const buf = new Uint8Array(pointsToRead * header.pointsStructSize);\n\n const bufRead = new Uint8Array(header.pointsStructSize);\n for (let i = 0; i < pointsToRead; i++) {\n instance.decompress_many(bufRead);\n buf.set(bufRead, i * header.pointsStructSize);\n this.readOffset++;\n }\n return {\n buffer: buf.buffer,\n count: pointsToRead,\n hasMoreData: this.readOffset < header.pointsCount\n };\n } catch (error) {\n throw new Error(`Failed to read data: ${(error as Error).message}`);\n }\n }\n\n /**\n * Deletes the instance\n * @returns boolean\n */\n close(): boolean {\n try {\n if (this.instance !== null) {\n this.instance.free();\n this.instance = null;\n }\n // @ts-ignore Possibly null\n this.arraybuffer = null;\n return true;\n } catch (error) {\n throw new Error(`Failed to close file: ${(error as Error).message}`);\n }\n }\n}\n\n/**\n * Helper class: Decodes LAS records into points\n */\nclass LASDecoder {\n arrayb: ArrayBuffer;\n decoder: (dv: DataView) => LASPoint;\n pointsCount: number;\n pointSize: number;\n\n constructor(buffer: ArrayBuffer, len: number, header: LASHeader) {\n this.arrayb = buffer;\n this.decoder = POINT_FORMAT_READERS[header.pointsFormatId];\n this.pointsCount = len;\n this.pointSize = header.pointsStructSize;\n }\n\n /**\n * Decodes data depends on this point size\n * @param index\n * @returns New object\n */\n getPoint(index: number): LASPoint {\n if (index < 0 || index >= this.pointsCount) {\n throw new Error('Point index out of range');\n }\n\n const dv = new DataView(this.arrayb, index * this.pointSize, this.pointSize);\n return this.decoder(dv);\n }\n}\n\n/**\n * A single consistent interface for loading LAS/LAZ files\n */\nexport class LASFile {\n arraybuffer: ArrayBuffer;\n formatId: number = 0;\n loader: LASLoader | LAZLoader;\n isCompressed: boolean = true;\n isOpen: boolean = false;\n version: number = 0;\n versionAsString: string = '';\n\n constructor(arraybuffer: ArrayBuffer) {\n this.arraybuffer = arraybuffer;\n\n this.validate();\n\n this.loader = this.isCompressed\n ? new LAZLoader(this.arraybuffer)\n : new LASLoader(this.arraybuffer);\n }\n\n validate(): void {\n const signature = readAs(this.arraybuffer, Uint8Array, 0, 4);\n const check = String.fromCharCode(...signature);\n if (check !== 'LASF') {\n throw new Error('Invalid LAS file');\n }\n\n if (this.determineVersion() > 14) {\n throw new Error('Only file versions <= 1.4 are supported');\n }\n\n this.determineFormat();\n if (POINT_FORMAT_READERS[this.formatId] === undefined) {\n throw new Error('The point format ID is not supported');\n }\n }\n\n /**\n * Determines format in parameters of LASHeader\n */\n determineFormat(): void {\n const formatId = readAs(this.arraybuffer, Uint8Array, 32 * 3 + 8);\n const bit7 = (formatId & 0x80) >> 7;\n const bit6 = (formatId & 0x40) >> 6;\n\n if (bit7 === 1 && bit6 === 1) {\n throw new Error('Old style compression not supported');\n }\n\n this.formatId = formatId & 0x3f;\n this.isCompressed = bit7 === 1 || bit6 === 1;\n }\n\n /**\n * Determines version\n * @returns version\n */\n determineVersion(): number {\n const ver = new Uint8Array(this.arraybuffer, 24, 2);\n this.version = ver[0] * 10 + ver[1];\n this.versionAsString = `${ver[0]}.${ver[1]}`;\n return this.version;\n }\n\n /**\n * Reads if the file is open\n * @returns boolean\n */\n open(): void {\n if (this.loader.open()) {\n this.isOpen = true;\n }\n }\n /**\n * Gets the header\n * @returns Header\n */\n getHeader(): LASHeader {\n return this.loader.getHeader();\n }\n\n /**\n * @param count\n * @returns LASData\n */\n readData(count: number): LASData {\n return this.loader.readData(count);\n }\n\n /**\n * Closes the file\n */\n close(): void {\n if (this.loader.close()) {\n this.isOpen = false;\n }\n }\n /**\n */\n getUnpacker(): typeof LASDecoder {\n return LASDecoder;\n }\n}\n\n/* eslint no-use-before-define: 2 */\n// export const LASModuleWasLoaded = false;\n", "// SPDX-License-Identifier: MIT\n\n// @ts-nocheck\n/* eslint-disable */\n\n// laz_rs_wasm is a compiled version of https://github.com/laz-rs/laz-rs-wasm on 2024-11-22.\n\n// To regenerate:\n// ```\n// git clone https://github.com/laz-rs/laz-rs-wasm.git\n// cd laz-rs-wasm\n// cargo build\n// wasm-pack build --target web\n// ```\n// Copy results from `./pkg`\n\nlet wasm;\n\nlet cachedUint8ArrayMemory0 = null;\n\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n\nconst cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } );\n\nif (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); };\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nfunction _assertClass(instance, klass) {\n if (!(instance instanceof klass)) {\n throw new Error(`expected instance of ${klass.name}`);\n }\n return instance.ptr;\n}\n\nfunction takeFromExternrefTable0(idx) {\n const value = wasm.__wbindgen_export_0.get(idx);\n wasm.__externref_table_dealloc(idx);\n return value;\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1, 1) >>> 0;\n getUint8ArrayMemory0().set(arg, ptr / 1);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nconst cachedTextEncoder = (typeof TextEncoder !== 'undefined' ? new TextEncoder('utf-8') : { encode: () => { throw Error('TextEncoder not available') } } );\n\nconst encodeString = (typeof cachedTextEncoder.encodeInto === 'function'\n ? function (arg, view) {\n return cachedTextEncoder.encodeInto(arg, view);\n}\n : function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n});\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n\n const mem = getUint8ArrayMemory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nlet cachedDataViewMemory0 = null;\n\nfunction getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\n\nconst WasmLasZipDecompressorFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_wasmlaszipdecompressor_free(ptr >>> 0, 1));\n\nexport class WasmLasZipDecompressor {\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n WasmLasZipDecompressorFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmlaszipdecompressor_free(ptr, 0);\n }\n /**\n * @returns {WasmQuickHeader}\n */\n get header() {\n const ret = wasm.__wbg_get_wasmlaszipdecompressor_header(this.__wbg_ptr);\n return WasmQuickHeader.__wrap(ret);\n }\n /**\n * @param {WasmQuickHeader} arg0\n */\n set header(arg0) {\n _assertClass(arg0, WasmQuickHeader);\n var ptr0 = arg0.__destroy_into_raw();\n wasm.__wbg_set_wasmlaszipdecompressor_header(this.__wbg_ptr, ptr0);\n }\n /**\n * @param {Uint8Array} buf\n */\n constructor(buf) {\n const ret = wasm.wasmlaszipdecompressor_new(buf);\n if (ret[2]) {\n throw takeFromExternrefTable0(ret[1]);\n }\n this.__wbg_ptr = ret[0] >>> 0;\n WasmLasZipDecompressorFinalization.register(this, this.__wbg_ptr, this);\n return this;\n }\n /**\n * @param {Uint8Array} out\n */\n decompress_many(out) {\n var ptr0 = passArray8ToWasm0(out, wasm.__wbindgen_malloc);\n var len0 = WASM_VECTOR_LEN;\n const ret = wasm.wasmlaszipdecompressor_decompress_many(this.__wbg_ptr, ptr0, len0, out);\n if (ret[1]) {\n throw takeFromExternrefTable0(ret[0]);\n }\n }\n}\n\nconst WasmQuickHeaderFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_wasmquickheader_free(ptr >>> 0, 1));\n\nexport class WasmQuickHeader {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(WasmQuickHeader.prototype);\n obj.__wbg_ptr = ptr;\n WasmQuickHeaderFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n WasmQuickHeaderFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_wasmquickheader_free(ptr, 0);\n }\n /**\n * @returns {number}\n */\n get major() {\n const ret = wasm.__wbg_get_wasmquickheader_major(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {number} arg0\n */\n set major(arg0) {\n wasm.__wbg_set_wasmquickheader_major(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {number}\n */\n get minor() {\n const ret = wasm.__wbg_get_wasmquickheader_minor(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {number} arg0\n */\n set minor(arg0) {\n wasm.__wbg_set_wasmquickheader_minor(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {number}\n */\n get offset_to_points() {\n const ret = wasm.__wbg_get_wasmquickheader_offset_to_points(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set offset_to_points(arg0) {\n wasm.__wbg_set_wasmquickheader_offset_to_points(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {number}\n */\n get num_vlrs() {\n const ret = wasm.__wbg_get_wasmquickheader_num_vlrs(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * @param {number} arg0\n */\n set num_vlrs(arg0) {\n wasm.__wbg_set_wasmquickheader_num_vlrs(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {number}\n */\n get point_format_id() {\n const ret = wasm.__wbg_get_wasmquickheader_point_format_id(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {number} arg0\n */\n set point_format_id(arg0) {\n wasm.__wbg_set_wasmquickheader_point_format_id(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {number}\n */\n get point_size() {\n const ret = wasm.__wbg_get_wasmquickheader_point_size(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {number} arg0\n */\n set point_size(arg0) {\n wasm.__wbg_set_wasmquickheader_point_size(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {bigint}\n */\n get num_points() {\n const ret = wasm.__wbg_get_wasmquickheader_num_points(this.__wbg_ptr);\n return BigInt.asUintN(64, ret);\n }\n /**\n * @param {bigint} arg0\n */\n set num_points(arg0) {\n wasm.__wbg_set_wasmquickheader_num_points(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {number}\n */\n get header_size() {\n const ret = wasm.__wbg_get_wasmquickheader_header_size(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {number} arg0\n */\n set header_size(arg0) {\n wasm.__wbg_set_wasmquickheader_header_size(this.__wbg_ptr, arg0);\n }\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n\n } catch (e) {\n if (module.headers.get('Content-Type') != 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else {\n throw e;\n }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n\n } else {\n return instance;\n }\n }\n}\n\nfunction __wbg_get_imports() {\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbindgen_copy_to_typed_array = function(arg0, arg1, arg2) {\n new Uint8Array(arg2.buffer, arg2.byteOffset, arg2.byteLength).set(getArrayU8FromWasm0(arg0, arg1));\n };\n imports.wbg.__wbg_buffer_ccaed51a635d8a2d = function(arg0) {\n const ret = arg0.buffer;\n return ret;\n };\n imports.wbg.__wbg_new_fec2611eb9180f95 = function(arg0) {\n const ret = new Uint8Array(arg0);\n return ret;\n };\n imports.wbg.__wbg_set_ec2fcf81bc573fd9 = function(arg0, arg1, arg2) {\n arg0.set(arg1, arg2 >>> 0);\n };\n imports.wbg.__wbg_length_9254c4bd3b9f23c4 = function(arg0) {\n const ret = arg0.length;\n return ret;\n };\n imports.wbg.__wbg_new_abda76e883ba8a5f = function() {\n const ret = new Error();\n return ret;\n };\n imports.wbg.__wbg_stack_658279fe44541cf6 = function(arg0, arg1) {\n const ret = arg1.stack;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n };\n imports.wbg.__wbg_error_f851667af71bcfc6 = function(arg0, arg1) {\n let deferred0_0;\n let deferred0_1;\n try {\n deferred0_0 = arg0;\n deferred0_1 = arg1;\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(deferred0_0, deferred0_1, 1);\n }\n };\n imports.wbg.__wbindgen_throw = function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n imports.wbg.__wbindgen_memory = function() {\n const ret = wasm.memory;\n return ret;\n };\n imports.wbg.__wbindgen_init_externref_table = function() {\n const table = wasm.__wbindgen_export_0;\n const offset = table.grow(4);\n table.set(0, undefined);\n table.set(offset + 0, undefined);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n ;\n };\n\n return imports;\n}\n\nfunction __wbg_init_memory(imports, memory) {\n\n}\n\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n __wbg_init.__wbindgen_wasm_module = module;\n cachedDataViewMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n\n\n wasm.__wbindgen_start();\n return wasm;\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (typeof module !== 'undefined') {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module} = module)\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n }\n }\n\n const imports = __wbg_get_imports();\n\n __wbg_init_memory(imports);\n\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n\n const instance = new WebAssembly.Instance(module, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(module_or_path) {\n if (wasm !== undefined) return wasm;\n\n\n if (typeof module_or_path !== 'undefined') {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path} = module_or_path)\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n }\n }\n\n if (typeof module_or_path === 'undefined') {\n module_or_path = new URL('laz_rs_wasm_bg.wasm', import.meta.url);\n }\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = loadWasmModule(module_or_path);\n }\n\n __wbg_init_memory(imports);\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync };\nexport default __wbg_init;\n\nasync function loadWasmModule(module_or_path) {\n if (isNodeFileUrl(module_or_path)) {\n const nodeFsPromisesModule = 'node:fs/promises';\n const { readFile } = await import(nodeFsPromisesModule);\n return await readFile(module_or_path);\n }\n return fetch(module_or_path);\n}\n\nfunction isNodeFileUrl(module_or_path) {\n return typeof process === 'object'\n && typeof process.versions === 'object'\n && typeof process.versions.node === 'string'\n && typeof URL === 'function'\n && module_or_path instanceof URL\n && module_or_path.protocol === 'file:';\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACgBA,IAAI;AAEJ,IAAI,0BAA0B;AAE9B,SAAS,uBAAuB;AAC5B,MAAI,4BAA4B,QAAQ,wBAAwB,eAAe,GAAG;AAC9E,8BAA0B,IAAI,WAAW,KAAK,OAAO,MAAM;AAAA,EAC/D;AACA,SAAO;AACX;AAOA,IAAM,oBAAqB,OAAO,gBAAgB,cAAc,IAAI,YAAY,SAAS,EAAE,WAAW,MAAM,OAAO,KAAK,CAAC,IAAI,EAAE,QAAQ,MAAM;AAAE,QAAM,MAAM,2BAA2B;AAAE,EAAE;AAE1L,IAAI,OAAO,gBAAgB,aAAa;AAAE,oBAAkB,OAAO;AAAG;AAOtE,SAAS,aAAa,UAAU,OAAO;AACnC,MAAI,EAAE,oBAAoB,QAAQ;AAC9B,UAAM,IAAI,MAAM,wBAAwB,MAAM,IAAI,EAAE;AAAA,EACxD;AACA,SAAO,SAAS;AACpB;AAEA,SAAS,wBAAwB,KAAK;AAClC,QAAM,QAAQ,KAAK,oBAAoB,IAAI,GAAG;AAC9C,OAAK,0BAA0B,GAAG;AAClC,SAAO;AACX;AAEA,IAAI,kBAAkB;AAEtB,SAAS,kBAAkB,KAAK,QAAQ;AACpC,QAAM,MAAM,OAAO,IAAI,SAAS,GAAG,CAAC,MAAM;AAC1C,uBAAqB,EAAE,IAAI,KAAK,MAAM,CAAC;AACvC,oBAAkB,IAAI;AACtB,SAAO;AACX;AAEA,IAAM,oBAAqB,OAAO,gBAAgB,cAAc,IAAI,YAAY,OAAO,IAAI,EAAE,QAAQ,MAAM;AAAE,QAAM,MAAM,2BAA2B;AAAE,EAAE;AAExJ,IAAM,eAAgB,OAAO,kBAAkB,eAAe,aACxD,SAAU,KAAK,MAAM;AACvB,SAAO,kBAAkB,WAAW,KAAK,IAAI;AACjD,IACM,SAAU,KAAK,MAAM;AACvB,QAAM,MAAM,kBAAkB,OAAO,GAAG;AACxC,OAAK,IAAI,GAAG;AACZ,SAAO;AAAA,IACH,MAAM,IAAI;AAAA,IACV,SAAS,IAAI;AAAA,EACjB;AACJ;AAkDA,IAAM,qCAAsC,OAAO,yBAAyB,cACtE,EAAE,UAAU,MAAM;AAAC,GAAG,YAAY,MAAM;AAAC,EAAE,IAC3C,IAAI,qBAAqB,SAAO,KAAK,kCAAkC,QAAQ,GAAG,CAAC,CAAC;AAEnF,IAAM,yBAAN,MAA6B;AAAA,EAEhC,qBAAqB;AACjB,UAAM,MAAM,KAAK;AACjB,SAAK,YAAY;AACjB,uCAAmC,WAAW,IAAI;AAClD,WAAO;AAAA,EACX;AAAA,EAEA,OAAO;AACH,UAAM,MAAM,KAAK,mBAAmB;AACpC,SAAK,kCAAkC,KAAK,CAAC;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,SAAS;AACT,UAAM,MAAM,KAAK,wCAAwC,KAAK,SAAS;AACvE,WAAO,gBAAgB,OAAO,GAAG;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,OAAO,MAAM;AACb,iBAAa,MAAM,eAAe;AAClC,QAAI,OAAO,KAAK,mBAAmB;AACnC,SAAK,wCAAwC,KAAK,WAAW,IAAI;AAAA,EACrE;AAAA;AAAA;AAAA;AAAA,EAIA,YAAY,KAAK;AACb,UAAM,MAAM,KAAK,2BAA2B,GAAG;AAC/C,QAAI,IAAI,CAAC,GAAG;AACR,YAAM,wBAAwB,IAAI,CAAC,CAAC;AAAA,IACxC;AACA,SAAK,YAAY,IAAI,CAAC,MAAM;AAC5B,uCAAmC,SAAS,MAAM,KAAK,WAAW,IAAI;AACtE,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAIA,gBAAgB,KAAK;AACjB,QAAI,OAAO,kBAAkB,KAAK,KAAK,iBAAiB;AACxD,QAAI,OAAO;AACX,UAAM,MAAM,KAAK,uCAAuC,KAAK,WAAW,MAAM,MAAM,GAAG;AACvF,QAAI,IAAI,CAAC,GAAG;AACR,YAAM,wBAAwB,IAAI,CAAC,CAAC;AAAA,IACxC;AAAA,EACJ;AACJ;AAEA,IAAM,8BAA+B,OAAO,yBAAyB,cAC/D,EAAE,UAAU,MAAM;AAAC,GAAG,YAAY,MAAM;AAAC,EAAE,IAC3C,IAAI,qBAAqB,SAAO,KAAK,2BAA2B,QAAQ,GAAG,CAAC,CAAC;AAE5E,IAAM,kBAAN,MAAM,iBAAgB;AAAA,EAEzB,OAAO,OAAO,KAAK;AACf,UAAM,QAAQ;AACd,UAAM,MAAM,OAAO,OAAO,iBAAgB,SAAS;AACnD,QAAI,YAAY;AAChB,gCAA4B,SAAS,KAAK,IAAI,WAAW,GAAG;AAC5D,WAAO;AAAA,EACX;AAAA,EAEA,qBAAqB;AACjB,UAAM,MAAM,KAAK;AACjB,SAAK,YAAY;AACjB,gCAA4B,WAAW,IAAI;AAC3C,WAAO;AAAA,EACX;AAAA,EAEA,OAAO;AACH,UAAM,MAAM,KAAK,mBAAmB;AACpC,SAAK,2BAA2B,KAAK,CAAC;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,QAAQ;AACR,UAAM,MAAM,KAAK,gCAAgC,KAAK,SAAS;AAC/D,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,MAAM,MAAM;AACZ,SAAK,gCAAgC,KAAK,WAAW,IAAI;AAAA,EAC7D;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,QAAQ;AACR,UAAM,MAAM,KAAK,gCAAgC,KAAK,SAAS;AAC/D,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,MAAM,MAAM;AACZ,SAAK,gCAAgC,KAAK,WAAW,IAAI;AAAA,EAC7D;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,mBAAmB;AACnB,UAAM,MAAM,KAAK,2CAA2C,KAAK,SAAS;AAC1E,WAAO,QAAQ;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,iBAAiB,MAAM;AACvB,SAAK,2CAA2C,KAAK,WAAW,IAAI;AAAA,EACxE;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,WAAW;AACX,UAAM,MAAM,KAAK,mCAAmC,KAAK,SAAS;AAClE,WAAO,QAAQ;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,SAAS,MAAM;AACf,SAAK,mCAAmC,KAAK,WAAW,IAAI;AAAA,EAChE;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,kBAAkB;AAClB,UAAM,MAAM,KAAK,0CAA0C,KAAK,SAAS;AACzE,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,gBAAgB,MAAM;AACtB,SAAK,0CAA0C,KAAK,WAAW,IAAI;AAAA,EACvE;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,aAAa;AACb,UAAM,MAAM,KAAK,qCAAqC,KAAK,SAAS;AACpE,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,WAAW,MAAM;AACjB,SAAK,qCAAqC,KAAK,WAAW,IAAI;AAAA,EAClE;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,aAAa;AACb,UAAM,MAAM,KAAK,qCAAqC,KAAK,SAAS;AACpE,WAAO,OAAO,QAAQ,IAAI,GAAG;AAAA,EACjC;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,WAAW,MAAM;AACjB,SAAK,qCAAqC,KAAK,WAAW,IAAI;AAAA,EAClE;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,cAAc;AACd,UAAM,MAAM,KAAK,sCAAsC,KAAK,SAAS;AACrE,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,YAAY,MAAM;AAClB,SAAK,sCAAsC,KAAK,WAAW,IAAI;AAAA,EACnE;AACJ;;;ADxRA,IAAM,uBAAmC;AAAA,EACvC,GAAG,QAAM;AACP,WAAO;AAAA,MACL,UAAU,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,GAAG,SAAS,GAAG,IAAI,GAAG,GAAG,SAAS,GAAG,IAAI,CAAC;AAAA,MAC3E,WAAW,GAAG,UAAU,IAAI,IAAI;AAAA,MAChC,gBAAgB,GAAG,SAAS,EAAE;AAAA,IAChC;AAAA,EACF;AAAA,EACA,GAAG,QAAM;AACP,WAAO;AAAA,MACL,UAAU,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,GAAG,SAAS,GAAG,IAAI,GAAG,GAAG,SAAS,GAAG,IAAI,CAAC;AAAA,MAC3E,WAAW,GAAG,UAAU,IAAI,IAAI;AAAA,MAChC,gBAAgB,GAAG,SAAS,EAAE;AAAA,IAChC;AAAA,EACF;AAAA,EACA,GAAG,QAAM;AACP,WAAO;AAAA,MACL,UAAU,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,GAAG,SAAS,GAAG,IAAI,GAAG,GAAG,SAAS,GAAG,IAAI,CAAC;AAAA,MAC3E,WAAW,GAAG,UAAU,IAAI,IAAI;AAAA,MAChC,gBAAgB,GAAG,SAAS,EAAE;AAAA,MAC9B,OAAO,CAAC,GAAG,UAAU,IAAI,IAAI,GAAG,GAAG,UAAU,IAAI,IAAI,GAAG,GAAG,UAAU,IAAI,IAAI,CAAC;AAAA,IAChF;AAAA,EACF;AAAA,EACA,GAAG,QAAM;AACP,WAAO;AAAA,MACL,UAAU,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,GAAG,SAAS,GAAG,IAAI,GAAG,GAAG,SAAS,GAAG,IAAI,CAAC;AAAA,MAC3E,WAAW,GAAG,UAAU,IAAI,IAAI;AAAA,MAChC,gBAAgB,GAAG,SAAS,EAAE;AAAA,MAC9B,OAAO,CAAC,GAAG,UAAU,IAAI,IAAI,GAAG,GAAG,UAAU,IAAI,IAAI,GAAG,GAAG,UAAU,IAAI,IAAI,CAAC;AAAA,IAChF;AAAA,EACF;AAAA,EACA,GAAG,QAAM;AACP,WAAO;AAAA,MACL,UAAU,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,GAAG,SAAS,GAAG,IAAI,GAAG,GAAG,SAAS,GAAG,IAAI,CAAC;AAAA,MAC3E,WAAW,GAAG,UAAU,IAAI,IAAI;AAAA,MAChC,gBAAgB,GAAG,SAAS,EAAE;AAAA,IAChC;AAAA,EACF;AAAA,EACA,GAAG,QAAM;AACP,WAAO;AAAA,MACL,UAAU,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,GAAG,SAAS,GAAG,IAAI,GAAG,GAAG,SAAS,GAAG,IAAI,CAAC;AAAA,MAC3E,WAAW,GAAG,UAAU,IAAI,IAAI;AAAA,MAChC,gBAAgB,GAAG,SAAS,EAAE;AAAA,MAC9B,OAAO,CAAC,GAAG,UAAU,IAAI,IAAI,GAAG,GAAG,UAAU,IAAI,IAAI,GAAG,GAAG,UAAU,IAAI,IAAI,CAAC;AAAA,IAChF;AAAA,EACF;AAAA,EACA,GAAG,QAAM;AACP,WAAO;AAAA,MACL,UAAU,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,GAAG,SAAS,GAAG,IAAI,GAAG,GAAG,SAAS,GAAG,IAAI,CAAC;AAAA,MAC3E,WAAW,GAAG,UAAU,IAAI,IAAI;AAAA,MAChC,gBAAgB,GAAG,SAAS,EAAE;AAAA,IAChC;AAAA,EACF;AAAA,EACA,GAAG,QAAM;AACP,WAAO;AAAA,MACL,UAAU,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,GAAG,SAAS,GAAG,IAAI,GAAG,GAAG,SAAS,GAAG,IAAI,CAAC;AAAA,MAC3E,WAAW,GAAG,UAAU,IAAI,IAAI;AAAA,MAChC,gBAAgB,GAAG,SAAS,EAAE;AAAA,MAC9B,OAAO,CAAC,GAAG,UAAU,IAAI,IAAI,GAAG,GAAG,UAAU,IAAI,IAAI,GAAG,GAAG,UAAU,IAAI,IAAI,CAAC;AAAA,IAChF;AAAA,EACF;AAAA,EACA,GAAG,QAAM;AACP,WAAO;AAAA,MACL,UAAU,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,GAAG,SAAS,GAAG,IAAI,GAAG,GAAG,SAAS,GAAG,IAAI,CAAC;AAAA,MAC3E,WAAW,GAAG,UAAU,IAAI,IAAI;AAAA,MAChC,gBAAgB,GAAG,SAAS,EAAE;AAAA,MAC9B,OAAO,CAAC,GAAG,UAAU,IAAI,IAAI,GAAG,GAAG,UAAU,IAAI,IAAI,GAAG,GAAG,UAAU,IAAI,IAAI,CAAC;AAAA,IAChF;AAAA,EACF;AAAA,EACA,GAAG,QAAM;AACP,WAAO;AAAA,MACL,UAAU,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,GAAG,SAAS,GAAG,IAAI,GAAG,GAAG,SAAS,GAAG,IAAI,CAAC;AAAA,MAC3E,WAAW,GAAG,UAAU,IAAI,IAAI;AAAA,MAChC,gBAAgB,GAAG,SAAS,EAAE;AAAA,IAChC;AAAA,EACF;AAAA,EACA,IAAI,QAAM;AACR,WAAO;AAAA,MACL,UAAU,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,GAAG,SAAS,GAAG,IAAI,GAAG,GAAG,SAAS,GAAG,IAAI,CAAC;AAAA,MAC3E,WAAW,GAAG,UAAU,IAAI,IAAI;AAAA,MAChC,gBAAgB,GAAG,SAAS,EAAE;AAAA,MAC9B,OAAO,CAAC,GAAG,UAAU,IAAI,IAAI,GAAG,GAAG,UAAU,IAAI,IAAI,GAAG,GAAG,UAAU,IAAI,IAAI,CAAC;AAAA,IAChF;AAAA,EACF;AACF;AAUA,SAAS,OAAO,KAAkB,OAAY,CAAC,GAAG,QAAgB,OAAgB;AAChF,UAAQ,UAAU,UAAa,UAAU,IAAI,IAAI;AACjD,QAAM,MAAM,IAAI,MAAM,QAAQ,SAAS,KAAK,oBAAoB,KAAK;AAErE,QAAM,IAAI,IAAI,KAAK,GAAG;AACtB,MAAI,UAAU,GAAG;AACf,WAAO,EAAE,CAAC;AAAA,EACZ;AAEA,QAAM,MAAgB,CAAC;AACvB,WAAS,IAAI,GAAG,IAAI,OAAO,KAAK;AAC9B,QAAI,KAAK,EAAE,CAAC,CAAC;AAAA,EACf;AAEA,SAAO;AACT;AAOA,SAAS,eAAe,aAAqC;AAC3D,QAAM,MAAM,IAAI,WAAW,aAAa,IAAI,CAAC;AAC7C,QAAM,UAAU,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;AACnC,QAAM,kBAAkB,GAAG,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;AAE3C,QAAM,oBAAoB,OAAO,aAAa,YAAY,KAAK,IAAI,CAAC;AACpE,QAAM,QAAQ,oBAAoB,QAAS;AAC3C,QAAM,QAAQ,oBAAoB,OAAS;AAE3C,QAAM,eAAe,SAAS,KAAK,SAAS;AAC5C,QAAM,iBAAiB,oBAAoB;AAC3C,QAAM,IAAwB;AAAA,IAC5B,cAAc,OAAO,aAAa,aAAa,KAAK,CAAC;AAAA,IACrD;AAAA,IACA,kBAAkB,OAAO,aAAa,aAAa,KAAK,IAAI,IAAI,CAAC;AAAA,IACjE,aAAa,OAAO,aAAa,aAAa,KAAK,IAAI,EAAE;AAAA,IACzD;AAAA,IACA;AAAA,EACF;AAEA,MAAI,QAAQ,KAAK,IAAI;AAErB,IAAE,QAAQ,OAAO,aAAa,cAAc,OAAO,CAAC;AACpD,WAAS;AACT,IAAE,SAAS,OAAO,aAAa,cAAc,OAAO,CAAC;AACrD,WAAS;AAET,QAAM,SAAS,OAAO,aAAa,cAAc,OAAO,CAAC;AACzD,WAAS;AACT,IAAE,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC;AACzC,IAAE,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC;AAEzC,WAAS;AAET,MAAI,YAAY,IAAI;AAClB,MAAE,cAAc,OAAO,OAAO,aAAa,gBAAgB,KAAK,CAAC;AAAA,EACnE;AAEA,QAAM,oBAAoB,oBAAI,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC;AACrD,IAAE,WAAW,kBAAkB,IAAI,cAAc;AAEjD,SAAO;AACT;AAKA,IAAM,YAAN,MAAgB;AAAA,EACd;AAAA,EACA,aAAqB;AAAA,EACrB,SAA2B;AAAA,EAE3B,YAAY,aAA0B;AACpC,SAAK,cAAc;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO;AAEL,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,YAAY;AACV,SAAK,SAAS,eAAe,KAAK,WAAW;AAC7C,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAS,OAAwB;AAC/B,UAAM,EAAC,QAAQ,YAAW,IAAI;AAC9B,QAAI,CAAC,QAAQ;AACX,YAAM,IAAI,MAAM,2DAA2D;AAAA,IAC7E;AAEA,QAAI,EAAC,WAAU,IAAI;AACnB,YAAQ,KAAK,IAAI,OAAO,OAAO,cAAc,UAAU;AACvD,UAAM,QAAQ,OAAO,eAAe,aAAa,OAAO;AACxD,UAAM,MAAM,QAAQ,QAAQ,OAAO;AACnC,kBAAc;AACd,SAAK,aAAa;AAElB,WAAO;AAAA,MACL,QAAQ,YAAY,MAAM,OAAO,GAAG;AAAA,MACpC;AAAA,MACA,aAAa,aAAa,OAAO;AAAA,IACnC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,QAAQ;AAEN,SAAK,cAAc;AACnB,WAAO;AAAA,EACT;AACF;AAMA,IAAM,YAAN,MAAgB;AAAA,EACd;AAAA,EACA,aAAqB;AAAA,EACrB,WAA0C;AAAA,EAC1C,SAA2B;AAAA,EAE3B,YAAY,aAA0B;AACpC,SAAK,cAAc;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAgB;AACd,QAAI;AACF,YAAM,QAAQ,IAAI,WAAW,KAAK,WAAW;AAC7C,WAAK,WAAW,IAAI,uBAAuB,KAAK;AAEhD,aAAO;AAAA,IACT,SAAS,OAAO;AACd,YAAM,IAAI,MAAM,wBAAyB,MAAgB,OAAO,EAAE;AAAA,IACpE;AAAA,EACF;AAAA,EAEA,YAAuB;AACrB,QAAI;AACF,WAAK,SAAS,eAAe,KAAK,WAAW;AAC7C,aAAO,KAAK;AAAA,IACd,SAAS,OAAO;AACd,YAAM,IAAI,MAAM,yBAA0B,MAAgB,OAAO,EAAE;AAAA,IACrE;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,SAAS,OAAwB;AAC/B,QAAI,CAAC,KAAK,UAAU;AAClB,YAAM,IAAI,MAAM,uDAAuD;AAAA,IACzE;AAEA,UAAM,EAAC,QAAQ,SAAQ,IAAI;AAE3B,QAAI,CAAC,QAAQ;AACX,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAEA,QAAI;AACF,YAAM,eAAe,KAAK,IAAI,OAAO,OAAO,cAAc,KAAK,UAAU;AACzE,YAAM,MAAM,IAAI,WAAW,eAAe,OAAO,gBAAgB;AAEjE,YAAM,UAAU,IAAI,WAAW,OAAO,gBAAgB;AACtD,eAAS,IAAI,GAAG,IAAI,cAAc,KAAK;AACrC,iBAAS,gBAAgB,OAAO;AAChC,YAAI,IAAI,SAAS,IAAI,OAAO,gBAAgB;AAC5C,aAAK;AAAA,MACP;AACA,aAAO;AAAA,QACL,QAAQ,IAAI;AAAA,QACZ,OAAO;AAAA,QACP,aAAa,KAAK,aAAa,OAAO;AAAA,MACxC;AAAA,IACF,SAAS,OAAO;AACd,YAAM,IAAI,MAAM,wBAAyB,MAAgB,OAAO,EAAE;AAAA,IACpE;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,QAAiB;AACf,QAAI;AACF,UAAI,KAAK,aAAa,MAAM;AAC1B,aAAK,SAAS,KAAK;AACnB,aAAK,WAAW;AAAA,MAClB;AAEA,WAAK,cAAc;AACnB,aAAO;AAAA,IACT,SAAS,OAAO;AACd,YAAM,IAAI,MAAM,yBAA0B,MAAgB,OAAO,EAAE;AAAA,IACrE;AAAA,EACF;AACF;AAKA,IAAM,aAAN,MAAiB;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA,YAAY,QAAqB,KAAa,QAAmB;AAC/D,SAAK,SAAS;AACd,SAAK,UAAU,qBAAqB,OAAO,cAAc;AACzD,SAAK,cAAc;AACnB,SAAK,YAAY,OAAO;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAS,OAAyB;AAChC,QAAI,QAAQ,KAAK,SAAS,KAAK,aAAa;AAC1C,YAAM,IAAI,MAAM,0BAA0B;AAAA,IAC5C;AAEA,UAAM,KAAK,IAAI,SAAS,KAAK,QAAQ,QAAQ,KAAK,WAAW,KAAK,SAAS;AAC3E,WAAO,KAAK,QAAQ,EAAE;AAAA,EACxB;AACF;AAKO,IAAM,UAAN,MAAc;AAAA,EACnB;AAAA,EACA,WAAmB;AAAA,EACnB;AAAA,EACA,eAAwB;AAAA,EACxB,SAAkB;AAAA,EAClB,UAAkB;AAAA,EAClB,kBAA0B;AAAA,EAE1B,YAAY,aAA0B;AACpC,SAAK,cAAc;AAEnB,SAAK,SAAS;AAEd,SAAK,SAAS,KAAK,eACf,IAAI,UAAU,KAAK,WAAW,IAC9B,IAAI,UAAU,KAAK,WAAW;AAAA,EACpC;AAAA,EAEA,WAAiB;AACf,UAAM,YAAY,OAAO,KAAK,aAAa,YAAY,GAAG,CAAC;AAC3D,UAAM,QAAQ,OAAO,aAAa,GAAG,SAAS;AAC9C,QAAI,UAAU,QAAQ;AACpB,YAAM,IAAI,MAAM,kBAAkB;AAAA,IACpC;AAEA,QAAI,KAAK,iBAAiB,IAAI,IAAI;AAChC,YAAM,IAAI,MAAM,yCAAyC;AAAA,IAC3D;AAEA,SAAK,gBAAgB;AACrB,QAAI,qBAAqB,KAAK,QAAQ,MAAM,QAAW;AACrD,YAAM,IAAI,MAAM,sCAAsC;AAAA,IACxD;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,kBAAwB;AACtB,UAAM,WAAW,OAAO,KAAK,aAAa,YAAY,KAAK,IAAI,CAAC;AAChE,UAAM,QAAQ,WAAW,QAAS;AAClC,UAAM,QAAQ,WAAW,OAAS;AAElC,QAAI,SAAS,KAAK,SAAS,GAAG;AAC5B,YAAM,IAAI,MAAM,qCAAqC;AAAA,IACvD;AAEA,SAAK,WAAW,WAAW;AAC3B,SAAK,eAAe,SAAS,KAAK,SAAS;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,mBAA2B;AACzB,UAAM,MAAM,IAAI,WAAW,KAAK,aAAa,IAAI,CAAC;AAClD,SAAK,UAAU,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;AAClC,SAAK,kBAAkB,GAAG,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;AAC1C,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAa;AACX,QAAI,KAAK,OAAO,KAAK,GAAG;AACtB,WAAK,SAAS;AAAA,IAChB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,YAAuB;AACrB,WAAO,KAAK,OAAO,UAAU;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,SAAS,OAAwB;AAC/B,WAAO,KAAK,OAAO,SAAS,KAAK;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA,EAKA,QAAc;AACZ,QAAI,KAAK,OAAO,MAAM,GAAG;AACvB,WAAK,SAAS;AAAA,IAChB;AAAA,EACF;AAAA;AAAA;AAAA,EAGA,cAAiC;AAC/B,WAAO;AAAA,EACT;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,129 @@
1
+ import type { LASHeader } from "../las-types.js";
2
+ import { WasmLasZipDecompressor } from "../../libs/laz-rs-wasm/laz_rs_wasm.js";
3
+ type LASPoint = {
4
+ position: [number, number, number];
5
+ intensity: number;
6
+ classification: number;
7
+ color?: [number, number, number];
8
+ };
9
+ type LASData = {
10
+ buffer: ArrayBuffer;
11
+ count: number;
12
+ hasMoreData: boolean;
13
+ };
14
+ declare class LASLoader {
15
+ arraybuffer: ArrayBuffer;
16
+ readOffset: number;
17
+ header: LASHeader | null;
18
+ constructor(arraybuffer: ArrayBuffer);
19
+ /**
20
+ * @returns boolean
21
+ */
22
+ open(): boolean;
23
+ /**
24
+ * Parsing of incoming binary
25
+ * @returns LASHeader
26
+ */
27
+ getHeader(): LASHeader;
28
+ /**
29
+ * Reading data
30
+ * @param count
31
+ * @returns LasData
32
+ */
33
+ readData(count: number): LASData;
34
+ /**
35
+ * Method which brings data to null to close the file
36
+ * @returns
37
+ */
38
+ close(): boolean;
39
+ }
40
+ /**
41
+ * LAZ Loader
42
+ * Uses NaCL module to load LAZ files
43
+ */
44
+ declare class LAZLoader {
45
+ arraybuffer: ArrayBuffer;
46
+ readOffset: number;
47
+ instance: WasmLasZipDecompressor | null;
48
+ header: LASHeader | null;
49
+ constructor(arraybuffer: ArrayBuffer);
50
+ /**
51
+ * Opens the file
52
+ * @returns boolean
53
+ */
54
+ open(): boolean;
55
+ getHeader(): LASHeader;
56
+ /**
57
+ * @param count
58
+ * @returns LASData
59
+ */
60
+ readData(count: number): LASData;
61
+ /**
62
+ * Deletes the instance
63
+ * @returns boolean
64
+ */
65
+ close(): boolean;
66
+ }
67
+ /**
68
+ * Helper class: Decodes LAS records into points
69
+ */
70
+ declare class LASDecoder {
71
+ arrayb: ArrayBuffer;
72
+ decoder: (dv: DataView) => LASPoint;
73
+ pointsCount: number;
74
+ pointSize: number;
75
+ constructor(buffer: ArrayBuffer, len: number, header: LASHeader);
76
+ /**
77
+ * Decodes data depends on this point size
78
+ * @param index
79
+ * @returns New object
80
+ */
81
+ getPoint(index: number): LASPoint;
82
+ }
83
+ /**
84
+ * A single consistent interface for loading LAS/LAZ files
85
+ */
86
+ export declare class LASFile {
87
+ arraybuffer: ArrayBuffer;
88
+ formatId: number;
89
+ loader: LASLoader | LAZLoader;
90
+ isCompressed: boolean;
91
+ isOpen: boolean;
92
+ version: number;
93
+ versionAsString: string;
94
+ constructor(arraybuffer: ArrayBuffer);
95
+ validate(): void;
96
+ /**
97
+ * Determines format in parameters of LASHeader
98
+ */
99
+ determineFormat(): void;
100
+ /**
101
+ * Determines version
102
+ * @returns version
103
+ */
104
+ determineVersion(): number;
105
+ /**
106
+ * Reads if the file is open
107
+ * @returns boolean
108
+ */
109
+ open(): void;
110
+ /**
111
+ * Gets the header
112
+ * @returns Header
113
+ */
114
+ getHeader(): LASHeader;
115
+ /**
116
+ * @param count
117
+ * @returns LASData
118
+ */
119
+ readData(count: number): LASData;
120
+ /**
121
+ * Closes the file
122
+ */
123
+ close(): void;
124
+ /**
125
+ */
126
+ getUnpacker(): typeof LASDecoder;
127
+ }
128
+ export {};
129
+ //# sourceMappingURL=laslaz-decoder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"laslaz-decoder.d.ts","sourceRoot":"","sources":["../../../../src/las/lib/laz-rs-wasm/laslaz-decoder.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAC,SAAS,EAAC,wBAAqB;AAC5C,OAAO,EAAC,sBAAsB,EAAC,8CAA2C;AAE1E,KAAK,QAAQ,GAAG;IACd,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC,CAAC;AAQF,KAAK,OAAO,GAAG;IACb,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AAqKF,cAAM,SAAS;IACb,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,MAAM,CAAK;IACvB,MAAM,EAAE,SAAS,GAAG,IAAI,CAAQ;gBAEpB,WAAW,EAAE,WAAW;IAIpC;;OAEG;IACH,IAAI;IAIJ;;;OAGG;IACH,SAAS;IAKT;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAmBhC;;;OAGG;IACH,KAAK;CAKN;AAED;;;GAGG;AACH,cAAM,SAAS;IACb,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,MAAM,CAAK;IACvB,QAAQ,EAAE,sBAAsB,GAAG,IAAI,CAAQ;IAC/C,MAAM,EAAE,SAAS,GAAG,IAAI,CAAQ;gBAEpB,WAAW,EAAE,WAAW;IAIpC;;;OAGG;IACH,IAAI,IAAI,OAAO;IAWf,SAAS,IAAI,SAAS;IAStB;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAiChC;;;OAGG;IACH,KAAK,IAAI,OAAO;CAajB;AAED;;GAEG;AACH,cAAM,UAAU;IACd,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,QAAQ,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;gBAEN,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS;IAO/D;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ;CAQlC;AAED;;GAEG;AACH,qBAAa,OAAO;IAClB,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAK;IACrB,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;IAC9B,YAAY,EAAE,OAAO,CAAQ;IAC7B,MAAM,EAAE,OAAO,CAAS;IACxB,OAAO,EAAE,MAAM,CAAK;IACpB,eAAe,EAAE,MAAM,CAAM;gBAEjB,WAAW,EAAE,WAAW;IAUpC,QAAQ,IAAI,IAAI;IAiBhB;;OAEG;IACH,eAAe,IAAI,IAAI;IAavB;;;OAGG;IACH,gBAAgB,IAAI,MAAM;IAO1B;;;OAGG;IACH,IAAI,IAAI,IAAI;IAKZ;;;OAGG;IACH,SAAS,IAAI,SAAS;IAItB;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAIhC;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;OACG;IACH,WAAW,IAAI,OAAO,UAAU;CAGjC"}
@@ -0,0 +1,414 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { WasmLasZipDecompressor } from "../../libs/laz-rs-wasm/laz_rs_wasm.js";
5
+ const POINT_FORMAT_READERS = {
6
+ 0: dv => {
7
+ return {
8
+ position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],
9
+ intensity: dv.getUint16(12, true),
10
+ classification: dv.getUint8(15)
11
+ };
12
+ },
13
+ 1: dv => {
14
+ return {
15
+ position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],
16
+ intensity: dv.getUint16(12, true),
17
+ classification: dv.getUint8(15)
18
+ };
19
+ },
20
+ 2: dv => {
21
+ return {
22
+ position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],
23
+ intensity: dv.getUint16(12, true),
24
+ classification: dv.getUint8(15),
25
+ color: [dv.getUint16(20, true), dv.getUint16(22, true), dv.getUint16(24, true)]
26
+ };
27
+ },
28
+ 3: dv => {
29
+ return {
30
+ position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],
31
+ intensity: dv.getUint16(12, true),
32
+ classification: dv.getUint8(15),
33
+ color: [dv.getUint16(28, true), dv.getUint16(30, true), dv.getUint16(32, true)]
34
+ };
35
+ },
36
+ 4: dv => {
37
+ return {
38
+ position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],
39
+ intensity: dv.getUint16(12, true),
40
+ classification: dv.getUint8(15)
41
+ };
42
+ },
43
+ 5: dv => {
44
+ return {
45
+ position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],
46
+ intensity: dv.getUint16(12, true),
47
+ classification: dv.getUint8(15),
48
+ color: [dv.getUint16(28, true), dv.getUint16(30, true), dv.getUint16(32, true)]
49
+ };
50
+ },
51
+ 6: dv => {
52
+ return {
53
+ position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],
54
+ intensity: dv.getUint16(12, true),
55
+ classification: dv.getUint8(16)
56
+ };
57
+ },
58
+ 7: dv => {
59
+ return {
60
+ position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],
61
+ intensity: dv.getUint16(12, true),
62
+ classification: dv.getUint8(16),
63
+ color: [dv.getUint16(30, true), dv.getUint16(32, true), dv.getUint16(34, true)]
64
+ };
65
+ },
66
+ 8: dv => {
67
+ return {
68
+ position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],
69
+ intensity: dv.getUint16(12, true),
70
+ classification: dv.getUint8(16),
71
+ color: [dv.getUint16(30, true), dv.getUint16(32, true), dv.getUint16(34, true)]
72
+ };
73
+ },
74
+ 9: dv => {
75
+ return {
76
+ position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],
77
+ intensity: dv.getUint16(12, true),
78
+ classification: dv.getUint8(16)
79
+ };
80
+ },
81
+ 10: dv => {
82
+ return {
83
+ position: [dv.getInt32(0, true), dv.getInt32(4, true), dv.getInt32(8, true)],
84
+ intensity: dv.getUint16(12, true),
85
+ classification: dv.getUint8(16),
86
+ color: [dv.getUint16(30, true), dv.getUint16(32, true), dv.getUint16(34, true)]
87
+ };
88
+ }
89
+ };
90
+ /**
91
+ * Reads incoming binary data depends on the Type parameter
92
+ * @param buf
93
+ * @param Type
94
+ * @param offset
95
+ * @param count
96
+ * @returns number | number[] from incoming binary data
97
+ */
98
+ function readAs(buf, Type = {}, offset, count) {
99
+ count = count === undefined || count === 0 ? 1 : count;
100
+ const sub = buf.slice(offset, offset + Type.BYTES_PER_ELEMENT * count);
101
+ const r = new Type(sub);
102
+ if (count === 1) {
103
+ return r[0];
104
+ }
105
+ const ret = [];
106
+ for (let i = 0; i < count; i++) {
107
+ ret.push(r[i]);
108
+ }
109
+ return ret;
110
+ }
111
+ /**
112
+ * Parsing of header's attributes
113
+ * @param arraybuffer
114
+ * @returns header as LASHeader
115
+ */
116
+ function parseLASHeader(arraybuffer) {
117
+ const ver = new Uint8Array(arraybuffer, 24, 2);
118
+ const version = ver[0] * 10 + ver[1];
119
+ const versionAsString = `${ver[0]}.${ver[1]}`;
120
+ const rawPointsFormatId = readAs(arraybuffer, Uint8Array, 32 * 3 + 8);
121
+ const bit7 = (rawPointsFormatId & 0x80) >> 7;
122
+ const bit6 = (rawPointsFormatId & 0x40) >> 6;
123
+ const isCompressed = bit7 === 1 || bit6 === 1;
124
+ const pointsFormatId = rawPointsFormatId & 0x3f;
125
+ const o = {
126
+ pointsOffset: readAs(arraybuffer, Uint32Array, 32 * 3),
127
+ pointsFormatId,
128
+ pointsStructSize: readAs(arraybuffer, Uint16Array, 32 * 3 + 8 + 1),
129
+ pointsCount: readAs(arraybuffer, Uint32Array, 32 * 3 + 11),
130
+ versionAsString,
131
+ isCompressed
132
+ };
133
+ let start = 32 * 3 + 35;
134
+ o.scale = readAs(arraybuffer, Float64Array, start, 3);
135
+ start += 24; // 8*3
136
+ o.offset = readAs(arraybuffer, Float64Array, start, 3);
137
+ start += 24;
138
+ const bounds = readAs(arraybuffer, Float64Array, start, 6);
139
+ start += 48; // 8*6
140
+ o.maxs = [bounds[0], bounds[2], bounds[4]];
141
+ o.mins = [bounds[1], bounds[3], bounds[5]];
142
+ start += 20; // 8*20
143
+ if (version === 14) {
144
+ o.pointsCount = Number(readAs(arraybuffer, BigUint64Array, start));
145
+ }
146
+ const colorPointFormats = new Set([2, 3, 5, 7, 8, 10]);
147
+ o.hasColor = colorPointFormats.has(pointsFormatId);
148
+ // @ts-expect-error Caused when restoring lazperf
149
+ return o;
150
+ }
151
+ // LAS Loader
152
+ // Loads uncompressed files
153
+ //
154
+ class LASLoader {
155
+ arraybuffer;
156
+ readOffset = 0;
157
+ header = null;
158
+ constructor(arraybuffer) {
159
+ this.arraybuffer = arraybuffer;
160
+ }
161
+ /**
162
+ * @returns boolean
163
+ */
164
+ open() {
165
+ // Nothing needs to be done to open this
166
+ return true;
167
+ }
168
+ /**
169
+ * Parsing of incoming binary
170
+ * @returns LASHeader
171
+ */
172
+ getHeader() {
173
+ this.header = parseLASHeader(this.arraybuffer);
174
+ return this.header;
175
+ }
176
+ /**
177
+ * Reading data
178
+ * @param count
179
+ * @returns LasData
180
+ */
181
+ readData(count) {
182
+ const { header, arraybuffer } = this;
183
+ if (!header) {
184
+ throw new Error('Cannot start reading data till a header request is issued');
185
+ }
186
+ let { readOffset } = this;
187
+ count = Math.min(count, header.pointsCount - readOffset);
188
+ const start = header.pointsOffset + readOffset * header.pointsStructSize;
189
+ const end = start + count * header.pointsStructSize;
190
+ readOffset += count;
191
+ this.readOffset = readOffset;
192
+ return {
193
+ buffer: arraybuffer.slice(start, end),
194
+ count,
195
+ hasMoreData: readOffset < header.pointsCount
196
+ };
197
+ }
198
+ /**
199
+ * Method which brings data to null to close the file
200
+ * @returns
201
+ */
202
+ close() {
203
+ // @ts-ignore Possibly null
204
+ this.arraybuffer = null;
205
+ return true;
206
+ }
207
+ }
208
+ /**
209
+ * LAZ Loader
210
+ * Uses NaCL module to load LAZ files
211
+ */
212
+ class LAZLoader {
213
+ arraybuffer;
214
+ readOffset = 0;
215
+ instance = null;
216
+ header = null;
217
+ constructor(arraybuffer) {
218
+ this.arraybuffer = arraybuffer;
219
+ }
220
+ /**
221
+ * Opens the file
222
+ * @returns boolean
223
+ */
224
+ open() {
225
+ try {
226
+ const abInt = new Uint8Array(this.arraybuffer);
227
+ this.instance = new WasmLasZipDecompressor(abInt);
228
+ return true;
229
+ }
230
+ catch (error) {
231
+ throw new Error(`Failed to open file: ${error.message}`);
232
+ }
233
+ }
234
+ getHeader() {
235
+ try {
236
+ this.header = parseLASHeader(this.arraybuffer);
237
+ return this.header;
238
+ }
239
+ catch (error) {
240
+ throw new Error(`Failed to get header: ${error.message}`);
241
+ }
242
+ }
243
+ /**
244
+ * @param count
245
+ * @returns LASData
246
+ */
247
+ readData(count) {
248
+ if (!this.instance) {
249
+ throw new Error('You need to open the file before trying to read stuff');
250
+ }
251
+ const { header, instance } = this;
252
+ if (!header) {
253
+ throw new Error('You need to query header before reading, I maintain state that way, sorry :(');
254
+ }
255
+ try {
256
+ const pointsToRead = Math.min(count, header.pointsCount - this.readOffset);
257
+ const buf = new Uint8Array(pointsToRead * header.pointsStructSize);
258
+ const bufRead = new Uint8Array(header.pointsStructSize);
259
+ for (let i = 0; i < pointsToRead; i++) {
260
+ instance.decompress_many(bufRead);
261
+ buf.set(bufRead, i * header.pointsStructSize);
262
+ this.readOffset++;
263
+ }
264
+ return {
265
+ buffer: buf.buffer,
266
+ count: pointsToRead,
267
+ hasMoreData: this.readOffset < header.pointsCount
268
+ };
269
+ }
270
+ catch (error) {
271
+ throw new Error(`Failed to read data: ${error.message}`);
272
+ }
273
+ }
274
+ /**
275
+ * Deletes the instance
276
+ * @returns boolean
277
+ */
278
+ close() {
279
+ try {
280
+ if (this.instance !== null) {
281
+ this.instance.free();
282
+ this.instance = null;
283
+ }
284
+ // @ts-ignore Possibly null
285
+ this.arraybuffer = null;
286
+ return true;
287
+ }
288
+ catch (error) {
289
+ throw new Error(`Failed to close file: ${error.message}`);
290
+ }
291
+ }
292
+ }
293
+ /**
294
+ * Helper class: Decodes LAS records into points
295
+ */
296
+ class LASDecoder {
297
+ arrayb;
298
+ decoder;
299
+ pointsCount;
300
+ pointSize;
301
+ constructor(buffer, len, header) {
302
+ this.arrayb = buffer;
303
+ this.decoder = POINT_FORMAT_READERS[header.pointsFormatId];
304
+ this.pointsCount = len;
305
+ this.pointSize = header.pointsStructSize;
306
+ }
307
+ /**
308
+ * Decodes data depends on this point size
309
+ * @param index
310
+ * @returns New object
311
+ */
312
+ getPoint(index) {
313
+ if (index < 0 || index >= this.pointsCount) {
314
+ throw new Error('Point index out of range');
315
+ }
316
+ const dv = new DataView(this.arrayb, index * this.pointSize, this.pointSize);
317
+ return this.decoder(dv);
318
+ }
319
+ }
320
+ /**
321
+ * A single consistent interface for loading LAS/LAZ files
322
+ */
323
+ export class LASFile {
324
+ arraybuffer;
325
+ formatId = 0;
326
+ loader;
327
+ isCompressed = true;
328
+ isOpen = false;
329
+ version = 0;
330
+ versionAsString = '';
331
+ constructor(arraybuffer) {
332
+ this.arraybuffer = arraybuffer;
333
+ this.validate();
334
+ this.loader = this.isCompressed
335
+ ? new LAZLoader(this.arraybuffer)
336
+ : new LASLoader(this.arraybuffer);
337
+ }
338
+ validate() {
339
+ const signature = readAs(this.arraybuffer, Uint8Array, 0, 4);
340
+ const check = String.fromCharCode(...signature);
341
+ if (check !== 'LASF') {
342
+ throw new Error('Invalid LAS file');
343
+ }
344
+ if (this.determineVersion() > 14) {
345
+ throw new Error('Only file versions <= 1.4 are supported');
346
+ }
347
+ this.determineFormat();
348
+ if (POINT_FORMAT_READERS[this.formatId] === undefined) {
349
+ throw new Error('The point format ID is not supported');
350
+ }
351
+ }
352
+ /**
353
+ * Determines format in parameters of LASHeader
354
+ */
355
+ determineFormat() {
356
+ const formatId = readAs(this.arraybuffer, Uint8Array, 32 * 3 + 8);
357
+ const bit7 = (formatId & 0x80) >> 7;
358
+ const bit6 = (formatId & 0x40) >> 6;
359
+ if (bit7 === 1 && bit6 === 1) {
360
+ throw new Error('Old style compression not supported');
361
+ }
362
+ this.formatId = formatId & 0x3f;
363
+ this.isCompressed = bit7 === 1 || bit6 === 1;
364
+ }
365
+ /**
366
+ * Determines version
367
+ * @returns version
368
+ */
369
+ determineVersion() {
370
+ const ver = new Uint8Array(this.arraybuffer, 24, 2);
371
+ this.version = ver[0] * 10 + ver[1];
372
+ this.versionAsString = `${ver[0]}.${ver[1]}`;
373
+ return this.version;
374
+ }
375
+ /**
376
+ * Reads if the file is open
377
+ * @returns boolean
378
+ */
379
+ open() {
380
+ if (this.loader.open()) {
381
+ this.isOpen = true;
382
+ }
383
+ }
384
+ /**
385
+ * Gets the header
386
+ * @returns Header
387
+ */
388
+ getHeader() {
389
+ return this.loader.getHeader();
390
+ }
391
+ /**
392
+ * @param count
393
+ * @returns LASData
394
+ */
395
+ readData(count) {
396
+ return this.loader.readData(count);
397
+ }
398
+ /**
399
+ * Closes the file
400
+ */
401
+ close() {
402
+ if (this.loader.close()) {
403
+ this.isOpen = false;
404
+ }
405
+ }
406
+ /**
407
+ */
408
+ getUnpacker() {
409
+ return LASDecoder;
410
+ }
411
+ }
412
+ /* eslint no-use-before-define: 2 */
413
+ // export const LASModuleWasLoaded = false;
414
+ //# sourceMappingURL=laslaz-decoder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"laslaz-decoder.js","sourceRoot":"","sources":["../../../../src/las/lib/laz-rs-wasm/laslaz-decoder.ts"],"names":[],"mappings":"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"}