@loaders.gl/scene 5.0.0-beta.1 → 5.0.0-beta.2

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 (437) hide show
  1. package/DRACO-README.md +15 -0
  2. package/README.md +7 -1
  3. package/THIRD-PARTY-NOTICES.md +4 -1
  4. package/dist/dist.dev.js +5708 -4937
  5. package/dist/dist.min.js +24 -24
  6. package/dist/draco/bundled.cjs +37 -0
  7. package/dist/draco/bundled.cjs.map +7 -0
  8. package/dist/draco/bundled.d.ts +6 -0
  9. package/dist/draco/bundled.d.ts.map +1 -0
  10. package/dist/draco/bundled.js +7 -0
  11. package/dist/draco/bundled.js.map +1 -0
  12. package/dist/draco/draco-format.cjs +41 -0
  13. package/dist/draco/draco-format.cjs.map +7 -0
  14. package/dist/draco/draco-format.d.ts +15 -0
  15. package/dist/draco/draco-format.d.ts.map +1 -0
  16. package/dist/draco/draco-format.js +18 -0
  17. package/dist/draco/draco-format.js.map +1 -0
  18. package/dist/draco/draco-javascript-loader-with-parser.cjs +44 -0
  19. package/dist/draco/draco-javascript-loader-with-parser.cjs.map +7 -0
  20. package/dist/draco/draco-javascript-loader-with-parser.d.ts +34 -0
  21. package/dist/draco/draco-javascript-loader-with-parser.d.ts.map +1 -0
  22. package/dist/draco/draco-javascript-loader-with-parser.js +14 -0
  23. package/dist/draco/draco-javascript-loader-with-parser.js.map +1 -0
  24. package/dist/draco/draco-libraries.cjs +61 -0
  25. package/dist/draco/draco-libraries.cjs.map +7 -0
  26. package/dist/draco/draco-libraries.d.ts +28 -0
  27. package/dist/draco/draco-libraries.d.ts.map +1 -0
  28. package/dist/draco/draco-libraries.js +33 -0
  29. package/dist/draco/draco-libraries.js.map +1 -0
  30. package/dist/draco/draco-library-options.cjs +80 -0
  31. package/dist/draco/draco-library-options.cjs.map +7 -0
  32. package/dist/draco/draco-library-options.d.ts +16 -0
  33. package/dist/draco/draco-library-options.d.ts.map +1 -0
  34. package/dist/draco/draco-library-options.js +52 -0
  35. package/dist/draco/draco-library-options.js.map +1 -0
  36. package/dist/draco/draco-loader-options.cjs +37 -0
  37. package/dist/draco/draco-loader-options.cjs.map +7 -0
  38. package/dist/draco/draco-loader-options.d.ts +27 -0
  39. package/dist/draco/draco-loader-options.d.ts.map +1 -0
  40. package/dist/draco/draco-loader-options.js +12 -0
  41. package/dist/draco/draco-loader-options.js.map +1 -0
  42. package/dist/draco/draco-loader-types.cjs +88 -0
  43. package/dist/draco/draco-loader-types.cjs.map +7 -0
  44. package/dist/draco/draco-loader-types.d.ts +69 -0
  45. package/dist/draco/draco-loader-types.d.ts.map +1 -0
  46. package/dist/draco/draco-loader-types.js +54 -0
  47. package/dist/draco/draco-loader-types.js.map +1 -0
  48. package/dist/draco/draco-loader.cjs +51 -0
  49. package/dist/draco/draco-loader.cjs.map +7 -0
  50. package/dist/draco/draco-loader.d.ts +39 -0
  51. package/dist/draco/draco-loader.d.ts.map +1 -0
  52. package/dist/draco/draco-loader.js +22 -0
  53. package/dist/draco/draco-loader.js.map +1 -0
  54. package/dist/draco/draco-wasm-loader-with-parser.cjs +48 -0
  55. package/dist/draco/draco-wasm-loader-with-parser.cjs.map +7 -0
  56. package/dist/draco/draco-wasm-loader-with-parser.d.ts +34 -0
  57. package/dist/draco/draco-wasm-loader-with-parser.d.ts.map +1 -0
  58. package/dist/draco/draco-wasm-loader-with-parser.js +14 -0
  59. package/dist/draco/draco-wasm-loader-with-parser.js.map +1 -0
  60. package/dist/draco/draco-writer.cjs +183 -0
  61. package/dist/draco/draco-writer.cjs.map +7 -0
  62. package/dist/draco/draco-writer.d.ts +97 -0
  63. package/dist/draco/draco-writer.d.ts.map +1 -0
  64. package/dist/draco/draco-writer.js +166 -0
  65. package/dist/draco/draco-writer.js.map +1 -0
  66. package/dist/draco/draco3d/draco3d-types.cjs +76 -0
  67. package/dist/draco/draco3d/draco3d-types.cjs.map +7 -0
  68. package/dist/draco/draco3d/draco3d-types.d.ts +303 -0
  69. package/dist/draco/draco3d/draco3d-types.d.ts.map +1 -0
  70. package/dist/draco/draco3d/draco3d-types.js +47 -0
  71. package/dist/draco/draco3d/draco3d-types.js.map +1 -0
  72. package/dist/draco/draco3d-loader-with-parser.cjs +50 -0
  73. package/dist/draco/draco3d-loader-with-parser.cjs.map +7 -0
  74. package/dist/draco/draco3d-loader-with-parser.d.ts +34 -0
  75. package/dist/draco/draco3d-loader-with-parser.d.ts.map +1 -0
  76. package/dist/draco/draco3d-loader-with-parser.js +21 -0
  77. package/dist/draco/draco3d-loader-with-parser.js.map +1 -0
  78. package/dist/draco/index.cjs +54 -0
  79. package/dist/draco/index.cjs.map +7 -0
  80. package/dist/draco/index.d.ts +13 -0
  81. package/dist/draco/index.d.ts.map +1 -0
  82. package/dist/draco/index.js +13 -0
  83. package/dist/draco/index.js.map +1 -0
  84. package/dist/draco/lib/draco-builder.cjs +660 -0
  85. package/dist/draco/lib/draco-builder.cjs.map +7 -0
  86. package/dist/draco/lib/draco-builder.d.ts +175 -0
  87. package/dist/draco/lib/draco-builder.d.ts.map +1 -0
  88. package/dist/draco/lib/draco-builder.js +612 -0
  89. package/dist/draco/lib/draco-builder.js.map +1 -0
  90. package/dist/draco/lib/draco-library-loader.cjs +47 -0
  91. package/dist/draco/lib/draco-library-loader.cjs.map +7 -0
  92. package/dist/draco/lib/draco-library-loader.d.ts +5 -0
  93. package/dist/draco/lib/draco-library-loader.d.ts.map +1 -0
  94. package/dist/draco/lib/draco-library-loader.js +23 -0
  95. package/dist/draco/lib/draco-library-loader.js.map +1 -0
  96. package/dist/draco/lib/draco-module-loader.cjs +281 -0
  97. package/dist/draco/lib/draco-module-loader.cjs.map +7 -0
  98. package/dist/draco/lib/draco-module-loader.d.ts +25 -0
  99. package/dist/draco/lib/draco-module-loader.d.ts.map +1 -0
  100. package/dist/draco/lib/draco-module-loader.js +220 -0
  101. package/dist/draco/lib/draco-module-loader.js.map +1 -0
  102. package/dist/draco/lib/draco-parser.cjs +598 -0
  103. package/dist/draco/lib/draco-parser.cjs.map +7 -0
  104. package/dist/draco/lib/draco-parser.d.ts +142 -0
  105. package/dist/draco/lib/draco-parser.d.ts.map +1 -0
  106. package/dist/draco/lib/draco-parser.js +595 -0
  107. package/dist/draco/lib/draco-parser.js.map +1 -0
  108. package/dist/draco/lib/draco-types.cjs +19 -0
  109. package/dist/draco/lib/draco-types.cjs.map +7 -0
  110. package/dist/draco/lib/draco-types.d.ts +59 -0
  111. package/dist/draco/lib/draco-types.d.ts.map +1 -0
  112. package/dist/draco/lib/draco-types.js +5 -0
  113. package/dist/draco/lib/draco-types.js.map +1 -0
  114. package/dist/draco/lib/parse-draco.cjs +59 -0
  115. package/dist/draco/lib/parse-draco.cjs.map +7 -0
  116. package/dist/draco/lib/parse-draco.d.ts +22 -0
  117. package/dist/draco/lib/parse-draco.d.ts.map +1 -0
  118. package/dist/draco/lib/parse-draco.js +32 -0
  119. package/dist/draco/lib/parse-draco.js.map +1 -0
  120. package/dist/draco/lib/utils/get-draco-schema.cjs +74 -0
  121. package/dist/draco/lib/utils/get-draco-schema.cjs.map +7 -0
  122. package/dist/draco/lib/utils/get-draco-schema.d.ts +7 -0
  123. package/dist/draco/lib/utils/get-draco-schema.d.ts.map +1 -0
  124. package/dist/draco/lib/utils/get-draco-schema.js +45 -0
  125. package/dist/draco/lib/utils/get-draco-schema.js.map +1 -0
  126. package/dist/draco/lib/utils/version.cjs +31 -0
  127. package/dist/draco/lib/utils/version.cjs.map +7 -0
  128. package/dist/draco/lib/utils/version.d.ts +2 -0
  129. package/dist/draco/lib/utils/version.d.ts.map +1 -0
  130. package/dist/draco/lib/utils/version.js +8 -0
  131. package/dist/draco/lib/utils/version.js.map +1 -0
  132. package/dist/draco/unbundled.cjs +33 -0
  133. package/dist/draco/unbundled.cjs.map +7 -0
  134. package/dist/draco/unbundled.d.ts +3 -0
  135. package/dist/draco/unbundled.d.ts.map +1 -0
  136. package/dist/draco/unbundled.js +5 -0
  137. package/dist/draco/unbundled.js.map +1 -0
  138. package/dist/draco/workers/draco-worker-node.cjs +8 -0
  139. package/dist/draco/workers/draco-worker-node.cjs.map +7 -0
  140. package/dist/draco/workers/draco-worker-node.d.ts +2 -0
  141. package/dist/draco/workers/draco-worker-node.d.ts.map +1 -0
  142. package/dist/draco/workers/draco-worker-node.js +9 -0
  143. package/dist/draco/workers/draco-worker-node.js.map +1 -0
  144. package/dist/draco/workers/draco-worker.cjs +7 -0
  145. package/dist/draco/workers/draco-worker.cjs.map +7 -0
  146. package/dist/draco/workers/draco-worker.d.ts +2 -0
  147. package/dist/draco/workers/draco-worker.d.ts.map +1 -0
  148. package/dist/draco/workers/draco-worker.js +7 -0
  149. package/dist/draco/workers/draco-worker.js.map +1 -0
  150. package/dist/draco/workers/draco-writer-worker-node.cjs +11 -0
  151. package/dist/draco/workers/draco-writer-worker-node.cjs.map +7 -0
  152. package/dist/draco/workers/draco-writer-worker-node.d.cts +2 -0
  153. package/dist/draco/workers/draco-writer-worker-node.d.cts.map +1 -0
  154. package/dist/draco/workers/draco-writer-worker-node.d.ts +2 -0
  155. package/dist/draco/workers/draco-writer-worker-node.d.ts.map +1 -0
  156. package/dist/draco/workers/draco-writer-worker-node.js +9 -0
  157. package/dist/draco/workers/draco-writer-worker-node.js.map +1 -0
  158. package/dist/draco/workers/draco-writer-worker.cjs +10 -0
  159. package/dist/draco/workers/draco-writer-worker.cjs.map +7 -0
  160. package/dist/draco/workers/draco-writer-worker.d.ts +2 -0
  161. package/dist/draco/workers/draco-writer-worker.d.ts.map +1 -0
  162. package/dist/draco/workers/draco-writer-worker.js +7 -0
  163. package/dist/draco/workers/draco-writer-worker.js.map +1 -0
  164. package/dist/draco-javascript-loader.cjs +25 -0
  165. package/dist/draco-javascript-loader.cjs.map +7 -0
  166. package/dist/draco-javascript-loader.d.ts +2 -0
  167. package/dist/draco-javascript-loader.d.ts.map +1 -0
  168. package/dist/draco-javascript-loader.js +3 -0
  169. package/dist/draco-javascript-loader.js.map +1 -0
  170. package/dist/draco-library-options.cjs +36 -0
  171. package/dist/draco-library-options.cjs.map +7 -0
  172. package/dist/draco-library-options.d.ts +3 -0
  173. package/dist/draco-library-options.d.ts.map +1 -0
  174. package/dist/draco-library-options.js +4 -0
  175. package/dist/draco-library-options.js.map +1 -0
  176. package/dist/draco-loader-types.cjs +25 -0
  177. package/dist/draco-loader-types.cjs.map +7 -0
  178. package/dist/draco-loader-types.d.ts +2 -0
  179. package/dist/draco-loader-types.d.ts.map +1 -0
  180. package/dist/draco-loader-types.js +3 -0
  181. package/dist/draco-loader-types.js.map +1 -0
  182. package/dist/draco-loader.cjs +25 -0
  183. package/dist/draco-loader.cjs.map +7 -0
  184. package/dist/draco-loader.d.ts +2 -0
  185. package/dist/draco-loader.d.ts.map +1 -0
  186. package/dist/draco-loader.js +3 -0
  187. package/dist/draco-loader.js.map +1 -0
  188. package/dist/draco-wasm-loader.cjs +25 -0
  189. package/dist/draco-wasm-loader.cjs.map +7 -0
  190. package/dist/draco-wasm-loader.d.ts +2 -0
  191. package/dist/draco-wasm-loader.d.ts.map +1 -0
  192. package/dist/draco-wasm-loader.js +3 -0
  193. package/dist/draco-wasm-loader.js.map +1 -0
  194. package/dist/draco-worker-node.js +28279 -0
  195. package/dist/draco-worker-node.js.map +7 -0
  196. package/dist/draco-worker.js +18145 -0
  197. package/dist/draco-worker.js.map +7 -0
  198. package/dist/draco-writer-worker-node.cjs +27521 -0
  199. package/dist/draco-writer-worker-node.cjs.map +7 -0
  200. package/dist/draco-writer-worker.js +17339 -0
  201. package/dist/draco-writer-worker.js.map +7 -0
  202. package/dist/draco-writer.cjs +25 -0
  203. package/dist/draco-writer.cjs.map +7 -0
  204. package/dist/draco-writer.d.ts +2 -0
  205. package/dist/draco-writer.d.ts.map +1 -0
  206. package/dist/draco-writer.js +3 -0
  207. package/dist/draco-writer.js.map +1 -0
  208. package/dist/draco3d-loader.cjs +25 -0
  209. package/dist/draco3d-loader.cjs.map +7 -0
  210. package/dist/draco3d-loader.d.ts +2 -0
  211. package/dist/draco3d-loader.d.ts.map +1 -0
  212. package/dist/draco3d-loader.js +3 -0
  213. package/dist/draco3d-loader.js.map +1 -0
  214. package/dist/glb-loader-types.cjs +61 -0
  215. package/dist/glb-loader-types.cjs.map +7 -0
  216. package/dist/glb-loader-types.d.ts +2 -0
  217. package/dist/glb-loader-types.d.ts.map +1 -0
  218. package/dist/glb-loader-types.js +2 -0
  219. package/dist/glb-loader-types.js.map +1 -0
  220. package/dist/glb-loader.cjs +48 -0
  221. package/dist/glb-loader.cjs.map +7 -0
  222. package/dist/glb-loader.d.ts +2 -0
  223. package/dist/glb-loader.d.ts.map +1 -0
  224. package/dist/glb-loader.js +2 -0
  225. package/dist/glb-loader.js.map +1 -0
  226. package/dist/glb-writer.cjs +53 -0
  227. package/dist/glb-writer.cjs.map +7 -0
  228. package/dist/glb-writer.d.ts +2 -0
  229. package/dist/glb-writer.d.ts.map +1 -0
  230. package/dist/glb-writer.js +2 -0
  231. package/dist/glb-writer.js.map +1 -0
  232. package/dist/gltf/glb-loader-types.cjs +1 -1
  233. package/dist/gltf/glb-loader-types.cjs.map +2 -2
  234. package/dist/gltf/glb-loader-types.d.ts +2 -2
  235. package/dist/gltf/glb-loader-types.js +1 -1
  236. package/dist/gltf/glb-loader-types.js.map +1 -1
  237. package/dist/gltf/gltf-loader-types.cjs +1 -1
  238. package/dist/gltf/gltf-loader-types.cjs.map +2 -2
  239. package/dist/gltf/gltf-loader-types.d.ts +5 -5
  240. package/dist/gltf/gltf-loader-types.d.ts.map +1 -1
  241. package/dist/gltf/gltf-loader-types.js +1 -1
  242. package/dist/gltf/gltf-loader-types.js.map +1 -1
  243. package/dist/gltf/gltf-loader.cjs.map +1 -1
  244. package/dist/gltf/gltf-loader.d.ts +4 -4
  245. package/dist/gltf/gltf-loader.d.ts.map +1 -1
  246. package/dist/gltf/lib/encoders/encode-gltf-draco.cjs +12 -2
  247. package/dist/gltf/lib/encoders/encode-gltf-draco.cjs.map +2 -2
  248. package/dist/gltf/lib/encoders/encode-gltf-draco.d.ts +1 -1
  249. package/dist/gltf/lib/encoders/encode-gltf-draco.d.ts.map +1 -1
  250. package/dist/gltf/lib/encoders/encode-gltf-draco.js +1 -1
  251. package/dist/gltf/lib/encoders/encode-gltf-draco.js.map +1 -1
  252. package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.cjs +2 -2
  253. package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.cjs.map +2 -2
  254. package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.d.ts.map +1 -1
  255. package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.js +1 -1
  256. package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.js.map +1 -1
  257. package/dist/gltf/lib/parsers/parse-gltf.cjs +2 -2
  258. package/dist/gltf/lib/parsers/parse-gltf.cjs.map +3 -3
  259. package/dist/gltf/lib/parsers/parse-gltf.js +5 -5
  260. package/dist/gltf/lib/parsers/parse-gltf.js.map +1 -1
  261. package/dist/gltf/lib/types/gltf-zod-schema.d.ts +1 -1
  262. package/dist/gltf/lib/utils/version.cjs +1 -1
  263. package/dist/gltf/lib/utils/version.js +1 -1
  264. package/dist/gltf-loader-types.cjs +73 -0
  265. package/dist/gltf-loader-types.cjs.map +7 -0
  266. package/dist/gltf-loader-types.d.ts +2 -0
  267. package/dist/gltf-loader-types.d.ts.map +1 -0
  268. package/dist/gltf-loader-types.js +2 -0
  269. package/dist/gltf-loader-types.js.map +1 -0
  270. package/dist/gltf-loader.cjs +48 -0
  271. package/dist/gltf-loader.cjs.map +7 -0
  272. package/dist/gltf-loader.d.ts +2 -0
  273. package/dist/gltf-loader.d.ts.map +1 -0
  274. package/dist/gltf-loader.js +2 -0
  275. package/dist/gltf-loader.js.map +1 -0
  276. package/dist/gltf-source.cjs +238 -0
  277. package/dist/gltf-source.cjs.map +7 -0
  278. package/dist/gltf-source.d.ts +2 -0
  279. package/dist/gltf-source.d.ts.map +1 -0
  280. package/dist/gltf-source.js +2 -0
  281. package/dist/gltf-source.js.map +1 -0
  282. package/dist/gltf-writer.cjs +69 -0
  283. package/dist/gltf-writer.cjs.map +7 -0
  284. package/dist/gltf-writer.d.ts +2 -0
  285. package/dist/gltf-writer.d.ts.map +1 -0
  286. package/dist/gltf-writer.js +2 -0
  287. package/dist/gltf-writer.js.map +1 -0
  288. package/dist/index.cjs +13 -0
  289. package/dist/index.cjs.map +2 -2
  290. package/dist/index.d.ts +4 -0
  291. package/dist/index.d.ts.map +1 -1
  292. package/dist/index.js +3 -0
  293. package/dist/index.js.map +1 -1
  294. package/dist/libs/DRACO-LICENSE +252 -0
  295. package/dist/libs/README.md +20 -0
  296. package/dist/libs/draco_decoder.js +34 -0
  297. package/dist/libs/draco_decoder.mjs +37 -0
  298. package/dist/libs/draco_decoder.wasm +0 -0
  299. package/dist/libs/draco_decoder_gltf.wasm +0 -0
  300. package/dist/libs/draco_encoder.js +98 -0
  301. package/dist/libs/draco_encoder.mjs +101 -0
  302. package/dist/libs/draco_encoder.wasm +0 -0
  303. package/dist/libs/draco_wasm_wrapper.js +117 -0
  304. package/dist/libs/draco_wasm_wrapper.mjs +120 -0
  305. package/dist/libs/draco_wasm_wrapper_gltf.js +116 -0
  306. package/dist/libs/draco_wasm_wrapper_gltf.mjs +119 -0
  307. package/dist/mtl-loader-types.cjs +64 -0
  308. package/dist/mtl-loader-types.cjs.map +7 -0
  309. package/dist/mtl-loader-types.d.ts +2 -0
  310. package/dist/mtl-loader-types.d.ts.map +1 -0
  311. package/dist/mtl-loader-types.js +2 -0
  312. package/dist/mtl-loader-types.js.map +1 -0
  313. package/dist/mtl-loader.cjs +47 -0
  314. package/dist/mtl-loader.cjs.map +7 -0
  315. package/dist/mtl-loader.d.ts +2 -0
  316. package/dist/mtl-loader.d.ts.map +1 -0
  317. package/dist/mtl-loader.js +2 -0
  318. package/dist/mtl-loader.js.map +1 -0
  319. package/dist/obj/mtl-loader-types.cjs +2 -2
  320. package/dist/obj/mtl-loader-types.cjs.map +2 -2
  321. package/dist/obj/mtl-loader-types.d.ts +2 -2
  322. package/dist/obj/mtl-loader-types.js +2 -2
  323. package/dist/obj/mtl-loader-types.js.map +1 -1
  324. package/dist/obj/mtl-loader.cjs +1 -1
  325. package/dist/obj/mtl-loader.cjs.map +2 -2
  326. package/dist/obj/mtl-loader.js +1 -1
  327. package/dist/obj/mtl-loader.js.map +1 -1
  328. package/dist/obj/obj-loader-types.cjs +2 -2
  329. package/dist/obj/obj-loader-types.cjs.map +2 -2
  330. package/dist/obj/obj-loader-types.js +2 -2
  331. package/dist/obj/obj-loader-types.js.map +1 -1
  332. package/dist/obj/obj-writer.cjs +1 -1
  333. package/dist/obj/obj-writer.js +1 -1
  334. package/dist/obj-loader-types.cjs +71 -0
  335. package/dist/obj-loader-types.cjs.map +7 -0
  336. package/dist/obj-loader-types.d.ts +2 -0
  337. package/dist/obj-loader-types.d.ts.map +1 -0
  338. package/dist/obj-loader-types.js +2 -0
  339. package/dist/obj-loader-types.js.map +1 -0
  340. package/dist/obj-loader.cjs +163 -0
  341. package/dist/obj-loader.cjs.map +7 -0
  342. package/dist/obj-loader.d.ts +2 -0
  343. package/dist/obj-loader.d.ts.map +1 -0
  344. package/dist/obj-loader.js +2 -0
  345. package/dist/obj-loader.js.map +1 -0
  346. package/dist/obj-worker.js +204 -71
  347. package/dist/obj-writer.cjs +167 -0
  348. package/dist/obj-writer.cjs.map +7 -0
  349. package/dist/obj-writer.d.ts +2 -0
  350. package/dist/obj-writer.d.ts.map +1 -0
  351. package/dist/obj-writer.js +2 -0
  352. package/dist/obj-writer.js.map +1 -0
  353. package/dist/usd/usd-loader-types.cjs +2 -2
  354. package/dist/usd/usd-loader-types.cjs.map +2 -2
  355. package/dist/usd/usd-loader-types.js +2 -2
  356. package/dist/usd/usd-loader-types.js.map +1 -1
  357. package/dist/usd-loader-types.cjs +69 -0
  358. package/dist/usd-loader-types.cjs.map +7 -0
  359. package/dist/usd-loader-types.d.ts +2 -0
  360. package/dist/usd-loader-types.d.ts.map +1 -0
  361. package/dist/usd-loader-types.js +2 -0
  362. package/dist/usd-loader-types.js.map +1 -0
  363. package/dist/usd-loader.cjs +43 -0
  364. package/dist/usd-loader.cjs.map +7 -0
  365. package/dist/usd-loader.d.ts +2 -0
  366. package/dist/usd-loader.d.ts.map +1 -0
  367. package/dist/usd-loader.js +2 -0
  368. package/dist/usd-loader.js.map +1 -0
  369. package/package.json +130 -71
  370. package/src/draco/bundled.ts +10 -0
  371. package/src/draco/draco-format.ts +20 -0
  372. package/src/draco/draco-javascript-loader-with-parser.ts +26 -0
  373. package/src/draco/draco-libraries.ts +35 -0
  374. package/src/draco/draco-library-options.ts +76 -0
  375. package/src/draco/draco-loader-options.ts +33 -0
  376. package/src/draco/draco-loader-types.ts +78 -0
  377. package/src/draco/draco-loader.ts +45 -0
  378. package/src/draco/draco-wasm-loader-with-parser.ts +31 -0
  379. package/src/draco/draco-writer.ts +252 -0
  380. package/src/draco/draco3d/draco3d-types.ts +498 -0
  381. package/src/draco/draco3d-loader-with-parser.ts +34 -0
  382. package/src/draco/index.ts +46 -0
  383. package/src/draco/lib/draco-builder.ts +935 -0
  384. package/src/draco/lib/draco-library-loader.ts +38 -0
  385. package/src/draco/lib/draco-module-loader.ts +370 -0
  386. package/src/draco/lib/draco-parser.ts +776 -0
  387. package/src/draco/lib/draco-types.ts +72 -0
  388. package/src/draco/lib/parse-draco.ts +51 -0
  389. package/src/draco/lib/utils/get-draco-schema.ts +65 -0
  390. package/src/draco/lib/utils/version.ts +8 -0
  391. package/src/draco/libs/DRACO-LICENSE +252 -0
  392. package/src/draco/libs/README.md +20 -0
  393. package/src/draco/libs/draco_decoder.js +34 -0
  394. package/src/draco/libs/draco_decoder.wasm +0 -0
  395. package/src/draco/libs/draco_decoder_gltf.wasm +0 -0
  396. package/src/draco/libs/draco_encoder.js +98 -0
  397. package/src/draco/libs/draco_encoder.wasm +0 -0
  398. package/src/draco/libs/draco_wasm_wrapper.js +117 -0
  399. package/src/draco/libs/draco_wasm_wrapper_gltf.js +116 -0
  400. package/src/draco/unbundled.ts +6 -0
  401. package/src/draco/workers/draco-worker-node.ts +10 -0
  402. package/src/draco/workers/draco-worker.ts +8 -0
  403. package/src/draco/workers/draco-writer-worker-node.cjs +21 -0
  404. package/src/draco/workers/draco-writer-worker-node.ts +13 -0
  405. package/src/draco/workers/draco-writer-worker.ts +11 -0
  406. package/src/draco-javascript-loader.ts +2 -0
  407. package/src/draco-library-options.ts +6 -0
  408. package/src/draco-loader-types.ts +2 -0
  409. package/src/draco-loader.ts +2 -0
  410. package/src/draco-wasm-loader.ts +2 -0
  411. package/src/draco-writer.ts +2 -0
  412. package/src/draco3d-loader.ts +2 -0
  413. package/src/glb-loader-types.ts +1 -0
  414. package/src/glb-loader.ts +1 -0
  415. package/src/glb-writer.ts +1 -0
  416. package/src/gltf/glb-loader-types.ts +1 -1
  417. package/src/gltf/gltf-loader-types.ts +5 -5
  418. package/src/gltf/gltf-loader.ts +4 -4
  419. package/src/gltf/lib/encoders/encode-gltf-draco.ts +2 -2
  420. package/src/gltf/lib/extensions/KHR_draco_mesh_compression.ts +2 -1
  421. package/src/gltf/lib/parsers/parse-gltf.ts +5 -5
  422. package/src/gltf-loader-types.ts +1 -0
  423. package/src/gltf-loader.ts +1 -0
  424. package/src/gltf-source.ts +1 -0
  425. package/src/gltf-writer.ts +1 -0
  426. package/src/index.ts +5 -0
  427. package/src/mtl-loader-types.ts +1 -0
  428. package/src/mtl-loader.ts +1 -0
  429. package/src/obj/mtl-loader-types.ts +1 -1
  430. package/src/obj/mtl-loader.ts +1 -1
  431. package/src/obj/obj-loader-types.ts +1 -1
  432. package/src/obj-loader-types.ts +1 -0
  433. package/src/obj-loader.ts +1 -0
  434. package/src/obj-writer.ts +1 -0
  435. package/src/usd/usd-loader-types.ts +1 -1
  436. package/src/usd-loader-types.ts +1 -0
  437. package/src/usd-loader.ts +1 -0
@@ -15,29 +15,41 @@
15
15
  __defProp(target, name, { get: all[name], enumerable: true });
16
16
  };
17
17
 
18
- // ../core/src/worker-utils/lib/node/worker_threads-browser.ts
18
+ // ../../node_modules/@math.gl/core/dist/worker-utils/lib/node/worker_threads-browser.js
19
19
  var parentPort;
20
20
  var init_worker_threads_browser = __esm({
21
- "../core/src/worker-utils/lib/node/worker_threads-browser.ts"() {
22
- "use strict";
21
+ "../../node_modules/@math.gl/core/dist/worker-utils/lib/node/worker_threads-browser.js"() {
23
22
  parentPort = null;
24
23
  }
25
24
  });
26
25
 
27
- // ../core/src/worker-utils/lib/worker-utils/get-transfer-list.ts
26
+ // ../../node_modules/@math.gl/core/dist/worker-utils/lib/worker-utils/get-transfer-list.js
28
27
  function getTransferList(object, recursive = true, transfers) {
29
28
  const transfersSet = transfers || /* @__PURE__ */ new Set();
30
- if (!object) {
31
- } else if (isTransferable(object)) {
32
- transfersSet.add(object);
33
- } else if (isTransferable(object.buffer)) {
34
- transfersSet.add(object.buffer);
35
- } else if (ArrayBuffer.isView(object)) {
36
- } else if (recursive && typeof object === "object") {
37
- for (const key in object) {
38
- getTransferList(object[key], recursive, transfersSet);
29
+ const seen = /* @__PURE__ */ new Set();
30
+ function visit(value) {
31
+ if (!value || typeof value !== "object" || seen.has(value))
32
+ return;
33
+ seen.add(value);
34
+ if (isTransferable(value))
35
+ transfersSet.add(value);
36
+ else if (ArrayBuffer.isView(value)) {
37
+ if (isTransferable(value.buffer))
38
+ transfersSet.add(value.buffer);
39
+ } else if (recursive && value instanceof Map) {
40
+ for (const [key, item] of value) {
41
+ visit(key);
42
+ visit(item);
43
+ }
44
+ } else if (recursive && value instanceof Set) {
45
+ for (const item of value)
46
+ visit(item);
47
+ } else if (recursive) {
48
+ for (const key of Object.keys(value))
49
+ visit(value[key]);
39
50
  }
40
51
  }
52
+ visit(object);
41
53
  return transfers === void 0 ? Array.from(transfersSet) : [];
42
54
  }
43
55
  function isTransferable(object) {
@@ -59,12 +71,11 @@
59
71
  return false;
60
72
  }
61
73
  var init_get_transfer_list = __esm({
62
- "../core/src/worker-utils/lib/worker-utils/get-transfer-list.ts"() {
63
- "use strict";
74
+ "../../node_modules/@math.gl/core/dist/worker-utils/lib/worker-utils/get-transfer-list.js"() {
64
75
  }
65
76
  });
66
77
 
67
- // ../core/src/worker-utils/lib/worker-farm/worker-body.ts
78
+ // ../../node_modules/@math.gl/core/dist/worker-utils/lib/worker-farm/worker-body.js
68
79
  async function getParentPort() {
69
80
  return parentPort;
70
81
  }
@@ -77,15 +88,15 @@
77
88
  }
78
89
  var onMessageWrapperMap, WorkerBody;
79
90
  var init_worker_body = __esm({
80
- "../core/src/worker-utils/lib/worker-farm/worker-body.ts"() {
81
- "use strict";
91
+ "../../node_modules/@math.gl/core/dist/worker-utils/lib/worker-farm/worker-body.js"() {
82
92
  init_get_transfer_list();
83
93
  init_worker_threads_browser();
84
94
  onMessageWrapperMap = /* @__PURE__ */ new Map();
85
95
  WorkerBody = class {
86
96
  /** Check that we are actually in a worker thread */
87
97
  static async inWorkerThread() {
88
- return typeof self !== "undefined" || Boolean(await getParentPort());
98
+ const workerGlobalScope = globalThis.WorkerGlobalScope;
99
+ return typeof workerGlobalScope === "function" && globalThis instanceof workerGlobalScope || Boolean(await getParentPort());
89
100
  }
90
101
  /*
91
102
  * (type: WorkerMessageType, payload: WorkerMessagePayload) => any
@@ -158,15 +169,11 @@
158
169
  }
159
170
  });
160
171
 
161
- // ../core/src/worker-utils/lib/async-queue/async-queue.ts
172
+ // ../../node_modules/@math.gl/core/dist/worker-utils/lib/async-queue/async-queue.js
162
173
  var AsyncQueue;
163
174
  var init_async_queue = __esm({
164
- "../core/src/worker-utils/lib/async-queue/async-queue.ts"() {
165
- "use strict";
175
+ "../../node_modules/@math.gl/core/dist/worker-utils/lib/async-queue/async-queue.js"() {
166
176
  AsyncQueue = class {
167
- _values;
168
- _settlers;
169
- _closed;
170
177
  constructor() {
171
178
  this._values = [];
172
179
  this._settlers = [];
@@ -234,7 +241,51 @@
234
241
  }
235
242
  });
236
243
 
237
- // ../core/src/worker-utils/lib/worker-api/create-worker.ts
244
+ // ../../node_modules/@math.gl/core/dist/worker-utils/lib/worker-api/shared-state.js
245
+ var SharedWorkerState;
246
+ var init_shared_state = __esm({
247
+ "../../node_modules/@math.gl/core/dist/worker-utils/lib/worker-api/shared-state.js"() {
248
+ SharedWorkerState = class {
249
+ constructor(buffer) {
250
+ if (typeof SharedArrayBuffer === "undefined" || !(buffer instanceof SharedArrayBuffer) || buffer.byteLength !== 16)
251
+ throw new Error("Expected a 16-byte shared worker control buffer");
252
+ this.buffer = buffer;
253
+ this.values = new Int32Array(buffer);
254
+ }
255
+ get snapshot() {
256
+ return {
257
+ cancelled: Atomics.load(this.values, 0) !== 0,
258
+ completed: Atomics.load(this.values, 1),
259
+ total: Atomics.load(this.values, 2),
260
+ revision: Atomics.load(this.values, 3)
261
+ };
262
+ }
263
+ cancel() {
264
+ Atomics.store(this.values, 0, 1);
265
+ Atomics.add(this.values, 3, 1);
266
+ Atomics.notify(this.values, 0);
267
+ }
268
+ throwIfCancelled() {
269
+ if (Atomics.load(this.values, 0) !== 0) {
270
+ const error = new Error("Shared worker task was cancelled");
271
+ error.name = "AbortError";
272
+ throw error;
273
+ }
274
+ }
275
+ /** Integer counters for application-defined work; messages still carry phase names and units. */
276
+ setProgress(completed, total = -1) {
277
+ if (!Number.isInteger(completed) || completed < 0 || completed > 2147483647 || !Number.isInteger(total) || total < -1 || total > 2147483647) {
278
+ throw new RangeError("Shared progress requires nonnegative int32 counts (or total -1)");
279
+ }
280
+ Atomics.store(this.values, 1, completed);
281
+ Atomics.store(this.values, 2, total);
282
+ Atomics.add(this.values, 3, 1);
283
+ }
284
+ };
285
+ }
286
+ });
287
+
288
+ // ../../node_modules/@math.gl/core/dist/worker-utils/lib/worker-api/create-worker.js
238
289
  async function createWorker(process, processInBatches) {
239
290
  if (!await WorkerBody.inWorkerThread()) {
240
291
  return;
@@ -243,27 +294,56 @@
243
294
  process: processOnMainThread
244
295
  };
245
296
  WorkerBody.onmessage = async (type, payload) => {
297
+ if (type === "cancel") {
298
+ activeController?.abort();
299
+ activeInputBatches?.close();
300
+ activeOutputAcknowledgements?.close();
301
+ return;
302
+ }
303
+ const controller = type === "process" || type === "process-in-batches" ? new AbortController() : void 0;
304
+ if (controller)
305
+ activeController = controller;
306
+ const startedAt = performance.now();
246
307
  const reporter = type === "process" || type === "process-in-batches" ? createProgressReporter() : void 0;
247
- const jobContext = { ...context, reportProgress: reporter?.report };
308
+ let sharedState;
309
+ const throwIfAborted = () => {
310
+ controller?.signal.throwIfAborted();
311
+ sharedState?.throwIfCancelled();
312
+ };
313
+ const jobContext = {
314
+ ...context,
315
+ signal: controller?.signal,
316
+ sharedState,
317
+ throwIfAborted,
318
+ reportProgress: (progress) => {
319
+ if (!controller?.signal.aborted && !sharedState?.snapshot.cancelled)
320
+ reporter?.report(progress);
321
+ }
322
+ };
248
323
  try {
324
+ if (controller && payload.options?.["sharedState"]) {
325
+ sharedState = new SharedWorkerState(payload.options["sharedState"]);
326
+ jobContext.sharedState = sharedState;
327
+ }
249
328
  switch (type) {
250
329
  case "preload":
251
330
  WorkerBody.postMessage("done", {});
252
331
  break;
253
332
  case "process":
333
+ throwIfAborted();
254
334
  if (!process) {
255
335
  throw new Error("Worker does not support atomic processing");
256
336
  }
257
- const result = await process(
258
- payload.input,
259
- payload.options || {},
260
- jobContext,
261
- payload.context || {}
262
- );
337
+ const result = await process(payload.input, payload.options || {}, jobContext, payload.context || {});
338
+ throwIfAborted();
263
339
  reporter?.finish();
264
- WorkerBody.postMessage("done", { result });
340
+ await WorkerBody.postMessage("done", {
341
+ result,
342
+ executionMs: performance.now() - startedAt
343
+ });
265
344
  break;
266
345
  case "process-in-batches":
346
+ throwIfAborted();
267
347
  if (!processInBatches) {
268
348
  throw new Error("Worker does not support batched processing");
269
349
  }
@@ -272,18 +352,15 @@
272
352
  activeInputBatches = inputBatches;
273
353
  activeOutputAcknowledgements = outputAcknowledgements;
274
354
  try {
275
- const resultIterator = processInBatches(
276
- createDemandDrivenIterator(inputBatches),
277
- payload.options || {},
278
- jobContext,
279
- payload.context || {}
280
- );
355
+ const resultIterator = processInBatches(createDemandDrivenIterator(inputBatches), payload.options || {}, jobContext, payload.context || {});
281
356
  for await (const batch of resultIterator) {
357
+ throwIfAborted();
282
358
  await WorkerBody.postMessage("output-batch", { result: batch });
283
359
  await outputAcknowledgements.next();
284
360
  }
361
+ throwIfAborted();
285
362
  reporter?.finish();
286
- await WorkerBody.postMessage("done", {});
363
+ await WorkerBody.postMessage("done", { executionMs: performance.now() - startedAt });
287
364
  } finally {
288
365
  activeInputBatches = null;
289
366
  activeOutputAcknowledgements = null;
@@ -310,11 +387,18 @@
310
387
  default:
311
388
  }
312
389
  } catch (error) {
313
- reporter?.finish();
390
+ reporter?.finish(controller?.signal.aborted || sharedState?.snapshot.cancelled);
314
391
  const message = error instanceof Error ? error.message : "";
315
- WorkerBody.postMessage("error", { error: message });
392
+ await WorkerBody.postMessage("error", {
393
+ error: message,
394
+ errorName: error instanceof Error ? error.name : "Error"
395
+ });
396
+ } finally {
397
+ if (controller && activeController === controller)
398
+ activeController = null;
316
399
  }
317
400
  };
401
+ await WorkerBody.postMessage("ready", {});
318
402
  }
319
403
  async function* createDemandDrivenIterator(inputBatches) {
320
404
  while (true) {
@@ -327,27 +411,45 @@
327
411
  }
328
412
  }
329
413
  function processOnMainThread(arrayBuffer, options = {}, jobContext = {}) {
414
+ const signal = activeController?.signal;
415
+ signal?.throwIfAborted();
330
416
  return new Promise((resolve, reject) => {
331
417
  const id = requestId++;
332
- const onMessage = (type, payload2) => {
333
- if (payload2.id !== id) {
418
+ const cleanup = () => {
419
+ signal?.removeEventListener("abort", abort);
420
+ void WorkerBody.removeEventListener(onMessage);
421
+ };
422
+ const abort = () => {
423
+ cleanup();
424
+ reject(signal?.reason);
425
+ };
426
+ const onMessage = (type, payload) => {
427
+ if (payload.id !== id)
334
428
  return;
335
- }
336
- switch (type) {
337
- case "done":
338
- WorkerBody.removeEventListener(onMessage);
339
- resolve(payload2.result);
340
- break;
341
- case "error":
342
- WorkerBody.removeEventListener(onMessage);
343
- reject(payload2.error);
344
- break;
345
- default:
429
+ if (type === "done") {
430
+ cleanup();
431
+ resolve(payload.result);
432
+ } else if (type === "error") {
433
+ cleanup();
434
+ reject(payload.error);
346
435
  }
347
436
  };
348
- WorkerBody.addEventListener(onMessage);
349
- const payload = { id, input: arrayBuffer, options, context: jobContext };
350
- WorkerBody.postMessage("process", payload);
437
+ void WorkerBody.addEventListener(onMessage).then(async () => {
438
+ if (signal?.aborted) {
439
+ abort();
440
+ return;
441
+ }
442
+ signal?.addEventListener("abort", abort, { once: true });
443
+ await WorkerBody.postMessage("process", {
444
+ id,
445
+ input: arrayBuffer,
446
+ options,
447
+ context: jobContext
448
+ });
449
+ }).catch((error) => {
450
+ cleanup();
451
+ reject(error);
452
+ });
351
453
  });
352
454
  }
353
455
  function createProgressReporter() {
@@ -364,8 +466,10 @@
364
466
  return {
365
467
  /** Records progress while retaining phase transitions. */
366
468
  report(progress) {
367
- if (finished) return;
368
- if (pending && pending.phase !== progress.phase) flush();
469
+ if (finished)
470
+ return;
471
+ if (pending && pending.phase !== progress.phase)
472
+ flush();
369
473
  pending = { ...progress };
370
474
  if (!scheduled) {
371
475
  scheduled = true;
@@ -373,29 +477,58 @@
373
477
  }
374
478
  },
375
479
  /** Flushes final progress and suppresses reports from stale callbacks. */
376
- finish() {
480
+ finish(discard = false) {
481
+ if (discard)
482
+ pending = void 0;
377
483
  flush();
378
484
  finished = true;
379
485
  }
380
486
  };
381
487
  }
382
- var requestId, activeInputBatches, activeOutputAcknowledgements;
488
+ var requestId, activeController, activeInputBatches, activeOutputAcknowledgements;
383
489
  var init_create_worker = __esm({
384
- "../core/src/worker-utils/lib/worker-api/create-worker.ts"() {
385
- "use strict";
490
+ "../../node_modules/@math.gl/core/dist/worker-utils/lib/worker-api/create-worker.js"() {
491
+ init_shared_state();
386
492
  init_async_queue();
387
493
  init_worker_body();
388
494
  requestId = 0;
495
+ activeController = null;
389
496
  activeInputBatches = null;
390
497
  activeOutputAcknowledgements = null;
391
498
  }
392
499
  });
393
500
 
394
- // ../core/src/worker-utils/index.ts
501
+ // ../../node_modules/@math.gl/core/dist/worker-utils/index.js
502
+ var import_meta, path, moduleUrl;
395
503
  var init_worker_utils = __esm({
504
+ "../../node_modules/@math.gl/core/dist/worker-utils/index.js"() {
505
+ init_create_worker();
506
+ import_meta = {};
507
+ path = typeof __filename === "string" ? __filename.replace(/\\/g, "/") : "";
508
+ moduleUrl = path ? `file://${path.startsWith("/") ? "" : "/"}${encodeURI(path).replace(/#/g, "%23").replace(/\?/g, "%3F")}` : import_meta.url;
509
+ }
510
+ });
511
+
512
+ // ../../node_modules/@math.gl/core/dist/tasks/index.js
513
+ var init_tasks = __esm({
514
+ "../../node_modules/@math.gl/core/dist/tasks/index.js"() {
515
+ init_worker_utils();
516
+ }
517
+ });
518
+
519
+ // ../core/src/worker-utils/lib/worker-api/create-worker.ts
520
+ var init_create_worker2 = __esm({
521
+ "../core/src/worker-utils/lib/worker-api/create-worker.ts"() {
522
+ "use strict";
523
+ init_tasks();
524
+ }
525
+ });
526
+
527
+ // ../core/src/worker-utils/index.ts
528
+ var init_worker_utils2 = __esm({
396
529
  "../core/src/worker-utils/index.ts"() {
397
530
  "use strict";
398
- init_create_worker();
531
+ init_create_worker2();
399
532
  }
400
533
  });
401
534
 
@@ -539,7 +672,7 @@
539
672
  var init_create_loader_worker = __esm({
540
673
  "../core/src/loader-utils/lib/worker-loader-utils/create-loader-worker.ts"() {
541
674
  "use strict";
542
- init_worker_utils();
675
+ init_worker_utils2();
543
676
  }
544
677
  });
545
678
 
@@ -13444,8 +13577,8 @@ return true;`);
13444
13577
  });
13445
13578
 
13446
13579
  // ../../node_modules/apache-arrow/ipc/reader.mjs
13447
- function shouldAutoDestroy(self2, options) {
13448
- return options && typeof options["autoDestroy"] === "boolean" ? options["autoDestroy"] : self2["autoDestroy"];
13580
+ function shouldAutoDestroy(self, options) {
13581
+ return options && typeof options["autoDestroy"] === "boolean" ? options["autoDestroy"] : self["autoDestroy"];
13449
13582
  }
13450
13583
  function* readAllSync(source) {
13451
13584
  const reader = RecordBatchReader.from(source);
@@ -17423,7 +17556,7 @@ return true;`);
17423
17556
  "use strict";
17424
17557
  init_obj_format();
17425
17558
  init_arrow_transport();
17426
- VERSION = true ? "5.0.0-beta.1" : "latest";
17559
+ VERSION = true ? "5.0.0-beta.2" : "latest";
17427
17560
  OBJLoader = {
17428
17561
  ...OBJFormat,
17429
17562
  dataType: null,
@@ -0,0 +1,167 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/obj-writer.ts
21
+ var obj_writer_exports = {};
22
+ __export(obj_writer_exports, {
23
+ OBJWriter: () => OBJWriter
24
+ });
25
+ module.exports = __toCommonJS(obj_writer_exports);
26
+
27
+ // src/obj/obj-writer.ts
28
+ var import_schema_utils = require("@loaders.gl/core/schema-utils");
29
+ var import_obj_format = require("./obj-format.cjs");
30
+ var VERSION = true ? "5.0.0-beta.2" : "latest";
31
+ var OBJWriter = {
32
+ ...import_obj_format.OBJFormat,
33
+ dataType: null,
34
+ batchType: null,
35
+ version: VERSION,
36
+ options: {
37
+ obj: {}
38
+ },
39
+ text: true,
40
+ encode: async (data, options) => encodeOBJSync(data, options),
41
+ encodeSync: encodeOBJSync,
42
+ encodeTextSync: encodeOBJ
43
+ };
44
+ function encodeOBJSync(data, options) {
45
+ const text = encodeOBJ(data, options);
46
+ return new TextEncoder().encode(text).buffer;
47
+ }
48
+ function encodeOBJ(data, options) {
49
+ const mesh = (0, import_schema_utils.convertTableToMesh)(normalizeMeshArrowTable(data));
50
+ const positionAttribute = getRequiredAttribute(mesh, "POSITION");
51
+ const normalAttribute = mesh.attributes.NORMAL;
52
+ const textureCoordinateAttribute = mesh.attributes.TEXCOORD_0;
53
+ const colorAttribute = mesh.attributes.COLOR_0;
54
+ const vertexCount = positionAttribute.value.length / positionAttribute.size;
55
+ const lines = ["# loaders.gl OBJ"];
56
+ for (let vertexIndex = 0; vertexIndex < vertexCount; vertexIndex++) {
57
+ const vertex = [
58
+ getComponent(positionAttribute, vertexIndex, 0),
59
+ getComponent(positionAttribute, vertexIndex, 1),
60
+ getComponent(positionAttribute, vertexIndex, 2)
61
+ ];
62
+ if (colorAttribute) {
63
+ vertex.push(
64
+ getColorComponent(colorAttribute, vertexIndex, 0),
65
+ getColorComponent(colorAttribute, vertexIndex, 1),
66
+ getColorComponent(colorAttribute, vertexIndex, 2)
67
+ );
68
+ }
69
+ lines.push(`v ${vertex.join(" ")}`);
70
+ }
71
+ if (textureCoordinateAttribute) {
72
+ for (let vertexIndex = 0; vertexIndex < vertexCount; vertexIndex++) {
73
+ lines.push(
74
+ `vt ${getComponent(textureCoordinateAttribute, vertexIndex, 0)} ${getComponent(
75
+ textureCoordinateAttribute,
76
+ vertexIndex,
77
+ 1
78
+ )}`
79
+ );
80
+ }
81
+ }
82
+ if (normalAttribute) {
83
+ for (let vertexIndex = 0; vertexIndex < vertexCount; vertexIndex++) {
84
+ lines.push(
85
+ `vn ${getComponent(normalAttribute, vertexIndex, 0)} ${getComponent(
86
+ normalAttribute,
87
+ vertexIndex,
88
+ 1
89
+ )} ${getComponent(normalAttribute, vertexIndex, 2)}`
90
+ );
91
+ }
92
+ }
93
+ const triangleIndices = getTriangleIndices(mesh, vertexCount);
94
+ for (let triangleIndex = 0; triangleIndex < triangleIndices.length; triangleIndex += 3) {
95
+ const face = [
96
+ getFaceVertex(
97
+ triangleIndices[triangleIndex],
98
+ Boolean(textureCoordinateAttribute),
99
+ Boolean(normalAttribute)
100
+ ),
101
+ getFaceVertex(
102
+ triangleIndices[triangleIndex + 1],
103
+ Boolean(textureCoordinateAttribute),
104
+ Boolean(normalAttribute)
105
+ ),
106
+ getFaceVertex(
107
+ triangleIndices[triangleIndex + 2],
108
+ Boolean(textureCoordinateAttribute),
109
+ Boolean(normalAttribute)
110
+ )
111
+ ];
112
+ lines.push(`f ${face.join(" ")}`);
113
+ }
114
+ return `${lines.join("\n")}
115
+ `;
116
+ }
117
+ function normalizeMeshArrowTable(data) {
118
+ if ("shape" in data && data.shape === "arrow-table") {
119
+ return data;
120
+ }
121
+ return (0, import_schema_utils.convertMeshToTable)(data, "arrow-table");
122
+ }
123
+ function getRequiredAttribute(mesh, attributeName) {
124
+ const attribute = mesh.attributes[attributeName];
125
+ if (!attribute) {
126
+ throw new Error(`OBJWriter: ${attributeName} attribute is required`);
127
+ }
128
+ return attribute;
129
+ }
130
+ function getComponent(attribute, vertexIndex, componentIndex) {
131
+ return attribute.value[vertexIndex * attribute.size + componentIndex] || 0;
132
+ }
133
+ function getColorComponent(attribute, vertexIndex, componentIndex) {
134
+ const value = getComponent(attribute, vertexIndex, componentIndex);
135
+ return attribute.normalized || value > 1 ? value / 255 : value;
136
+ }
137
+ function getTriangleIndices(mesh, vertexCount) {
138
+ if (mesh.indices?.value?.length) {
139
+ return Array.from(mesh.indices.value);
140
+ }
141
+ if (mesh.mode !== 4 && mesh.topology !== "triangle-list") {
142
+ return [];
143
+ }
144
+ const triangleIndices = [];
145
+ for (let vertexIndex = 0; vertexIndex + 2 < vertexCount; vertexIndex += 3) {
146
+ triangleIndices.push(vertexIndex, vertexIndex + 1, vertexIndex + 2);
147
+ }
148
+ return triangleIndices;
149
+ }
150
+ function getFaceVertex(vertexIndex, hasTextureCoordinates, hasNormals) {
151
+ const faceIndex = vertexIndex + 1;
152
+ if (hasTextureCoordinates && hasNormals) {
153
+ return `${faceIndex}/${faceIndex}/${faceIndex}`;
154
+ }
155
+ if (hasTextureCoordinates) {
156
+ return `${faceIndex}/${faceIndex}`;
157
+ }
158
+ if (hasNormals) {
159
+ return `${faceIndex}//${faceIndex}`;
160
+ }
161
+ return String(faceIndex);
162
+ }
163
+ // Annotate the CommonJS export names for ESM import in node:
164
+ 0 && (module.exports = {
165
+ OBJWriter
166
+ });
167
+ //# sourceMappingURL=obj-writer.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/obj-writer.ts", "../src/obj/obj-writer.ts"],
4
+ "sourcesContent": ["export * from './obj/obj-writer.js';\n", "// 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 {OBJFormat} from './obj-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 `OBJWriter`. */\nexport type OBJWriterOptions = WriterOptions & {\n /** Reserved for future OBJ writer options. */\n obj?: Record<string, never>;\n};\n\n/**\n * Writer for the OBJ geometry format.\n */\nexport const OBJWriter = {\n ...OBJFormat,\n dataType: null as unknown as Mesh | MeshArrowTable,\n batchType: null as never,\n version: VERSION,\n options: {\n obj: {}\n },\n text: true,\n encode: async (data, options) => encodeOBJSync(data, options),\n encodeSync: encodeOBJSync,\n encodeTextSync: encodeOBJ\n} as const satisfies WriterWithEncoder<Mesh | MeshArrowTable, never, OBJWriterOptions>;\n\n/** Encode mesh category data as OBJ bytes. */\nfunction encodeOBJSync(data: Mesh | MeshArrowTable, options?: OBJWriterOptions): ArrayBuffer {\n const text = encodeOBJ(data, options);\n return new TextEncoder().encode(text).buffer;\n}\n\n/** Encode mesh category data as OBJ text. */\nfunction encodeOBJ(data: Mesh | MeshArrowTable, options?: OBJWriterOptions): string {\n const mesh = convertTableToMesh(normalizeMeshArrowTable(data));\n const positionAttribute = getRequiredAttribute(mesh, 'POSITION');\n const normalAttribute = mesh.attributes.NORMAL;\n const textureCoordinateAttribute = mesh.attributes.TEXCOORD_0;\n const colorAttribute = mesh.attributes.COLOR_0;\n const vertexCount = positionAttribute.value.length / positionAttribute.size;\n const lines: string[] = ['# loaders.gl OBJ'];\n\n for (let vertexIndex = 0; vertexIndex < vertexCount; vertexIndex++) {\n const vertex = [\n getComponent(positionAttribute, vertexIndex, 0),\n getComponent(positionAttribute, vertexIndex, 1),\n getComponent(positionAttribute, vertexIndex, 2)\n ];\n\n if (colorAttribute) {\n vertex.push(\n getColorComponent(colorAttribute, vertexIndex, 0),\n getColorComponent(colorAttribute, vertexIndex, 1),\n getColorComponent(colorAttribute, vertexIndex, 2)\n );\n }\n\n lines.push(`v ${vertex.join(' ')}`);\n }\n\n if (textureCoordinateAttribute) {\n for (let vertexIndex = 0; vertexIndex < vertexCount; vertexIndex++) {\n lines.push(\n `vt ${getComponent(textureCoordinateAttribute, vertexIndex, 0)} ${getComponent(\n textureCoordinateAttribute,\n vertexIndex,\n 1\n )}`\n );\n }\n }\n\n if (normalAttribute) {\n for (let vertexIndex = 0; vertexIndex < vertexCount; vertexIndex++) {\n lines.push(\n `vn ${getComponent(normalAttribute, vertexIndex, 0)} ${getComponent(\n normalAttribute,\n vertexIndex,\n 1\n )} ${getComponent(normalAttribute, vertexIndex, 2)}`\n );\n }\n }\n\n const triangleIndices = getTriangleIndices(mesh, vertexCount);\n for (let triangleIndex = 0; triangleIndex < triangleIndices.length; triangleIndex += 3) {\n const face = [\n getFaceVertex(\n triangleIndices[triangleIndex],\n Boolean(textureCoordinateAttribute),\n Boolean(normalAttribute)\n ),\n getFaceVertex(\n triangleIndices[triangleIndex + 1],\n Boolean(textureCoordinateAttribute),\n Boolean(normalAttribute)\n ),\n getFaceVertex(\n triangleIndices[triangleIndex + 2],\n Boolean(textureCoordinateAttribute),\n Boolean(normalAttribute)\n )\n ];\n lines.push(`f ${face.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(`OBJWriter: ${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 a color component normalized for OBJ vertex colors. */\nfunction getColorComponent(\n attribute: MeshAttribute,\n vertexIndex: number,\n componentIndex: number\n): number {\n const value = getComponent(attribute, vertexIndex, componentIndex);\n return attribute.normalized || value > 1 ? value / 255 : value;\n}\n\n/** Return triangle indices for indexed or sequential triangle-list meshes. */\nfunction getTriangleIndices(mesh: Mesh, vertexCount: number): number[] {\n if (mesh.indices?.value?.length) {\n return Array.from(mesh.indices.value);\n }\n\n if (mesh.mode !== 4 && mesh.topology !== 'triangle-list') {\n return [];\n }\n\n const triangleIndices: number[] = [];\n for (let vertexIndex = 0; vertexIndex + 2 < vertexCount; vertexIndex += 3) {\n triangleIndices.push(vertexIndex, vertexIndex + 1, vertexIndex + 2);\n }\n return triangleIndices;\n}\n\n/** Return an OBJ face vertex reference. */\nfunction getFaceVertex(\n vertexIndex: number,\n hasTextureCoordinates: boolean,\n hasNormals: boolean\n): string {\n const faceIndex = vertexIndex + 1;\n if (hasTextureCoordinates && hasNormals) {\n return `${faceIndex}/${faceIndex}/${faceIndex}`;\n }\n if (hasTextureCoordinates) {\n return `${faceIndex}/${faceIndex}`;\n }\n if (hasNormals) {\n return `${faceIndex}//${faceIndex}`;\n }\n return String(faceIndex);\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,2 @@
1
+ export * from './obj/obj-writer.js';
2
+ //# sourceMappingURL=obj-writer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"obj-writer.d.ts","sourceRoot":"","sources":["../src/obj-writer.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './obj/obj-writer.js';
2
+ //# sourceMappingURL=obj-writer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"obj-writer.js","sourceRoot":"","sources":["../src/obj-writer.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
@@ -33,9 +33,9 @@ __export(usd_loader_types_exports, {
33
33
  USDLoader: () => USDLoader
34
34
  });
35
35
  module.exports = __toCommonJS(usd_loader_types_exports);
36
- var VERSION = true ? "5.0.0-beta.1" : "latest";
36
+ var VERSION = true ? "5.0.0-beta.2" : "latest";
37
37
  async function preload() {
38
- const { USDLoaderWithParser } = await import("@loaders.gl/scene/usd/usd-loader");
38
+ const { USDLoaderWithParser } = await import("@loaders.gl/scene/usd-loader");
39
39
  return USDLoaderWithParser;
40
40
  }
41
41
  var USDLoader = {