@carbonenginejs/runtime-resource 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (372) hide show
  1. package/FORMAT-PROVENANCE.md +135 -0
  2. package/LICENSE +21 -0
  3. package/NOTICE +29 -0
  4. package/README.md +241 -0
  5. package/dist/CjsMotherLode.js +56 -0
  6. package/dist/CjsMotherLode.js.map +1 -0
  7. package/dist/CjsResMan.js +740 -0
  8. package/dist/CjsResMan.js.map +1 -0
  9. package/dist/CjsResManQueue.js +214 -0
  10. package/dist/CjsResManQueue.js.map +1 -0
  11. package/dist/CjsResource.js +366 -0
  12. package/dist/CjsResource.js.map +1 -0
  13. package/dist/CjsResourceSource.js +59 -0
  14. package/dist/CjsResourceSource.js.map +1 -0
  15. package/dist/_virtual/_rollupPluginBabelHelpers.js +153 -0
  16. package/dist/_virtual/_rollupPluginBabelHelpers.js.map +1 -0
  17. package/dist/format/CjsFormat.js +178 -0
  18. package/dist/format/CjsFormat.js.map +1 -0
  19. package/dist/format/CjsResourceProbe.js +269 -0
  20. package/dist/format/CjsResourceProbe.js.map +1 -0
  21. package/dist/format/payloadContract.js +173 -0
  22. package/dist/format/payloadContract.js.map +1 -0
  23. package/dist/formats/black/CjsBlackFormat.js +272 -0
  24. package/dist/formats/black/CjsBlackFormat.js.map +1 -0
  25. package/dist/formats/black/core/CjsBlackBinaryReader.js +153 -0
  26. package/dist/formats/black/core/CjsBlackBinaryReader.js.map +1 -0
  27. package/dist/formats/black/core/CjsBlackPropertyReaders.js +382 -0
  28. package/dist/formats/black/core/CjsBlackPropertyReaders.js.map +1 -0
  29. package/dist/formats/black/core/CjsBlackReader.js +760 -0
  30. package/dist/formats/black/core/CjsBlackReader.js.map +1 -0
  31. package/dist/formats/black/core/CjsBlackSchemaRegistry.js +433 -0
  32. package/dist/formats/black/core/CjsBlackSchemaRegistry.js.map +1 -0
  33. package/dist/formats/black/core/black-schema-v1-2026-07-11.json.js +4 -0
  34. package/dist/formats/black/core/black-schema-v1-2026-07-11.json.js.map +1 -0
  35. package/dist/formats/black/core/blackConstants.js +7 -0
  36. package/dist/formats/black/core/blackConstants.js.map +1 -0
  37. package/dist/formats/black/core/blackDefinitions.js +10 -0
  38. package/dist/formats/black/core/blackDefinitions.js.map +1 -0
  39. package/dist/formats/black/core/blackEnums.js +6 -0
  40. package/dist/formats/black/core/blackEnums.js.map +1 -0
  41. package/dist/formats/black/core/blackSchema.js +3 -0
  42. package/dist/formats/black/core/blackSchema.js.map +1 -0
  43. package/dist/formats/black/core/blackVersion.js +22 -0
  44. package/dist/formats/black/core/blackVersion.js.map +1 -0
  45. package/dist/formats/black/core/helpers.js +182 -0
  46. package/dist/formats/black/core/helpers.js.map +1 -0
  47. package/dist/formats/black/core/schema.js +4 -0
  48. package/dist/formats/black/core/schema.js.map +1 -0
  49. package/dist/formats/black/index.js +2 -0
  50. package/dist/formats/black/index.js.map +1 -0
  51. package/dist/formats/bnk/CjsBnkFormat.js +245 -0
  52. package/dist/formats/bnk/CjsBnkFormat.js.map +1 -0
  53. package/dist/formats/bnk/core/helpers.js +354 -0
  54. package/dist/formats/bnk/core/helpers.js.map +1 -0
  55. package/dist/formats/bnk/core/soundbanksInfo.js +246 -0
  56. package/dist/formats/bnk/core/soundbanksInfo.js.map +1 -0
  57. package/dist/formats/bnk/index.js +3 -0
  58. package/dist/formats/bnk/index.js.map +1 -0
  59. package/dist/formats/cmf/CjsCmfFormat.js +491 -0
  60. package/dist/formats/cmf/CjsCmfFormat.js.map +1 -0
  61. package/dist/formats/cmf/core/binary.js +118 -0
  62. package/dist/formats/cmf/core/binary.js.map +1 -0
  63. package/dist/formats/cmf/core/buffers.js +233 -0
  64. package/dist/formats/cmf/core/buffers.js.map +1 -0
  65. package/dist/formats/cmf/core/constants.js +47 -0
  66. package/dist/formats/cmf/core/constants.js.map +1 -0
  67. package/dist/formats/cmf/core/gr2Anim.js +453 -0
  68. package/dist/formats/cmf/core/gr2Anim.js.map +1 -0
  69. package/dist/formats/cmf/core/helpers.js +287 -0
  70. package/dist/formats/cmf/core/helpers.js.map +1 -0
  71. package/dist/formats/cmf/core/pack.js +276 -0
  72. package/dist/formats/cmf/core/pack.js.map +1 -0
  73. package/dist/formats/cmf/core/schema.js +364 -0
  74. package/dist/formats/cmf/core/schema.js.map +1 -0
  75. package/dist/formats/cmf/core/shared.js +268 -0
  76. package/dist/formats/cmf/core/shared.js.map +1 -0
  77. package/dist/formats/cmf/core/writer.js +517 -0
  78. package/dist/formats/cmf/core/writer.js.map +1 -0
  79. package/dist/formats/cmf/index.js +2 -0
  80. package/dist/formats/cmf/index.js.map +1 -0
  81. package/dist/formats/dds/CjsDdsFormat.js +187 -0
  82. package/dist/formats/dds/CjsDdsFormat.js.map +1 -0
  83. package/dist/formats/dds/core/helpers.js +812 -0
  84. package/dist/formats/dds/core/helpers.js.map +1 -0
  85. package/dist/formats/dds/index.js +2 -0
  86. package/dist/formats/dds/index.js.map +1 -0
  87. package/dist/formats/fbx/CjsFbxFormat.js +260 -0
  88. package/dist/formats/fbx/CjsFbxFormat.js.map +1 -0
  89. package/dist/formats/fbx/core/helpers.js +3901 -0
  90. package/dist/formats/fbx/core/helpers.js.map +1 -0
  91. package/dist/formats/fbx/index.js +2 -0
  92. package/dist/formats/fbx/index.js.map +1 -0
  93. package/dist/formats/flac/CjsFlacFormat.js +81 -0
  94. package/dist/formats/flac/CjsFlacFormat.js.map +1 -0
  95. package/dist/formats/flac/core/helpers.js +295 -0
  96. package/dist/formats/flac/core/helpers.js.map +1 -0
  97. package/dist/formats/flac/index.js +2 -0
  98. package/dist/formats/flac/index.js.map +1 -0
  99. package/dist/formats/gif/CjsGifFormat.js +81 -0
  100. package/dist/formats/gif/CjsGifFormat.js.map +1 -0
  101. package/dist/formats/gif/core/helpers.js +360 -0
  102. package/dist/formats/gif/core/helpers.js.map +1 -0
  103. package/dist/formats/gif/index.js +2 -0
  104. package/dist/formats/gif/index.js.map +1 -0
  105. package/dist/formats/gltf/CjsGltfFormat.js +284 -0
  106. package/dist/formats/gltf/CjsGltfFormat.js.map +1 -0
  107. package/dist/formats/gltf/core/helpers.js +292 -0
  108. package/dist/formats/gltf/core/helpers.js.map +1 -0
  109. package/dist/formats/gltf/core/json.js +79 -0
  110. package/dist/formats/gltf/core/json.js.map +1 -0
  111. package/dist/formats/gltf/core/parser.js +666 -0
  112. package/dist/formats/gltf/core/parser.js.map +1 -0
  113. package/dist/formats/gltf/core/targets.js +163 -0
  114. package/dist/formats/gltf/core/targets.js.map +1 -0
  115. package/dist/formats/gltf/index.js +2 -0
  116. package/dist/formats/gltf/index.js.map +1 -0
  117. package/dist/formats/index.js +23 -0
  118. package/dist/formats/index.js.map +1 -0
  119. package/dist/formats/jpeg/CjsJpegFormat.js +200 -0
  120. package/dist/formats/jpeg/CjsJpegFormat.js.map +1 -0
  121. package/dist/formats/jpeg/core/helpers.js +350 -0
  122. package/dist/formats/jpeg/core/helpers.js.map +1 -0
  123. package/dist/formats/jpeg/core/jpeg.js +377 -0
  124. package/dist/formats/jpeg/core/jpeg.js.map +1 -0
  125. package/dist/formats/jpeg/index.js +2 -0
  126. package/dist/formats/jpeg/index.js.map +1 -0
  127. package/dist/formats/mp3/CjsMp3Format.js +186 -0
  128. package/dist/formats/mp3/CjsMp3Format.js.map +1 -0
  129. package/dist/formats/mp3/core/helpers.js +338 -0
  130. package/dist/formats/mp3/core/helpers.js.map +1 -0
  131. package/dist/formats/mp3/index.js +2 -0
  132. package/dist/formats/mp3/index.js.map +1 -0
  133. package/dist/formats/mp4/CjsMp4Format.js +185 -0
  134. package/dist/formats/mp4/CjsMp4Format.js.map +1 -0
  135. package/dist/formats/mp4/core/helpers.js +449 -0
  136. package/dist/formats/mp4/core/helpers.js.map +1 -0
  137. package/dist/formats/mp4/index.js +2 -0
  138. package/dist/formats/mp4/index.js.map +1 -0
  139. package/dist/formats/obj/CjsObjFormat.js +247 -0
  140. package/dist/formats/obj/CjsObjFormat.js.map +1 -0
  141. package/dist/formats/obj/core/helpers.js +573 -0
  142. package/dist/formats/obj/core/helpers.js.map +1 -0
  143. package/dist/formats/obj/core/json.js +64 -0
  144. package/dist/formats/obj/core/json.js.map +1 -0
  145. package/dist/formats/obj/core/parser.js +321 -0
  146. package/dist/formats/obj/core/parser.js.map +1 -0
  147. package/dist/formats/obj/index.js +2 -0
  148. package/dist/formats/obj/index.js.map +1 -0
  149. package/dist/formats/ogg/CjsOggFormat.js +82 -0
  150. package/dist/formats/ogg/CjsOggFormat.js.map +1 -0
  151. package/dist/formats/ogg/core/helpers.js +387 -0
  152. package/dist/formats/ogg/core/helpers.js.map +1 -0
  153. package/dist/formats/ogg/core/imdct.js +178 -0
  154. package/dist/formats/ogg/core/imdct.js.map +1 -0
  155. package/dist/formats/ogg/core/vorbis.js +999 -0
  156. package/dist/formats/ogg/core/vorbis.js.map +1 -0
  157. package/dist/formats/ogg/index.js +2 -0
  158. package/dist/formats/ogg/index.js.map +1 -0
  159. package/dist/formats/png/CjsPngFormat.js +189 -0
  160. package/dist/formats/png/CjsPngFormat.js.map +1 -0
  161. package/dist/formats/png/core/helpers.js +583 -0
  162. package/dist/formats/png/core/helpers.js.map +1 -0
  163. package/dist/formats/png/index.js +2 -0
  164. package/dist/formats/png/index.js.map +1 -0
  165. package/dist/formats/red/CjsRedFormat.js +247 -0
  166. package/dist/formats/red/CjsRedFormat.js.map +1 -0
  167. package/dist/formats/red/core/CjsRedReader.js +201 -0
  168. package/dist/formats/red/core/CjsRedReader.js.map +1 -0
  169. package/dist/formats/red/core/blackDefinitions.js +3 -0
  170. package/dist/formats/red/core/blackDefinitions.js.map +1 -0
  171. package/dist/formats/red/core/helpers.js +136 -0
  172. package/dist/formats/red/core/helpers.js.map +1 -0
  173. package/dist/formats/red/core/redGraph.js +68 -0
  174. package/dist/formats/red/core/redGraph.js.map +1 -0
  175. package/dist/formats/red/core/schema.js +4 -0
  176. package/dist/formats/red/core/schema.js.map +1 -0
  177. package/dist/formats/red/index.js +2 -0
  178. package/dist/formats/red/index.js.map +1 -0
  179. package/dist/formats/stl/CjsStlFormat.js +304 -0
  180. package/dist/formats/stl/CjsStlFormat.js.map +1 -0
  181. package/dist/formats/stl/core/helpers.js +257 -0
  182. package/dist/formats/stl/core/helpers.js.map +1 -0
  183. package/dist/formats/stl/core/json.js +51 -0
  184. package/dist/formats/stl/core/json.js.map +1 -0
  185. package/dist/formats/stl/core/stl.js +544 -0
  186. package/dist/formats/stl/core/stl.js.map +1 -0
  187. package/dist/formats/stl/core/targets.js +163 -0
  188. package/dist/formats/stl/core/targets.js.map +1 -0
  189. package/dist/formats/stl/index.js +2 -0
  190. package/dist/formats/stl/index.js.map +1 -0
  191. package/dist/formats/tga/CjsTgaFormat.js +186 -0
  192. package/dist/formats/tga/CjsTgaFormat.js.map +1 -0
  193. package/dist/formats/tga/core/helpers.js +446 -0
  194. package/dist/formats/tga/core/helpers.js.map +1 -0
  195. package/dist/formats/tga/index.js +2 -0
  196. package/dist/formats/tga/index.js.map +1 -0
  197. package/dist/formats/wav/CjsWavFormat.js +186 -0
  198. package/dist/formats/wav/CjsWavFormat.js.map +1 -0
  199. package/dist/formats/wav/core/helpers.js +328 -0
  200. package/dist/formats/wav/core/helpers.js.map +1 -0
  201. package/dist/formats/wav/index.js +2 -0
  202. package/dist/formats/wav/index.js.map +1 -0
  203. package/dist/formats/webm/CjsWebmFormat.js +185 -0
  204. package/dist/formats/webm/CjsWebmFormat.js.map +1 -0
  205. package/dist/formats/webm/core/helpers.js +537 -0
  206. package/dist/formats/webm/core/helpers.js.map +1 -0
  207. package/dist/formats/webm/index.js +2 -0
  208. package/dist/formats/webm/index.js.map +1 -0
  209. package/dist/formats/webp/CjsWebpFormat.js +80 -0
  210. package/dist/formats/webp/CjsWebpFormat.js.map +1 -0
  211. package/dist/formats/webp/core/helpers.js +214 -0
  212. package/dist/formats/webp/core/helpers.js.map +1 -0
  213. package/dist/formats/webp/index.js +2 -0
  214. package/dist/formats/webp/index.js.map +1 -0
  215. package/dist/formats/wem/CjsWemFormat.js +197 -0
  216. package/dist/formats/wem/CjsWemFormat.js.map +1 -0
  217. package/dist/formats/wem/core/bitStream.js +259 -0
  218. package/dist/formats/wem/core/bitStream.js.map +1 -0
  219. package/dist/formats/wem/core/codebookLibrary.js +164 -0
  220. package/dist/formats/wem/core/codebookLibrary.js.map +1 -0
  221. package/dist/formats/wem/core/helpers.js +336 -0
  222. package/dist/formats/wem/core/helpers.js.map +1 -0
  223. package/dist/formats/wem/core/packedCodebooksAotuv603.js +30 -0
  224. package/dist/formats/wem/core/packedCodebooksAotuv603.js.map +1 -0
  225. package/dist/formats/wem/core/wemToOgg.js +485 -0
  226. package/dist/formats/wem/core/wemToOgg.js.map +1 -0
  227. package/dist/formats/wem/index.js +2 -0
  228. package/dist/formats/wem/index.js.map +1 -0
  229. package/dist/formats/yaml/CjsYamlFormat.js +77 -0
  230. package/dist/formats/yaml/CjsYamlFormat.js.map +1 -0
  231. package/dist/formats/yaml/core/CjsYamlReader.js +304 -0
  232. package/dist/formats/yaml/core/CjsYamlReader.js.map +1 -0
  233. package/dist/formats/yaml/core/helpers.js +160 -0
  234. package/dist/formats/yaml/core/helpers.js.map +1 -0
  235. package/dist/formats/yaml/index.js +2 -0
  236. package/dist/formats/yaml/index.js.map +1 -0
  237. package/dist/generated/resources/AudioGeometryResData.js +47 -0
  238. package/dist/generated/resources/AudioGeometryResData.js.map +1 -0
  239. package/dist/generated/resources/CmfVertexReader.js +46 -0
  240. package/dist/generated/resources/CmfVertexReader.js.map +1 -0
  241. package/dist/generated/resources/GStateBindingCallbackData.js +31 -0
  242. package/dist/generated/resources/GStateBindingCallbackData.js.map +1 -0
  243. package/dist/generated/resources/MeshDecalData.js +37 -0
  244. package/dist/generated/resources/MeshDecalData.js.map +1 -0
  245. package/dist/generated/resources/MeshDecalLodData.js +34 -0
  246. package/dist/generated/resources/MeshDecalLodData.js.map +1 -0
  247. package/dist/generated/resources/Tr2AsyncSave.js +46 -0
  248. package/dist/generated/resources/Tr2AsyncSave.js.map +1 -0
  249. package/dist/generated/resources/Tr2CmfContents.js +37 -0
  250. package/dist/generated/resources/Tr2CmfContents.js.map +1 -0
  251. package/dist/generated/resources/Tr2GrannyIntersectionResult.js +58 -0
  252. package/dist/generated/resources/Tr2GrannyIntersectionResult.js.map +1 -0
  253. package/dist/generated/resources/Tr2LoadPrepareFence.js +37 -0
  254. package/dist/generated/resources/Tr2LoadPrepareFence.js.map +1 -0
  255. package/dist/generated/resources/Tr2MaterialArea.js +34 -0
  256. package/dist/generated/resources/Tr2MaterialArea.js.map +1 -0
  257. package/dist/generated/resources/Tr2MaterialMesh.js +31 -0
  258. package/dist/generated/resources/Tr2MaterialMesh.js.map +1 -0
  259. package/dist/generated/resources/Tr2MaterialRes.js +34 -0
  260. package/dist/generated/resources/Tr2MaterialRes.js.map +1 -0
  261. package/dist/generated/resources/Tr2ShaderPermutation.js +43 -0
  262. package/dist/generated/resources/Tr2ShaderPermutation.js.map +1 -0
  263. package/dist/generated/resources/Tr2TextureLodManager.js +60 -0
  264. package/dist/generated/resources/Tr2TextureLodManager.js.map +1 -0
  265. package/dist/generated/resources/Tr2TextureLodUpdateRequest.js +37 -0
  266. package/dist/generated/resources/Tr2TextureLodUpdateRequest.js.map +1 -0
  267. package/dist/generated/resources/Tr2TexturePackChannel.js +37 -0
  268. package/dist/generated/resources/Tr2TexturePackChannel.js.map +1 -0
  269. package/dist/generated/resources/Tr2TexturePipeline.js +44 -0
  270. package/dist/generated/resources/Tr2TexturePipeline.js.map +1 -0
  271. package/dist/generated/resources/Tr2TexturePipelineParams.js +34 -0
  272. package/dist/generated/resources/Tr2TexturePipelineParams.js.map +1 -0
  273. package/dist/generated/resources/Tr2TexturePipelineStepCompress.js +40 -0
  274. package/dist/generated/resources/Tr2TexturePipelineStepCompress.js.map +1 -0
  275. package/dist/generated/resources/Tr2TexturePipelineStepLimitSize.js +34 -0
  276. package/dist/generated/resources/Tr2TexturePipelineStepLimitSize.js.map +1 -0
  277. package/dist/generated/resources/Tr2TexturePipelineStepLoad.js +31 -0
  278. package/dist/generated/resources/Tr2TexturePipelineStepLoad.js.map +1 -0
  279. package/dist/generated/resources/Tr2TexturePipelineStepPack.js +43 -0
  280. package/dist/generated/resources/Tr2TexturePipelineStepPack.js.map +1 -0
  281. package/dist/generated/resources/TriGeometryResAreaData.js +59 -0
  282. package/dist/generated/resources/TriGeometryResAreaData.js.map +1 -0
  283. package/dist/generated/resources/TriGeometryResJointData.js +38 -0
  284. package/dist/generated/resources/TriGeometryResJointData.js.map +1 -0
  285. package/dist/generated/resources/TriGeometryResLodData.js +88 -0
  286. package/dist/generated/resources/TriGeometryResLodData.js.map +1 -0
  287. package/dist/generated/resources/TriGeometryResMeshData.js +63 -0
  288. package/dist/generated/resources/TriGeometryResMeshData.js.map +1 -0
  289. package/dist/generated/resources/TriGeometryResSkeletonData.js +34 -0
  290. package/dist/generated/resources/TriGeometryResSkeletonData.js.map +1 -0
  291. package/dist/generated/resources/TriJointBinding.js +38 -0
  292. package/dist/generated/resources/TriJointBinding.js.map +1 -0
  293. package/dist/generated/resources/TriMorphTargetGeometryConstants.js +46 -0
  294. package/dist/generated/resources/TriMorphTargetGeometryConstants.js.map +1 -0
  295. package/dist/generated/resources/TriRtGeometryConstants.js +88 -0
  296. package/dist/generated/resources/TriRtGeometryConstants.js.map +1 -0
  297. package/dist/generated/resources/enums.js +18 -0
  298. package/dist/generated/resources/enums.js.map +1 -0
  299. package/dist/generated/resources/index.js +32 -0
  300. package/dist/generated/resources/index.js.map +1 -0
  301. package/dist/index.js +52 -0
  302. package/dist/index.js.map +1 -0
  303. package/dist/resourcePath.js +18 -0
  304. package/dist/resourcePath.js.map +1 -0
  305. package/dist/resourceStates.js +9 -0
  306. package/dist/resourceStates.js.map +1 -0
  307. package/dist/resources/Tr2EffectRes.js +71 -0
  308. package/dist/resources/Tr2EffectRes.js.map +1 -0
  309. package/dist/resources/Tr2GrannyStateRes.js +44 -0
  310. package/dist/resources/Tr2GrannyStateRes.js.map +1 -0
  311. package/dist/resources/Tr2ImageRes.js +114 -0
  312. package/dist/resources/Tr2ImageRes.js.map +1 -0
  313. package/dist/resources/Tr2LightProfileRes.js +40 -0
  314. package/dist/resources/Tr2LightProfileRes.js.map +1 -0
  315. package/dist/resources/TriGeometryRes.js +216 -0
  316. package/dist/resources/TriGeometryRes.js.map +1 -0
  317. package/dist/resources/TriGrannyRes.js +43 -0
  318. package/dist/resources/TriGrannyRes.js.map +1 -0
  319. package/dist/resources/TriTextureRes.js +304 -0
  320. package/dist/resources/TriTextureRes.js.map +1 -0
  321. package/dist/resources/resourceBoundary.js +47 -0
  322. package/dist/resources/resourceBoundary.js.map +1 -0
  323. package/dist/texture/CjsTextureArrayRes.js +406 -0
  324. package/dist/texture/CjsTextureArrayRes.js.map +1 -0
  325. package/dist/texture/CjsTextureParameterProxy.js +133 -0
  326. package/dist/texture/CjsTextureParameterProxy.js.map +1 -0
  327. package/format-notices/black/LICENSE +21 -0
  328. package/format-notices/black/NOTICE +47 -0
  329. package/format-notices/bnk/LICENSE +21 -0
  330. package/format-notices/bnk/NOTICE +17 -0
  331. package/format-notices/cmf/LICENSE +21 -0
  332. package/format-notices/cmf/NOTICE +36 -0
  333. package/format-notices/dds/LICENSE +21 -0
  334. package/format-notices/dds/NOTICE +14 -0
  335. package/format-notices/fbx/LICENSE +21 -0
  336. package/format-notices/fbx/NOTICE +14 -0
  337. package/format-notices/flac/LICENSE +21 -0
  338. package/format-notices/flac/NOTICE +14 -0
  339. package/format-notices/gif/LICENSE +21 -0
  340. package/format-notices/gif/NOTICE +14 -0
  341. package/format-notices/gltf/LICENSE +21 -0
  342. package/format-notices/gltf/NOTICE +27 -0
  343. package/format-notices/jpeg/LICENSE +21 -0
  344. package/format-notices/jpeg/NOTICE +14 -0
  345. package/format-notices/mp3/LICENSE +21 -0
  346. package/format-notices/mp3/NOTICE +14 -0
  347. package/format-notices/mp4/LICENSE +21 -0
  348. package/format-notices/mp4/NOTICE +14 -0
  349. package/format-notices/obj/LICENSE +21 -0
  350. package/format-notices/obj/NOTICE +26 -0
  351. package/format-notices/ogg/LICENSE +21 -0
  352. package/format-notices/ogg/NOTICE +28 -0
  353. package/format-notices/png/LICENSE +21 -0
  354. package/format-notices/png/NOTICE +14 -0
  355. package/format-notices/red/LICENSE +21 -0
  356. package/format-notices/red/NOTICE +31 -0
  357. package/format-notices/stl/LICENSE +21 -0
  358. package/format-notices/stl/NOTICE +21 -0
  359. package/format-notices/tga/LICENSE +21 -0
  360. package/format-notices/tga/NOTICE +14 -0
  361. package/format-notices/wav/LICENSE +21 -0
  362. package/format-notices/wav/NOTICE +14 -0
  363. package/format-notices/webm/LICENSE +21 -0
  364. package/format-notices/webm/NOTICE +14 -0
  365. package/format-notices/webp/LICENSE +21 -0
  366. package/format-notices/webp/NOTICE +14 -0
  367. package/format-notices/wem/LICENSE +57 -0
  368. package/format-notices/wem/NOTICE +33 -0
  369. package/format-notices/yaml/LICENSE +21 -0
  370. package/format-notices/yaml/NOTICE +44 -0
  371. package/package.json +51 -0
  372. package/resource-lifecycle.md +487 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sources":["../../../../../src/formats/gltf/core/parser.js"],"sourcesContent":["/**\n * glTF/GLB parser that emits the shared CarbonEngineJS geometry JSON shape.\n */\n\nconst GLB_MAGIC = 0x46546c67;\nconst GLB_JSON = 0x4e4f534a;\nconst GLB_BIN = 0x004e4942;\n\nconst COMPONENT_SIZES = Object.freeze({\n 5120: 1,\n 5121: 1,\n 5122: 2,\n 5123: 2,\n 5125: 4,\n 5126: 4\n});\n\nconst TYPE_WIDTHS = Object.freeze({\n SCALAR: 1,\n VEC2: 2,\n VEC3: 3,\n VEC4: 4,\n MAT2: 4,\n MAT3: 9,\n MAT4: 16\n});\n\nconst CHANNEL_TEMPLATE = Object.freeze({\n position: null,\n blendIndice: null,\n tangent: null,\n normal: null,\n texcoord0: null,\n texcoord1: null,\n binormal: null,\n blendWeight: null\n});\n\nfunction fr(value)\n{\n return Number.isFinite(value) ? Math.fround(value) : 0;\n}\n\nfunction createVertexChannels()\n{\n const channels = {};\n for (const key of Object.keys(CHANNEL_TEMPLATE))\n {\n channels[key] = [];\n }\n return channels;\n}\n\nexport function toBytes(input)\n{\n if (input instanceof Uint8Array) return input;\n if (typeof ArrayBuffer !== \"undefined\" && input instanceof ArrayBuffer) return new Uint8Array(input);\n if (typeof ArrayBuffer !== \"undefined\" && ArrayBuffer.isView(input))\n {\n return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\n }\n throw new TypeError(\"CjsGltfFormat: input must be glTF JSON, GLB bytes, UTF-8 bytes, or a glTF object\");\n}\n\nfunction toUtf8(bytes)\n{\n return new TextDecoder().decode(bytes);\n}\n\nfunction isGlbBytes(bytes)\n{\n return bytes.length >= 12 && new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength).getUint32(0, true) === GLB_MAGIC;\n}\n\nexport function isGlb(input)\n{\n try\n {\n return isGlbBytes(toBytes(input));\n }\n catch\n {\n return false;\n }\n}\n\nfunction parseJsonText(text)\n{\n const json = JSON.parse(text);\n if (!json || typeof json !== \"object\" || !json.asset)\n {\n throw new Error(\"CjsGltfFormat: JSON input is not a glTF asset\");\n }\n return json;\n}\n\nexport function parseInput(input)\n{\n if (input && typeof input === \"object\" && !(input instanceof ArrayBuffer) && !ArrayBuffer.isView(input))\n {\n if (!input.asset) throw new Error(\"CjsGltfFormat: object input is not a glTF asset\");\n return { gltf: input, binaryChunk: null, format: \"gltf\" };\n }\n\n if (typeof input === \"string\")\n {\n return { gltf: parseJsonText(input), binaryChunk: null, format: \"gltf\" };\n }\n\n const bytes = toBytes(input);\n if (isGlbBytes(bytes)) return parseGlb(bytes);\n return { gltf: parseJsonText(toUtf8(bytes)), binaryChunk: null, format: \"gltf\" };\n}\n\nfunction parseGlb(bytes)\n{\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n const version = view.getUint32(4, true);\n if (version !== 2)\n {\n throw new Error(`CjsGltfFormat: unsupported GLB version ${version}`);\n }\n\n const totalLength = view.getUint32(8, true);\n if (totalLength > bytes.byteLength)\n {\n throw new Error(\"CjsGltfFormat: GLB length exceeds input length\");\n }\n\n let offset = 12;\n let json = null;\n let binaryChunk = null;\n\n while (offset + 8 <= totalLength)\n {\n const\n chunkLength = view.getUint32(offset, true),\n chunkType = view.getUint32(offset + 4, true),\n chunkStart = offset + 8,\n chunkEnd = chunkStart + chunkLength;\n\n if (chunkEnd > totalLength)\n {\n throw new Error(\"CjsGltfFormat: GLB chunk exceeds input length\");\n }\n\n const chunk = bytes.subarray(chunkStart, chunkEnd);\n if (chunkType === GLB_JSON) json = parseJsonText(toUtf8(chunk).trim());\n else if (chunkType === GLB_BIN) binaryChunk = chunk;\n offset = (chunkEnd + 3) & ~3;\n }\n\n if (!json) throw new Error(\"CjsGltfFormat: GLB is missing a JSON chunk\");\n return { gltf: json, binaryChunk, format: \"glb\" };\n}\n\nfunction decodeDataUri(uri)\n{\n const match = /^data:([^,]*?),(.*)$/s.exec(uri);\n if (!match) return null;\n\n const\n meta = match[1],\n data = match[2];\n\n if (meta.includes(\";base64\"))\n {\n if (typeof Buffer !== \"undefined\") return new Uint8Array(Buffer.from(data, \"base64\"));\n const text = atob(data);\n const bytes = new Uint8Array(text.length);\n for (let i = 0; i < text.length; i++) bytes[i] = text.charCodeAt(i);\n return bytes;\n }\n\n return new TextEncoder().encode(decodeURIComponent(data));\n}\n\nfunction normalizeBuffer(value)\n{\n if (value === undefined || value === null) return null;\n return toBytes(value);\n}\n\nfunction bufferFromOptions(options, index, uri)\n{\n const { buffers } = options;\n if (!buffers) return null;\n if (Array.isArray(buffers)) return normalizeBuffer(buffers[index]);\n if (buffers instanceof Map) return normalizeBuffer(buffers.get(uri) ?? buffers.get(index));\n if (typeof buffers === \"object\") return normalizeBuffer(buffers[uri] ?? buffers[index]);\n return null;\n}\n\nfunction resolveBuffers(gltf, binaryChunk, options)\n{\n return (gltf.buffers || []).map((buffer, index) =>\n {\n if (buffer.uri)\n {\n const dataUri = decodeDataUri(buffer.uri);\n if (dataUri) return dataUri;\n\n const fromOptions = bufferFromOptions(options, index, buffer.uri);\n if (fromOptions) return fromOptions;\n\n throw new Error(`CjsGltfFormat: external buffer ${JSON.stringify(buffer.uri)} was not provided`);\n }\n\n const fromOptions = bufferFromOptions(options, index, String(index));\n if (fromOptions) return fromOptions;\n if (index === 0 && binaryChunk) return binaryChunk;\n\n throw new Error(`CjsGltfFormat: buffer ${index} has no uri and no GLB binary chunk`);\n });\n}\n\nfunction readComponent(view, offset, componentType)\n{\n switch (componentType)\n {\n case 5120: return view.getInt8(offset);\n case 5121: return view.getUint8(offset);\n case 5122: return view.getInt16(offset, true);\n case 5123: return view.getUint16(offset, true);\n case 5125: return view.getUint32(offset, true);\n case 5126: return view.getFloat32(offset, true);\n default: throw new Error(`CjsGltfFormat: unsupported componentType ${componentType}`);\n }\n}\n\nfunction normalizeComponent(value, componentType)\n{\n switch (componentType)\n {\n case 5120: return Math.max(value / 127, -1);\n case 5121: return value / 255;\n case 5122: return Math.max(value / 32767, -1);\n case 5123: return value / 65535;\n default: return value;\n }\n}\n\nfunction readAccessorRaw(gltf, buffers, accessorIndex, { normalize = true } = {})\n{\n const accessor = gltf.accessors && gltf.accessors[accessorIndex];\n if (!accessor) throw new Error(`CjsGltfFormat: missing accessor ${accessorIndex}`);\n\n const\n width = TYPE_WIDTHS[accessor.type],\n componentSize = COMPONENT_SIZES[accessor.componentType];\n\n if (!width) throw new Error(`CjsGltfFormat: unsupported accessor type ${accessor.type}`);\n if (!componentSize) throw new Error(`CjsGltfFormat: unsupported componentType ${accessor.componentType}`);\n\n const out = new Array(accessor.count * width).fill(0);\n if (accessor.bufferView !== undefined)\n {\n const bufferView = gltf.bufferViews && gltf.bufferViews[accessor.bufferView];\n if (!bufferView) throw new Error(`CjsGltfFormat: missing bufferView ${accessor.bufferView}`);\n\n const\n buffer = buffers[bufferView.buffer],\n byteOffset = (bufferView.byteOffset || 0) + (accessor.byteOffset || 0),\n byteStride = bufferView.byteStride || width * componentSize,\n view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n\n for (let i = 0; i < accessor.count; i++)\n {\n const elementOffset = byteOffset + i * byteStride;\n for (let c = 0; c < width; c++)\n {\n let value = readComponent(view, elementOffset + c * componentSize, accessor.componentType);\n if (accessor.normalized && normalize) value = normalizeComponent(value, accessor.componentType);\n out[i * width + c] = fr(value);\n }\n }\n }\n\n if (accessor.sparse)\n {\n applySparseAccessor(gltf, buffers, accessor, out, width, normalize);\n }\n\n return { values: out, width, accessor };\n}\n\nfunction applySparseAccessor(gltf, buffers, accessor, out, width, normalize)\n{\n const\n sparse = accessor.sparse,\n indicesView = gltf.bufferViews[sparse.indices.bufferView],\n valuesView = gltf.bufferViews[sparse.values.bufferView],\n indicesBuffer = buffers[indicesView.buffer],\n valuesBuffer = buffers[valuesView.buffer],\n indicesData = new DataView(indicesBuffer.buffer, indicesBuffer.byteOffset, indicesBuffer.byteLength),\n valuesData = new DataView(valuesBuffer.buffer, valuesBuffer.byteOffset, valuesBuffer.byteLength),\n indexOffset = (indicesView.byteOffset || 0) + (sparse.indices.byteOffset || 0),\n valueOffset = (valuesView.byteOffset || 0) + (sparse.values.byteOffset || 0),\n indexSize = COMPONENT_SIZES[sparse.indices.componentType],\n valueSize = COMPONENT_SIZES[accessor.componentType];\n\n for (let i = 0; i < sparse.count; i++)\n {\n const outputIndex = readComponent(indicesData, indexOffset + i * indexSize, sparse.indices.componentType);\n for (let c = 0; c < width; c++)\n {\n let value = readComponent(valuesData, valueOffset + (i * width + c) * valueSize, accessor.componentType);\n if (accessor.normalized && normalize) value = normalizeComponent(value, accessor.componentType);\n out[outputIndex * width + c] = fr(value);\n }\n }\n}\n\nfunction readAccessor(gltf, buffers, accessorIndex, options)\n{\n return readAccessorRaw(gltf, buffers, accessorIndex, options).values;\n}\n\nfunction readIndices(gltf, buffers, accessorIndex, vertexCount, mode)\n{\n const raw = accessorIndex === undefined\n ? Array.from({ length: vertexCount }, (_, i) => i)\n : readAccessor(gltf, buffers, accessorIndex, { normalize: false }).map(value => value >>> 0);\n\n if (mode === undefined || mode === 4) return raw;\n if (mode === 5) return triangulateStrip(raw);\n if (mode === 6) return triangulateFan(raw);\n throw new Error(`CjsGltfFormat: primitive mode ${mode} is not supported`);\n}\n\nfunction triangulateStrip(indices)\n{\n const faces = [];\n for (let i = 0; i < indices.length - 2; i++)\n {\n if (i & 1) faces.push(indices[i + 1], indices[i], indices[i + 2]);\n else faces.push(indices[i], indices[i + 1], indices[i + 2]);\n }\n return faces;\n}\n\nfunction triangulateFan(indices)\n{\n const faces = [];\n for (let i = 1; i < indices.length - 1; i++)\n {\n faces.push(indices[0], indices[i], indices[i + 1]);\n }\n return faces;\n}\n\nfunction copyAttribute(gltf, buffers, attributes, gltfKey)\n{\n if (!attributes || attributes[gltfKey] === undefined) return [];\n return readAccessor(gltf, buffers, attributes[gltfKey]);\n}\n\nfunction computeBounds(positions)\n{\n if (!positions.length) return { minBounds: [ 0, 0, 0 ], maxBounds: [ 0, 0, 0 ] };\n const minBounds = [ positions[0], positions[1], positions[2] ];\n const maxBounds = [ positions[0], positions[1], positions[2] ];\n for (let i = 3; i < positions.length; i += 3)\n {\n for (let c = 0; c < 3; c++)\n {\n const value = positions[i + c];\n if (value < minBounds[c]) minBounds[c] = value;\n if (value > maxBounds[c]) maxBounds[c] = value;\n }\n }\n return { minBounds, maxBounds };\n}\n\nfunction meshName(gltf, meshIndex, primitiveIndex, nodeIndex)\n{\n const\n node = nodeIndex === undefined ? null : gltf.nodes && gltf.nodes[nodeIndex],\n mesh = gltf.meshes && gltf.meshes[meshIndex],\n base = (node && node.name) || (mesh && mesh.name) || `mesh_${meshIndex}`;\n return primitiveIndex ? `${base}_${primitiveIndex}` : base;\n}\n\nfunction materialName(gltf, primitive, primitiveIndex)\n{\n if (primitive.material !== undefined)\n {\n const material = gltf.materials && gltf.materials[primitive.material];\n return (material && material.name) || `material_${primitive.material}`;\n }\n return `primitive_${primitiveIndex}`;\n}\n\nfunction buildMorphTargets(gltf, buffers, primitive, mesh)\n{\n const targetNames = (mesh.extras && mesh.extras.targetNames) || [];\n return (primitive.targets || []).map((target, index) => ({\n name: targetNames[index] || `target_${index}`,\n dataIsDeltas: true,\n vertex: {\n position: copyAttribute(gltf, buffers, target, \"POSITION\"),\n blendIndice: [],\n tangent: copyAttribute(gltf, buffers, target, \"TANGENT\"),\n normal: copyAttribute(gltf, buffers, target, \"NORMAL\"),\n texcoord0: [],\n texcoord1: [],\n binormal: [],\n blendWeight: []\n }\n }));\n}\n\nfunction buildMeshPrimitive(gltf, buffers, meshIndex, primitiveIndex, nodeIndex, boneBindings)\n{\n const\n mesh = gltf.meshes[meshIndex],\n primitive = mesh.primitives[primitiveIndex],\n vertex = createVertexChannels();\n\n vertex.position = copyAttribute(gltf, buffers, primitive.attributes, \"POSITION\");\n vertex.normal = copyAttribute(gltf, buffers, primitive.attributes, \"NORMAL\");\n vertex.tangent = copyAttribute(gltf, buffers, primitive.attributes, \"TANGENT\");\n vertex.texcoord0 = copyAttribute(gltf, buffers, primitive.attributes, \"TEXCOORD_0\");\n vertex.texcoord1 = copyAttribute(gltf, buffers, primitive.attributes, \"TEXCOORD_1\");\n vertex.blendIndice = copyAttribute(gltf, buffers, primitive.attributes, \"JOINTS_0\");\n vertex.blendWeight = copyAttribute(gltf, buffers, primitive.attributes, \"WEIGHTS_0\");\n\n const\n vertexCount = vertex.position.length / 3,\n faces = readIndices(gltf, buffers, primitive.indices, vertexCount, primitive.mode),\n bytesPerIndex = faces.some(index => index > 0xffff) ? 4 : 2,\n { minBounds, maxBounds } = computeBounds(vertex.position);\n\n return {\n name: meshName(gltf, meshIndex, primitiveIndex, nodeIndex),\n morphTargets: buildMorphTargets(gltf, buffers, primitive, mesh),\n minBounds,\n maxBounds,\n boneBindings,\n vertex,\n indices: [ {\n name: materialName(gltf, primitive, primitiveIndex),\n bytesPerIndex,\n faces\n } ]\n };\n}\n\nfunction parentMap(gltf)\n{\n const parents = new Map();\n for (let i = 0; i < (gltf.nodes || []).length; i++)\n {\n for (const child of gltf.nodes[i].children || [])\n {\n parents.set(child, i);\n }\n }\n return parents;\n}\n\nfunction nodeName(gltf, nodeIndex)\n{\n const node = gltf.nodes && gltf.nodes[nodeIndex];\n return (node && node.name) || `node_${nodeIndex}`;\n}\n\nfunction nodeTransform(node)\n{\n if (node.matrix)\n {\n return decomposeMatrix(node.matrix);\n }\n\n const\n position = (node.translation || [ 0, 0, 0 ]).map(fr),\n orientation = (node.rotation || [ 0, 0, 0, 1 ]).map(fr),\n scale = node.scale || [ 1, 1, 1 ];\n\n return {\n position,\n orientation,\n scaleShear: [\n fr(scale[0]), 0, 0,\n 0, fr(scale[1]), 0,\n 0, 0, fr(scale[2])\n ]\n };\n}\n\nfunction decomposeMatrix(matrix)\n{\n const\n position = [ fr(matrix[12] || 0), fr(matrix[13] || 0), fr(matrix[14] || 0) ],\n sx = Math.hypot(matrix[0], matrix[1], matrix[2]) || 1,\n sy = Math.hypot(matrix[4], matrix[5], matrix[6]) || 1,\n sz = Math.hypot(matrix[8], matrix[9], matrix[10]) || 1;\n\n return {\n position,\n orientation: [ 0, 0, 0, 1 ],\n scaleShear: [\n fr(sx), 0, 0,\n 0, fr(sy), 0,\n 0, 0, fr(sz)\n ]\n };\n}\n\nfunction buildSkeleton(gltf, skinIndex, parents)\n{\n const\n skin = gltf.skins[skinIndex],\n joints = skin.joints || [],\n jointLookup = new Map(joints.map((nodeIndex, index) => [ nodeIndex, index ]));\n\n return {\n name: skin.name || `skin_${skinIndex}`,\n bones: joints.map(nodeIndex =>\n {\n const\n node = gltf.nodes[nodeIndex] || {},\n parentIndex = jointLookup.has(parents.get(nodeIndex)) ? jointLookup.get(parents.get(nodeIndex)) : -1,\n transform = nodeTransform(node);\n\n return {\n name: nodeName(gltf, nodeIndex),\n parentIndex,\n flag: 7,\n position: transform.position,\n orientation: transform.orientation,\n scaleShear: transform.scaleShear,\n extendedData: {\n gltfNode: nodeIndex\n }\n };\n })\n };\n}\n\nfunction buildBoneBindings(skeleton)\n{\n return skeleton.bones.map(bone => ({\n name: bone.name,\n minBounds: [ 0, 0, 0 ],\n maxBounds: [ 0, 0, 0 ]\n }));\n}\n\nfunction collectMeshNodes(gltf)\n{\n const nodes = [];\n for (let i = 0; i < (gltf.nodes || []).length; i++)\n {\n if (gltf.nodes[i].mesh !== undefined) nodes.push(i);\n }\n if (nodes.length) return nodes;\n return (gltf.meshes || []).map((_, index) => ({ meshIndex: index }));\n}\n\nfunction makeCurve(path, dimension, knots, controls, interpolation, generated = false)\n{\n return {\n source: {\n format: 1,\n degree: interpolation === \"STEP\" ? 0 : 1,\n interpolation,\n path,\n generated\n },\n uncompressed: {\n dimension,\n knots: knots.map(fr),\n controls: controls.map(fr)\n }\n };\n}\n\nfunction identityCurve(path, duration)\n{\n if (path === \"position\")\n {\n return makeCurve(path, 3, [ 0, duration ], [ 0, 0, 0, 0, 0, 0 ], \"STEP\", true);\n }\n if (path === \"orientation\")\n {\n return makeCurve(path, 4, [ 0, duration ], [ 0, 0, 0, 1, 0, 0, 0, 1 ], \"STEP\", true);\n }\n return makeCurve(path, 9, [ 0, duration ], [\n 1, 0, 0, 0, 1, 0, 0, 0, 1,\n 1, 0, 0, 0, 1, 0, 0, 0, 1\n ], \"STEP\", true);\n}\n\nfunction scaleToScaleShear(values, interpolation)\n{\n const controls = interpolation === \"CUBICSPLINE\"\n ? cubicSplineValues(values, 3)\n : values;\n\n const out = [];\n for (let i = 0; i < controls.length; i += 3)\n {\n out.push(\n controls[i], 0, 0,\n 0, controls[i + 1], 0,\n 0, 0, controls[i + 2]\n );\n }\n return out;\n}\n\nfunction cubicSplineValues(values, dimension)\n{\n const out = [];\n for (let i = 0; i < values.length; i += dimension * 3)\n {\n for (let c = 0; c < dimension; c++)\n {\n out.push(values[i + dimension + c]);\n }\n }\n return out;\n}\n\nfunction channelCurve(gltf, buffers, animation, channel)\n{\n const\n sampler = animation.samplers[channel.sampler],\n interpolation = sampler.interpolation || \"LINEAR\",\n knots = readAccessor(gltf, buffers, sampler.input),\n rawControls = readAccessor(gltf, buffers, sampler.output),\n path = channel.target.path;\n\n if (path === \"translation\")\n {\n const controls = interpolation === \"CUBICSPLINE\" ? cubicSplineValues(rawControls, 3) : rawControls;\n return { path: \"position\", curve: makeCurve(\"position\", 3, knots, controls, interpolation) };\n }\n\n if (path === \"rotation\")\n {\n const controls = interpolation === \"CUBICSPLINE\" ? cubicSplineValues(rawControls, 4) : rawControls;\n return { path: \"orientation\", curve: makeCurve(\"orientation\", 4, knots, controls, interpolation) };\n }\n\n if (path === \"scale\")\n {\n return { path: \"scaleShear\", curve: makeCurve(\"scaleShear\", 9, knots, scaleToScaleShear(rawControls, interpolation), interpolation) };\n }\n\n return null;\n}\n\nfunction buildAnimations(gltf, buffers, modelTargets)\n{\n return (gltf.animations || []).map((animation, animationIndex) =>\n {\n const\n duration = animationDuration(gltf, buffers, animation),\n groups = new Map();\n\n for (const channel of animation.channels || [])\n {\n const mapped = modelTargets.get(channel.target.node);\n if (!mapped) continue;\n\n const curve = channelCurve(gltf, buffers, animation, channel);\n if (!curve) continue;\n\n for (const target of mapped)\n {\n let group = groups.get(target.modelName);\n if (!group)\n {\n group = { name: target.modelName, tracks: new Map() };\n groups.set(target.modelName, group);\n }\n\n let track = group.tracks.get(target.boneName);\n if (!track)\n {\n track = { name: target.boneName, flags: 0 };\n group.tracks.set(target.boneName, track);\n }\n\n track[curve.path] = curve.curve;\n }\n }\n\n return {\n name: animation.name || `animation_${animationIndex}`,\n duration,\n timeStep: 0,\n oversampling: 1,\n defaultLoopCount: 0,\n flags: 0,\n trackGroups: Array.from(groups.values()).map(group => ({\n name: group.name,\n transformTracks: Array.from(group.tracks.values()).map(track => ({\n name: track.name,\n flags: track.flags,\n orientation: track.orientation || identityCurve(\"orientation\", duration),\n position: track.position || identityCurve(\"position\", duration),\n scaleShear: track.scaleShear || identityCurve(\"scaleShear\", duration)\n }))\n }))\n };\n }).filter(animation => animation.trackGroups.length);\n}\n\nfunction animationDuration(gltf, buffers, animation)\n{\n let duration = 0;\n for (const sampler of animation.samplers || [])\n {\n const knots = readAccessor(gltf, buffers, sampler.input);\n for (const knot of knots)\n {\n if (knot > duration) duration = knot;\n }\n }\n return fr(duration);\n}\n\nfunction registerModelTargets(modelTargets, model)\n{\n for (const bone of model.skeleton.bones)\n {\n const nodeIndex = bone.extendedData && bone.extendedData.gltfNode;\n if (nodeIndex === undefined) continue;\n const targets = modelTargets.get(nodeIndex) || [];\n targets.push({ modelName: model.name, boneName: bone.name });\n modelTargets.set(nodeIndex, targets);\n }\n}\n\nexport function parseGltfToJson(gltf, { binaryChunk = null, source = \"memory\", buffers: providedBuffers = null } = {})\n{\n if (!gltf.asset || !String(gltf.asset.version || \"\").startsWith(\"2\"))\n {\n throw new Error(\"CjsGltfFormat: only glTF 2.x assets are supported\");\n }\n\n const\n buffers = resolveBuffers(gltf, binaryChunk, { buffers: providedBuffers }),\n parents = parentMap(gltf),\n root = {\n grannyFileFormatRevision: 0,\n grannyFileSource: source,\n meshes: [],\n models: [],\n animations: []\n },\n modelTargets = new Map();\n\n for (const meshNode of collectMeshNodes(gltf))\n {\n const\n nodeIndex = typeof meshNode === \"number\" ? meshNode : undefined,\n node = nodeIndex === undefined ? null : gltf.nodes[nodeIndex],\n meshIndex = node ? node.mesh : meshNode.meshIndex,\n mesh = gltf.meshes && gltf.meshes[meshIndex],\n skinIndex = node && node.skin,\n skeleton = skinIndex === undefined ? null : buildSkeleton(gltf, skinIndex, parents),\n boneBindings = skeleton ? buildBoneBindings(skeleton) : [],\n meshBindings = [];\n\n if (!mesh) continue;\n\n for (let primitiveIndex = 0; primitiveIndex < mesh.primitives.length; primitiveIndex++)\n {\n meshBindings.push(root.meshes.length);\n root.meshes.push(buildMeshPrimitive(gltf, buffers, meshIndex, primitiveIndex, nodeIndex, boneBindings));\n }\n\n if (skeleton)\n {\n const model = {\n name: (node && node.name) || mesh.name || `model_${nodeIndex}`,\n skeleton,\n meshBindings\n };\n root.models.push(model);\n registerModelTargets(modelTargets, model);\n }\n }\n\n root.animations = buildAnimations(gltf, buffers, modelTargets);\n return root;\n}\n\nexport function inspectGltf(gltf, { format = \"gltf\", source = \"memory\" } = {})\n{\n return {\n source,\n format,\n assetVersion: gltf.asset && gltf.asset.version,\n sceneCount: (gltf.scenes || []).length,\n nodeCount: (gltf.nodes || []).length,\n meshCount: (gltf.meshes || []).length,\n skinCount: (gltf.skins || []).length,\n animationCount: (gltf.animations || []).length,\n materialCount: (gltf.materials || []).length,\n meshes: (gltf.meshes || []).map((mesh, index) => ({\n name: mesh.name || `mesh_${index}`,\n primitiveCount: (mesh.primitives || []).length\n })),\n animations: (gltf.animations || []).map((animation, index) => ({\n name: animation.name || `animation_${index}`,\n channelCount: (animation.channels || []).length,\n samplerCount: (animation.samplers || []).length\n }))\n };\n}\n"],"names":["GLB_MAGIC","GLB_JSON","GLB_BIN","COMPONENT_SIZES","Object","freeze","TYPE_WIDTHS","SCALAR","VEC2","VEC3","VEC4","MAT2","MAT3","MAT4","CHANNEL_TEMPLATE","position","blendIndice","tangent","normal","texcoord0","texcoord1","binormal","blendWeight","fr","value","Number","isFinite","Math","fround","createVertexChannels","channels","key","keys","toBytes","input","Uint8Array","ArrayBuffer","isView","buffer","byteOffset","byteLength","TypeError","toUtf8","bytes","TextDecoder","decode","isGlbBytes","length","DataView","getUint32","isGlb","parseJsonText","text","json","JSON","parse","asset","Error","parseInput","gltf","binaryChunk","format","parseGlb","view","version","totalLength","offset","chunkLength","chunkType","chunkStart","chunkEnd","chunk","subarray","trim","decodeDataUri","uri","match","exec","meta","data","includes","Buffer","from","atob","i","charCodeAt","TextEncoder","encode","decodeURIComponent","normalizeBuffer","undefined","bufferFromOptions","options","index","buffers","Array","isArray","Map","get","resolveBuffers","map","dataUri","fromOptions","stringify","String","readComponent","componentType","getInt8","getUint8","getInt16","getUint16","getFloat32","normalizeComponent","max","readAccessorRaw","accessorIndex","normalize","accessor","accessors","width","type","componentSize","out","count","fill","bufferView","bufferViews","byteStride","elementOffset","c","normalized","sparse","applySparseAccessor","values","indicesView","indices","valuesView","indicesBuffer","valuesBuffer","indicesData","valuesData","indexOffset","valueOffset","indexSize","valueSize","outputIndex","readAccessor","readIndices","vertexCount","mode","raw","_","triangulateStrip","triangulateFan","faces","push","copyAttribute","attributes","gltfKey","computeBounds","positions","minBounds","maxBounds","meshName","meshIndex","primitiveIndex","nodeIndex","node","nodes","mesh","meshes","base","name","materialName","primitive","material","materials","buildMorphTargets","targetNames","extras","targets","target","dataIsDeltas","vertex","buildMeshPrimitive","boneBindings","primitives","bytesPerIndex","some","morphTargets","parentMap","parents","child","children","set","nodeName","nodeTransform","matrix","decomposeMatrix","translation","orientation","rotation","scale","scaleShear","sx","hypot","sy","sz","buildSkeleton","skinIndex","skin","skins","joints","jointLookup","bones","parentIndex","has","transform","flag","extendedData","gltfNode","buildBoneBindings","skeleton","bone","collectMeshNodes","makeCurve","path","dimension","knots","controls","interpolation","generated","source","degree","uncompressed","identityCurve","duration","scaleToScaleShear","cubicSplineValues","channelCurve","animation","channel","sampler","samplers","rawControls","output","curve","buildAnimations","modelTargets","animations","animationIndex","animationDuration","groups","mapped","group","modelName","tracks","track","boneName","flags","timeStep","oversampling","defaultLoopCount","trackGroups","transformTracks","filter","knot","registerModelTargets","model","parseGltfToJson","providedBuffers","startsWith","root","grannyFileFormatRevision","grannyFileSource","models","meshNode","meshBindings","inspectGltf","assetVersion","sceneCount","scenes","nodeCount","meshCount","skinCount","animationCount","materialCount","primitiveCount","channelCount","samplerCount"],"mappings":"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"}
@@ -0,0 +1,163 @@
1
+ const CMF_CLASS_KEYS = Object.freeze(["Root", "Section", "Metadata", "MetadataEntry", "Mesh", "IndexGroup", "VertexElement", "MeshLod", "MeshArea", "LodMeshArea", "BoneBinding", "MorphTargets", "MorphTarget", "LodMorphTarget", "AudioOcclusionMesh", "Skeleton", "BoneMask", "BoneWeight", "Animation", "AnimationChannel", "AnimationCurve"]);
2
+ function buildCmfFromShared(root) {
3
+ return {
4
+ version: 1,
5
+ metadata: null,
6
+ meshes: (root.meshes ?? []).map(mesh => buildMesh(mesh)),
7
+ skeletons: [],
8
+ animations: []
9
+ };
10
+ }
11
+ function buildMesh(mesh) {
12
+ const vertex = mesh.vertex ?? {},
13
+ indices = mesh.indices ?? [],
14
+ stride = estimateVertexStride(vertex),
15
+ vertexCount = stride === 0 ? 0 : Math.floor((vertex.position ?? []).length / 3);
16
+ return {
17
+ name: mesh.name ?? "",
18
+ decl: buildDecl(vertex),
19
+ lods: [{
20
+ vb: {
21
+ index: 1,
22
+ offset: 0,
23
+ size: vertexCount * stride,
24
+ stride
25
+ },
26
+ ib: {
27
+ index: 2,
28
+ offset: 0,
29
+ size: totalIndexCount(indices) * bytesPerIndex(indices),
30
+ stride: bytesPerIndex(indices)
31
+ },
32
+ areas: indices.map((group, index) => ({
33
+ firstElement: firstTriangle(indices, index),
34
+ elementCount: Math.floor((group.faces ?? []).length / 3)
35
+ })),
36
+ morphTargets: [],
37
+ threshold: 0xffffffff,
38
+ vertex,
39
+ indices
40
+ }],
41
+ areas: indices.map(group => ({
42
+ name: group.name ?? "",
43
+ bounds: bounds(mesh),
44
+ bones: [],
45
+ affectedByBones: false,
46
+ affectedByMorphTargets: false
47
+ })),
48
+ boneBindings: [],
49
+ morphTargets: {
50
+ decl: [],
51
+ targets: []
52
+ },
53
+ uvDensities: [],
54
+ bounds: bounds(mesh),
55
+ audioOcclusionMesh: {
56
+ vertices: [],
57
+ indices: [],
58
+ bounds: {
59
+ min: [0, 0, 0],
60
+ max: [0, 0, 0]
61
+ }
62
+ },
63
+ topology: "TriangleList",
64
+ skeleton: null,
65
+ vertex,
66
+ indices
67
+ };
68
+ }
69
+ function buildDecl(vertex) {
70
+ const decl = [];
71
+ let offset = 0;
72
+ for (const channel of [["position", "Position", 3], ["normal", "Normal", 3], ["tangent", "Tangent", 3], ["binormal", "Binormal", 3], ["texcoord0", "TexCoord", 2, 0], ["texcoord1", "TexCoord", 2, 1], ["color0", "Color", 4, 0], ["blendIndice", "BoneIndices", 4, 0, "UInt16"], ["blendWeight", "BoneWeights", 4, 0]]) {
73
+ const [name, usage, elementCount, usageIndex = 0, type = "Float32"] = channel;
74
+ if (!Array.isArray(vertex[name]) || vertex[name].length === 0) continue;
75
+ decl.push({
76
+ usage,
77
+ usageIndex,
78
+ type,
79
+ elementCount,
80
+ offset
81
+ });
82
+ offset += elementCount * elementTypeSize(type);
83
+ }
84
+ return decl;
85
+ }
86
+ function estimateVertexStride(vertex) {
87
+ return buildDecl(vertex).reduce((stride, element) => Math.max(stride, element.offset + element.elementCount * elementTypeSize(element.type)), 0);
88
+ }
89
+ function elementTypeSize(type) {
90
+ return type === "Float32" ? 4 : type.includes("16") ? 2 : 1;
91
+ }
92
+ function totalIndexCount(indices) {
93
+ return indices.reduce((total, group) => total + (group.faces?.length ?? 0), 0);
94
+ }
95
+ function bytesPerIndex(indices) {
96
+ return indices.some(group => group.bytesPerIndex === 4 || (group.faces ?? []).some(index => index > 0xffff)) ? 4 : 2;
97
+ }
98
+ function firstTriangle(indices, areaIndex) {
99
+ let first = 0;
100
+ for (let i = 0; i < areaIndex; i++) first += Math.floor((indices[i].faces ?? []).length / 3);
101
+ return first;
102
+ }
103
+ function bounds(mesh) {
104
+ return {
105
+ min: mesh.minBounds ?? [0, 0, 0],
106
+ max: mesh.maxBounds ?? [0, 0, 0]
107
+ };
108
+ }
109
+ function hydrateCmf(root, classes, hydrationOptions = {}) {
110
+ const hydrationClasses = createHydrationClasses(classes, hydrationOptions);
111
+ return hydrate("Root", {
112
+ ...root,
113
+ metadata: root.metadata ? hydrate("Metadata", root.metadata, hydrationClasses) : null,
114
+ meshes: root.meshes.map(mesh => hydrateMesh(mesh, hydrationClasses)),
115
+ skeletons: root.skeletons.map(skeleton => hydrate("Skeleton", skeleton, hydrationClasses)),
116
+ animations: root.animations.map(animation => hydrate("Animation", animation, hydrationClasses))
117
+ }, hydrationClasses, hydrationOptions);
118
+ }
119
+ function hydrateMesh(mesh, classes) {
120
+ return hydrate("Mesh", {
121
+ ...mesh,
122
+ decl: mesh.decl.map(element => hydrate("VertexElement", element, classes)),
123
+ lods: mesh.lods.map(lod => hydrate("MeshLod", {
124
+ ...lod,
125
+ areas: lod.areas.map(area => hydrate("LodMeshArea", area, classes)),
126
+ morphTargets: lod.morphTargets.map(target => hydrate("LodMorphTarget", target, classes))
127
+ }, classes)),
128
+ areas: mesh.areas.map(area => hydrate("MeshArea", area, classes)),
129
+ boneBindings: mesh.boneBindings.map(binding => hydrate("BoneBinding", binding, classes)),
130
+ morphTargets: hydrate("MorphTargets", {
131
+ decl: mesh.morphTargets.decl.map(element => hydrate("VertexElement", element, classes)),
132
+ targets: mesh.morphTargets.targets.map(target => hydrate("MorphTarget", target, classes))
133
+ }, classes),
134
+ audioOcclusionMesh: hydrate("AudioOcclusionMesh", mesh.audioOcclusionMesh, classes)
135
+ }, classes);
136
+ }
137
+ function hydrate(type, fields, classes, hydrationOptions = {}) {
138
+ const Class = classes?.[type];
139
+ const options = Object.keys(hydrationOptions).length > 0 ? hydrationOptions : classes?.__hydrationOptions || {};
140
+ return Class ? populate(new Class(), fields, options) : fields;
141
+ }
142
+ function populate(instance, fields, hydrationOptions = {}) {
143
+ if (!instance || typeof instance.SetValues !== "function") {
144
+ throw new TypeError("CjsGltfFormat CMF class population requires classes to implement SetValues(values)");
145
+ }
146
+ instance.SetValues(fields, {
147
+ ...hydrationOptions,
148
+ skipUpdate: true,
149
+ skipEvents: true
150
+ });
151
+ return instance;
152
+ }
153
+ function createHydrationClasses(classes, hydrationOptions) {
154
+ const map = Object.create(classes || null);
155
+ Object.defineProperty(map, "__hydrationOptions", {
156
+ value: hydrationOptions,
157
+ enumerable: false
158
+ });
159
+ return map;
160
+ }
161
+
162
+ export { CMF_CLASS_KEYS, buildCmfFromShared, hydrateCmf };
163
+ //# sourceMappingURL=targets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"targets.js","sources":["../../../../../src/formats/gltf/core/targets.js"],"sourcesContent":["export const CMF_CLASS_KEYS = Object.freeze([\n \"Root\",\n \"Section\",\n \"Metadata\",\n \"MetadataEntry\",\n \"Mesh\",\n \"IndexGroup\",\n \"VertexElement\",\n \"MeshLod\",\n \"MeshArea\",\n \"LodMeshArea\",\n \"BoneBinding\",\n \"MorphTargets\",\n \"MorphTarget\",\n \"LodMorphTarget\",\n \"AudioOcclusionMesh\",\n \"Skeleton\",\n \"BoneMask\",\n \"BoneWeight\",\n \"Animation\",\n \"AnimationChannel\",\n \"AnimationCurve\"\n]);\n\nexport function buildCmfFromShared(root)\n{\n return {\n version: 1,\n metadata: null,\n meshes: (root.meshes ?? []).map((mesh) => buildMesh(mesh)),\n skeletons: [],\n animations: []\n };\n}\n\nfunction buildMesh(mesh)\n{\n const\n vertex = mesh.vertex ?? {},\n indices = mesh.indices ?? [],\n stride = estimateVertexStride(vertex),\n vertexCount = stride === 0 ? 0 : Math.floor((vertex.position ?? []).length / 3);\n\n return {\n name: mesh.name ?? \"\",\n decl: buildDecl(vertex),\n lods: [ {\n vb: { index: 1, offset: 0, size: vertexCount * stride, stride },\n ib: { index: 2, offset: 0, size: totalIndexCount(indices) * bytesPerIndex(indices), stride: bytesPerIndex(indices) },\n areas: indices.map((group, index) => ({\n firstElement: firstTriangle(indices, index),\n elementCount: Math.floor((group.faces ?? []).length / 3)\n })),\n morphTargets: [],\n threshold: 0xffffffff,\n vertex,\n indices\n } ],\n areas: indices.map((group) => ({\n name: group.name ?? \"\",\n bounds: bounds(mesh),\n bones: [],\n affectedByBones: false,\n affectedByMorphTargets: false\n })),\n boneBindings: [],\n morphTargets: { decl: [], targets: [] },\n uvDensities: [],\n bounds: bounds(mesh),\n audioOcclusionMesh: {\n vertices: [],\n indices: [],\n bounds: { min: [ 0, 0, 0 ], max: [ 0, 0, 0 ] }\n },\n topology: \"TriangleList\",\n skeleton: null,\n vertex,\n indices\n };\n}\n\nfunction buildDecl(vertex)\n{\n const decl = [];\n let offset = 0;\n for (const channel of [\n [ \"position\", \"Position\", 3 ],\n [ \"normal\", \"Normal\", 3 ],\n [ \"tangent\", \"Tangent\", 3 ],\n [ \"binormal\", \"Binormal\", 3 ],\n [ \"texcoord0\", \"TexCoord\", 2, 0 ],\n [ \"texcoord1\", \"TexCoord\", 2, 1 ],\n [ \"color0\", \"Color\", 4, 0 ],\n [ \"blendIndice\", \"BoneIndices\", 4, 0, \"UInt16\" ],\n [ \"blendWeight\", \"BoneWeights\", 4, 0 ]\n ])\n {\n const [ name, usage, elementCount, usageIndex = 0, type = \"Float32\" ] = channel;\n if (!Array.isArray(vertex[name]) || vertex[name].length === 0) continue;\n decl.push({ usage, usageIndex, type, elementCount, offset });\n offset += elementCount * elementTypeSize(type);\n }\n return decl;\n}\n\nfunction estimateVertexStride(vertex)\n{\n return buildDecl(vertex).reduce((stride, element) => Math.max(stride, element.offset + element.elementCount * elementTypeSize(element.type)), 0);\n}\n\nfunction elementTypeSize(type)\n{\n return type === \"Float32\" ? 4 : type.includes(\"16\") ? 2 : 1;\n}\n\nfunction totalIndexCount(indices)\n{\n return indices.reduce((total, group) => total + (group.faces?.length ?? 0), 0);\n}\n\nfunction bytesPerIndex(indices)\n{\n return indices.some((group) => group.bytesPerIndex === 4 || (group.faces ?? []).some((index) => index > 0xffff)) ? 4 : 2;\n}\n\nfunction firstTriangle(indices, areaIndex)\n{\n let first = 0;\n for (let i = 0; i < areaIndex; i++) first += Math.floor((indices[i].faces ?? []).length / 3);\n return first;\n}\n\nfunction bounds(mesh)\n{\n return {\n min: mesh.minBounds ?? [ 0, 0, 0 ],\n max: mesh.maxBounds ?? [ 0, 0, 0 ]\n };\n}\n\nexport function hydrateCmf(root, classes, hydrationOptions = {})\n{\n const hydrationClasses = createHydrationClasses(classes, hydrationOptions);\n return hydrate(\"Root\", {\n ...root,\n metadata: root.metadata ? hydrate(\"Metadata\", root.metadata, hydrationClasses) : null,\n meshes: root.meshes.map((mesh) => hydrateMesh(mesh, hydrationClasses)),\n skeletons: root.skeletons.map((skeleton) => hydrate(\"Skeleton\", skeleton, hydrationClasses)),\n animations: root.animations.map((animation) => hydrate(\"Animation\", animation, hydrationClasses))\n }, hydrationClasses, hydrationOptions);\n}\n\nfunction hydrateMesh(mesh, classes)\n{\n return hydrate(\"Mesh\", {\n ...mesh,\n decl: mesh.decl.map((element) => hydrate(\"VertexElement\", element, classes)),\n lods: mesh.lods.map((lod) => hydrate(\"MeshLod\", {\n ...lod,\n areas: lod.areas.map((area) => hydrate(\"LodMeshArea\", area, classes)),\n morphTargets: lod.morphTargets.map((target) => hydrate(\"LodMorphTarget\", target, classes))\n }, classes)),\n areas: mesh.areas.map((area) => hydrate(\"MeshArea\", area, classes)),\n boneBindings: mesh.boneBindings.map((binding) => hydrate(\"BoneBinding\", binding, classes)),\n morphTargets: hydrate(\"MorphTargets\", {\n decl: mesh.morphTargets.decl.map((element) => hydrate(\"VertexElement\", element, classes)),\n targets: mesh.morphTargets.targets.map((target) => hydrate(\"MorphTarget\", target, classes))\n }, classes),\n audioOcclusionMesh: hydrate(\"AudioOcclusionMesh\", mesh.audioOcclusionMesh, classes)\n }, classes);\n}\n\nfunction hydrate(type, fields, classes, hydrationOptions = {})\n{\n const Class = classes?.[type];\n const options = Object.keys(hydrationOptions).length > 0 ? hydrationOptions : classes?.__hydrationOptions || {};\n return Class ? populate(new Class(), fields, options) : fields;\n}\n\nfunction populate(instance, fields, hydrationOptions = {})\n{\n if (!instance || typeof instance.SetValues !== \"function\")\n {\n throw new TypeError(\"CjsGltfFormat CMF class population requires classes to implement SetValues(values)\");\n }\n instance.SetValues(fields, { ...hydrationOptions, skipUpdate: true, skipEvents: true });\n return instance;\n}\n\nfunction createHydrationClasses(classes, hydrationOptions)\n{\n const map = Object.create(classes || null);\n Object.defineProperty(map, \"__hydrationOptions\", { value: hydrationOptions, enumerable: false });\n return map;\n}\n"],"names":["CMF_CLASS_KEYS","Object","freeze","buildCmfFromShared","root","version","metadata","meshes","map","mesh","buildMesh","skeletons","animations","vertex","indices","stride","estimateVertexStride","vertexCount","Math","floor","position","length","name","decl","buildDecl","lods","vb","index","offset","size","ib","totalIndexCount","bytesPerIndex","areas","group","firstElement","firstTriangle","elementCount","faces","morphTargets","threshold","bounds","bones","affectedByBones","affectedByMorphTargets","boneBindings","targets","uvDensities","audioOcclusionMesh","vertices","min","max","topology","skeleton","channel","usage","usageIndex","type","Array","isArray","push","elementTypeSize","reduce","element","includes","total","some","areaIndex","first","i","minBounds","maxBounds","hydrateCmf","classes","hydrationOptions","hydrationClasses","createHydrationClasses","hydrate","hydrateMesh","animation","lod","area","target","binding","fields","Class","options","keys","__hydrationOptions","populate","instance","SetValues","TypeError","skipUpdate","skipEvents","create","defineProperty","value","enumerable"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { CjsGltfFormat, CjsGltfFormat as default } from './CjsGltfFormat.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,23 @@
1
+ export { CjsBlackFormat } from './black/CjsBlackFormat.js';
2
+ export { CjsBnkFormat } from './bnk/CjsBnkFormat.js';
3
+ export { CjsCmfFormat } from './cmf/CjsCmfFormat.js';
4
+ export { CjsDdsFormat } from './dds/CjsDdsFormat.js';
5
+ export { CjsFbxFormat } from './fbx/CjsFbxFormat.js';
6
+ export { CjsFlacFormat } from './flac/CjsFlacFormat.js';
7
+ export { CjsGifFormat } from './gif/CjsGifFormat.js';
8
+ export { CjsGltfFormat } from './gltf/CjsGltfFormat.js';
9
+ export { CjsJpegFormat } from './jpeg/CjsJpegFormat.js';
10
+ export { CjsMp3Format } from './mp3/CjsMp3Format.js';
11
+ export { CjsMp4Format } from './mp4/CjsMp4Format.js';
12
+ export { CjsObjFormat } from './obj/CjsObjFormat.js';
13
+ export { CjsOggFormat } from './ogg/CjsOggFormat.js';
14
+ export { CjsPngFormat } from './png/CjsPngFormat.js';
15
+ export { CjsRedFormat } from './red/CjsRedFormat.js';
16
+ export { CjsStlFormat } from './stl/CjsStlFormat.js';
17
+ export { CjsTgaFormat } from './tga/CjsTgaFormat.js';
18
+ export { CjsWavFormat } from './wav/CjsWavFormat.js';
19
+ export { CjsWebmFormat } from './webm/CjsWebmFormat.js';
20
+ export { CjsWebpFormat } from './webp/CjsWebpFormat.js';
21
+ export { CjsWemFormat } from './wem/CjsWemFormat.js';
22
+ export { CjsYamlFormat } from './yaml/CjsYamlFormat.js';
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,200 @@
1
+ import { DEFAULT_VALUES, normalizeValues, readWithValues, inspectWithValues, isSupportedWithValues, toJsonValue, isJPEG, toBytes, isJPG, OUTPUT_IMAGE, OUTPUT_RGBA, OUTPUT_RAW, OUTPUT_JSON } from './core/helpers.js';
2
+
3
+ const FORMAT_NAME = "CjsJpegFormat";
4
+ class CjsJpegFormat {
5
+ #values = DEFAULT_VALUES;
6
+
7
+ /**
8
+ * Create a reusable JPEG format profile.
9
+ *
10
+ * @param {object} [options] Default read/inspect options.
11
+ */
12
+ constructor(options = {}) {
13
+ this.SetValues(options);
14
+ }
15
+
16
+ /**
17
+ * Merge options into this profile.
18
+ *
19
+ * @param {object} [options] Values to merge.
20
+ * @returns {CjsJpegFormat} This format profile.
21
+ */
22
+ SetValues(options = {}) {
23
+ this.#values = normalizeValues(this.#values, {
24
+ inputType: "jpeg",
25
+ ...options
26
+ }, FORMAT_NAME);
27
+ return this;
28
+ }
29
+
30
+ /**
31
+ * Get normalized profile values with optional per-call overrides.
32
+ *
33
+ * @param {object} [options] Per-call values.
34
+ * @returns {object} Normalized read values.
35
+ */
36
+ GetValues(options = {}) {
37
+ return normalizeValues(this.#values, {
38
+ inputType: "jpeg",
39
+ ...options
40
+ }, FORMAT_NAME);
41
+ }
42
+
43
+ /**
44
+ * Read JPEG bytes with this profile.
45
+ *
46
+ * @param {Uint8Array|ArrayBuffer|DataView} input JPEG bytes.
47
+ * @param {object} [options] Per-call values.
48
+ * @returns {object} GPU-free raw/debug payload for the selected emit target.
49
+ */
50
+ Read(input, options = {}) {
51
+ return readWithValues(input, this.GetValues(options), "jpeg");
52
+ }
53
+
54
+ /**
55
+ * Read JPEG bytes asynchronously with this profile.
56
+ *
57
+ * @param {Uint8Array|ArrayBuffer|DataView} input JPEG bytes.
58
+ * @param {object} [options] Per-call values.
59
+ * @returns {Promise<object>} GPU-free raw/debug payload for the selected emit target.
60
+ */
61
+ async ReadAsync(input, options = {}) {
62
+ return this.Read(input, options);
63
+ }
64
+
65
+ /**
66
+ * Inspect JPEG bytes without decoding image data.
67
+ *
68
+ * @param {Uint8Array|ArrayBuffer|DataView} input JPEG bytes.
69
+ * @param {object} [options] Per-call values.
70
+ * @returns {object} JPEG marker/header metadata.
71
+ */
72
+ Inspect(input, options = {}) {
73
+ return inspectWithValues(input, this.GetValues(options), "jpeg");
74
+ }
75
+
76
+ /**
77
+ * Report whether JPEG input and requested output variants are supported.
78
+ *
79
+ * @param {Uint8Array|ArrayBuffer|DataView} input JPEG bytes.
80
+ * @param {object} [options] Per-call values.
81
+ * @returns {object} Support/probe report.
82
+ */
83
+ IsSupported(input, options = {}) {
84
+ return isSupportedWithValues(input, this.GetValues(options), "jpeg");
85
+ }
86
+
87
+ /**
88
+ * Convert format output into JSON-compatible debug data.
89
+ *
90
+ * @param {any} value Format output.
91
+ * @returns {any} JSON-compatible value.
92
+ */
93
+ ToJSON(value) {
94
+ return toJsonValue(value);
95
+ }
96
+
97
+ /**
98
+ * One-shot JPEG read.
99
+ *
100
+ * @param {Uint8Array|ArrayBuffer|DataView} input JPEG bytes.
101
+ * @param {object} [options] Read options.
102
+ * @returns {object} GPU-free raw/debug payload for the selected emit target.
103
+ */
104
+ static read(input, options = {}) {
105
+ return readWithValues(input, normalizeValues(DEFAULT_VALUES, {
106
+ inputType: "jpeg",
107
+ ...options
108
+ }, FORMAT_NAME), "jpeg");
109
+ }
110
+
111
+ /**
112
+ * One-shot asynchronous JPEG read.
113
+ *
114
+ * @param {Uint8Array|ArrayBuffer|DataView} input JPEG bytes.
115
+ * @param {object} [options] Read options.
116
+ * @returns {Promise<object>} GPU-free raw/debug payload for the selected emit target.
117
+ */
118
+ static async readAsync(input, options = {}) {
119
+ return CjsJpegFormat.read(input, options);
120
+ }
121
+
122
+ /**
123
+ * One-shot JPEG inspection.
124
+ *
125
+ * @param {Uint8Array|ArrayBuffer|DataView} input JPEG bytes.
126
+ * @param {object} [options] Inspect options.
127
+ * @returns {object} JPEG marker/header metadata.
128
+ */
129
+ static inspect(input, options = {}) {
130
+ return inspectWithValues(input, normalizeValues(DEFAULT_VALUES, {
131
+ inputType: "jpeg",
132
+ ...options
133
+ }, FORMAT_NAME), "jpeg");
134
+ }
135
+
136
+ /**
137
+ * One-shot JPEG support probe.
138
+ *
139
+ * @param {Uint8Array|ArrayBuffer|DataView} input JPEG bytes.
140
+ * @param {object} [options] Probe options.
141
+ * @returns {object} Support/probe report.
142
+ */
143
+ static isSupported(input, options = {}) {
144
+ return isSupportedWithValues(input, normalizeValues(DEFAULT_VALUES, {
145
+ inputType: "jpeg",
146
+ ...options
147
+ }, FORMAT_NAME), "jpeg");
148
+ }
149
+
150
+ /**
151
+ * Convert format output into JSON-compatible debug data.
152
+ *
153
+ * @param {any} value Format output.
154
+ * @returns {any} JSON-compatible value.
155
+ */
156
+ static toJSON(value) {
157
+ return toJsonValue(value);
158
+ }
159
+
160
+ /**
161
+ * Test whether bytes look like a JPEG file.
162
+ *
163
+ * @param {Uint8Array|ArrayBuffer|DataView} input Candidate JPEG bytes.
164
+ * @returns {boolean} True when a JPEG SOI marker is present.
165
+ */
166
+ static isJPEG(input) {
167
+ try {
168
+ return isJPEG(toBytes(input));
169
+ } catch {
170
+ return false;
171
+ }
172
+ }
173
+
174
+ /**
175
+ * Test whether bytes look like a JPG/JPEG file.
176
+ *
177
+ * @param {Uint8Array|ArrayBuffer|DataView} input Candidate JPG bytes.
178
+ * @returns {boolean} True when a JPEG SOI marker is present.
179
+ */
180
+ static isJPG(input) {
181
+ try {
182
+ return isJPG(toBytes(input));
183
+ } catch {
184
+ return false;
185
+ }
186
+ }
187
+ static OUTPUT_IMAGE = OUTPUT_IMAGE;
188
+ static OUTPUT_RGBA = OUTPUT_RGBA;
189
+ static OUTPUT_RAW = OUTPUT_RAW;
190
+ static OUTPUT_JSON = OUTPUT_JSON;
191
+ static OUTPUT_JPEG_JSON = "jpegJson";
192
+ static type = Object.freeze(["image"]);
193
+ static mediaTypes = Object.freeze(["image"]);
194
+ static inputTypes = Object.freeze(["jpg", "jpeg"]);
195
+ static outputTypes = Object.freeze([OUTPUT_IMAGE, OUTPUT_RGBA]);
196
+ static debugOutputTypes = Object.freeze(["jpegJson", OUTPUT_RAW]);
197
+ }
198
+
199
+ export { CjsJpegFormat };
200
+ //# sourceMappingURL=CjsJpegFormat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CjsJpegFormat.js","sources":["../../../../src/formats/jpeg/CjsJpegFormat.js"],"sourcesContent":["import {\n DEFAULT_VALUES,\n OUTPUT_IMAGE,\n OUTPUT_JSON,\n OUTPUT_RAW,\n OUTPUT_RGBA,\n inspectWithValues,\n isJPEG,\n isJPG,\n isSupportedWithValues,\n normalizeValues,\n readWithValues,\n toBytes,\n toJsonValue\n} from \"./core/helpers.js\";\n\nconst FORMAT_NAME = \"CjsJpegFormat\";\n\nexport class CjsJpegFormat\n{\n #values = DEFAULT_VALUES;\n\n /**\n * Create a reusable JPEG format profile.\n *\n * @param {object} [options] Default read/inspect options.\n */\n constructor(options = {})\n {\n this.SetValues(options);\n }\n\n /**\n * Merge options into this profile.\n *\n * @param {object} [options] Values to merge.\n * @returns {CjsJpegFormat} This format profile.\n */\n SetValues(options = {})\n {\n this.#values = normalizeValues(this.#values, { inputType: \"jpeg\", ...options }, FORMAT_NAME);\n return this;\n }\n\n /**\n * Get normalized profile values with optional per-call overrides.\n *\n * @param {object} [options] Per-call values.\n * @returns {object} Normalized read values.\n */\n GetValues(options = {})\n {\n return normalizeValues(this.#values, { inputType: \"jpeg\", ...options }, FORMAT_NAME);\n }\n\n /**\n * Read JPEG bytes with this profile.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input JPEG bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} GPU-free raw/debug payload for the selected emit target.\n */\n Read(input, options = {})\n {\n return readWithValues(input, this.GetValues(options), \"jpeg\");\n }\n\n /**\n * Read JPEG bytes asynchronously with this profile.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input JPEG bytes.\n * @param {object} [options] Per-call values.\n * @returns {Promise<object>} GPU-free raw/debug payload for the selected emit target.\n */\n async ReadAsync(input, options = {})\n {\n return this.Read(input, options);\n }\n\n /**\n * Inspect JPEG bytes without decoding image data.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input JPEG bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} JPEG marker/header metadata.\n */\n Inspect(input, options = {})\n {\n return inspectWithValues(input, this.GetValues(options), \"jpeg\");\n }\n\n /**\n * Report whether JPEG input and requested output variants are supported.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input JPEG bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} Support/probe report.\n */\n IsSupported(input, options = {})\n {\n return isSupportedWithValues(input, this.GetValues(options), \"jpeg\");\n }\n\n /**\n * Convert format output into JSON-compatible debug data.\n *\n * @param {any} value Format output.\n * @returns {any} JSON-compatible value.\n */\n ToJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * One-shot JPEG read.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input JPEG bytes.\n * @param {object} [options] Read options.\n * @returns {object} GPU-free raw/debug payload for the selected emit target.\n */\n static read(input, options = {})\n {\n return readWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"jpeg\", ...options }, FORMAT_NAME), \"jpeg\");\n }\n\n /**\n * One-shot asynchronous JPEG read.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input JPEG bytes.\n * @param {object} [options] Read options.\n * @returns {Promise<object>} GPU-free raw/debug payload for the selected emit target.\n */\n static async readAsync(input, options = {})\n {\n return CjsJpegFormat.read(input, options);\n }\n\n /**\n * One-shot JPEG inspection.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input JPEG bytes.\n * @param {object} [options] Inspect options.\n * @returns {object} JPEG marker/header metadata.\n */\n static inspect(input, options = {})\n {\n return inspectWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"jpeg\", ...options }, FORMAT_NAME), \"jpeg\");\n }\n\n /**\n * One-shot JPEG support probe.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input JPEG bytes.\n * @param {object} [options] Probe options.\n * @returns {object} Support/probe report.\n */\n static isSupported(input, options = {})\n {\n return isSupportedWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"jpeg\", ...options }, FORMAT_NAME), \"jpeg\");\n }\n\n /**\n * Convert format output into JSON-compatible debug data.\n *\n * @param {any} value Format output.\n * @returns {any} JSON-compatible value.\n */\n static toJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * Test whether bytes look like a JPEG file.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Candidate JPEG bytes.\n * @returns {boolean} True when a JPEG SOI marker is present.\n */\n static isJPEG(input)\n {\n try\n {\n return isJPEG(toBytes(input));\n }\n catch\n {\n return false;\n }\n }\n\n /**\n * Test whether bytes look like a JPG/JPEG file.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Candidate JPG bytes.\n * @returns {boolean} True when a JPEG SOI marker is present.\n */\n static isJPG(input)\n {\n try\n {\n return isJPG(toBytes(input));\n }\n catch\n {\n return false;\n }\n }\n\n static OUTPUT_IMAGE = OUTPUT_IMAGE;\n static OUTPUT_RGBA = OUTPUT_RGBA;\n static OUTPUT_RAW = OUTPUT_RAW;\n static OUTPUT_JSON = OUTPUT_JSON;\n static OUTPUT_JPEG_JSON = \"jpegJson\";\n static type = Object.freeze([ \"image\" ]);\n static mediaTypes = Object.freeze([ \"image\" ]);\n static inputTypes = Object.freeze([ \"jpg\", \"jpeg\" ]);\n static outputTypes = Object.freeze([ OUTPUT_IMAGE, OUTPUT_RGBA ]);\n static debugOutputTypes = Object.freeze([ \"jpegJson\", OUTPUT_RAW ]);\n}\n\nexport default CjsJpegFormat;\n"],"names":["FORMAT_NAME","CjsJpegFormat","DEFAULT_VALUES","constructor","options","SetValues","normalizeValues","inputType","GetValues","Read","input","readWithValues","ReadAsync","Inspect","inspectWithValues","IsSupported","isSupportedWithValues","ToJSON","value","toJsonValue","read","readAsync","inspect","isSupported","toJSON","isJPEG","toBytes","isJPG","OUTPUT_IMAGE","OUTPUT_RGBA","OUTPUT_RAW","OUTPUT_JSON","OUTPUT_JPEG_JSON","type","Object","freeze","mediaTypes","inputTypes","outputTypes","debugOutputTypes"],"mappings":"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"}