@loaders.gl/gltf 4.0.0-alpha.5 → 4.0.0-alpha.6

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 (292) hide show
  1. package/dist/bundle.js +2 -2
  2. package/dist/dist.min.js +2037 -1013
  3. package/dist/es5/bundle.js +6 -0
  4. package/dist/es5/bundle.js.map +1 -0
  5. package/dist/es5/glb-loader.js +56 -0
  6. package/dist/es5/glb-loader.js.map +1 -0
  7. package/dist/es5/glb-writer.js +35 -0
  8. package/dist/es5/glb-writer.js.map +1 -0
  9. package/dist/es5/gltf-loader.js +81 -0
  10. package/dist/es5/gltf-loader.js.map +1 -0
  11. package/dist/es5/gltf-writer.js +35 -0
  12. package/dist/es5/gltf-writer.js.map +1 -0
  13. package/dist/es5/index.js +49 -0
  14. package/dist/es5/index.js.map +1 -0
  15. package/dist/es5/lib/api/gltf-extensions.js +109 -0
  16. package/dist/es5/lib/api/gltf-extensions.js.map +1 -0
  17. package/dist/es5/lib/api/gltf-scenegraph.js +578 -0
  18. package/dist/es5/lib/api/gltf-scenegraph.js.map +1 -0
  19. package/dist/es5/lib/api/normalize-gltf-v1.js +331 -0
  20. package/dist/es5/lib/api/normalize-gltf-v1.js.map +1 -0
  21. package/dist/es5/lib/api/post-process-gltf.js +422 -0
  22. package/dist/es5/lib/api/post-process-gltf.js.map +1 -0
  23. package/dist/es5/lib/encoders/encode-glb.js +61 -0
  24. package/dist/es5/lib/encoders/encode-glb.js.map +1 -0
  25. package/dist/es5/lib/encoders/encode-gltf.js +21 -0
  26. package/dist/es5/lib/encoders/encode-gltf.js.map +1 -0
  27. package/dist/es5/lib/extensions/EXT_meshopt_compression.js +96 -0
  28. package/dist/es5/lib/extensions/EXT_meshopt_compression.js.map +1 -0
  29. package/dist/es5/lib/extensions/EXT_texture_webp.js +44 -0
  30. package/dist/es5/lib/extensions/EXT_texture_webp.js.map +1 -0
  31. package/dist/es5/lib/extensions/KHR_binary_gltf.js +40 -0
  32. package/dist/es5/lib/extensions/KHR_binary_gltf.js.map +1 -0
  33. package/dist/es5/lib/extensions/KHR_draco_mesh_compression.js +246 -0
  34. package/dist/es5/lib/extensions/KHR_draco_mesh_compression.js.map +1 -0
  35. package/dist/es5/lib/extensions/KHR_texture_basisu.js +37 -0
  36. package/dist/es5/lib/extensions/KHR_texture_basisu.js.map +1 -0
  37. package/dist/es5/lib/extensions/KHR_texture_transform.js +229 -0
  38. package/dist/es5/lib/extensions/KHR_texture_transform.js.map +1 -0
  39. package/dist/es5/lib/extensions/deprecated/EXT_feature_metadata.js +103 -0
  40. package/dist/es5/lib/extensions/deprecated/EXT_feature_metadata.js.map +1 -0
  41. package/dist/es5/lib/extensions/deprecated/KHR_lights_punctual.js +99 -0
  42. package/dist/es5/lib/extensions/deprecated/KHR_lights_punctual.js.map +1 -0
  43. package/dist/es5/lib/extensions/deprecated/KHR_materials_unlit.js +76 -0
  44. package/dist/es5/lib/extensions/deprecated/KHR_materials_unlit.js.map +1 -0
  45. package/dist/es5/lib/extensions/deprecated/KHR_techniques_webgl.js +113 -0
  46. package/dist/es5/lib/extensions/deprecated/KHR_techniques_webgl.js.map +1 -0
  47. package/dist/es5/lib/gltf-utils/get-typed-array.js +23 -0
  48. package/dist/es5/lib/gltf-utils/get-typed-array.js.map +1 -0
  49. package/dist/es5/lib/gltf-utils/gltf-attribute-utils.js +68 -0
  50. package/dist/es5/lib/gltf-utils/gltf-attribute-utils.js.map +1 -0
  51. package/dist/es5/lib/gltf-utils/gltf-constants.js +48 -0
  52. package/dist/es5/lib/gltf-utils/gltf-constants.js.map +1 -0
  53. package/dist/es5/lib/gltf-utils/gltf-utils.js +62 -0
  54. package/dist/es5/lib/gltf-utils/gltf-utils.js.map +1 -0
  55. package/dist/es5/lib/gltf-utils/resolve-url.js +18 -0
  56. package/dist/es5/lib/gltf-utils/resolve-url.js.map +1 -0
  57. package/dist/es5/lib/parsers/parse-glb.js +120 -0
  58. package/dist/es5/lib/parsers/parse-glb.js.map +1 -0
  59. package/dist/es5/lib/parsers/parse-gltf.js +287 -0
  60. package/dist/es5/lib/parsers/parse-gltf.js.map +1 -0
  61. package/dist/es5/lib/types/glb-types.js +2 -0
  62. package/dist/es5/lib/types/glb-types.js.map +1 -0
  63. package/dist/es5/lib/types/gltf-json-schema.js +2 -0
  64. package/dist/es5/lib/types/gltf-json-schema.js.map +1 -0
  65. package/dist/es5/lib/types/gltf-postprocessed-schema.js +2 -0
  66. package/dist/es5/lib/types/gltf-postprocessed-schema.js.map +1 -0
  67. package/dist/es5/lib/types/gltf-types.js +2 -0
  68. package/dist/es5/lib/types/gltf-types.js.map +1 -0
  69. package/dist/es5/lib/utils/assert.js +12 -0
  70. package/dist/es5/lib/utils/assert.js.map +1 -0
  71. package/dist/es5/lib/utils/version.js +9 -0
  72. package/dist/es5/lib/utils/version.js.map +1 -0
  73. package/dist/es5/meshopt/meshopt-decoder.js +215 -0
  74. package/dist/es5/meshopt/meshopt-decoder.js.map +1 -0
  75. package/dist/es5/webp/webp.js +83 -0
  76. package/dist/es5/webp/webp.js.map +1 -0
  77. package/dist/esm/bundle.js +4 -0
  78. package/dist/esm/bundle.js.map +1 -0
  79. package/dist/esm/glb-loader.js +31 -0
  80. package/dist/esm/glb-loader.js.map +1 -0
  81. package/dist/esm/glb-writer.js +27 -0
  82. package/dist/esm/glb-writer.js.map +1 -0
  83. package/dist/esm/gltf-loader.js +51 -0
  84. package/dist/esm/gltf-loader.js.map +1 -0
  85. package/dist/esm/gltf-writer.js +28 -0
  86. package/dist/esm/gltf-writer.js.map +1 -0
  87. package/dist/esm/index.js +7 -0
  88. package/dist/esm/index.js.map +1 -0
  89. package/dist/esm/lib/api/gltf-extensions.js +35 -0
  90. package/dist/esm/lib/api/gltf-extensions.js.map +1 -0
  91. package/dist/esm/lib/api/gltf-scenegraph.js +441 -0
  92. package/dist/esm/lib/api/gltf-scenegraph.js.map +1 -0
  93. package/dist/esm/lib/api/normalize-gltf-v1.js +204 -0
  94. package/dist/esm/lib/api/normalize-gltf-v1.js.map +1 -0
  95. package/dist/esm/lib/api/post-process-gltf.js +341 -0
  96. package/dist/esm/lib/api/post-process-gltf.js.map +1 -0
  97. package/dist/esm/lib/encoders/encode-glb.js +54 -0
  98. package/dist/esm/lib/encoders/encode-glb.js.map +1 -0
  99. package/dist/esm/lib/encoders/encode-gltf.js +14 -0
  100. package/dist/esm/lib/encoders/encode-gltf.js.map +1 -0
  101. package/dist/esm/lib/extensions/EXT_meshopt_compression.js +42 -0
  102. package/dist/esm/lib/extensions/EXT_meshopt_compression.js.map +1 -0
  103. package/dist/esm/lib/extensions/EXT_texture_webp.js +25 -0
  104. package/dist/esm/lib/extensions/EXT_texture_webp.js.map +1 -0
  105. package/dist/esm/lib/extensions/KHR_binary_gltf.js +21 -0
  106. package/dist/esm/lib/extensions/KHR_binary_gltf.js.map +1 -0
  107. package/dist/esm/lib/extensions/KHR_draco_mesh_compression.js +110 -0
  108. package/dist/esm/lib/extensions/KHR_draco_mesh_compression.js.map +1 -0
  109. package/dist/esm/lib/extensions/KHR_texture_basisu.js +18 -0
  110. package/dist/esm/lib/extensions/KHR_texture_basisu.js.map +1 -0
  111. package/dist/esm/lib/extensions/KHR_texture_transform.js +181 -0
  112. package/dist/esm/lib/extensions/KHR_texture_transform.js.map +1 -0
  113. package/dist/esm/lib/extensions/deprecated/EXT_feature_metadata.js +77 -0
  114. package/dist/esm/lib/extensions/deprecated/EXT_feature_metadata.js.map +1 -0
  115. package/dist/esm/lib/extensions/deprecated/KHR_lights_punctual.js +42 -0
  116. package/dist/esm/lib/extensions/deprecated/KHR_lights_punctual.js.map +1 -0
  117. package/dist/esm/lib/extensions/deprecated/KHR_materials_unlit.js +33 -0
  118. package/dist/esm/lib/extensions/deprecated/KHR_materials_unlit.js.map +1 -0
  119. package/dist/esm/lib/extensions/deprecated/KHR_techniques_webgl.js +61 -0
  120. package/dist/esm/lib/extensions/deprecated/KHR_techniques_webgl.js.map +1 -0
  121. package/dist/esm/lib/gltf-utils/get-typed-array.js +16 -0
  122. package/dist/esm/lib/gltf-utils/get-typed-array.js.map +1 -0
  123. package/dist/esm/lib/gltf-utils/gltf-attribute-utils.js +62 -0
  124. package/dist/esm/lib/gltf-utils/gltf-attribute-utils.js.map +1 -0
  125. package/dist/esm/lib/gltf-utils/gltf-constants.js +37 -0
  126. package/dist/esm/lib/gltf-utils/gltf-constants.js.map +1 -0
  127. package/dist/esm/lib/gltf-utils/gltf-utils.js +54 -0
  128. package/dist/esm/lib/gltf-utils/gltf-utils.js.map +1 -0
  129. package/dist/esm/lib/gltf-utils/resolve-url.js +12 -0
  130. package/dist/esm/lib/gltf-utils/resolve-url.js.map +1 -0
  131. package/dist/esm/lib/parsers/parse-glb.js +114 -0
  132. package/dist/esm/lib/parsers/parse-glb.js.map +1 -0
  133. package/dist/esm/lib/parsers/parse-gltf.js +156 -0
  134. package/dist/esm/lib/parsers/parse-gltf.js.map +1 -0
  135. package/dist/esm/lib/types/glb-types.js +2 -0
  136. package/dist/esm/lib/types/glb-types.js.map +1 -0
  137. package/dist/esm/lib/types/gltf-json-schema.js +2 -0
  138. package/dist/esm/lib/types/gltf-json-schema.js.map +1 -0
  139. package/dist/esm/lib/types/gltf-postprocessed-schema.js +2 -0
  140. package/dist/esm/lib/types/gltf-postprocessed-schema.js.map +1 -0
  141. package/dist/esm/lib/types/gltf-types.js +2 -0
  142. package/dist/esm/lib/types/gltf-types.js.map +1 -0
  143. package/dist/esm/lib/utils/assert.js +6 -0
  144. package/dist/esm/lib/utils/assert.js.map +1 -0
  145. package/dist/esm/lib/utils/version.js +2 -0
  146. package/dist/esm/lib/utils/version.js.map +1 -0
  147. package/dist/esm/meshopt/meshopt-decoder.js +91 -0
  148. package/dist/esm/meshopt/meshopt-decoder.js.map +1 -0
  149. package/dist/esm/meshopt/meshopt-encoder.ts.disabled +409 -0
  150. package/dist/esm/webp/webp.js +25 -0
  151. package/dist/esm/webp/webp.js.map +1 -0
  152. package/dist/glb-loader.d.ts +3 -2
  153. package/dist/glb-loader.d.ts.map +1 -1
  154. package/dist/glb-loader.js +33 -28
  155. package/dist/glb-writer.d.ts +7 -16
  156. package/dist/glb-writer.d.ts.map +1 -1
  157. package/dist/glb-writer.js +34 -26
  158. package/dist/gltf-loader.d.ts +3 -2
  159. package/dist/gltf-loader.d.ts.map +1 -1
  160. package/dist/gltf-loader.js +46 -43
  161. package/dist/gltf-writer.d.ts +2 -2
  162. package/dist/gltf-writer.d.ts.map +1 -1
  163. package/dist/gltf-writer.js +29 -26
  164. package/dist/index.d.ts +2 -1
  165. package/dist/index.d.ts.map +1 -1
  166. package/dist/index.js +21 -7
  167. package/dist/lib/api/gltf-extensions.d.ts +6 -1
  168. package/dist/lib/api/gltf-extensions.d.ts.map +1 -1
  169. package/dist/lib/api/gltf-extensions.js +79 -31
  170. package/dist/lib/api/gltf-scenegraph.d.ts +5 -11
  171. package/dist/lib/api/gltf-scenegraph.d.ts.map +1 -1
  172. package/dist/lib/api/gltf-scenegraph.js +563 -512
  173. package/dist/lib/api/normalize-gltf-v1.d.ts.map +1 -1
  174. package/dist/lib/api/normalize-gltf-v1.js +278 -229
  175. package/dist/lib/api/post-process-gltf.js +324 -376
  176. package/dist/lib/encoders/encode-glb.d.ts +2 -1
  177. package/dist/lib/encoders/encode-glb.d.ts.map +1 -1
  178. package/dist/lib/encoders/encode-glb.js +56 -58
  179. package/dist/lib/encoders/encode-gltf.d.ts +18 -0
  180. package/dist/lib/encoders/encode-gltf.d.ts.map +1 -1
  181. package/dist/lib/encoders/encode-gltf.js +33 -12
  182. package/dist/lib/extensions/EXT_meshopt_compression.d.ts +0 -3
  183. package/dist/lib/extensions/EXT_meshopt_compression.d.ts.map +1 -1
  184. package/dist/lib/extensions/EXT_meshopt_compression.js +39 -50
  185. package/dist/lib/extensions/EXT_texture_webp.d.ts.map +1 -1
  186. package/dist/lib/extensions/EXT_texture_webp.js +35 -28
  187. package/dist/lib/extensions/KHR_binary_gltf.js +39 -23
  188. package/dist/lib/extensions/KHR_draco_mesh_compression.js +126 -111
  189. package/dist/lib/extensions/KHR_texture_basisu.d.ts.map +1 -1
  190. package/dist/lib/extensions/KHR_texture_basisu.js +29 -19
  191. package/dist/lib/extensions/KHR_texture_transform.d.ts +13 -0
  192. package/dist/lib/extensions/KHR_texture_transform.d.ts.map +1 -0
  193. package/dist/lib/extensions/KHR_texture_transform.js +230 -0
  194. package/dist/lib/extensions/deprecated/EXT_feature_metadata.d.ts +6 -0
  195. package/dist/lib/extensions/deprecated/EXT_feature_metadata.d.ts.map +1 -0
  196. package/dist/lib/extensions/deprecated/EXT_feature_metadata.js +118 -0
  197. package/dist/lib/extensions/deprecated/KHR_lights_punctual.js +57 -44
  198. package/dist/lib/extensions/deprecated/KHR_materials_unlit.js +42 -32
  199. package/dist/lib/extensions/deprecated/KHR_techniques_webgl.d.ts.map +1 -1
  200. package/dist/lib/extensions/deprecated/KHR_techniques_webgl.js +76 -62
  201. package/dist/lib/gltf-utils/get-typed-array.js +39 -14
  202. package/dist/lib/gltf-utils/gltf-attribute-utils.js +65 -65
  203. package/dist/lib/gltf-utils/gltf-constants.d.ts +17 -0
  204. package/dist/lib/gltf-utils/gltf-constants.d.ts.map +1 -1
  205. package/dist/lib/gltf-utils/gltf-constants.js +38 -32
  206. package/dist/lib/gltf-utils/gltf-utils.js +52 -45
  207. package/dist/lib/gltf-utils/resolve-url.js +17 -15
  208. package/dist/lib/parsers/parse-glb.d.ts +1 -1
  209. package/dist/lib/parsers/parse-glb.d.ts.map +1 -1
  210. package/dist/lib/parsers/parse-glb.js +120 -107
  211. package/dist/lib/parsers/parse-gltf.d.ts +2 -2
  212. package/dist/lib/parsers/parse-gltf.d.ts.map +1 -1
  213. package/dist/lib/parsers/parse-gltf.js +187 -154
  214. package/dist/lib/types/glb-types.d.ts +3 -3
  215. package/dist/lib/types/glb-types.d.ts.map +1 -1
  216. package/dist/lib/types/glb-types.js +2 -2
  217. package/dist/lib/types/gltf-json-schema.d.ts +396 -11
  218. package/dist/lib/types/gltf-json-schema.d.ts.map +1 -1
  219. package/dist/lib/types/gltf-json-schema.js +4 -2
  220. package/dist/lib/types/gltf-postprocessed-schema.d.ts +10 -10
  221. package/dist/lib/types/gltf-postprocessed-schema.d.ts.map +1 -1
  222. package/dist/lib/types/gltf-postprocessed-schema.js +4 -2
  223. package/dist/lib/types/gltf-types.d.ts +8 -5
  224. package/dist/lib/types/gltf-types.d.ts.map +1 -1
  225. package/dist/lib/types/gltf-types.js +3 -2
  226. package/dist/lib/utils/assert.js +11 -5
  227. package/dist/lib/utils/version.js +7 -2
  228. package/dist/meshopt/meshopt-decoder.js +97 -82
  229. package/dist/webp/webp.d.ts +1 -1
  230. package/dist/webp/webp.d.ts.map +1 -1
  231. package/dist/webp/webp.js +32 -23
  232. package/package.json +9 -8
  233. package/src/glb-loader.ts +1 -1
  234. package/src/glb-writer.ts +9 -3
  235. package/src/gltf-writer.ts +2 -2
  236. package/src/index.ts +10 -1
  237. package/src/lib/api/gltf-extensions.ts +13 -2
  238. package/src/lib/api/gltf-scenegraph.ts +21 -12
  239. package/src/lib/api/normalize-gltf-v1.ts +2 -1
  240. package/src/lib/encoders/encode-glb.ts +8 -1
  241. package/src/lib/encoders/encode-gltf.ts +18 -9
  242. package/src/lib/extensions/EXT_meshopt_compression.ts +12 -19
  243. package/src/lib/extensions/EXT_texture_webp.ts +3 -2
  244. package/src/lib/extensions/KHR_binary_gltf.ts +1 -1
  245. package/src/lib/extensions/KHR_draco_mesh_compression.ts +1 -1
  246. package/src/lib/extensions/KHR_texture_basisu.ts +1 -0
  247. package/src/lib/extensions/KHR_texture_transform.ts +305 -0
  248. package/src/lib/extensions/deprecated/EXT_feature_metadata.ts +163 -0
  249. package/src/lib/extensions/deprecated/KHR_materials_unlit.ts +3 -3
  250. package/src/lib/extensions/deprecated/KHR_techniques_webgl.ts +1 -0
  251. package/src/lib/gltf-utils/gltf-constants.ts +2 -2
  252. package/src/lib/parsers/parse-gltf.ts +10 -1
  253. package/src/lib/types/glb-types.ts +1 -1
  254. package/src/lib/types/gltf-json-schema.ts +434 -5
  255. package/src/lib/types/gltf-postprocessed-schema.ts +9 -9
  256. package/src/lib/types/gltf-types.ts +24 -3
  257. package/dist/bundle.js.map +0 -1
  258. package/dist/glb-loader.js.map +0 -1
  259. package/dist/glb-writer.js.map +0 -1
  260. package/dist/gltf-loader.js.map +0 -1
  261. package/dist/gltf-writer.js.map +0 -1
  262. package/dist/index.js.map +0 -1
  263. package/dist/lib/api/gltf-extensions.js.map +0 -1
  264. package/dist/lib/api/gltf-scenegraph.js.map +0 -1
  265. package/dist/lib/api/normalize-gltf-v1.js.map +0 -1
  266. package/dist/lib/api/post-process-gltf.js.map +0 -1
  267. package/dist/lib/encoders/encode-glb.js.map +0 -1
  268. package/dist/lib/encoders/encode-gltf.js.map +0 -1
  269. package/dist/lib/extensions/EXT_meshopt_compression.js.map +0 -1
  270. package/dist/lib/extensions/EXT_texture_webp.js.map +0 -1
  271. package/dist/lib/extensions/KHR_binary_gltf.js.map +0 -1
  272. package/dist/lib/extensions/KHR_draco_mesh_compression.js.map +0 -1
  273. package/dist/lib/extensions/KHR_texture_basisu.js.map +0 -1
  274. package/dist/lib/extensions/deprecated/KHR_lights_punctual.js.map +0 -1
  275. package/dist/lib/extensions/deprecated/KHR_materials_unlit.js.map +0 -1
  276. package/dist/lib/extensions/deprecated/KHR_techniques_webgl.js.map +0 -1
  277. package/dist/lib/gltf-utils/get-typed-array.js.map +0 -1
  278. package/dist/lib/gltf-utils/gltf-attribute-utils.js.map +0 -1
  279. package/dist/lib/gltf-utils/gltf-constants.js.map +0 -1
  280. package/dist/lib/gltf-utils/gltf-utils.js.map +0 -1
  281. package/dist/lib/gltf-utils/resolve-url.js.map +0 -1
  282. package/dist/lib/parsers/parse-glb.js.map +0 -1
  283. package/dist/lib/parsers/parse-gltf.js.map +0 -1
  284. package/dist/lib/types/glb-types.js.map +0 -1
  285. package/dist/lib/types/gltf-json-schema.js.map +0 -1
  286. package/dist/lib/types/gltf-postprocessed-schema.js.map +0 -1
  287. package/dist/lib/types/gltf-types.js.map +0 -1
  288. package/dist/lib/utils/assert.js.map +0 -1
  289. package/dist/lib/utils/version.js.map +0 -1
  290. package/dist/meshopt/meshopt-decoder.js.map +0 -1
  291. package/dist/webp/webp.js.map +0 -1
  292. /package/dist/{meshopt → es5/meshopt}/meshopt-encoder.ts.disabled +0 -0
@@ -1,170 +1,203 @@
1
- import { BasisLoader, selectSupportedBasisFormat } from '@loaders.gl/textures';
2
- import { ImageLoader } from '@loaders.gl/images';
3
- import { parseJSON, sliceArrayBuffer } from '@loaders.gl/loader-utils';
4
- import { assert } from '../utils/assert';
5
- import { resolveUrl } from '../gltf-utils/resolve-url';
6
- import { getTypedArrayForBufferView } from '../gltf-utils/get-typed-array';
7
- import { preprocessExtensions, decodeExtensions } from '../api/gltf-extensions';
8
- import { normalizeGLTFV1 } from '../api/normalize-gltf-v1';
9
- import { postProcessGLTF } from '../api/post-process-gltf';
10
- import parseGLBSync, { isGLB } from './parse-glb';
11
- export function isGLTF(arrayBuffer, options) {
12
- const byteOffset = 0;
13
- return isGLB(arrayBuffer, byteOffset, options);
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.parseGLTF = exports.isGLTF = void 0;
27
+ const textures_1 = require("@loaders.gl/textures");
28
+ const images_1 = require("@loaders.gl/images");
29
+ const loader_utils_1 = require("@loaders.gl/loader-utils");
30
+ const assert_1 = require("../utils/assert");
31
+ const resolve_url_1 = require("../gltf-utils/resolve-url");
32
+ const get_typed_array_1 = require("../gltf-utils/get-typed-array");
33
+ const gltf_extensions_1 = require("../api/gltf-extensions");
34
+ const normalize_gltf_v1_1 = require("../api/normalize-gltf-v1");
35
+ const post_process_gltf_1 = require("../api/post-process-gltf");
36
+ const parse_glb_1 = __importStar(require("./parse-glb"));
37
+ // export type GLTFOptions = {
38
+ // gltf?: GLTFParseOptions;
39
+ // };
40
+ function isGLTF(arrayBuffer, options) {
41
+ const byteOffset = 0;
42
+ return (0, parse_glb_1.isGLB)(arrayBuffer, byteOffset, options);
14
43
  }
15
- export async function parseGLTF(gltf, arrayBufferOrString, byteOffset = 0, options, context) {
16
- var _options$gltf, _options$gltf2, _options$gltf3, _options$gltf4;
17
-
18
- parseGLTFContainerSync(gltf, arrayBufferOrString, byteOffset, options);
19
- normalizeGLTFV1(gltf, {
20
- normalize: options === null || options === void 0 ? void 0 : (_options$gltf = options.gltf) === null || _options$gltf === void 0 ? void 0 : _options$gltf.normalize
21
- });
22
- preprocessExtensions(gltf, options, context);
23
- const promises = [];
24
-
25
- if (options !== null && options !== void 0 && (_options$gltf2 = options.gltf) !== null && _options$gltf2 !== void 0 && _options$gltf2.loadBuffers && gltf.json.buffers) {
26
- await loadBuffers(gltf, options, context);
27
- }
28
-
29
- if (options !== null && options !== void 0 && (_options$gltf3 = options.gltf) !== null && _options$gltf3 !== void 0 && _options$gltf3.loadImages) {
30
- const promise = loadImages(gltf, options, context);
44
+ exports.isGLTF = isGLTF;
45
+ async function parseGLTF(gltf, arrayBufferOrString, byteOffset = 0, options, context) {
46
+ parseGLTFContainerSync(gltf, arrayBufferOrString, byteOffset, options);
47
+ (0, normalize_gltf_v1_1.normalizeGLTFV1)(gltf, { normalize: options?.gltf?.normalize });
48
+ (0, gltf_extensions_1.preprocessExtensions)(gltf, options, context);
49
+ const promises = [];
50
+ // Load linked buffers asynchronously and decodes base64 buffers in parallel
51
+ if (options?.gltf?.loadBuffers && gltf.json.buffers) {
52
+ await loadBuffers(gltf, options, context);
53
+ }
54
+ if (options?.gltf?.loadImages) {
55
+ const promise = loadImages(gltf, options, context);
56
+ promises.push(promise);
57
+ }
58
+ const promise = (0, gltf_extensions_1.decodeExtensions)(gltf, options, context);
31
59
  promises.push(promise);
32
- }
33
-
34
- const promise = decodeExtensions(gltf, options, context);
35
- promises.push(promise);
36
- await Promise.all(promises);
37
- return options !== null && options !== void 0 && (_options$gltf4 = options.gltf) !== null && _options$gltf4 !== void 0 && _options$gltf4.postProcess ? postProcessGLTF(gltf, options) : gltf;
60
+ // Parallelize image loading and buffer loading/extension decoding
61
+ await Promise.all(promises);
62
+ // Post processing resolves indices to objects, buffers
63
+ return options?.gltf?.postProcess ? (0, post_process_gltf_1.postProcessGLTF)(gltf, options) : gltf;
38
64
  }
39
-
65
+ exports.parseGLTF = parseGLTF;
66
+ // `data` - can be ArrayBuffer (GLB), ArrayBuffer (Binary JSON), String (JSON), or Object (parsed JSON)
40
67
  function parseGLTFContainerSync(gltf, data, byteOffset, options) {
41
- if (options.uri) {
42
- gltf.baseUri = options.uri;
43
- }
44
-
45
- if (data instanceof ArrayBuffer && !isGLB(data, byteOffset, options)) {
46
- const textDecoder = new TextDecoder();
47
- data = textDecoder.decode(data);
48
- }
49
-
50
- if (typeof data === 'string') {
51
- gltf.json = parseJSON(data);
52
- } else if (data instanceof ArrayBuffer) {
53
- const glb = {};
54
- byteOffset = parseGLBSync(glb, data, byteOffset, options.glb);
55
- assert(glb.type === 'glTF', "Invalid GLB magic string ".concat(glb.type));
56
- gltf._glb = glb;
57
- gltf.json = glb.json;
58
- } else {
59
- assert(false, 'GLTF: must be ArrayBuffer or string');
60
- }
61
-
62
- const buffers = gltf.json.buffers || [];
63
- gltf.buffers = new Array(buffers.length).fill(null);
64
-
65
- if (gltf._glb && gltf._glb.header.hasBinChunk) {
66
- const {
67
- binChunks
68
- } = gltf._glb;
69
- gltf.buffers[0] = {
70
- arrayBuffer: binChunks[0].arrayBuffer,
71
- byteOffset: binChunks[0].byteOffset,
72
- byteLength: binChunks[0].byteLength
73
- };
74
- }
75
-
76
- const images = gltf.json.images || [];
77
- gltf.images = new Array(images.length).fill({});
68
+ // Initialize gltf container
69
+ if (options.uri) {
70
+ gltf.baseUri = options.uri;
71
+ }
72
+ // If data is binary and starting with magic bytes, assume binary JSON text, convert to string
73
+ if (data instanceof ArrayBuffer && !(0, parse_glb_1.isGLB)(data, byteOffset, options)) {
74
+ const textDecoder = new TextDecoder();
75
+ data = textDecoder.decode(data);
76
+ }
77
+ if (typeof data === 'string') {
78
+ // If string, try to parse as JSON
79
+ gltf.json = (0, loader_utils_1.parseJSON)(data);
80
+ }
81
+ else if (data instanceof ArrayBuffer) {
82
+ // If still ArrayBuffer, parse as GLB container
83
+ const glb = {};
84
+ byteOffset = (0, parse_glb_1.default)(glb, data, byteOffset, options.glb);
85
+ (0, assert_1.assert)(glb.type === 'glTF', `Invalid GLB magic string ${glb.type}`);
86
+ gltf._glb = glb;
87
+ gltf.json = glb.json;
88
+ }
89
+ else {
90
+ (0, assert_1.assert)(false, 'GLTF: must be ArrayBuffer or string');
91
+ }
92
+ // Populate buffers
93
+ // Create an external buffers array to hold binary data
94
+ const buffers = gltf.json.buffers || [];
95
+ gltf.buffers = new Array(buffers.length).fill(null);
96
+ // Populates JSON and some bin chunk info
97
+ if (gltf._glb && gltf._glb.header.hasBinChunk) {
98
+ const { binChunks } = gltf._glb;
99
+ gltf.buffers[0] = {
100
+ arrayBuffer: binChunks[0].arrayBuffer,
101
+ byteOffset: binChunks[0].byteOffset,
102
+ byteLength: binChunks[0].byteLength
103
+ };
104
+ // TODO - this modifies JSON and is a post processing thing
105
+ // gltf.json.buffers[0].data = gltf.buffers[0].arrayBuffer;
106
+ // gltf.json.buffers[0].byteOffset = gltf.buffers[0].byteOffset;
107
+ }
108
+ // Populate images
109
+ const images = gltf.json.images || [];
110
+ gltf.images = new Array(images.length).fill({});
78
111
  }
79
-
112
+ /** Asynchronously fetch and parse buffers, store in buffers array outside of json
113
+ * TODO - traverse gltf and determine which buffers are actually needed
114
+ */
80
115
  async function loadBuffers(gltf, options, context) {
81
- const buffers = gltf.json.buffers || [];
82
-
83
- for (let i = 0; i < buffers.length; ++i) {
84
- const buffer = buffers[i];
85
-
86
- if (buffer.uri) {
87
- var _context$fetch, _response$arrayBuffer;
88
-
89
- const {
90
- fetch
91
- } = context;
92
- assert(fetch);
93
- const uri = resolveUrl(buffer.uri, options);
94
- const response = await (context === null || context === void 0 ? void 0 : (_context$fetch = context.fetch) === null || _context$fetch === void 0 ? void 0 : _context$fetch.call(context, uri));
95
- const arrayBuffer = await (response === null || response === void 0 ? void 0 : (_response$arrayBuffer = response.arrayBuffer) === null || _response$arrayBuffer === void 0 ? void 0 : _response$arrayBuffer.call(response));
96
- gltf.buffers[i] = {
97
- arrayBuffer,
98
- byteOffset: 0,
99
- byteLength: arrayBuffer.byteLength
100
- };
101
- delete buffer.uri;
116
+ // TODO
117
+ const buffers = gltf.json.buffers || [];
118
+ for (let i = 0; i < buffers.length; ++i) {
119
+ const buffer = buffers[i];
120
+ if (buffer.uri) {
121
+ const { fetch } = context;
122
+ (0, assert_1.assert)(fetch);
123
+ const uri = (0, resolve_url_1.resolveUrl)(buffer.uri, options);
124
+ const response = await context?.fetch?.(uri);
125
+ const arrayBuffer = await response?.arrayBuffer?.();
126
+ gltf.buffers[i] = {
127
+ arrayBuffer,
128
+ byteOffset: 0,
129
+ byteLength: arrayBuffer.byteLength
130
+ };
131
+ delete buffer.uri;
132
+ }
133
+ else if (gltf.buffers[i] === null) {
134
+ gltf.buffers[i] = {
135
+ arrayBuffer: new ArrayBuffer(buffer.byteLength),
136
+ byteOffset: 0,
137
+ byteLength: buffer.byteLength
138
+ };
139
+ }
102
140
  }
103
- }
104
141
  }
105
-
142
+ /**
143
+ * Loads all images
144
+ * TODO - traverse gltf and determine which images are actually needed
145
+ * @param gltf
146
+ * @param options
147
+ * @param context
148
+ * @returns
149
+ */
106
150
  async function loadImages(gltf, options, context) {
107
- const imageIndices = getReferencesImageIndices(gltf);
108
- const images = gltf.json.images || [];
109
- const promises = [];
110
-
111
- for (const imageIndex of imageIndices) {
112
- promises.push(loadImage(gltf, images[imageIndex], imageIndex, options, context));
113
- }
114
-
115
- return await Promise.all(promises);
151
+ const imageIndices = getReferencesImageIndices(gltf);
152
+ const images = gltf.json.images || [];
153
+ const promises = [];
154
+ for (const imageIndex of imageIndices) {
155
+ promises.push(loadImage(gltf, images[imageIndex], imageIndex, options, context));
156
+ }
157
+ return await Promise.all(promises);
116
158
  }
117
-
159
+ /** Make sure we only load images that are actually referenced by textures */
118
160
  function getReferencesImageIndices(gltf) {
119
- const imageIndices = new Set();
120
- const textures = gltf.json.textures || [];
121
-
122
- for (const texture of textures) {
123
- if (texture.source !== undefined) {
124
- imageIndices.add(texture.source);
161
+ const imageIndices = new Set();
162
+ const textures = gltf.json.textures || [];
163
+ for (const texture of textures) {
164
+ if (texture.source !== undefined) {
165
+ imageIndices.add(texture.source);
166
+ }
125
167
  }
126
- }
127
-
128
- return Array.from(imageIndices).sort();
168
+ return Array.from(imageIndices).sort();
129
169
  }
130
-
170
+ /** Asynchronously fetches and parses one image, store in images array outside of json */
131
171
  async function loadImage(gltf, image, index, options, context) {
132
- const {
133
- fetch,
134
- parse
135
- } = context;
136
- let arrayBuffer;
137
-
138
- if (image.uri) {
139
- const uri = resolveUrl(image.uri, options);
140
- const response = await fetch(uri);
141
- arrayBuffer = await response.arrayBuffer();
142
- }
143
-
144
- if (Number.isFinite(image.bufferView)) {
145
- const array = getTypedArrayForBufferView(gltf.json, gltf.buffers, image.bufferView);
146
- arrayBuffer = sliceArrayBuffer(array.buffer, array.byteOffset, array.byteLength);
147
- }
148
-
149
- assert(arrayBuffer, 'glTF image has no data');
150
- let parsedImage = await parse(arrayBuffer, [ImageLoader, BasisLoader], {
151
- mimeType: image.mimeType,
152
- basis: options.basis || {
153
- format: selectSupportedBasisFormat()
172
+ const { fetch, parse } = context;
173
+ let arrayBuffer;
174
+ if (image.uri && !image.hasOwnProperty('bufferView')) {
175
+ const uri = (0, resolve_url_1.resolveUrl)(image.uri, options);
176
+ const response = await fetch(uri);
177
+ arrayBuffer = await response.arrayBuffer();
178
+ image.bufferView = {
179
+ data: arrayBuffer
180
+ };
181
+ }
182
+ if (Number.isFinite(image.bufferView)) {
183
+ const array = (0, get_typed_array_1.getTypedArrayForBufferView)(gltf.json, gltf.buffers, image.bufferView);
184
+ arrayBuffer = (0, loader_utils_1.sliceArrayBuffer)(array.buffer, array.byteOffset, array.byteLength);
185
+ }
186
+ (0, assert_1.assert)(arrayBuffer, 'glTF image has no data');
187
+ // Call `parse`
188
+ let parsedImage = await parse(arrayBuffer, [images_1.ImageLoader, textures_1.BasisLoader], { mimeType: image.mimeType, basis: options.basis || { format: (0, textures_1.selectSupportedBasisFormat)() } }, context);
189
+ if (parsedImage && parsedImage[0]) {
190
+ parsedImage = {
191
+ compressed: true,
192
+ mipmaps: false,
193
+ width: parsedImage[0].width,
194
+ height: parsedImage[0].height,
195
+ data: parsedImage[0]
196
+ };
154
197
  }
155
- }, context);
156
-
157
- if (parsedImage && parsedImage[0]) {
158
- parsedImage = {
159
- compressed: true,
160
- mipmaps: false,
161
- width: parsedImage[0].width,
162
- height: parsedImage[0].height,
163
- data: parsedImage[0]
164
- };
165
- }
166
-
167
- gltf.images = gltf.images || [];
168
- gltf.images[index] = parsedImage;
198
+ // TODO making sure ImageLoader is overridable by using array of loaders
199
+ // const parsedImage = await parse(arrayBuffer, [ImageLoader]);
200
+ // Store the loaded image
201
+ gltf.images = gltf.images || [];
202
+ gltf.images[index] = parsedImage;
169
203
  }
170
- //# sourceMappingURL=parse-gltf.js.map
@@ -1,9 +1,9 @@
1
- export declare type GLBBinChunk = {
1
+ export type GLBBinChunk = {
2
2
  byteOffset: number;
3
3
  byteLength: number;
4
4
  arrayBuffer: ArrayBuffer;
5
5
  };
6
- export declare type GLB = {
6
+ export type GLB = {
7
7
  type: string;
8
8
  version: number;
9
9
  header: {
@@ -11,7 +11,7 @@ export declare type GLB = {
11
11
  byteLength: number;
12
12
  hasBinChunk: boolean;
13
13
  };
14
- json: {};
14
+ json: Record<string, any>;
15
15
  binChunks: GLBBinChunk[];
16
16
  };
17
17
  //# sourceMappingURL=glb-types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"glb-types.d.ts","sourceRoot":"","sources":["../../../src/lib/types/glb-types.ts"],"names":[],"mappings":"AAAA,oBAAY,WAAW,GAAG;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,WAAW,CAAC;CAC1B,CAAC;AAEF,oBAAY,GAAG,GAAG;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAGhB,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,OAAO,CAAC;KACtB,CAAC;IAGF,IAAI,EAAE,EAAE,CAAC;IACT,SAAS,EAAE,WAAW,EAAE,CAAC;CAC1B,CAAC"}
1
+ {"version":3,"file":"glb-types.d.ts","sourceRoot":"","sources":["../../../src/lib/types/glb-types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,WAAW,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,GAAG,GAAG;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAGhB,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,OAAO,CAAC;KACtB,CAAC;IAGF,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,SAAS,EAAE,WAAW,EAAE,CAAC;CAC1B,CAAC"}
@@ -1,2 +1,2 @@
1
- export {};
2
- //# sourceMappingURL=glb-types.js.map
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });