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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (675) hide show
  1. package/DRACO-README.md +15 -0
  2. package/GLTF-README.md +1 -1
  3. package/OBJ-README.md +1 -1
  4. package/README.md +13 -2
  5. package/THIRD-PARTY-NOTICES.md +10 -1
  6. package/dist/dist.dev.js +21207 -14204
  7. package/dist/dist.min.js +32 -24
  8. package/dist/draco/bundled.cjs +34 -0
  9. package/dist/draco/bundled.cjs.map +7 -0
  10. package/dist/draco/bundled.d.ts +5 -0
  11. package/dist/draco/bundled.d.ts.map +1 -0
  12. package/dist/draco/bundled.js +6 -0
  13. package/dist/draco/bundled.js.map +1 -0
  14. package/dist/draco/draco-format.cjs +41 -0
  15. package/dist/draco/draco-format.cjs.map +7 -0
  16. package/dist/draco/draco-format.d.ts +15 -0
  17. package/dist/draco/draco-format.d.ts.map +1 -0
  18. package/dist/draco/draco-format.js +18 -0
  19. package/dist/draco/draco-format.js.map +1 -0
  20. package/dist/draco/draco-javascript-loader-with-parser.cjs +47 -0
  21. package/dist/draco/draco-javascript-loader-with-parser.cjs.map +7 -0
  22. package/dist/draco/draco-javascript-loader-with-parser.d.ts +36 -0
  23. package/dist/draco/draco-javascript-loader-with-parser.d.ts.map +1 -0
  24. package/dist/draco/draco-javascript-loader-with-parser.js +14 -0
  25. package/dist/draco/draco-javascript-loader-with-parser.js.map +1 -0
  26. package/dist/draco/draco-libraries.cjs +61 -0
  27. package/dist/draco/draco-libraries.cjs.map +7 -0
  28. package/dist/draco/draco-libraries.d.ts +28 -0
  29. package/dist/draco/draco-libraries.d.ts.map +1 -0
  30. package/dist/draco/draco-libraries.js +33 -0
  31. package/dist/draco/draco-libraries.js.map +1 -0
  32. package/dist/draco/draco-library-options.cjs +80 -0
  33. package/dist/draco/draco-library-options.cjs.map +7 -0
  34. package/dist/draco/draco-library-options.d.ts +16 -0
  35. package/dist/draco/draco-library-options.d.ts.map +1 -0
  36. package/dist/draco/draco-library-options.js +52 -0
  37. package/dist/draco/draco-library-options.js.map +1 -0
  38. package/dist/draco/draco-loader-options.cjs +37 -0
  39. package/dist/draco/draco-loader-options.cjs.map +7 -0
  40. package/dist/draco/draco-loader-options.d.ts +27 -0
  41. package/dist/draco/draco-loader-options.d.ts.map +1 -0
  42. package/dist/draco/draco-loader-options.js +12 -0
  43. package/dist/draco/draco-loader-options.js.map +1 -0
  44. package/dist/draco/draco-loader-types.cjs +87 -0
  45. package/dist/draco/draco-loader-types.cjs.map +7 -0
  46. package/dist/draco/draco-loader-types.d.ts +41 -0
  47. package/dist/draco/draco-loader-types.d.ts.map +1 -0
  48. package/dist/draco/draco-loader-types.js +54 -0
  49. package/dist/draco/draco-loader-types.js.map +1 -0
  50. package/dist/draco/draco-loader.cjs +51 -0
  51. package/dist/draco/draco-loader.cjs.map +7 -0
  52. package/dist/draco/draco-loader.d.ts +41 -0
  53. package/dist/draco/draco-loader.d.ts.map +1 -0
  54. package/dist/draco/draco-loader.js +22 -0
  55. package/dist/draco/draco-loader.js.map +1 -0
  56. package/dist/draco/draco-wasm-loader-with-parser.cjs +48 -0
  57. package/dist/draco/draco-wasm-loader-with-parser.cjs.map +7 -0
  58. package/dist/draco/draco-wasm-loader-with-parser.d.ts +36 -0
  59. package/dist/draco/draco-wasm-loader-with-parser.d.ts.map +1 -0
  60. package/dist/draco/draco-wasm-loader-with-parser.js +14 -0
  61. package/dist/draco/draco-wasm-loader-with-parser.js.map +1 -0
  62. package/dist/draco/draco-writer.cjs +183 -0
  63. package/dist/draco/draco-writer.cjs.map +7 -0
  64. package/dist/draco/draco-writer.d.ts +98 -0
  65. package/dist/draco/draco-writer.d.ts.map +1 -0
  66. package/dist/draco/draco-writer.js +166 -0
  67. package/dist/draco/draco-writer.js.map +1 -0
  68. package/dist/draco/draco3d/draco3d-types.cjs +76 -0
  69. package/dist/draco/draco3d/draco3d-types.cjs.map +7 -0
  70. package/dist/draco/draco3d/draco3d-types.d.ts +303 -0
  71. package/dist/draco/draco3d/draco3d-types.d.ts.map +1 -0
  72. package/dist/draco/draco3d/draco3d-types.js +47 -0
  73. package/dist/draco/draco3d/draco3d-types.js.map +1 -0
  74. package/dist/draco/draco3d-loader-with-parser.cjs +50 -0
  75. package/dist/draco/draco3d-loader-with-parser.cjs.map +7 -0
  76. package/dist/draco/draco3d-loader-with-parser.d.ts +36 -0
  77. package/dist/draco/draco3d-loader-with-parser.d.ts.map +1 -0
  78. package/dist/draco/draco3d-loader-with-parser.js +21 -0
  79. package/dist/draco/draco3d-loader-with-parser.js.map +1 -0
  80. package/dist/draco/index.cjs +51 -0
  81. package/dist/draco/index.cjs.map +7 -0
  82. package/dist/draco/index.d.ts +11 -0
  83. package/dist/draco/index.d.ts.map +1 -0
  84. package/dist/draco/index.js +10 -0
  85. package/dist/draco/index.js.map +1 -0
  86. package/dist/draco/lib/draco-builder.cjs +660 -0
  87. package/dist/draco/lib/draco-builder.cjs.map +7 -0
  88. package/dist/draco/lib/draco-builder.d.ts +175 -0
  89. package/dist/draco/lib/draco-builder.d.ts.map +1 -0
  90. package/dist/draco/lib/draco-builder.js +612 -0
  91. package/dist/draco/lib/draco-builder.js.map +1 -0
  92. package/dist/draco/lib/draco-library-loader.cjs +47 -0
  93. package/dist/draco/lib/draco-library-loader.cjs.map +7 -0
  94. package/dist/draco/lib/draco-library-loader.d.ts +5 -0
  95. package/dist/draco/lib/draco-library-loader.d.ts.map +1 -0
  96. package/dist/draco/lib/draco-library-loader.js +23 -0
  97. package/dist/draco/lib/draco-library-loader.js.map +1 -0
  98. package/dist/draco/lib/draco-module-loader.cjs +281 -0
  99. package/dist/draco/lib/draco-module-loader.cjs.map +7 -0
  100. package/dist/draco/lib/draco-module-loader.d.ts +25 -0
  101. package/dist/draco/lib/draco-module-loader.d.ts.map +1 -0
  102. package/dist/draco/lib/draco-module-loader.js +220 -0
  103. package/dist/draco/lib/draco-module-loader.js.map +1 -0
  104. package/dist/draco/lib/draco-parser.cjs +601 -0
  105. package/dist/draco/lib/draco-parser.cjs.map +7 -0
  106. package/dist/draco/lib/draco-parser.d.ts +143 -0
  107. package/dist/draco/lib/draco-parser.d.ts.map +1 -0
  108. package/dist/draco/lib/draco-parser.js +598 -0
  109. package/dist/draco/lib/draco-parser.js.map +1 -0
  110. package/dist/draco/lib/draco-types.cjs +19 -0
  111. package/dist/draco/lib/draco-types.cjs.map +7 -0
  112. package/dist/draco/lib/draco-types.d.ts +59 -0
  113. package/dist/draco/lib/draco-types.d.ts.map +1 -0
  114. package/dist/draco/lib/draco-types.js +5 -0
  115. package/dist/draco/lib/draco-types.js.map +1 -0
  116. package/dist/draco/lib/parse-draco.cjs +60 -0
  117. package/dist/draco/lib/parse-draco.cjs.map +7 -0
  118. package/dist/draco/lib/parse-draco.d.ts +22 -0
  119. package/dist/draco/lib/parse-draco.d.ts.map +1 -0
  120. package/dist/draco/lib/parse-draco.js +33 -0
  121. package/dist/draco/lib/parse-draco.js.map +1 -0
  122. package/dist/draco/lib/utils/get-draco-schema.cjs +74 -0
  123. package/dist/draco/lib/utils/get-draco-schema.cjs.map +7 -0
  124. package/dist/draco/lib/utils/get-draco-schema.d.ts +7 -0
  125. package/dist/draco/lib/utils/get-draco-schema.d.ts.map +1 -0
  126. package/dist/draco/lib/utils/get-draco-schema.js +45 -0
  127. package/dist/draco/lib/utils/get-draco-schema.js.map +1 -0
  128. package/dist/draco/lib/utils/version.cjs +31 -0
  129. package/dist/draco/lib/utils/version.cjs.map +7 -0
  130. package/dist/draco/lib/utils/version.d.ts +2 -0
  131. package/dist/draco/lib/utils/version.d.ts.map +1 -0
  132. package/dist/draco/lib/utils/version.js +8 -0
  133. package/dist/draco/lib/utils/version.js.map +1 -0
  134. package/dist/draco/unbundled.cjs +31 -0
  135. package/dist/draco/unbundled.cjs.map +7 -0
  136. package/dist/draco/unbundled.d.ts +3 -0
  137. package/dist/draco/unbundled.d.ts.map +1 -0
  138. package/dist/draco/unbundled.js +5 -0
  139. package/dist/draco/unbundled.js.map +1 -0
  140. package/dist/draco/workers/draco-worker-node.cjs +8 -0
  141. package/dist/draco/workers/draco-worker-node.cjs.map +7 -0
  142. package/dist/draco/workers/draco-worker-node.d.ts +2 -0
  143. package/dist/draco/workers/draco-worker-node.d.ts.map +1 -0
  144. package/dist/draco/workers/draco-worker-node.js +9 -0
  145. package/dist/draco/workers/draco-worker-node.js.map +1 -0
  146. package/dist/draco/workers/draco-worker.cjs +7 -0
  147. package/dist/draco/workers/draco-worker.cjs.map +7 -0
  148. package/dist/draco/workers/draco-worker.d.ts +2 -0
  149. package/dist/draco/workers/draco-worker.d.ts.map +1 -0
  150. package/dist/draco/workers/draco-worker.js +7 -0
  151. package/dist/draco/workers/draco-worker.js.map +1 -0
  152. package/dist/draco/workers/draco-writer-worker-node.cjs +11 -0
  153. package/dist/draco/workers/draco-writer-worker-node.cjs.map +7 -0
  154. package/dist/draco/workers/draco-writer-worker-node.d.cts +2 -0
  155. package/dist/draco/workers/draco-writer-worker-node.d.cts.map +1 -0
  156. package/dist/draco/workers/draco-writer-worker-node.d.ts +2 -0
  157. package/dist/draco/workers/draco-writer-worker-node.d.ts.map +1 -0
  158. package/dist/draco/workers/draco-writer-worker-node.js +9 -0
  159. package/dist/draco/workers/draco-writer-worker-node.js.map +1 -0
  160. package/dist/draco/workers/draco-writer-worker.cjs +10 -0
  161. package/dist/draco/workers/draco-writer-worker.cjs.map +7 -0
  162. package/dist/draco/workers/draco-writer-worker.d.ts +2 -0
  163. package/dist/draco/workers/draco-writer-worker.d.ts.map +1 -0
  164. package/dist/draco/workers/draco-writer-worker.js +7 -0
  165. package/dist/draco/workers/draco-writer-worker.js.map +1 -0
  166. package/dist/draco-javascript-loader.cjs +25 -0
  167. package/dist/draco-javascript-loader.cjs.map +7 -0
  168. package/dist/draco-javascript-loader.d.ts +2 -0
  169. package/dist/draco-javascript-loader.d.ts.map +1 -0
  170. package/dist/draco-javascript-loader.js +3 -0
  171. package/dist/draco-javascript-loader.js.map +1 -0
  172. package/dist/draco-library-options.cjs +36 -0
  173. package/dist/draco-library-options.cjs.map +7 -0
  174. package/dist/draco-library-options.d.ts +3 -0
  175. package/dist/draco-library-options.d.ts.map +1 -0
  176. package/dist/draco-library-options.js +4 -0
  177. package/dist/draco-library-options.js.map +1 -0
  178. package/dist/draco-loader-types.cjs +25 -0
  179. package/dist/draco-loader-types.cjs.map +7 -0
  180. package/dist/draco-loader-types.d.ts +2 -0
  181. package/dist/draco-loader-types.d.ts.map +1 -0
  182. package/dist/draco-loader-types.js +3 -0
  183. package/dist/draco-loader-types.js.map +1 -0
  184. package/dist/draco-loader.cjs +25 -0
  185. package/dist/draco-loader.cjs.map +7 -0
  186. package/dist/draco-loader.d.ts +2 -0
  187. package/dist/draco-loader.d.ts.map +1 -0
  188. package/dist/draco-loader.js +3 -0
  189. package/dist/draco-loader.js.map +1 -0
  190. package/dist/draco-wasm-loader.cjs +25 -0
  191. package/dist/draco-wasm-loader.cjs.map +7 -0
  192. package/dist/draco-wasm-loader.d.ts +2 -0
  193. package/dist/draco-wasm-loader.d.ts.map +1 -0
  194. package/dist/draco-wasm-loader.js +3 -0
  195. package/dist/draco-wasm-loader.js.map +1 -0
  196. package/dist/draco-worker-node.js +29842 -0
  197. package/dist/draco-worker-node.js.map +7 -0
  198. package/dist/draco-worker.js +19668 -0
  199. package/dist/draco-worker.js.map +7 -0
  200. package/dist/draco-writer-worker-node.cjs +30022 -0
  201. package/dist/draco-writer-worker-node.cjs.map +7 -0
  202. package/dist/draco-writer-worker.js +19767 -0
  203. package/dist/draco-writer-worker.js.map +7 -0
  204. package/dist/draco-writer.cjs +25 -0
  205. package/dist/draco-writer.cjs.map +7 -0
  206. package/dist/draco-writer.d.ts +2 -0
  207. package/dist/draco-writer.d.ts.map +1 -0
  208. package/dist/draco-writer.js +3 -0
  209. package/dist/draco-writer.js.map +1 -0
  210. package/dist/draco3d-loader.cjs +25 -0
  211. package/dist/draco3d-loader.cjs.map +7 -0
  212. package/dist/draco3d-loader.d.ts +2 -0
  213. package/dist/draco3d-loader.d.ts.map +1 -0
  214. package/dist/draco3d-loader.js +3 -0
  215. package/dist/draco3d-loader.js.map +1 -0
  216. package/dist/glb-loader-types.cjs +61 -0
  217. package/dist/glb-loader-types.cjs.map +7 -0
  218. package/dist/glb-loader-types.d.ts +2 -0
  219. package/dist/glb-loader-types.d.ts.map +1 -0
  220. package/dist/glb-loader-types.js +2 -0
  221. package/dist/glb-loader-types.js.map +1 -0
  222. package/dist/glb-loader.cjs +48 -0
  223. package/dist/glb-loader.cjs.map +7 -0
  224. package/dist/glb-loader.d.ts +2 -0
  225. package/dist/glb-loader.d.ts.map +1 -0
  226. package/dist/glb-loader.js +2 -0
  227. package/dist/glb-loader.js.map +1 -0
  228. package/dist/glb-writer.cjs +53 -0
  229. package/dist/glb-writer.cjs.map +7 -0
  230. package/dist/glb-writer.d.ts +2 -0
  231. package/dist/glb-writer.d.ts.map +1 -0
  232. package/dist/glb-writer.js +2 -0
  233. package/dist/glb-writer.js.map +1 -0
  234. package/dist/gltf/glb-loader-types.cjs +1 -1
  235. package/dist/gltf/glb-loader-types.cjs.map +2 -2
  236. package/dist/gltf/glb-loader-types.d.ts +2 -2
  237. package/dist/gltf/glb-loader-types.js +1 -1
  238. package/dist/gltf/glb-loader-types.js.map +1 -1
  239. package/dist/gltf/gltf-loader-types.cjs +1 -1
  240. package/dist/gltf/gltf-loader-types.cjs.map +2 -2
  241. package/dist/gltf/gltf-loader-types.d.ts +11 -5
  242. package/dist/gltf/gltf-loader-types.d.ts.map +1 -1
  243. package/dist/gltf/gltf-loader-types.js +1 -1
  244. package/dist/gltf/gltf-loader-types.js.map +1 -1
  245. package/dist/gltf/gltf-loader.cjs.map +1 -1
  246. package/dist/gltf/gltf-loader.d.ts +4 -4
  247. package/dist/gltf/gltf-loader.d.ts.map +1 -1
  248. package/dist/gltf/index.cjs +2 -0
  249. package/dist/gltf/index.cjs.map +2 -2
  250. package/dist/gltf/index.d.ts +2 -2
  251. package/dist/gltf/index.d.ts.map +1 -1
  252. package/dist/gltf/index.js +1 -1
  253. package/dist/gltf/index.js.map +1 -1
  254. package/dist/gltf/lib/api/gltf-extensions.cjs +7 -2
  255. package/dist/gltf/lib/api/gltf-extensions.cjs.map +2 -2
  256. package/dist/gltf/lib/api/gltf-extensions.d.ts.map +1 -1
  257. package/dist/gltf/lib/api/gltf-extensions.js +7 -5
  258. package/dist/gltf/lib/api/gltf-extensions.js.map +1 -1
  259. package/dist/gltf/lib/encoders/encode-gltf-draco.cjs +12 -2
  260. package/dist/gltf/lib/encoders/encode-gltf-draco.cjs.map +2 -2
  261. package/dist/gltf/lib/encoders/encode-gltf-draco.d.ts +1 -1
  262. package/dist/gltf/lib/encoders/encode-gltf-draco.d.ts.map +1 -1
  263. package/dist/gltf/lib/encoders/encode-gltf-draco.js +1 -1
  264. package/dist/gltf/lib/encoders/encode-gltf-draco.js.map +1 -1
  265. package/dist/gltf/lib/extensions/EXT_texture_webp.cjs +1 -0
  266. package/dist/gltf/lib/extensions/EXT_texture_webp.cjs.map +2 -2
  267. package/dist/gltf/lib/extensions/EXT_texture_webp.d.ts.map +1 -1
  268. package/dist/gltf/lib/extensions/EXT_texture_webp.js +3 -0
  269. package/dist/gltf/lib/extensions/EXT_texture_webp.js.map +1 -1
  270. package/dist/gltf/lib/extensions/KHR_accessor_float64.cjs +45 -0
  271. package/dist/gltf/lib/extensions/KHR_accessor_float64.cjs.map +7 -0
  272. package/dist/gltf/lib/extensions/KHR_accessor_float64.d.ts +6 -0
  273. package/dist/gltf/lib/extensions/KHR_accessor_float64.d.ts.map +1 -0
  274. package/dist/gltf/lib/extensions/KHR_accessor_float64.js +20 -0
  275. package/dist/gltf/lib/extensions/KHR_accessor_float64.js.map +1 -0
  276. package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.cjs +2 -2
  277. package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.cjs.map +2 -2
  278. package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.d.ts.map +1 -1
  279. package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.js +1 -1
  280. package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.js.map +1 -1
  281. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.cjs +23 -7
  282. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.cjs.map +2 -2
  283. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.d.ts +2 -1
  284. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.d.ts.map +1 -1
  285. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.js +21 -5
  286. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.js.map +1 -1
  287. package/dist/gltf/lib/extensions/MSFT_texture_dds.cjs +64 -0
  288. package/dist/gltf/lib/extensions/MSFT_texture_dds.cjs.map +7 -0
  289. package/dist/gltf/lib/extensions/MSFT_texture_dds.d.ts +12 -0
  290. package/dist/gltf/lib/extensions/MSFT_texture_dds.d.ts.map +1 -0
  291. package/dist/gltf/lib/extensions/MSFT_texture_dds.js +39 -0
  292. package/dist/gltf/lib/extensions/MSFT_texture_dds.js.map +1 -0
  293. package/dist/gltf/lib/extensions/utils/3d-tiles-utils.cjs +1 -1
  294. package/dist/gltf/lib/extensions/utils/3d-tiles-utils.cjs.map +2 -2
  295. package/dist/gltf/lib/extensions/utils/3d-tiles-utils.d.ts.map +1 -1
  296. package/dist/gltf/lib/extensions/utils/3d-tiles-utils.js +3 -1
  297. package/dist/gltf/lib/extensions/utils/3d-tiles-utils.js.map +1 -1
  298. package/dist/gltf/lib/parsers/parse-gltf.cjs +34 -8
  299. package/dist/gltf/lib/parsers/parse-gltf.cjs.map +3 -3
  300. package/dist/gltf/lib/parsers/parse-gltf.d.ts +2 -0
  301. package/dist/gltf/lib/parsers/parse-gltf.d.ts.map +1 -1
  302. package/dist/gltf/lib/parsers/parse-gltf.js +26 -6
  303. package/dist/gltf/lib/parsers/parse-gltf.js.map +1 -1
  304. package/dist/gltf/lib/types/gltf-additional-extension-schemas.cjs +22 -0
  305. package/dist/gltf/lib/types/gltf-additional-extension-schemas.cjs.map +2 -2
  306. package/dist/gltf/lib/types/gltf-additional-extension-schemas.d.ts +23 -0
  307. package/dist/gltf/lib/types/gltf-additional-extension-schemas.d.ts.map +1 -1
  308. package/dist/gltf/lib/types/gltf-additional-extension-schemas.js +22 -0
  309. package/dist/gltf/lib/types/gltf-additional-extension-schemas.js.map +1 -1
  310. package/dist/gltf/lib/types/gltf-ext-gaussian-splatting-schema.cjs.map +1 -1
  311. package/dist/gltf/lib/types/gltf-ext-gaussian-splatting-schema.d.ts +1 -1
  312. package/dist/gltf/lib/types/gltf-ext-gaussian-splatting-schema.d.ts.map +1 -1
  313. package/dist/gltf/lib/types/gltf-extension-schemas.cjs +8 -0
  314. package/dist/gltf/lib/types/gltf-extension-schemas.cjs.map +2 -2
  315. package/dist/gltf/lib/types/gltf-extension-schemas.d.ts +27 -0
  316. package/dist/gltf/lib/types/gltf-extension-schemas.d.ts.map +1 -1
  317. package/dist/gltf/lib/types/gltf-extension-schemas.js +8 -1
  318. package/dist/gltf/lib/types/gltf-extension-schemas.js.map +1 -1
  319. package/dist/gltf/lib/types/gltf-json-schema.cjs.map +1 -1
  320. package/dist/gltf/lib/types/gltf-json-schema.d.ts +2 -2
  321. package/dist/gltf/lib/types/gltf-json-schema.d.ts.map +1 -1
  322. package/dist/gltf/lib/types/gltf-texture-procedurals.cjs +19 -0
  323. package/dist/gltf/lib/types/gltf-texture-procedurals.cjs.map +7 -0
  324. package/dist/gltf/lib/types/gltf-texture-procedurals.d.ts +45 -0
  325. package/dist/gltf/lib/types/gltf-texture-procedurals.d.ts.map +1 -0
  326. package/dist/gltf/lib/types/gltf-texture-procedurals.js +5 -0
  327. package/dist/gltf/lib/types/gltf-texture-procedurals.js.map +1 -0
  328. package/dist/gltf/lib/types/gltf-types.cjs.map +1 -1
  329. package/dist/gltf/lib/types/gltf-types.d.ts +7 -0
  330. package/dist/gltf/lib/types/gltf-types.d.ts.map +1 -1
  331. package/dist/gltf/lib/types/gltf-version-zod-schemas.d.ts +34 -0
  332. package/dist/gltf/lib/types/gltf-version-zod-schemas.d.ts.map +1 -1
  333. package/dist/gltf/lib/types/gltf-zod-schema.cjs +4 -1
  334. package/dist/gltf/lib/types/gltf-zod-schema.cjs.map +2 -2
  335. package/dist/gltf/lib/types/gltf-zod-schema.d.ts +57 -1
  336. package/dist/gltf/lib/types/gltf-zod-schema.d.ts.map +1 -1
  337. package/dist/gltf/lib/types/gltf-zod-schema.js +6 -2
  338. package/dist/gltf/lib/types/gltf-zod-schema.js.map +1 -1
  339. package/dist/gltf/lib/utils/version.cjs +1 -1
  340. package/dist/gltf/lib/utils/version.cjs.map +1 -1
  341. package/dist/gltf/lib/utils/version.js +1 -1
  342. package/dist/gltf/lib/utils/version.js.map +1 -1
  343. package/dist/gltf/schema.cjs +3 -0
  344. package/dist/gltf/schema.cjs.map +2 -2
  345. package/dist/gltf/schema.d.ts +1 -0
  346. package/dist/gltf/schema.d.ts.map +1 -1
  347. package/dist/gltf/schema.js +1 -0
  348. package/dist/gltf/schema.js.map +1 -1
  349. package/dist/gltf-loader-types.cjs +73 -0
  350. package/dist/gltf-loader-types.cjs.map +7 -0
  351. package/dist/gltf-loader-types.d.ts +2 -0
  352. package/dist/gltf-loader-types.d.ts.map +1 -0
  353. package/dist/gltf-loader-types.js +2 -0
  354. package/dist/gltf-loader-types.js.map +1 -0
  355. package/dist/gltf-loader.cjs +48 -0
  356. package/dist/gltf-loader.cjs.map +7 -0
  357. package/dist/gltf-loader.d.ts +2 -0
  358. package/dist/gltf-loader.d.ts.map +1 -0
  359. package/dist/gltf-loader.js +2 -0
  360. package/dist/gltf-loader.js.map +1 -0
  361. package/dist/gltf-source.cjs +238 -0
  362. package/dist/gltf-source.cjs.map +7 -0
  363. package/dist/gltf-source.d.ts +2 -0
  364. package/dist/gltf-source.d.ts.map +1 -0
  365. package/dist/gltf-source.js +2 -0
  366. package/dist/gltf-source.js.map +1 -0
  367. package/dist/gltf-writer.cjs +69 -0
  368. package/dist/gltf-writer.cjs.map +7 -0
  369. package/dist/gltf-writer.d.ts +2 -0
  370. package/dist/gltf-writer.d.ts.map +1 -0
  371. package/dist/gltf-writer.js +2 -0
  372. package/dist/gltf-writer.js.map +1 -0
  373. package/dist/index.cjs +18 -5
  374. package/dist/index.cjs.map +2 -2
  375. package/dist/index.d.ts +9 -2
  376. package/dist/index.d.ts.map +1 -1
  377. package/dist/index.js +8 -3
  378. package/dist/index.js.map +1 -1
  379. package/dist/libs/DRACO-LICENSE +252 -0
  380. package/dist/libs/README.md +20 -0
  381. package/dist/libs/draco_decoder.js +34 -0
  382. package/dist/libs/draco_decoder.mjs +37 -0
  383. package/dist/libs/draco_decoder.wasm +0 -0
  384. package/dist/libs/draco_decoder_gltf.wasm +0 -0
  385. package/dist/libs/draco_encoder.js +98 -0
  386. package/dist/libs/draco_encoder.mjs +101 -0
  387. package/dist/libs/draco_encoder.wasm +0 -0
  388. package/dist/libs/draco_wasm_wrapper.js +117 -0
  389. package/dist/libs/draco_wasm_wrapper.mjs +120 -0
  390. package/dist/libs/draco_wasm_wrapper_gltf.js +116 -0
  391. package/dist/libs/draco_wasm_wrapper_gltf.mjs +119 -0
  392. package/dist/materialx/parse-materialx.cjs +61 -0
  393. package/dist/materialx/parse-materialx.cjs.map +7 -0
  394. package/dist/materialx/parse-materialx.d.ts +23 -0
  395. package/dist/materialx/parse-materialx.d.ts.map +1 -0
  396. package/dist/materialx/parse-materialx.js +39 -0
  397. package/dist/materialx/parse-materialx.js.map +1 -0
  398. package/dist/materialx/procedural-graph.cjs +77 -0
  399. package/dist/materialx/procedural-graph.cjs.map +7 -0
  400. package/dist/materialx/procedural-graph.d.ts +40 -0
  401. package/dist/materialx/procedural-graph.d.ts.map +1 -0
  402. package/dist/materialx/procedural-graph.js +59 -0
  403. package/dist/materialx/procedural-graph.js.map +1 -0
  404. package/dist/materialx-loader-types.cjs +57 -0
  405. package/dist/materialx-loader-types.cjs.map +7 -0
  406. package/dist/materialx-loader-types.d.ts +34 -0
  407. package/dist/materialx-loader-types.d.ts.map +1 -0
  408. package/dist/materialx-loader-types.js +20 -0
  409. package/dist/materialx-loader-types.js.map +1 -0
  410. package/dist/materialx-loader.cjs +40 -0
  411. package/dist/materialx-loader.cjs.map +7 -0
  412. package/dist/materialx-loader.d.ts +19 -0
  413. package/dist/materialx-loader.d.ts.map +1 -0
  414. package/dist/materialx-loader.js +14 -0
  415. package/dist/materialx-loader.js.map +1 -0
  416. package/dist/mtl-loader-types.cjs +61 -0
  417. package/dist/mtl-loader-types.cjs.map +7 -0
  418. package/dist/mtl-loader-types.d.ts +2 -0
  419. package/dist/mtl-loader-types.d.ts.map +1 -0
  420. package/dist/mtl-loader-types.js +2 -0
  421. package/dist/mtl-loader-types.js.map +1 -0
  422. package/dist/mtl-loader.cjs +47 -0
  423. package/dist/mtl-loader.cjs.map +7 -0
  424. package/dist/mtl-loader.d.ts +2 -0
  425. package/dist/mtl-loader.d.ts.map +1 -0
  426. package/dist/mtl-loader.js +2 -0
  427. package/dist/mtl-loader.js.map +1 -0
  428. package/dist/obj/bundled.cjs +2 -4
  429. package/dist/obj/bundled.cjs.map +2 -2
  430. package/dist/obj/bundled.d.ts +1 -1
  431. package/dist/obj/bundled.d.ts.map +1 -1
  432. package/dist/obj/bundled.js +1 -1
  433. package/dist/obj/bundled.js.map +1 -1
  434. package/dist/obj/index.cjs +0 -6
  435. package/dist/obj/index.cjs.map +3 -3
  436. package/dist/obj/index.d.ts +0 -4
  437. package/dist/obj/index.d.ts.map +1 -1
  438. package/dist/obj/index.js +0 -5
  439. package/dist/obj/index.js.map +1 -1
  440. package/dist/obj/mtl-loader-types.cjs +4 -7
  441. package/dist/obj/mtl-loader-types.cjs.map +2 -2
  442. package/dist/obj/mtl-loader-types.d.ts +2 -22
  443. package/dist/obj/mtl-loader-types.d.ts.map +1 -1
  444. package/dist/obj/mtl-loader-types.js +2 -4
  445. package/dist/obj/mtl-loader-types.js.map +1 -1
  446. package/dist/obj/mtl-loader.cjs +1 -1
  447. package/dist/obj/mtl-loader.cjs.map +2 -2
  448. package/dist/obj/mtl-loader.js +1 -1
  449. package/dist/obj/mtl-loader.js.map +1 -1
  450. package/dist/obj/obj-loader-types.cjs +9 -10
  451. package/dist/obj/obj-loader-types.cjs.map +2 -2
  452. package/dist/obj/obj-loader-types.d.ts +19 -39
  453. package/dist/obj/obj-loader-types.d.ts.map +1 -1
  454. package/dist/obj/obj-loader-types.js +6 -6
  455. package/dist/obj/obj-loader-types.js.map +1 -1
  456. package/dist/obj/obj-loader.cjs +63 -31
  457. package/dist/obj/obj-loader.cjs.map +3 -3
  458. package/dist/obj/obj-loader.d.ts +43 -9
  459. package/dist/obj/obj-loader.d.ts.map +1 -1
  460. package/dist/obj/obj-loader.js +61 -22
  461. package/dist/obj/obj-loader.js.map +1 -1
  462. package/dist/obj/obj-writer.cjs +3 -3
  463. package/dist/obj/obj-writer.cjs.map +2 -2
  464. package/dist/obj/obj-writer.d.ts +5 -4
  465. package/dist/obj/obj-writer.d.ts.map +1 -1
  466. package/dist/obj/obj-writer.js +4 -4
  467. package/dist/obj/obj-writer.js.map +1 -1
  468. package/dist/obj/unbundled.cjs +2 -6
  469. package/dist/obj/unbundled.cjs.map +2 -2
  470. package/dist/obj/unbundled.d.ts +2 -2
  471. package/dist/obj/unbundled.d.ts.map +1 -1
  472. package/dist/obj/unbundled.js +2 -2
  473. package/dist/obj/unbundled.js.map +1 -1
  474. package/dist/obj/workers/obj-worker.cjs +5 -5
  475. package/dist/obj/workers/obj-worker.cjs.map +2 -2
  476. package/dist/obj/workers/obj-worker.js +6 -6
  477. package/dist/obj/workers/obj-worker.js.map +1 -1
  478. package/dist/obj-loader-types.cjs +70 -0
  479. package/dist/obj-loader-types.cjs.map +7 -0
  480. package/dist/obj-loader-types.d.ts +2 -0
  481. package/dist/obj-loader-types.d.ts.map +1 -0
  482. package/dist/obj-loader-types.js +2 -0
  483. package/dist/obj-loader-types.js.map +1 -0
  484. package/dist/obj-loader.cjs +195 -0
  485. package/dist/obj-loader.cjs.map +7 -0
  486. package/dist/obj-loader.d.ts +2 -0
  487. package/dist/obj-loader.d.ts.map +1 -0
  488. package/dist/obj-loader.js +2 -0
  489. package/dist/obj-loader.js.map +1 -0
  490. package/dist/obj-worker.js +1420 -406
  491. package/dist/obj-writer.cjs +167 -0
  492. package/dist/obj-writer.cjs.map +7 -0
  493. package/dist/obj-writer.d.ts +2 -0
  494. package/dist/obj-writer.d.ts.map +1 -0
  495. package/dist/obj-writer.js +2 -0
  496. package/dist/obj-writer.js.map +1 -0
  497. package/dist/stl/parse-stl.cjs +100 -0
  498. package/dist/stl/parse-stl.cjs.map +7 -0
  499. package/dist/stl/parse-stl.d.ts +4 -0
  500. package/dist/stl/parse-stl.d.ts.map +1 -0
  501. package/dist/stl/parse-stl.js +84 -0
  502. package/dist/stl/parse-stl.js.map +1 -0
  503. package/dist/stl-loader-types.cjs +58 -0
  504. package/dist/stl-loader-types.cjs.map +7 -0
  505. package/dist/stl-loader-types.d.ts +32 -0
  506. package/dist/stl-loader-types.d.ts.map +1 -0
  507. package/dist/stl-loader-types.js +25 -0
  508. package/dist/stl-loader-types.js.map +1 -0
  509. package/dist/stl-loader.cjs +38 -0
  510. package/dist/stl-loader.cjs.map +7 -0
  511. package/dist/stl-loader.d.ts +17 -0
  512. package/dist/stl-loader.d.ts.map +1 -0
  513. package/dist/stl-loader.js +13 -0
  514. package/dist/stl-loader.js.map +1 -0
  515. package/dist/usd/index.cjs.map +1 -1
  516. package/dist/usd/index.d.ts +1 -1
  517. package/dist/usd/index.d.ts.map +1 -1
  518. package/dist/usd/lib/parse-usd.cjs +42 -5
  519. package/dist/usd/lib/parse-usd.cjs.map +2 -2
  520. package/dist/usd/lib/parse-usd.d.ts.map +1 -1
  521. package/dist/usd/lib/parse-usd.js +53 -6
  522. package/dist/usd/lib/parse-usd.js.map +1 -1
  523. package/dist/usd/lib/parse-usdc.cjs +187 -0
  524. package/dist/usd/lib/parse-usdc.cjs.map +7 -0
  525. package/dist/usd/lib/parse-usdc.d.ts +4 -0
  526. package/dist/usd/lib/parse-usdc.d.ts.map +1 -0
  527. package/dist/usd/lib/parse-usdc.js +176 -0
  528. package/dist/usd/lib/parse-usdc.js.map +1 -0
  529. package/dist/usd/lib/parse-usdz.cjs +22 -0
  530. package/dist/usd/lib/parse-usdz.cjs.map +2 -2
  531. package/dist/usd/lib/parse-usdz.d.ts.map +1 -1
  532. package/dist/usd/lib/parse-usdz.js +26 -0
  533. package/dist/usd/lib/parse-usdz.js.map +1 -1
  534. package/dist/usd/lib/usd-types.cjs.map +1 -1
  535. package/dist/usd/lib/usd-types.d.ts +14 -1
  536. package/dist/usd/lib/usd-types.d.ts.map +1 -1
  537. package/dist/usd/lib/usd-types.js +1 -1
  538. package/dist/usd/lib/usd-types.js.map +1 -1
  539. package/dist/usd/libs/README.md +27 -0
  540. package/dist/usd/libs/THREE-LICENSE +21 -0
  541. package/dist/usd/libs/usdc-parser.d.ts +78 -0
  542. package/dist/usd/libs/usdc-parser.d.ts.map +1 -0
  543. package/dist/usd/libs/usdc-parser.js +1669 -0
  544. package/dist/usd/libs/usdc-parser.js.map +1 -0
  545. package/dist/usd/usd-loader-types.cjs +5 -5
  546. package/dist/usd/usd-loader-types.cjs.map +2 -2
  547. package/dist/usd/usd-loader-types.d.ts +7 -7
  548. package/dist/usd/usd-loader-types.d.ts.map +1 -1
  549. package/dist/usd/usd-loader-types.js +7 -7
  550. package/dist/usd/usd-loader-types.js.map +1 -1
  551. package/dist/usd/usd-loader.cjs.map +1 -1
  552. package/dist/usd/usd-loader.d.ts +4 -4
  553. package/dist/usd/usd-loader.d.ts.map +1 -1
  554. package/dist/usd/usd-loader.js +2 -2
  555. package/dist/usd/usd-loader.js.map +1 -1
  556. package/dist/usd-loader-types.cjs +69 -0
  557. package/dist/usd-loader-types.cjs.map +7 -0
  558. package/dist/usd-loader-types.d.ts +2 -0
  559. package/dist/usd-loader-types.d.ts.map +1 -0
  560. package/dist/usd-loader-types.js +2 -0
  561. package/dist/usd-loader-types.js.map +1 -0
  562. package/dist/usd-loader.cjs +43 -0
  563. package/dist/usd-loader.cjs.map +7 -0
  564. package/dist/usd-loader.d.ts +2 -0
  565. package/dist/usd-loader.d.ts.map +1 -0
  566. package/dist/usd-loader.js +2 -0
  567. package/dist/usd-loader.js.map +1 -0
  568. package/package.json +144 -72
  569. package/src/draco/bundled.ts +9 -0
  570. package/src/draco/draco-format.ts +20 -0
  571. package/src/draco/draco-javascript-loader-with-parser.ts +30 -0
  572. package/src/draco/draco-libraries.ts +35 -0
  573. package/src/draco/draco-library-options.ts +76 -0
  574. package/src/draco/draco-loader-options.ts +33 -0
  575. package/src/draco/draco-loader-types.ts +77 -0
  576. package/src/draco/draco-loader.ts +45 -0
  577. package/src/draco/draco-wasm-loader-with-parser.ts +31 -0
  578. package/src/draco/draco-writer.ts +254 -0
  579. package/src/draco/draco3d/draco3d-types.ts +498 -0
  580. package/src/draco/draco3d-loader-with-parser.ts +34 -0
  581. package/src/draco/index.ts +42 -0
  582. package/src/draco/lib/draco-builder.ts +935 -0
  583. package/src/draco/lib/draco-library-loader.ts +38 -0
  584. package/src/draco/lib/draco-module-loader.ts +370 -0
  585. package/src/draco/lib/draco-parser.ts +779 -0
  586. package/src/draco/lib/draco-types.ts +72 -0
  587. package/src/draco/lib/parse-draco.ts +52 -0
  588. package/src/draco/lib/utils/get-draco-schema.ts +65 -0
  589. package/src/draco/lib/utils/version.ts +8 -0
  590. package/src/draco/libs/DRACO-LICENSE +252 -0
  591. package/src/draco/libs/README.md +20 -0
  592. package/src/draco/libs/draco_decoder.js +34 -0
  593. package/src/draco/libs/draco_decoder.wasm +0 -0
  594. package/src/draco/libs/draco_decoder_gltf.wasm +0 -0
  595. package/src/draco/libs/draco_encoder.js +98 -0
  596. package/src/draco/libs/draco_encoder.wasm +0 -0
  597. package/src/draco/libs/draco_wasm_wrapper.js +117 -0
  598. package/src/draco/libs/draco_wasm_wrapper_gltf.js +116 -0
  599. package/src/draco/unbundled.ts +6 -0
  600. package/src/draco/workers/draco-worker-node.ts +10 -0
  601. package/src/draco/workers/draco-worker.ts +8 -0
  602. package/src/draco/workers/draco-writer-worker-node.cjs +21 -0
  603. package/src/draco/workers/draco-writer-worker-node.ts +13 -0
  604. package/src/draco/workers/draco-writer-worker.ts +11 -0
  605. package/src/draco-javascript-loader.ts +2 -0
  606. package/src/draco-library-options.ts +6 -0
  607. package/src/draco-loader-types.ts +2 -0
  608. package/src/draco-loader.ts +2 -0
  609. package/src/draco-wasm-loader.ts +2 -0
  610. package/src/draco-writer.ts +2 -0
  611. package/src/draco3d-loader.ts +2 -0
  612. package/src/glb-loader-types.ts +1 -0
  613. package/src/glb-loader.ts +1 -0
  614. package/src/glb-writer.ts +1 -0
  615. package/src/gltf/glb-loader-types.ts +1 -1
  616. package/src/gltf/gltf-loader-types.ts +11 -5
  617. package/src/gltf/gltf-loader.ts +4 -4
  618. package/src/gltf/index.ts +4 -1
  619. package/src/gltf/lib/api/gltf-extensions.ts +7 -2
  620. package/src/gltf/lib/encoders/encode-gltf-draco.ts +2 -2
  621. package/src/gltf/lib/extensions/EXT_texture_webp.ts +3 -0
  622. package/src/gltf/lib/extensions/KHR_accessor_float64.ts +22 -0
  623. package/src/gltf/lib/extensions/KHR_draco_mesh_compression.ts +2 -1
  624. package/src/gltf/lib/extensions/KHR_gaussian_splatting.ts +31 -7
  625. package/src/gltf/lib/extensions/MSFT_texture_dds.ts +52 -0
  626. package/src/gltf/lib/extensions/utils/3d-tiles-utils.ts +5 -1
  627. package/src/gltf/lib/parsers/parse-gltf.ts +38 -6
  628. package/src/gltf/lib/types/gltf-additional-extension-schemas.ts +32 -0
  629. package/src/gltf/lib/types/gltf-ext-gaussian-splatting-schema.ts +1 -1
  630. package/src/gltf/lib/types/gltf-extension-schemas.ts +12 -0
  631. package/src/gltf/lib/types/gltf-json-schema.ts +2 -1
  632. package/src/gltf/lib/types/gltf-texture-procedurals.ts +67 -0
  633. package/src/gltf/lib/types/gltf-types.ts +8 -0
  634. package/src/gltf/lib/types/gltf-zod-schema.ts +7 -1
  635. package/src/gltf/schema.ts +1 -0
  636. package/src/gltf-loader-types.ts +1 -0
  637. package/src/gltf-loader.ts +1 -0
  638. package/src/gltf-source.ts +1 -0
  639. package/src/gltf-writer.ts +1 -0
  640. package/src/index.ts +13 -3
  641. package/src/materialx/README.md +5 -0
  642. package/src/materialx/parse-materialx.ts +70 -0
  643. package/src/materialx/procedural-graph.ts +94 -0
  644. package/src/materialx-loader-types.ts +24 -0
  645. package/src/materialx-loader.ts +15 -0
  646. package/src/mtl-loader-types.ts +1 -0
  647. package/src/mtl-loader.ts +1 -0
  648. package/src/obj/bundled.ts +1 -4
  649. package/src/obj/index.ts +0 -6
  650. package/src/obj/mtl-loader-types.ts +1 -4
  651. package/src/obj/mtl-loader.ts +1 -1
  652. package/src/obj/obj-loader-types.ts +11 -11
  653. package/src/obj/obj-loader.ts +87 -37
  654. package/src/obj/obj-writer.ts +12 -8
  655. package/src/obj/unbundled.ts +2 -2
  656. package/src/obj/workers/obj-worker.ts +6 -6
  657. package/src/obj-loader-types.ts +1 -0
  658. package/src/obj-loader.ts +1 -0
  659. package/src/obj-writer.ts +1 -0
  660. package/src/stl/parse-stl.ts +90 -0
  661. package/src/stl-loader-types.ts +28 -0
  662. package/src/stl-loader.ts +12 -0
  663. package/src/usd/index.ts +1 -0
  664. package/src/usd/lib/parse-usd.ts +68 -7
  665. package/src/usd/lib/parse-usdc.ts +188 -0
  666. package/src/usd/lib/parse-usdz.ts +28 -0
  667. package/src/usd/lib/usd-types.ts +16 -2
  668. package/src/usd/libs/README.md +27 -0
  669. package/src/usd/libs/THREE-LICENSE +21 -0
  670. package/src/usd/libs/usdc-parser.d.ts +18 -0
  671. package/src/usd/libs/usdc-parser.js +1669 -0
  672. package/src/usd/usd-loader-types.ts +6 -6
  673. package/src/usd/usd-loader.ts +2 -2
  674. package/src/usd-loader-types.ts +1 -0
  675. package/src/usd-loader.ts +1 -0
@@ -0,0 +1,28 @@
1
+ // SPDX-License-Identifier: MIT
2
+ // Copyright (c) vis.gl contributors
3
+ /** Package version injected by the build. */
4
+ // @ts-ignore __VERSION__ is injected during compilation.
5
+ const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
6
+ // loaders.gl
7
+ import type {Mesh} from '@loaders.gl/core/schema';
8
+
9
+ /** Loads the STL parser on demand. */
10
+ async function preload() {
11
+ const {STLLoaderWithParser} = await import('@loaders.gl/scene/stl-loader');
12
+ return STLLoaderWithParser;
13
+ }
14
+
15
+ /** Metadata-only loader for ASCII and binary STL triangle meshes. */
16
+ export const STLLoader = {
17
+ name: 'STL',
18
+ id: 'stl',
19
+ module: 'scene',
20
+ version: VERSION,
21
+ extensions: ['stl'],
22
+ mimeTypes: ['model/stl'],
23
+ binary: true,
24
+ dataType: null as unknown as Mesh,
25
+ batchType: null as never,
26
+ options: {},
27
+ preload
28
+ } as const;
@@ -0,0 +1,12 @@
1
+ // SPDX-License-Identifier: MIT
2
+ // Copyright (c) vis.gl contributors
3
+ // loaders.gl
4
+ import {STLLoader} from './stl-loader-types';
5
+ import {parseSTL} from './stl/parse-stl';
6
+ const {preload: _preload, ...metadata} = STLLoader;
7
+ /** Parser-bearing STL loader returning renderer-independent triangle meshes. */
8
+ export const STLLoaderWithParser = {
9
+ ...metadata,
10
+ parse: async (data: ArrayBuffer) => parseSTL(data),
11
+ parseSync: parseSTL
12
+ } as const;
package/src/usd/index.ts CHANGED
@@ -6,6 +6,7 @@ export {USDLoader} from './usd-loader-types';
6
6
  export type {
7
7
  USDAssetPath,
8
8
  USDAttribute,
9
+ USDEmbeddedAsset,
9
10
  USDLoaderOptions,
10
11
  USDPrim,
11
12
  USDScenePath,
@@ -1,11 +1,20 @@
1
- // loaders.gl
2
1
  // SPDX-License-Identifier: MIT
3
2
  // Copyright (c) vis.gl contributors
3
+ import {parseUSDC} from './parse-usdc';
4
+ // loaders.gl
4
5
 
5
6
  import type {LoaderContext} from '@loaders.gl/core/loader-utils';
6
7
  import {parseUSDA} from './parse-usda';
7
8
  import {parseUSDZArchive} from './parse-usdz';
8
- import type {USDAssetPath, USDLoaderOptions, USDPrim, USDStage, USDValue} from './usd-types';
9
+ import type {
10
+ USDAssetPath,
11
+ USDEmbeddedAsset,
12
+ USDLoaderOptions,
13
+ USDPrim,
14
+ USDStage,
15
+ USDValue,
16
+ USDVariant
17
+ } from './usd-types';
9
18
 
10
19
  type USDParseEnvironment = {
11
20
  /** Fetch implementation used for external layers. */
@@ -54,23 +63,45 @@ export async function parseUSD(
54
63
  let stage: USDStage;
55
64
  if (isZIPArchive(data)) {
56
65
  const archive = parseUSDZArchive(data);
57
- const rootFilename = Array.from(archive.keys()).find(filename => /\.usda?$/i.test(filename));
58
- if (!rootFilename) {
59
- throw new Error('USDZ archives with binary USDC root layers are not implemented yet.');
66
+ const rootFilename = archive.keys().next().value;
67
+ if (!rootFilename || !/\.(?:usd[ac]?)$/i.test(rootFilename)) {
68
+ throw new Error('USDZ archive has no supported USD root layer.');
60
69
  }
61
70
 
62
71
  const archiveBase = 'https://usd.archive/';
72
+ const assets: Record<string, USDEmbeddedAsset> = Object.create(null);
63
73
  for (const [filename, content] of archive) {
64
- environment.archiveFiles.set(new URL(filename, archiveBase).href, content);
74
+ const assetUrl = new URL(filename, archiveBase);
75
+ if (
76
+ filename.startsWith('/') ||
77
+ /^[a-z][a-z\d+.-]*:/i.test(filename) ||
78
+ filename.includes('\\') ||
79
+ /[\u0000-\u001f\u007f]/.test(filename) ||
80
+ filename.trim() !== filename ||
81
+ filename.split('/').some(segment => {
82
+ const normalizedSegment = segment.replace(/%2e/gi, '.');
83
+ return normalizedSegment === '.' || normalizedSegment === '..';
84
+ }) ||
85
+ assetUrl.origin !== new URL(archiveBase).origin ||
86
+ assetUrl.search ||
87
+ assetUrl.hash ||
88
+ assets[assetUrl.href]
89
+ ) {
90
+ throw new Error(`USDZ entry "${filename}" has an ambiguous package URL.`);
91
+ }
92
+ environment.archiveFiles.set(assetUrl.href, content);
93
+ assets[assetUrl.href] = createEmbeddedAsset(filename, content);
65
94
  }
66
95
  const rootUrl = new URL(rootFilename, archiveBase).href;
67
96
  stage = parseUSDLayer(archive.get(rootFilename)!, rootUrl);
68
97
  stage.format = 'usdz';
98
+ stage.assets = assets;
69
99
  } else {
70
100
  stage = parseUSDLayer(data, url);
71
101
  }
72
102
 
73
103
  if (stage.url) {
104
+ setAttributeSourceUrls(stage, stage.url);
74
105
  environment.layers.add(stage.url);
75
106
  }
76
107
  if (environment.options.usd?.compose !== false) {
@@ -83,6 +114,14 @@ export async function parseUSD(
83
114
  return stage;
84
115
  }
85
116
 
117
+ /** Retains encoded file data and a conservative filename-based image MIME hint. */
118
+ function createEmbeddedAsset(path: string, data: ArrayBuffer): USDEmbeddedAsset {
119
+ const extension = path.slice(path.lastIndexOf('.') + 1).toLowerCase();
120
+ const mimeType =
121
+ extension === 'png' ? 'image/png' : /^(?:jpe?g)$/.test(extension) ? 'image/jpeg' : undefined;
122
+ return mimeType ? {path, data, mimeType} : {path, data};
123
+ }
124
+
86
125
  /** Selects a source location suitable for resolving referenced layers. */
87
126
  function getSourceLocation(
88
127
  configuredLocation: string | undefined,
@@ -126,11 +165,32 @@ const USD_LOADER_DEFAULT_OPTIONS = {
126
165
  function parseUSDLayer(data: ArrayBuffer, url?: string): USDStage {
127
166
  const signature = TEXT_DECODER.decode(data.slice(0, 8));
128
167
  if (signature === CRATE_SIGNATURE) {
129
- throw new Error('Binary USDC crate layers are not implemented yet; use ASCII USDA layers.');
168
+ return parseUSDC(data, url);
130
169
  }
131
170
  return parseUSDA(TEXT_DECODER.decode(data), url);
132
171
  }
133
172
 
173
+ /** Retains each attribute's authored layer before composition merges prims from different files. */
174
+ function setAttributeSourceUrls(stage: USDStage, sourceUrl: string): void {
175
+ const pendingContents: (USDPrim | USDVariant)[] = [...stage.rootPrims];
176
+ while (pendingContents.length) {
177
+ const contents = pendingContents.pop()!;
178
+ for (const attribute of Object.values(contents.attributes)) {
179
+ attribute.sourceUrl = sourceUrl;
180
+ }
181
+ for (const child of contents.children) {
182
+ pendingContents.push(child);
183
+ }
184
+ if ('variants' in contents) {
185
+ for (const variants of Object.values(contents.variants)) {
186
+ for (const variant of Object.values(variants)) {
187
+ pendingContents.push(variant);
188
+ }
189
+ }
190
+ }
191
+ }
192
+ }
193
+
134
194
  /** Recursively applies variants, references, overrides, and class filtering. */
135
195
  async function composePrims(
136
196
  prims: USDPrim[],
@@ -227,6 +287,7 @@ async function loadReferencedStage(
227
287
  content = response.arrayBuffer();
228
288
  }
229
289
  const stage = parseUSDLayer(await content, url);
290
+ setAttributeSourceUrls(stage, url);
230
291
  environment.layers.add(url);
231
292
  return stage;
232
293
  })();
@@ -0,0 +1,188 @@
1
+ // SPDX-License-Identifier: MIT
2
+ // Copyright (c) vis.gl contributors
3
+ import {USDCParser} from '../libs/usdc-parser.js';
4
+ import type {USDPrim, USDStage, USDValue} from './usd-types';
5
+
6
+ /** Decodes the supported binary crate subset into the same stage model as USDA. */
7
+ export function parseUSDC(data: ArrayBuffer, url?: string): USDStage {
8
+ if (data.byteLength < 88 || data.byteLength > 64 * 1024 * 1024)
9
+ throw new Error('USDC: invalid input size');
10
+ const bytes = new Uint8Array(data);
11
+ if (bytes[8] !== 0 || bytes[9] !== 8 || bytes[10] !== 0)
12
+ throw new Error('USDC: initial decoder requires crate version 0.8.0');
13
+ const reader = new DataView(data);
14
+ const table = reader.getBigUint64(16, true);
15
+ if (table > BigInt(data.byteLength - 8)) throw new Error('USDC: invalid section table');
16
+ const offset = Number(table),
17
+ count = reader.getBigUint64(offset, true);
18
+ if (count > 16n || offset + 8 + Number(count) * 32 > data.byteLength)
19
+ throw new Error('USDC: invalid section table length');
20
+ const sectionNames = new Set<string>();
21
+ for (let index = 0; index < Number(count); index++) {
22
+ const entry = offset + 8 + index * 32;
23
+ const nameBytes = bytes.subarray(entry, entry + 16);
24
+ const terminator = nameBytes.indexOf(0);
25
+ const name = new TextDecoder().decode(
26
+ nameBytes.subarray(0, terminator < 0 ? nameBytes.length : terminator)
27
+ );
28
+ if (sectionNames.has(name)) throw new Error('USDC: duplicate section');
29
+ sectionNames.add(name);
30
+ const start = reader.getBigUint64(entry + 16, true),
31
+ size = reader.getBigUint64(entry + 24, true);
32
+ if (start < 88n || start + size > BigInt(data.byteLength))
33
+ throw new Error('USDC: section out of bounds');
34
+ }
35
+ for (const name of ['TOKENS', 'STRINGS', 'FIELDS', 'FIELDSETS', 'PATHS', 'SPECS'])
36
+ if (!sectionNames.has(name)) throw new Error('USDC: missing required section');
37
+ const {specsByPath} = new USDCParser().parseData(data);
38
+ const prims = new Map<string, USDPrim>();
39
+ for (const [path, specification] of Object.entries(specsByPath)) {
40
+ if (specification.specType === 7 && path === '/') continue;
41
+ if (specification.specType === 1 || specification.specType === 8) continue;
42
+ if (specification.specType !== 6 || !/^\/(?:[A-Za-z_][\w:]*\/)*[A-Za-z_][\w:]*$/.test(path))
43
+ throw new Error('USDC: unsupported prim specification');
44
+ const fields = specification.fields;
45
+ const specifier = fields.specifier ?? 0;
46
+ if (specifier !== 0 && specifier !== 1 && specifier !== 2)
47
+ throw new Error('USDC: invalid prim specifier');
48
+ const metadata = convertFields(
49
+ fields,
50
+ new Set(['specifier', 'typeName', 'primChildren', 'properties'])
51
+ );
52
+ prims.set(path, {
53
+ name: path.slice(path.lastIndexOf('/') + 1),
54
+ path,
55
+ sourceUrl: url,
56
+ type: String(fields.typeName || ''),
57
+ specifier: (['def', 'over', 'class'] as const)[specifier],
58
+ attributes: Object.create(null),
59
+ metadata,
60
+ variants: Object.create(null),
61
+ children: []
62
+ });
63
+ }
64
+ const roots: USDPrim[] = [];
65
+ for (const prim of prims.values()) {
66
+ const parentPath = prim.path.slice(0, prim.path.lastIndexOf('/'));
67
+ if (!parentPath) roots.push(prim);
68
+ else {
69
+ const parent = prims.get(parentPath);
70
+ if (!parent) throw new Error('USDC: missing parent prim');
71
+ parent.children.push(prim);
72
+ }
73
+ }
74
+ orderPrims(roots, specsByPath['/']?.fields.primChildren);
75
+ for (const prim of prims.values())
76
+ orderPrims(prim.children, specsByPath[prim.path]?.fields.primChildren);
77
+ for (const [path, specification] of Object.entries(specsByPath)) {
78
+ if (specification.specType !== 1 && specification.specType !== 8) continue;
79
+ const separator = path.indexOf('.');
80
+ const prim = prims.get(path.slice(0, separator));
81
+ if (separator < 0 || !prim) throw new Error('USDC: property has no owning prim');
82
+ const name = path.slice(separator + 1),
83
+ fields = specification.fields;
84
+ const type = specification.specType === 8 ? 'rel' : String(fields.typeName || '');
85
+ const value = convertAttributeValue(
86
+ specification.specType === 8 ? fields.targetPaths : fields.default,
87
+ type
88
+ );
89
+ const metadata = convertFields(
90
+ fields,
91
+ new Set(['typeName', 'default', 'targetPaths', 'timeSamples'])
92
+ );
93
+ if (fields.timeSamples !== undefined)
94
+ metadata.timeSamples = convertTimeSamples(fields.timeSamples, type);
95
+ prim.attributes[name] = {
96
+ name,
97
+ type,
98
+ value,
99
+ metadata
100
+ };
101
+ }
102
+ return {
103
+ format: 'usdc',
104
+ url,
105
+ metadata: convertFields(specsByPath['/']?.fields || {}, new Set(['primChildren'])),
106
+ rootPrims: roots,
107
+ layers: []
108
+ };
109
+ }
110
+
111
+ /** Converts raw field dictionaries while retaining authored values and time samples. */
112
+ function convertFields(
113
+ fields: Record<string, unknown>,
114
+ excluded: Set<string>
115
+ ): Record<string, USDValue> {
116
+ const result: Record<string, USDValue> = Object.create(null);
117
+ for (const [name, value] of Object.entries(fields))
118
+ if (!excluded.has(name)) result[name] = convertValue(value);
119
+ return result;
120
+ }
121
+
122
+ /** Converts decoded typed arrays to the existing renderer-independent USD value contract. */
123
+ function convertValue(value: unknown): USDValue {
124
+ if (value === undefined || value === null) return null;
125
+ if (typeof value === 'number' || typeof value === 'string' || typeof value === 'boolean')
126
+ return value;
127
+ if (Array.isArray(value)) return value.map(convertValue);
128
+ if (ArrayBuffer.isView(value) && !(value instanceof DataView))
129
+ return Array.from(value as unknown as ArrayLike<number>);
130
+ if (typeof value === 'object') return convertFields(value as Record<string, unknown>, new Set());
131
+ throw new Error('USDC: unsupported decoded value');
132
+ }
133
+
134
+ /** Preserves USDA-compatible asset/path values and vector-array tuple boundaries. */
135
+ function convertAttributeValue(raw: unknown, type: string): USDValue {
136
+ const value = convertValue(raw);
137
+ if (type === 'asset' && typeof value === 'string') return {assetPath: value};
138
+ if (type === 'rel' && Array.isArray(value))
139
+ return value.map(path => (typeof path === 'string' ? {path} : path));
140
+ const tuple =
141
+ /^(?:(?:point|normal|vector|color|texCoord)([234])[fdh]|(?:float|double|half|int)([234]))\[\]$/.exec(
142
+ type
143
+ );
144
+ if (tuple && Array.isArray(value)) {
145
+ const components = Number(tuple[1] || tuple[2]);
146
+ if (value.length % components) throw new Error('USDC: incomplete vector tuple');
147
+ const tuples: USDValue[] = [];
148
+ for (let offset = 0; offset < value.length; offset += components)
149
+ tuples.push(value.slice(offset, offset + components));
150
+ return tuples;
151
+ }
152
+ return value;
153
+ }
154
+
155
+ /** Applies authored child-name order while retaining any other decoded specifications. */
156
+ function orderPrims(prims: USDPrim[], names: unknown): void {
157
+ if (names === undefined) return;
158
+ if (!Array.isArray(names)) throw new Error('USDC: invalid primChildren order');
159
+ const remaining = new Map(prims.map(prim => [prim.name, prim]));
160
+ const ordered: USDPrim[] = [];
161
+ for (const name of names) {
162
+ const prim = typeof name === 'string' ? remaining.get(name) : undefined;
163
+ if (!prim) throw new Error('USDC: invalid primChildren reference');
164
+ ordered.push(prim);
165
+ remaining.delete(name as string);
166
+ }
167
+ for (const prim of remaining.values()) ordered.push(prim);
168
+ for (let index = 0; index < ordered.length; index++) prims[index] = ordered[index];
169
+ }
170
+
171
+ /** Converts every authored sample through the same type-aware path as an attribute default. */
172
+ function convertTimeSamples(raw: unknown, type: string): USDValue {
173
+ if (!raw || typeof raw !== 'object') throw new Error('USDC: invalid time samples');
174
+ const samples = raw as {
175
+ /** Authored sample coordinates. */
176
+ times?: unknown;
177
+ /** Authored sample values before type-aware conversion. */
178
+ values?: unknown;
179
+ };
180
+ const times = convertValue(samples.times);
181
+ if (
182
+ !Array.isArray(times) ||
183
+ !Array.isArray(samples.values) ||
184
+ times.length !== samples.values.length
185
+ )
186
+ throw new Error('USDC: invalid time samples');
187
+ return {times, values: samples.values.map(value => convertAttributeValue(value, type))};
188
+ }
@@ -12,20 +12,29 @@ export function parseUSDZArchive(arrayBuffer: ArrayBuffer): Map<string, ArrayBuf
12
12
  const directoryOffset = findCentralDirectory(view);
13
13
  const entryCount = view.getUint16(directoryOffset + 10, true);
14
14
  let entryOffset = view.getUint32(directoryOffset + 16, true);
15
+ const dataLimit = entryOffset;
15
16
  const files = new Map<string, ArrayBuffer>();
16
17
  const textDecoder = new TextDecoder();
18
+ let extractedByteLength = 0;
17
19
 
18
20
  for (let entryIndex = 0; entryIndex < entryCount; entryIndex++) {
21
+ if (entryOffset + 46 > directoryOffset) {
22
+ throw new Error('USDZ archive contains a truncated ZIP central-directory entry.');
23
+ }
19
24
  if (view.getUint32(entryOffset, true) !== CENTRAL_DIRECTORY_ENTRY) {
20
25
  throw new Error('USDZ archive contains an invalid ZIP central-directory entry.');
21
26
  }
22
27
 
23
28
  const compression = view.getUint16(entryOffset + 10, true);
24
29
  const compressedLength = view.getUint32(entryOffset + 20, true);
30
+ const uncompressedLength = view.getUint32(entryOffset + 24, true);
25
31
  const filenameLength = view.getUint16(entryOffset + 28, true);
26
32
  const extraLength = view.getUint16(entryOffset + 30, true);
27
33
  const commentLength = view.getUint16(entryOffset + 32, true);
28
34
  const localOffset = view.getUint32(entryOffset + 42, true);
35
+ if (entryOffset + 46 + filenameLength + extraLength + commentLength > directoryOffset) {
36
+ throw new Error('USDZ archive contains a truncated ZIP filename or extra field.');
37
+ }
29
38
  const filename = textDecoder.decode(
30
39
  new Uint8Array(arrayBuffer, entryOffset + 46, filenameLength)
31
40
  );
@@ -33,6 +42,9 @@ export function parseUSDZArchive(arrayBuffer: ArrayBuffer): Map<string, ArrayBuf
33
42
  if (compression !== 0) {
34
43
  throw new Error(`USDZ entry "${filename}" is compressed; USDZ requires stored ZIP entries.`);
35
44
  }
45
+ if (localOffset + 30 > dataLimit || compressedLength !== uncompressedLength) {
46
+ throw new Error(`USDZ entry "${filename}" has invalid stored ZIP bounds.`);
47
+ }
36
48
  if (view.getUint32(localOffset, true) !== LOCAL_FILE_HEADER) {
37
49
  throw new Error(`USDZ entry "${filename}" has an invalid local ZIP header.`);
38
50
  }
@@ -40,6 +52,22 @@ export function parseUSDZArchive(arrayBuffer: ArrayBuffer): Map<string, ArrayBuf
40
52
  const localNameLength = view.getUint16(localOffset + 26, true);
41
53
  const localExtraLength = view.getUint16(localOffset + 28, true);
42
54
  const contentOffset = localOffset + 30 + localNameLength + localExtraLength;
55
+ if ((view.getUint16(entryOffset + 8, true) | view.getUint16(localOffset + 6, true)) & 1) {
56
+ throw new Error(`USDZ entry "${filename}" is encrypted.`);
57
+ }
58
+ if (
59
+ contentOffset + compressedLength > dataLimit ||
60
+ view.getUint16(localOffset + 8, true) !== 0 ||
61
+ textDecoder.decode(new Uint8Array(arrayBuffer, localOffset + 30, localNameLength)) !==
62
+ filename ||
63
+ files.has(filename)
64
+ ) {
65
+ throw new Error(`USDZ entry "${filename}" has invalid or duplicate stored ZIP data.`);
66
+ }
67
+ extractedByteLength += compressedLength;
68
+ if (extractedByteLength > arrayBuffer.byteLength) {
69
+ throw new Error('USDZ archive exceeds its stored data budget.');
70
+ }
43
71
  files.set(filename, arrayBuffer.slice(contentOffset, contentOffset + compressedLength));
44
72
  entryOffset += 46 + filenameLength + extraLength + commentLength;
45
73
  }
@@ -1,6 +1,6 @@
1
- // loaders.gl
2
1
  // SPDX-License-Identifier: MIT
3
2
  // Copyright (c) vis.gl contributors
3
+ // loaders.gl
4
4
 
5
5
  import type {LoaderOptions} from '@loaders.gl/core/loader-utils';
6
6
 
@@ -31,6 +31,8 @@ export type USDValue =
31
31
 
32
32
  /** Parsed OpenUSD attribute declaration. */
33
33
  export type USDAttribute = {
34
+ /** URL of the layer that authored this attribute, retained through composition. */
35
+ sourceUrl?: string;
34
36
  /** Attribute name. */
35
37
  name: string;
36
38
  /** Authored OpenUSD type name. */
@@ -73,10 +75,20 @@ export type USDPrim = {
73
75
  children: USDPrim[];
74
76
  };
75
77
 
78
+ /** Encoded file extracted from a USDZ package, without image decoding or renderer objects. */
79
+ export type USDEmbeddedAsset = {
80
+ /** Original archive-relative filename, including its directories. */
81
+ readonly path: string;
82
+ /** Exact stored bytes, owned by the returned stage rather than the input archive. */
83
+ readonly data: ArrayBuffer;
84
+ /** MIME type hint inferred from a PNG or JPEG filename; other formats omit this field. */
85
+ readonly mimeType?: string;
86
+ };
87
+
76
88
  /** Parsed OpenUSD stage. */
77
89
  export type USDStage = {
78
90
  /** Container format used for the root layer. */
79
- format: 'usda' | 'usdz';
91
+ format: 'usda' | 'usdc' | 'usdz';
80
92
  /** URL of the root layer when available. */
81
93
  url?: string;
82
94
  /** Root-layer metadata. */
@@ -85,6 +97,8 @@ export type USDStage = {
85
97
  rootPrims: USDPrim[];
86
98
  /** URLs of all layers used to compose the stage. */
87
99
  layers: string[];
100
+ /** USDZ files keyed by resolved package URL; absent for standalone layers. Includes layers and textures. */
101
+ assets?: Record<string, USDEmbeddedAsset>;
88
102
  };
89
103
 
90
104
  /** Options for {@link USDLoader}. */
@@ -0,0 +1,27 @@
1
+ # USDC decoder source
2
+
3
+ `usdc-parser.js` is adapted from THREE.js r187, commit/tag r187:
4
+ https://github.com/mrdoob/three.js/blob/r187/examples/jsm/loaders/usd/USDCParser.js
5
+
6
+ Copyright © 2010–2026 three.js authors; MIT terms are in THREE-LICENSE.
7
+ This renderer-free source has no imports or package dependencies. It remains
8
+ vendored JavaScript; the adjacent declaration and handwritten parse-usdc.ts
9
+ adapter define the checked TypeScript boundary. Existing libs build/coverage
10
+ policy applies to this vendored decoder; adapter code remains fully instrumented.
11
+
12
+ Local changes bound aggregate allocations, integer precision and seek offsets,
13
+ support bounded dictionary values and reject unsupported list operations/encoding cases, validate LZ4
14
+ copies, use null-prototype dictionaries and correct signed inline integers.
15
+ The adapter restricts crate versions, validates section bounds, and converts the
16
+ supported specifications into USDStage. Broader upstream behavior is not promised.
17
+
18
+ Dictionary decoding uses string-table keys and forward offsets to complete value
19
+ representations, retaining false, empty strings, empty dictionaries and asset paths.
20
+ It rejects duplicate/invalid keys, cycles, nesting beyond 64, and unsupported
21
+ complex dictionary value types. These checks extend the r187 source while
22
+ preserving its MIT attribution; no THREE runtime is imported.
23
+
24
+ The authored-value extension decodes inline half and signed/unsigned 64-bit scalars,
25
+ string arrays, and compressed half/double arrays. Dictionary array support is an
26
+ explicit allowlist; unsupported representations fail before payload decoding.
27
+ Half integer compression uses ties-to-even rounding, and lookup indices are checked.
@@ -0,0 +1,21 @@
1
+ The MIT License
2
+
3
+ Copyright © 2010-2026 three.js authors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,18 @@
1
+ // SPDX-License-Identifier: MIT
2
+ // Copyright (c) vis.gl contributors
3
+ /** Typed boundary around the pinned, dependency-free THREE r187 crate decoder. */
4
+ export class USDCParser {
5
+ /** Decodes binary crate specifications; unsupported value encodings throw. */
6
+ parseData(buffer: ArrayBuffer): {
7
+ /** Specifications keyed by absolute Sdf path. */
8
+ specsByPath: Record<
9
+ string,
10
+ {
11
+ /** SdfSpecType numeric identifier. */
12
+ specType: number;
13
+ /** Authored field values before USDStage conversion. */
14
+ fields: Record<string, unknown>;
15
+ }
16
+ >;
17
+ };
18
+ }