@carbonenginejs/runtime 0.1.0-alpha.4 → 0.1.0-alpha.5

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 (384) hide show
  1. package/dist/global/blue/BlueClasses.js +200 -0
  2. package/dist/global/blue/BlueClasses.js.map +1 -0
  3. package/dist/global/blue/IBlueClasses.js +79 -0
  4. package/dist/global/blue/IBlueClasses.js.map +1 -0
  5. package/dist/global/blue/IBlueDynamicResourceConstructor.js +16 -0
  6. package/dist/global/blue/IBlueDynamicResourceConstructor.js.map +1 -1
  7. package/dist/global/blue/blue.js +8 -2
  8. package/dist/global/blue/blue.js.map +1 -1
  9. package/dist/global/blue/index.js +2 -0
  10. package/dist/global/blue/index.js.map +1 -1
  11. package/dist/global/consts/index.js +0 -1
  12. package/dist/global/consts/index.js.map +1 -1
  13. package/dist/global/consts/renderContext/formats.js +26 -25
  14. package/dist/global/consts/renderContext/formats.js.map +1 -1
  15. package/dist/{trinityal/Tr2BitmapDimensions.js → global/imageio/BitmapDimensions.js} +19 -15
  16. package/dist/global/imageio/BitmapDimensions.js.map +1 -0
  17. package/dist/global/imageio/Cutout.js +28 -0
  18. package/dist/global/imageio/Cutout.js.map +1 -0
  19. package/dist/global/imageio/HostBitmap.js +1106 -0
  20. package/dist/global/imageio/HostBitmap.js.map +1 -0
  21. package/dist/global/imageio/ImageIOResult.js +99 -0
  22. package/dist/global/imageio/ImageIOResult.js.map +1 -0
  23. package/dist/global/imageio/ImageUtility.js +205 -0
  24. package/dist/global/imageio/ImageUtility.js.map +1 -0
  25. package/dist/global/imageio/LoadParameters.js +86 -0
  26. package/dist/global/imageio/LoadParameters.js.map +1 -0
  27. package/dist/global/imageio/Metadata.js +22 -0
  28. package/dist/global/imageio/Metadata.js.map +1 -0
  29. package/dist/global/imageio/index.js +8 -0
  30. package/dist/global/{consts/webgpu → imageio}/index.js.map +1 -1
  31. package/dist/global/index.js +2 -1
  32. package/dist/global/index.js.map +1 -1
  33. package/dist/global/math/color.js +1 -1
  34. package/dist/global/math/color.js.map +1 -1
  35. package/dist/global/schema/CjsSchema.js +8 -0
  36. package/dist/global/schema/CjsSchema.js.map +1 -1
  37. package/dist/index.js +12 -4
  38. package/dist/index.js.map +1 -1
  39. package/dist/resource/CjsResMan.js +47 -7
  40. package/dist/resource/CjsResMan.js.map +1 -1
  41. package/dist/resource/Tr2LightProfileRes.js +37 -0
  42. package/dist/resource/Tr2LightProfileRes.js.map +1 -1
  43. package/dist/resource/format/CjsByteWriter.js +46 -46
  44. package/dist/resource/format/CjsByteWriter.js.map +1 -1
  45. package/dist/resource/format/CjsFormat.js +7 -8
  46. package/dist/resource/format/CjsFormat.js.map +1 -1
  47. package/dist/resource/format/CjsFormatStore.js +8 -8
  48. package/dist/resource/format/CjsFormatStore.js.map +1 -1
  49. package/dist/resource/format/CjsGeometryFormat.js +114 -0
  50. package/dist/resource/format/CjsGeometryFormat.js.map +1 -0
  51. package/dist/resource/format/CjsImageFormat.js +282 -0
  52. package/dist/resource/format/CjsImageFormat.js.map +1 -0
  53. package/dist/resource/format/CjsResourceProbe.js +12 -48
  54. package/dist/resource/format/CjsResourceProbe.js.map +1 -1
  55. package/dist/resource/format/CjsStringTable.js +37 -37
  56. package/dist/resource/format/CjsStringTable.js.map +1 -1
  57. package/dist/resource/format/carbonEffect/CjsCarbonEffectReader.js +10 -10
  58. package/dist/resource/format/carbonEffect/CjsCarbonEffectReader.js.map +1 -1
  59. package/dist/resource/format/carbonEffect/CjsCarbonEffectWriter.js +37 -37
  60. package/dist/resource/format/carbonEffect/CjsCarbonEffectWriter.js.map +1 -1
  61. package/dist/resource/format/carbonEffect/carbonEffectBackendBlock.js +35 -7
  62. package/dist/resource/format/carbonEffect/carbonEffectBackendBlock.js.map +1 -1
  63. package/dist/resource/format/index.js +3 -1
  64. package/dist/resource/format/index.js.map +1 -1
  65. package/dist/resource/formats/black/CjsBlackFormat.js +130 -137
  66. package/dist/resource/formats/black/CjsBlackFormat.js.map +1 -1
  67. package/dist/resource/formats/bnk/CjsBnkFormat.js +12 -19
  68. package/dist/resource/formats/bnk/CjsBnkFormat.js.map +1 -1
  69. package/dist/resource/formats/bnk/core/helpers.js +1 -3
  70. package/dist/resource/formats/bnk/core/helpers.js.map +1 -1
  71. package/dist/resource/formats/cmf/CjsCmfFormat.js +19 -82
  72. package/dist/resource/formats/cmf/CjsCmfFormat.js.map +1 -1
  73. package/dist/resource/formats/cmf/core/constants.js +1 -2
  74. package/dist/resource/formats/cmf/core/constants.js.map +1 -1
  75. package/dist/resource/formats/{stl/core/targets.js → cmf/core/flatShared.js} +9 -8
  76. package/dist/resource/formats/cmf/core/flatShared.js.map +1 -0
  77. package/dist/resource/formats/cmf/core/helpers.js +13 -13
  78. package/dist/resource/formats/cmf/core/helpers.js.map +1 -1
  79. package/dist/resource/formats/cmf/core/writer.js +24 -24
  80. package/dist/resource/formats/cmf/core/writer.js.map +1 -1
  81. package/dist/resource/formats/dds/CjsDdsFormat.js +134 -17
  82. package/dist/resource/formats/dds/CjsDdsFormat.js.map +1 -1
  83. package/dist/resource/formats/dds/core/helpers.js +125 -40
  84. package/dist/resource/formats/dds/core/helpers.js.map +1 -1
  85. package/dist/resource/formats/dxbc/CjsDxbcFormat.js +14 -16
  86. package/dist/resource/formats/dxbc/CjsDxbcFormat.js.map +1 -1
  87. package/dist/resource/formats/dxbc/core/{container.js → DxbcContainer.js} +2 -2
  88. package/dist/resource/formats/dxbc/core/DxbcContainer.js.map +1 -0
  89. package/dist/resource/formats/dxbc/core/{errors.js → DxbcReadError.js} +1 -1
  90. package/dist/resource/formats/dxbc/core/DxbcReadError.js.map +1 -0
  91. package/dist/resource/formats/dxbc/core/DxbcReader.js +1 -1
  92. package/dist/resource/formats/dxbc/core/DxbcReader.js.map +1 -1
  93. package/dist/resource/formats/dxbc/core/{program.js → DxbcShaderProgram.js} +2 -2
  94. package/dist/resource/formats/dxbc/core/DxbcShaderProgram.js.map +1 -0
  95. package/dist/resource/formats/dxbc/core/{signature.js → DxbcSignatureChunk.js} +2 -2
  96. package/dist/resource/formats/dxbc/core/DxbcSignatureChunk.js.map +1 -0
  97. package/dist/resource/formats/dxbc/core/decoder.js +2 -2
  98. package/dist/resource/formats/dxbc/core/decoder.js.map +1 -1
  99. package/dist/resource/formats/dxbc/core/helpers.js +3 -3
  100. package/dist/resource/formats/dxbc/core/helpers.js.map +1 -1
  101. package/dist/resource/formats/fbx/CjsFbxFormat.js +18 -20
  102. package/dist/resource/formats/fbx/CjsFbxFormat.js.map +1 -1
  103. package/dist/resource/formats/flac/CjsFlacFormat.js +7 -13
  104. package/dist/resource/formats/flac/CjsFlacFormat.js.map +1 -1
  105. package/dist/resource/formats/fsd/32/CjsFsd32Format.js +29 -29
  106. package/dist/resource/formats/fsd/32/CjsFsd32Format.js.map +1 -1
  107. package/dist/resource/formats/fsd/64/CjsFsd64Format.js +3 -3
  108. package/dist/resource/formats/fsd/64/CjsFsd64Format.js.map +1 -1
  109. package/dist/resource/formats/fsd/64/core/CjsFsd64Binary.js +23 -23
  110. package/dist/resource/formats/fsd/64/core/CjsFsd64Binary.js.map +1 -1
  111. package/dist/resource/formats/fsd/64/core/CjsFsd64Reader.js +8 -8
  112. package/dist/resource/formats/fsd/64/core/CjsFsd64Reader.js.map +1 -1
  113. package/dist/resource/formats/fsd/CjsFsdFormat.js +23 -23
  114. package/dist/resource/formats/fsd/CjsFsdFormat.js.map +1 -1
  115. package/dist/resource/formats/gif/CjsGifFormat.js +24 -15
  116. package/dist/resource/formats/gif/CjsGifFormat.js.map +1 -1
  117. package/dist/resource/formats/gltf/CjsGltfFormat.js +33 -98
  118. package/dist/resource/formats/gltf/CjsGltfFormat.js.map +1 -1
  119. package/dist/resource/formats/gltf/core/helpers.js +3 -12
  120. package/dist/resource/formats/gltf/core/helpers.js.map +1 -1
  121. package/dist/resource/formats/gr2/CjsGr2Format.js +27 -91
  122. package/dist/resource/formats/gr2/CjsGr2Format.js.map +1 -1
  123. package/dist/resource/formats/hlsl/CjsHlslFormat.js +22 -25
  124. package/dist/resource/formats/hlsl/CjsHlslFormat.js.map +1 -1
  125. package/dist/resource/formats/hlsl/core/carbonDescriptionToRuntime.js +1 -1
  126. package/dist/resource/formats/hlsl/core/carbonDescriptionToRuntime.js.map +1 -1
  127. package/dist/resource/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js +3 -3
  128. package/dist/resource/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js.map +1 -1
  129. package/dist/resource/formats/ies/CjsIESFormat.js +29 -29
  130. package/dist/resource/formats/ies/CjsIESFormat.js.map +1 -1
  131. package/dist/resource/formats/jpeg/CjsJpegFormat.js +24 -15
  132. package/dist/resource/formats/jpeg/CjsJpegFormat.js.map +1 -1
  133. package/dist/resource/formats/jpeg/core/helpers.js +3 -5
  134. package/dist/resource/formats/jpeg/core/helpers.js.map +1 -1
  135. package/dist/resource/formats/jpeg/core/jpeg.js +58 -58
  136. package/dist/resource/formats/jpeg/core/jpeg.js.map +1 -1
  137. package/dist/resource/formats/jsonl/CjsJsonlFormat.js +3 -3
  138. package/dist/resource/formats/jsonl/CjsJsonlFormat.js.map +1 -1
  139. package/dist/resource/formats/mp3/CjsMp3Format.js +7 -14
  140. package/dist/resource/formats/mp3/CjsMp3Format.js.map +1 -1
  141. package/dist/resource/formats/mp3/core/helpers.js +3 -5
  142. package/dist/resource/formats/mp3/core/helpers.js.map +1 -1
  143. package/dist/resource/formats/mp4/CjsMp4Format.js +7 -13
  144. package/dist/resource/formats/mp4/CjsMp4Format.js.map +1 -1
  145. package/dist/resource/formats/mp4/core/helpers.js +3 -5
  146. package/dist/resource/formats/mp4/core/helpers.js.map +1 -1
  147. package/dist/resource/formats/obj/CjsObjFormat.js +92 -157
  148. package/dist/resource/formats/obj/CjsObjFormat.js.map +1 -1
  149. package/dist/resource/formats/obj/core/helpers.js +5 -113
  150. package/dist/resource/formats/obj/core/helpers.js.map +1 -1
  151. package/dist/resource/formats/ogg/CjsOggFormat.js +7 -14
  152. package/dist/resource/formats/ogg/CjsOggFormat.js.map +1 -1
  153. package/dist/resource/formats/pickle/CjsPickleFormat.js +7 -12
  154. package/dist/resource/formats/pickle/CjsPickleFormat.js.map +1 -1
  155. package/dist/resource/formats/pickle/core/CjsPickleProtocol0Reader.js +7 -7
  156. package/dist/resource/formats/pickle/core/CjsPickleProtocol0Reader.js.map +1 -1
  157. package/dist/resource/formats/pickle/core/CjsPickleProtocol4Reader.js +7 -7
  158. package/dist/resource/formats/pickle/core/CjsPickleProtocol4Reader.js.map +1 -1
  159. package/dist/resource/formats/png/CjsPngFormat.js +40 -15
  160. package/dist/resource/formats/png/CjsPngFormat.js.map +1 -1
  161. package/dist/resource/formats/png/core/helpers.js +4 -6
  162. package/dist/resource/formats/png/core/helpers.js.map +1 -1
  163. package/dist/resource/formats/red/CjsRedFormat.js +22 -28
  164. package/dist/resource/formats/red/CjsRedFormat.js.map +1 -1
  165. package/dist/resource/formats/schemabound/CjsSchemaBoundFormat.js +3 -7
  166. package/dist/resource/formats/schemabound/CjsSchemaBoundFormat.js.map +1 -1
  167. package/dist/resource/formats/schemabound/core/schemaBoundValues.js +5 -0
  168. package/dist/resource/formats/schemabound/core/schemaBoundValues.js.map +1 -1
  169. package/dist/resource/formats/sqlite/CjsSqliteFormat.js +4 -9
  170. package/dist/resource/formats/sqlite/CjsSqliteFormat.js.map +1 -1
  171. package/dist/resource/formats/static/CjsStaticFormat.js +4 -4
  172. package/dist/resource/formats/static/CjsStaticFormat.js.map +1 -1
  173. package/dist/resource/formats/stl/CjsStlFormat.js +39 -104
  174. package/dist/resource/formats/stl/CjsStlFormat.js.map +1 -1
  175. package/dist/resource/formats/stl/core/helpers.js +5 -19
  176. package/dist/resource/formats/stl/core/helpers.js.map +1 -1
  177. package/dist/resource/formats/tga/CjsTgaFormat.js +26 -15
  178. package/dist/resource/formats/tga/CjsTgaFormat.js.map +1 -1
  179. package/dist/resource/formats/tga/core/helpers.js +3 -5
  180. package/dist/resource/formats/tga/core/helpers.js.map +1 -1
  181. package/dist/resource/formats/vta/CjsVtaFormat.js +8 -15
  182. package/dist/resource/formats/vta/CjsVtaFormat.js.map +1 -1
  183. package/dist/resource/formats/wav/CjsWavFormat.js +7 -14
  184. package/dist/resource/formats/wav/CjsWavFormat.js.map +1 -1
  185. package/dist/resource/formats/wav/core/helpers.js +3 -5
  186. package/dist/resource/formats/wav/core/helpers.js.map +1 -1
  187. package/dist/resource/formats/webgl/CjsWebglFormat.js +103 -105
  188. package/dist/resource/formats/webgl/CjsWebglFormat.js.map +1 -1
  189. package/dist/resource/formats/webgl/core/{errors.js → WebglReadError.js} +1 -1
  190. package/dist/resource/formats/webgl/core/WebglReadError.js.map +1 -0
  191. package/dist/resource/formats/webgl/core/effectPackage.js +1 -1
  192. package/dist/resource/formats/webgl/core/effectPackage.js.map +1 -1
  193. package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js +3 -3
  194. package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
  195. package/dist/resource/formats/webgl/core/glsl/{DxbcGlslHelpers.js → DxbcGlslHelperRegistry.js} +2 -2
  196. package/dist/resource/formats/webgl/core/glsl/DxbcGlslHelperRegistry.js.map +1 -0
  197. package/dist/resource/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js +1 -1
  198. package/dist/resource/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js.map +1 -1
  199. package/dist/resource/formats/webgl/core/glslBackendBlock.js +1 -1
  200. package/dist/resource/formats/webgl/core/glslBackendBlock.js.map +1 -1
  201. package/dist/resource/formats/webgl/core/helpers.js.map +1 -1
  202. package/dist/resource/formats/webgpu/CjsWebgpuFormat.js +28 -29
  203. package/dist/resource/formats/webgpu/CjsWebgpuFormat.js.map +1 -1
  204. package/dist/resource/formats/webgpu/core/{errors.js → WebgpuReadError.js} +1 -1
  205. package/dist/resource/formats/webgpu/core/WebgpuReadError.js.map +1 -0
  206. package/dist/resource/formats/webgpu/core/carbonWebgpu/validateContainer.js +1 -1
  207. package/dist/resource/formats/webgpu/core/carbonWebgpu/validateContainer.js.map +1 -1
  208. package/dist/resource/formats/webgpu/core/helpers.js +1 -1
  209. package/dist/resource/formats/webgpu/core/helpers.js.map +1 -1
  210. package/dist/resource/formats/webgpu/core/ir/lowerDxbcToIr.js +1 -1
  211. package/dist/resource/formats/webgpu/core/ir/lowerDxbcToIr.js.map +1 -1
  212. package/dist/resource/formats/webgpu/core/wgsl/buildWgslSet.js +18 -6
  213. package/dist/resource/formats/webgpu/core/wgsl/buildWgslSet.js.map +1 -1
  214. package/dist/resource/formats/webgpu/core/wgsl/lowerBindingLayout.js +39 -13
  215. package/dist/resource/formats/webgpu/core/wgsl/lowerBindingLayout.js.map +1 -1
  216. package/dist/resource/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js +16 -14
  217. package/dist/resource/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js.map +1 -1
  218. package/dist/resource/formats/webm/CjsWebmFormat.js +8 -13
  219. package/dist/resource/formats/webm/CjsWebmFormat.js.map +1 -1
  220. package/dist/resource/formats/webm/core/helpers.js +3 -5
  221. package/dist/resource/formats/webm/core/helpers.js.map +1 -1
  222. package/dist/resource/formats/webp/CjsWebpFormat.js +8 -12
  223. package/dist/resource/formats/webp/CjsWebpFormat.js.map +1 -1
  224. package/dist/resource/formats/wem/CjsWemFormat.js +9 -17
  225. package/dist/resource/formats/wem/CjsWemFormat.js.map +1 -1
  226. package/dist/resource/formats/wem/core/bitStream.js +35 -35
  227. package/dist/resource/formats/wem/core/bitStream.js.map +1 -1
  228. package/dist/resource/formats/wem/core/helpers.js +1 -3
  229. package/dist/resource/formats/wem/core/helpers.js.map +1 -1
  230. package/dist/resource/formats/yaml/CjsYamlFormat.js +28 -37
  231. package/dist/resource/formats/yaml/CjsYamlFormat.js.map +1 -1
  232. package/dist/resource/imageio/ImageIO.js +142 -0
  233. package/dist/resource/imageio/ImageIO.js.map +1 -0
  234. package/dist/resource/imageio/index.js +17 -0
  235. package/dist/resource/imageio/index.js.map +1 -0
  236. package/dist/resource/index.js +7 -0
  237. package/dist/resource/index.js.map +1 -1
  238. package/dist/resource/shader/reflection/Tr2EffectResource.js +24 -2
  239. package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -1
  240. package/dist/resource/shader/reflection/Tr2Pass.js +76 -5
  241. package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -1
  242. package/dist/resource/texture/CjsTextureArrayConstructor.js +97 -0
  243. package/dist/resource/texture/CjsTextureArrayConstructor.js.map +1 -0
  244. package/dist/resource/texture/CjsTexturePackConstructor.js +160 -0
  245. package/dist/resource/texture/CjsTexturePackConstructor.js.map +1 -0
  246. package/dist/resource/texture/CjsTexturePipelineStepArray.js +72 -0
  247. package/dist/resource/texture/CjsTexturePipelineStepArray.js.map +1 -0
  248. package/dist/resource/texture/CjsTexturePipelineStepConvert.js +73 -0
  249. package/dist/resource/texture/CjsTexturePipelineStepConvert.js.map +1 -0
  250. package/dist/resource/texture/CjsTexturePipelineStepPack.js +71 -0
  251. package/dist/resource/texture/CjsTexturePipelineStepPack.js.map +1 -0
  252. package/dist/resource/texture/CjsTexturePipelineStepResize.js +123 -0
  253. package/dist/resource/texture/CjsTexturePipelineStepResize.js.map +1 -0
  254. package/dist/resource/texture/SolidColorTextureConstructor.js +11 -1
  255. package/dist/resource/texture/SolidColorTextureConstructor.js.map +1 -1
  256. package/dist/resource/texture/Tr2ImageRes.js +100 -68
  257. package/dist/resource/texture/Tr2ImageRes.js.map +1 -1
  258. package/dist/resource/texture/Tr2TexturePipeline.js +45 -25
  259. package/dist/resource/texture/Tr2TexturePipeline.js.map +1 -1
  260. package/dist/resource/texture/Tr2TexturePipelineStepCompress.js +34 -1
  261. package/dist/resource/texture/Tr2TexturePipelineStepCompress.js.map +1 -1
  262. package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js +30 -3
  263. package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js.map +1 -1
  264. package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js +81 -1
  265. package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js.map +1 -1
  266. package/dist/resource/texture/Tr2TexturePipelineStepLoad.js +36 -1
  267. package/dist/resource/texture/Tr2TexturePipelineStepLoad.js.map +1 -1
  268. package/dist/resource/texture/Tr2TexturePipelineStepPack.js +146 -24
  269. package/dist/resource/texture/Tr2TexturePipelineStepPack.js.map +1 -1
  270. package/dist/resource/texture/TriTextureRes.js +151 -29
  271. package/dist/resource/texture/TriTextureRes.js.map +1 -1
  272. package/dist/resource/texture/index.js +7 -0
  273. package/dist/resource/texture/index.js.map +1 -1
  274. package/dist/resource/texture/registerTextureResources.js +83 -0
  275. package/dist/resource/texture/registerTextureResources.js.map +1 -0
  276. package/dist/resource/texture/solidColorTexture.js +10 -19
  277. package/dist/resource/texture/solidColorTexture.js.map +1 -1
  278. package/dist/sof/EveSOF.js +39 -7
  279. package/dist/sof/EveSOF.js.map +1 -1
  280. package/dist/trinity/core/Tr2GpuResourcePool/Tr2GpuResourcePool.js +2 -2
  281. package/dist/trinity/core/Tr2GpuResourcePool/Tr2GpuResourcePool.js.map +1 -1
  282. package/dist/trinity/core/Tr2ImageIOHelpers.js +80 -17
  283. package/dist/trinity/core/Tr2ImageIOHelpers.js.map +1 -1
  284. package/dist/trinity/core/Tr2RenderUtils.js +1 -1
  285. package/dist/trinity/core/Tr2TextureArray/Tr2TextureArray.js +49 -62
  286. package/dist/trinity/core/Tr2TextureArray/Tr2TextureArray.js.map +1 -1
  287. package/dist/trinity/core/Tr2TextureReference.js +114 -0
  288. package/dist/trinity/core/Tr2TextureReference.js.map +1 -0
  289. package/dist/trinity/core/device/Tr2DepthStencil.js +2 -2
  290. package/dist/trinity/core/device/Tr2DepthStencil.js.map +1 -1
  291. package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBuffer.js +1 -1
  292. package/dist/trinity/core/index.js +1 -0
  293. package/dist/trinity/core/index.js.map +1 -1
  294. package/dist/trinity/core/lighting/Tr2LightManager.js +5 -4
  295. package/dist/trinity/core/lighting/Tr2LightManager.js.map +1 -1
  296. package/dist/trinity/core/procedural/GradientTextureConstructor.js +5 -4
  297. package/dist/trinity/core/procedural/GradientTextureConstructor.js.map +1 -1
  298. package/dist/trinity/core/procedural/gradientTexture.js +10 -13
  299. package/dist/trinity/core/procedural/gradientTexture.js.map +1 -1
  300. package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js +1 -1
  301. package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js.map +1 -1
  302. package/dist/trinity/eve/EveImpactOverlay.js +102 -50
  303. package/dist/trinity/eve/EveImpactOverlay.js.map +1 -1
  304. package/dist/trinity/eve/EveModularObjectModifier.js +9 -18
  305. package/dist/trinity/eve/EveModularObjectModifier.js.map +1 -1
  306. package/dist/trinity/eve/attachment/turrets/EveTurretSet.js +175 -157
  307. package/dist/trinity/eve/attachment/turrets/EveTurretSet.js.map +1 -1
  308. package/dist/trinity/eve/attachment/turrets/EveTurretTarget.js +100 -83
  309. package/dist/trinity/eve/attachment/turrets/EveTurretTarget.js.map +1 -1
  310. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js +26 -20
  311. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js.map +1 -1
  312. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js +368 -179
  313. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js.map +1 -1
  314. package/dist/trinity/eve/child/EveChildMesh.js +242 -234
  315. package/dist/trinity/eve/child/EveChildMesh.js.map +1 -1
  316. package/dist/trinity/eve/child/EveChildTurret.js +57 -16
  317. package/dist/trinity/eve/child/EveChildTurret.js.map +1 -1
  318. package/dist/trinity/eve/child/EveSpaceObjectChild.js +28 -1
  319. package/dist/trinity/eve/child/EveSpaceObjectChild.js.map +1 -1
  320. package/dist/trinity/eve/index.js +2 -2
  321. package/dist/trinity/eve/overlays/EveDamageOverlay.js +5 -1
  322. package/dist/trinity/eve/overlays/EveDamageOverlay.js.map +1 -1
  323. package/dist/trinity/eve/scene/EveSpaceScene.js +234 -233
  324. package/dist/trinity/eve/scene/EveSpaceScene.js.map +1 -1
  325. package/dist/trinity/eve/scene/EveSpaceSceneRenderDriver.js +2 -0
  326. package/dist/trinity/eve/scene/EveSpaceSceneRenderDriver.js.map +1 -1
  327. package/dist/trinity/eve/spaceObject/EveSpaceObject2.js +492 -437
  328. package/dist/trinity/eve/spaceObject/EveSpaceObject2.js.map +1 -1
  329. package/dist/trinity/generated/index.js +0 -1
  330. package/dist/trinity/generated/index.js.map +1 -1
  331. package/dist/trinity/generated/trinityCore/index.js +0 -1
  332. package/dist/trinity/generated/trinityCore/index.js.map +1 -1
  333. package/dist/trinity/index.js +3 -3
  334. package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js +10 -1
  335. package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js.map +1 -1
  336. package/dist/trinity/shader/Tr2DataTextureManager.js +152 -66
  337. package/dist/trinity/shader/Tr2DataTextureManager.js.map +1 -1
  338. package/dist/trinity/shader/Tr2Material.js +1 -1
  339. package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureSubresource.js +5 -5
  340. package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureSubresource.js.map +1 -1
  341. package/dist/trinityal/index.js +1 -1
  342. package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2RenderContextALStub.js +2 -2
  343. package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2RenderContextALStub.js.map +1 -1
  344. package/dist/trinityal/stub/Tr2SwapChainALStub.js +45 -45
  345. package/dist/trinityal/stub/Tr2SwapChainALStub.js.map +1 -1
  346. package/dist/trinityal/stub/Tr2TextureALStub.js +170 -170
  347. package/dist/trinityal/stub/Tr2TextureALStub.js.map +1 -1
  348. package/dist/trinityal/webgpu/CjsWebgpuDevice.js +234 -164
  349. package/dist/trinityal/webgpu/CjsWebgpuDevice.js.map +1 -1
  350. package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js +7 -0
  351. package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js.map +1 -1
  352. package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js +78 -14
  353. package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js.map +1 -1
  354. package/dist/trinityal/webgpu/core/CjsWebgpuUtils.js +94 -0
  355. package/dist/trinityal/webgpu/core/CjsWebgpuUtils.js.map +1 -0
  356. package/dist/trinityal/webgpu/internal.js +1 -0
  357. package/dist/trinityal/webgpu/internal.js.map +1 -1
  358. package/docs/global/reference/classes/README.md +90 -0
  359. package/docs/resource/concepts/format-capabilities.md +3 -3
  360. package/docs/resource/formats/README.md +1 -1
  361. package/docs/resource/reference/classes/core.md +31 -1
  362. package/docs/resource/reference/classes/formats.md +7 -7
  363. package/docs/resource/reference/classes/resources.md +76 -16
  364. package/docs/trinity/reference/classes/generated.md +0 -10
  365. package/docs/trinity/reference/classes/trinity-core.md +1692 -1682
  366. package/docs/trinityal/reference/classes/README.md +0 -10
  367. package/docs/trinityal/webgpu/reference/classes/README.md +276 -266
  368. package/package.json +4 -3
  369. package/dist/global/consts/webgpu/index.js +0 -2
  370. package/dist/global/consts/webgpu/textureFormats.js +0 -180
  371. package/dist/global/consts/webgpu/textureFormats.js.map +0 -1
  372. package/dist/resource/formats/dxbc/core/container.js.map +0 -1
  373. package/dist/resource/formats/dxbc/core/errors.js.map +0 -1
  374. package/dist/resource/formats/dxbc/core/program.js.map +0 -1
  375. package/dist/resource/formats/dxbc/core/signature.js.map +0 -1
  376. package/dist/resource/formats/stl/core/targets.js.map +0 -1
  377. package/dist/resource/formats/webgl/core/errors.js.map +0 -1
  378. package/dist/resource/formats/webgl/core/glsl/DxbcGlslHelpers.js.map +0 -1
  379. package/dist/resource/formats/webgpu/core/errors.js.map +0 -1
  380. package/dist/resource/texture/texturePipelineBehavior.js +0 -332
  381. package/dist/resource/texture/texturePipelineBehavior.js.map +0 -1
  382. package/dist/trinity/generated/trinityCore/Tr2TextureReference.js +0 -40
  383. package/dist/trinity/generated/trinityCore/Tr2TextureReference.js.map +0 -1
  384. package/dist/trinityal/Tr2BitmapDimensions.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"CjsBlackFormat.js","sources":["../../../../../src/resource/formats/black/CjsBlackFormat.js"],"sourcesContent":["import { CjsFormat } from \"../../format/CjsFormat.js\";\r\nimport { CLASS_KEYS } from \"./core/schema.js\";\r\nimport {\r\n DEFAULT_VALUES,\r\n OUTPUT_DOCUMENT,\r\n OUTPUT_JSON,\r\n OUTPUT_PAYLOAD,\r\n OUTPUT_RAW,\r\n OUTPUT_RUNTIME,\r\n normalizeValues,\r\n toJsonValue,\r\n validateClass,\r\n validateClassKey\r\n} from \"./core/helpers.js\";\r\nimport {\r\n CJS_BLACK_EXTENSION,\r\n CJS_BLACK_FORMAT_ID,\r\n CJS_BLACK_FOURCC,\r\n CJS_BLACK_VERSION\r\n} from \"./core/blackConstants.js\";\r\nimport { CjsBlackReader } from \"./core/CjsBlackReader.js\";\r\n\r\nconst FORMAT_NAME = \"CjsBlackFormat\";\r\n\r\n/**\r\n * CarbonEngineJS-facing Black format profile.\r\n *\r\n * This package reads public-facing `.black` payload data using CarbonEngineJS\r\n * canonical schemas or source-shape registries.\r\n */\r\nexport class CjsBlackFormat extends CjsFormat\r\n{\r\n\r\n #emit = DEFAULT_VALUES.emit;\r\n #schema = DEFAULT_VALUES.schema;\r\n #readerOptions = {};\r\n #classes = {};\r\n\r\n /**\r\n * Plain payload outputs can be decoded in a browser worker. Document and\r\n * runtime outputs retain class identity and therefore stay on the caller\r\n * thread.\r\n */\r\n static worker = Object.freeze({\r\n module: import.meta.url,\r\n exportName: \"CjsBlackFormat\",\r\n outputTypes: Object.freeze([ OUTPUT_JSON, OUTPUT_PAYLOAD ]),\r\n defaultOutput: OUTPUT_JSON\r\n });\r\n\r\n /**\r\n * Create a reusable format profile.\r\n *\r\n * @param {object} [options] Default format values.\r\n */\r\n constructor(options = {})\r\n {\r\n super();\r\n this.SetValues(options);\r\n }\r\n\r\n /**\r\n * Set format values for this reusable profile.\r\n *\r\n * @param {object} [options] Values to merge into the profile.\r\n * @returns {CjsBlackFormat} This format profile.\r\n */\r\n SetValues(options = {})\r\n {\r\n const values = normalizeValues(this.GetValues(), options, CLASS_KEYS, FORMAT_NAME);\r\n this.#emit = values.emit;\r\n this.#schema = values.schema;\r\n this.#classes = values.classes;\r\n this.#readerOptions = CjsBlackFormat.copyReaderOptions(values);\r\n return this;\r\n }\r\n\r\n /**\r\n * Get this profile's current values, optionally with per-call overrides.\r\n *\r\n * @param {object} [options] Optional values to merge into a copy.\r\n * @returns {object} A copy of the effective values.\r\n */\r\n GetValues(options = {})\r\n {\r\n return normalizeValues({\r\n emit: this.#emit,\r\n schema: this.#schema,\r\n ...this.#readerOptions,\r\n classes: this.#classes\r\n }, options, CLASS_KEYS, FORMAT_NAME);\r\n }\r\n\r\n /**\r\n * Set multiple runtime class constructors for this profile.\r\n *\r\n * @param {object} [classes] Map of Black class names to constructors.\r\n * @returns {CjsBlackFormat} This format profile.\r\n */\r\n SetClasses(classes = {})\r\n {\r\n return this.SetValues({ classes });\r\n }\r\n\r\n /**\r\n * Set one node-class constructor for this profile.\r\n *\r\n * @param {string} type Black class name.\r\n * @param {Function|null|undefined} Class Constructor to use, or nullish to delete.\r\n * @returns {CjsBlackFormat} This format profile.\r\n */\r\n SetClass(type, Class)\r\n {\r\n validateClassKey(CLASS_KEYS, type, FORMAT_NAME);\r\n if (Class === null || Class === undefined)\r\n {\r\n delete this.#classes[type];\r\n return this;\r\n }\r\n\r\n validateClass(CLASS_KEYS, type, Class, FORMAT_NAME);\r\n this.#classes = { ...this.#classes, [type]: Class };\r\n return this;\r\n }\r\n\r\n /**\r\n * Get a configured runtime class constructor.\r\n *\r\n * @param {string} type Black class name.\r\n * @returns {Function|undefined} The registered constructor, if any.\r\n */\r\n GetClass(type)\r\n {\r\n validateClassKey(CLASS_KEYS, type, FORMAT_NAME);\r\n return this.#classes[type];\r\n }\r\n\r\n /**\r\n * Whether this format profile has a constructor registered for a node key.\r\n *\r\n * @param {string} type Node class key.\r\n * @returns {boolean} True when a constructor is registered.\r\n */\r\n HasClass(type)\r\n {\r\n return !!this.GetClass(type);\r\n }\r\n\r\n /**\r\n * Read Black data with this profile's values.\r\n *\r\n * @param {unknown} input Black format input.\r\n * @param {object} [options] Per-call value overrides.\r\n * @returns {object} Public payload output by default.\r\n */\r\n Read(input, options = {})\r\n {\r\n return CjsBlackFormat.read(input, this.GetValues(options));\r\n }\r\n\r\n /**\r\n * Read Black data as a neutral document graph for diagnostics.\r\n *\r\n * @param {unknown} input Black format input.\r\n * @param {object} [options] Per-call value overrides.\r\n * @returns {object} CarbonEngineJS document graph.\r\n */\r\n ReadDocument(input, options = {})\r\n {\r\n return CjsBlackFormat.readDocument(input, this.GetValues(options));\r\n }\r\n\r\n /**\r\n * Read Black data as runtime objects or plain source-shaped objects.\r\n *\r\n * @param {unknown} input Black format input.\r\n * @param {object} [options] Per-call value overrides.\r\n * @returns {object} Runtime read result.\r\n */\r\n ReadRuntime(input, options = {})\r\n {\r\n return CjsBlackFormat.readRuntime(input, this.GetValues(options));\r\n }\r\n\r\n /**\r\n * Read Black data as compact public payload JSON.\r\n *\r\n * @param {unknown} input Black format input.\r\n * @param {object} [options] Per-call value overrides.\r\n * @returns {object} Public payload output.\r\n */\r\n ReadPayload(input, options = {})\r\n {\r\n return CjsBlackFormat.readPayload(input, this.GetValues(options));\r\n }\r\n\r\n /**\r\n * Inspect Black data with this profile's values.\r\n *\r\n * @param {unknown} input Black format input.\r\n * @param {object} [options] Per-call value overrides.\r\n * @returns {object} Plain summary data.\r\n */\r\n Inspect(input, options = {})\r\n {\r\n return CjsBlackFormat.inspect(input, this.GetValues(options));\r\n }\r\n\r\n /**\r\n * Convert format output to JSON-compatible data.\r\n *\r\n * @param {any} value Format output to convert.\r\n * @returns {any} Plain JSON-compatible data.\r\n */\r\n ToJSON(value)\r\n {\r\n return toJsonValue(value);\r\n }\r\n\r\n /**\r\n * Static one-shot read. Static methods use camelCase by convention.\r\n *\r\n * @param {unknown} input Black format input.\r\n * @param {object} [options] Format values.\r\n * @returns {object} Format output.\r\n */\r\n static read(input, options = {})\r\n {\r\n const values = normalizeValues(DEFAULT_VALUES, options, CLASS_KEYS, FORMAT_NAME);\r\n if (values.emit === OUTPUT_DOCUMENT || values.emit === OUTPUT_RAW) return CjsBlackFormat.readDocument(input, values);\r\n if (values.emit === OUTPUT_RUNTIME) return CjsBlackFormat.readRuntime(input, values);\r\n return CjsBlackFormat.readPayload(input, values);\r\n }\r\n\r\n /**\r\n * Static one-shot document read.\r\n *\r\n * @param {unknown} input Black format input.\r\n * @param {object} [options] Format values.\r\n * @returns {object} CarbonEngineJS document graph.\r\n */\r\n static readDocument(input, options = {})\r\n {\r\n return new CjsBlackReader(input, normalizeValues(DEFAULT_VALUES, options, CLASS_KEYS, FORMAT_NAME)).ReadDocument();\r\n }\r\n\r\n /**\r\n * Static one-shot runtime read.\r\n *\r\n * @param {unknown} input Black format input.\r\n * @param {object} [options] Format values.\r\n * @returns {object} Runtime read result.\r\n */\r\n static readRuntime(input, options = {})\r\n {\r\n return new CjsBlackReader(input, normalizeValues(DEFAULT_VALUES, options, CLASS_KEYS, FORMAT_NAME)).ReadRuntime();\r\n }\r\n\r\n /**\r\n * Static one-shot public payload read.\r\n *\r\n * @param {unknown} input Black format input.\r\n * @param {object} [options] Format values.\r\n * @returns {object} Public payload output.\r\n */\r\n static readPayload(input, options = {})\r\n {\r\n return new CjsBlackReader(input, normalizeValues(DEFAULT_VALUES, options, CLASS_KEYS, FORMAT_NAME)).ReadPayload();\r\n }\r\n\r\n /**\r\n * Static one-shot inspection.\r\n *\r\n * @param {unknown} input Black format input.\r\n * @param {object} [options] Format values.\r\n * @returns {object} Plain summary data.\r\n */\r\n static inspect(input, options = {})\r\n {\r\n return new CjsBlackReader(input, normalizeValues(DEFAULT_VALUES, options, CLASS_KEYS, FORMAT_NAME)).Inspect();\r\n }\r\n\r\n /**\r\n * Static JSON-compatible conversion.\r\n *\r\n * @param {any} value Format output to convert.\r\n * @returns {any} Plain JSON-compatible data.\r\n */\r\n static toJSON(value)\r\n {\r\n return toJsonValue(value);\r\n }\r\n\r\n /**\r\n * Performs the bounded Black content discriminator used by ordered object\r\n * routes. Magic selects the Black reader; version and body failures remain\r\n * that reader's errors and are never reinterpreted as Red/YAML.\r\n *\r\n * @param {ArrayBuffer|ArrayBufferView} input Candidate source bytes.\r\n * @returns {boolean} True when the little-endian Black magic is present.\r\n */\r\n static probeSupport(input)\r\n {\r\n const view = getBlackProbeView(input);\r\n return Boolean(\r\n view\r\n && view.byteLength >= 4\r\n && view.getUint32(0, true) === CJS_BLACK_FOURCC\r\n );\r\n }\r\n\r\n /**\r\n * Emit targets for this format (canonical frozen enum).\r\n */\r\n static Output = Object.freeze({\r\n JSON: OUTPUT_JSON,\r\n RAW: OUTPUT_RAW,\r\n DOCUMENT: OUTPUT_DOCUMENT,\r\n PAYLOAD: OUTPUT_PAYLOAD,\r\n RUNTIME: OUTPUT_RUNTIME\r\n });\r\n static CLASS_KEYS = CLASS_KEYS;\r\n static id = CJS_BLACK_FORMAT_ID;\r\n static extensions = Object.freeze([CJS_BLACK_EXTENSION]);\r\n static fourCC = CJS_BLACK_FOURCC;\r\n static version = CJS_BLACK_VERSION;\r\n static mediaTypes = Object.freeze([ \"data\" ]);\r\n static outputs = CjsFormat.defineOutputs({\r\n json: { default: true, decoded: true },\r\n document: { decoded: true },\r\n payload: { decoded: true },\r\n runtime: { decoded: true },\r\n raw: { role: \"debug\", decoded: true }\r\n });\r\n\r\n /** Provides the one-shot Black copy reader options helper entry point. */\r\n static copyReaderOptions(values)\r\n {\r\n const {\r\n emit: _emit,\r\n schema: _schema,\r\n classes: _classes,\r\n ...readerOptions\r\n } = values;\r\n return readerOptions;\r\n }\r\n\r\n}\r\n\r\nfunction getBlackProbeView(input)\r\n{\r\n if (input instanceof ArrayBuffer) return new DataView(input);\r\n if (!ArrayBuffer.isView(input)) return null;\r\n return new DataView(input.buffer, input.byteOffset, input.byteLength);\r\n}\r\n\r\nexport default CjsBlackFormat;\r\n"],"names":["FORMAT_NAME","CjsBlackFormat","CjsFormat","DEFAULT_VALUES","emit","schema","worker","Object","freeze","module","import","meta","url","exportName","outputTypes","OUTPUT_JSON","OUTPUT_PAYLOAD","defaultOutput","constructor","options","SetValues","values","normalizeValues","GetValues","CLASS_KEYS","classes","copyReaderOptions","SetClasses","SetClass","type","Class","validateClassKey","undefined","validateClass","GetClass","HasClass","Read","input","read","ReadDocument","readDocument","ReadRuntime","readRuntime","ReadPayload","readPayload","Inspect","inspect","ToJSON","value","toJsonValue","OUTPUT_DOCUMENT","OUTPUT_RAW","OUTPUT_RUNTIME","CjsBlackReader","toJSON","probeSupport","view","getBlackProbeView","Boolean","byteLength","getUint32","CJS_BLACK_FOURCC","Output","JSON","RAW","DOCUMENT","PAYLOAD","RUNTIME","id","CJS_BLACK_FORMAT_ID","extensions","CJS_BLACK_EXTENSION","fourCC","version","CJS_BLACK_VERSION","mediaTypes","outputs","defineOutputs","json","default","decoded","document","payload","runtime","raw","role","_emit","_schema","_classes","readerOptions","ArrayBuffer","DataView","isView","buffer","byteOffset"],"mappings":"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"}
1
+ {"version":3,"file":"CjsBlackFormat.js","sources":["../../../../../src/resource/formats/black/CjsBlackFormat.js"],"sourcesContent":["import { CjsFormat } from \"../../format/CjsFormat.js\";\nimport { CLASS_KEYS } from \"./core/schema.js\";\nimport {\n DEFAULT_VALUES,\n OUTPUT_DOCUMENT,\n OUTPUT_JSON,\n OUTPUT_PAYLOAD,\n OUTPUT_RAW,\n OUTPUT_RUNTIME,\n normalizeValues,\n toJsonValue,\n validateClass,\n validateClassKey\n} from \"./core/helpers.js\";\nimport {\n CJS_BLACK_EXTENSION,\n CJS_BLACK_FOURCC,\n CJS_BLACK_VERSION\n} from \"./core/blackConstants.js\";\nimport { CjsBlackReader } from \"./core/CjsBlackReader.js\";\n\nconst FORMAT_NAME = \"CjsBlackFormat\";\n\n/**\n * CarbonEngineJS-facing Black format profile.\n *\n * This package reads public-facing `.black` payload data using CarbonEngineJS\n * canonical schemas or source-shape registries.\n */\nexport class CjsBlackFormat extends CjsFormat\n{\n\n #emit = DEFAULT_VALUES.emit;\n #schema = DEFAULT_VALUES.schema;\n #readerOptions = {};\n #classes = {};\n\n /**\n * Plain payload outputs can be decoded in a browser worker. Document and\n * runtime outputs retain class identity and therefore stay on the caller\n * thread.\n */\n static worker = {\n module: import.meta.url,\n exportName: \"CjsBlackFormat\",\n outputTypes: Object.freeze([ OUTPUT_JSON, OUTPUT_PAYLOAD ]),\n defaultOutput: OUTPUT_JSON\n };\n\n /**\n * Create a reusable format profile.\n *\n * @param {object} [options] Default format values.\n */\n constructor(options = {})\n {\n super();\n this.SetValues(options);\n }\n\n /**\n * Set format values for this reusable profile.\n *\n * @param {object} [options] Values to merge into the profile.\n * @returns {CjsBlackFormat} This format profile.\n */\n SetValues(options = {})\n {\n const values = normalizeValues(this.GetValues(), options, CLASS_KEYS, FORMAT_NAME);\n this.#emit = values.emit;\n this.#schema = values.schema;\n this.#classes = values.classes;\n this.#readerOptions = CjsBlackFormat.copyReaderOptions(values);\n return this;\n }\n\n /**\n * Get this profile's current values, optionally with per-call overrides.\n *\n * @param {object} [options] Optional values to merge into a copy.\n * @returns {object} A copy of the effective values.\n */\n GetValues(options = {})\n {\n return normalizeValues({\n emit: this.#emit,\n schema: this.#schema,\n ...this.#readerOptions,\n classes: this.#classes\n }, options, CLASS_KEYS, FORMAT_NAME);\n }\n\n /**\n * Set multiple runtime class constructors for this profile.\n *\n * @param {object} [classes] Map of Black class names to constructors.\n * @returns {CjsBlackFormat} This format profile.\n */\n SetClasses(classes = {})\n {\n return this.SetValues({ classes });\n }\n\n /**\n * Set one node-class constructor for this profile.\n *\n * @param {string} type Black class name.\n * @param {Function|null|undefined} Class Constructor to use, or nullish to delete.\n * @returns {CjsBlackFormat} This format profile.\n */\n SetClass(type, Class)\n {\n validateClassKey(CLASS_KEYS, type, FORMAT_NAME);\n if (Class === null || Class === undefined)\n {\n delete this.#classes[type];\n return this;\n }\n\n validateClass(CLASS_KEYS, type, Class, FORMAT_NAME);\n this.#classes = { ...this.#classes, [type]: Class };\n return this;\n }\n\n /**\n * Get a configured runtime class constructor.\n *\n * @param {string} type Black class name.\n * @returns {Function|undefined} The registered constructor, if any.\n */\n GetClass(type)\n {\n validateClassKey(CLASS_KEYS, type, FORMAT_NAME);\n return this.#classes[type];\n }\n\n /**\n * Whether this format profile has a constructor registered for a node key.\n *\n * @param {string} type Node class key.\n * @returns {boolean} True when a constructor is registered.\n */\n HasClass(type)\n {\n return !!this.GetClass(type);\n }\n\n /**\n * Read Black data with this profile's values.\n *\n * @param {unknown} input Black format input.\n * @param {object} [options] Per-call value overrides.\n * @returns {object} Public payload output by default.\n */\n Read(input, options = {})\n {\n return CjsBlackFormat.read(input, this.GetValues(options));\n }\n\n /**\n * Read Black data as a neutral document graph for diagnostics.\n *\n * @param {unknown} input Black format input.\n * @param {object} [options] Per-call value overrides.\n * @returns {object} CarbonEngineJS document graph.\n */\n ReadDocument(input, options = {})\n {\n return CjsBlackFormat.readDocument(input, this.GetValues(options));\n }\n\n /**\n * Read Black data as runtime objects or plain source-shaped objects.\n *\n * @param {unknown} input Black format input.\n * @param {object} [options] Per-call value overrides.\n * @returns {object} Runtime read result.\n */\n ReadRuntime(input, options = {})\n {\n return CjsBlackFormat.readRuntime(input, this.GetValues(options));\n }\n\n /**\n * Read Black data as compact public payload JSON.\n *\n * @param {unknown} input Black format input.\n * @param {object} [options] Per-call value overrides.\n * @returns {object} Public payload output.\n */\n ReadPayload(input, options = {})\n {\n return CjsBlackFormat.readPayload(input, this.GetValues(options));\n }\n\n /**\n * Inspect Black data with this profile's values.\n *\n * @param {unknown} input Black format input.\n * @param {object} [options] Per-call value overrides.\n * @returns {object} Plain summary data.\n */\n Inspect(input, options = {})\n {\n return CjsBlackFormat.inspect(input, this.GetValues(options));\n }\n\n /**\n * Convert format output to JSON-compatible data.\n *\n * @param {any} value Format output to convert.\n * @returns {any} Plain JSON-compatible data.\n */\n ToJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * Static one-shot read. Static methods use camelCase by convention.\n *\n * @param {unknown} input Black format input.\n * @param {object} [options] Format values.\n * @returns {object} Format output.\n */\n static read(input, options = {})\n {\n const values = normalizeValues(DEFAULT_VALUES, options, CLASS_KEYS, FORMAT_NAME);\n if (values.emit === OUTPUT_DOCUMENT || values.emit === OUTPUT_RAW) return CjsBlackFormat.readDocument(input, values);\n if (values.emit === OUTPUT_RUNTIME) return CjsBlackFormat.readRuntime(input, values);\n return CjsBlackFormat.readPayload(input, values);\n }\n\n /**\n * Static one-shot document read.\n *\n * @param {unknown} input Black format input.\n * @param {object} [options] Format values.\n * @returns {object} CarbonEngineJS document graph.\n */\n static readDocument(input, options = {})\n {\n return new CjsBlackReader(input, normalizeValues(DEFAULT_VALUES, options, CLASS_KEYS, FORMAT_NAME)).ReadDocument();\n }\n\n /**\n * Static one-shot runtime read.\n *\n * @param {unknown} input Black format input.\n * @param {object} [options] Format values.\n * @returns {object} Runtime read result.\n */\n static readRuntime(input, options = {})\n {\n return new CjsBlackReader(input, normalizeValues(DEFAULT_VALUES, options, CLASS_KEYS, FORMAT_NAME)).ReadRuntime();\n }\n\n /**\n * Static one-shot public payload read.\n *\n * @param {unknown} input Black format input.\n * @param {object} [options] Format values.\n * @returns {object} Public payload output.\n */\n static readPayload(input, options = {})\n {\n return new CjsBlackReader(input, normalizeValues(DEFAULT_VALUES, options, CLASS_KEYS, FORMAT_NAME)).ReadPayload();\n }\n\n /**\n * Static one-shot inspection.\n *\n * @param {unknown} input Black format input.\n * @param {object} [options] Format values.\n * @returns {object} Plain summary data.\n */\n static inspect(input, options = {})\n {\n return new CjsBlackReader(input, normalizeValues(DEFAULT_VALUES, options, CLASS_KEYS, FORMAT_NAME)).Inspect();\n }\n\n /**\n * Static JSON-compatible conversion.\n *\n * @param {any} value Format output to convert.\n * @returns {any} Plain JSON-compatible data.\n */\n static toJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * Performs the bounded Black content discriminator used by ordered object\n * routes. Magic selects the Black reader; version and body failures remain\n * that reader's errors and are never reinterpreted as Red/YAML.\n *\n * @param {ArrayBuffer|ArrayBufferView} input Candidate source bytes.\n * @returns {boolean} True when the little-endian Black magic is present.\n */\n static probeSupport(input)\n {\n const view = getBlackProbeView(input);\n return Boolean(\n view\n && view.byteLength >= 4\n && view.getUint32(0, true) === CJS_BLACK_FOURCC\n );\n }\n\n /**\n * Emit targets for this format (canonical frozen enum).\n */\n static classKeys = CLASS_KEYS;\n static id = \"CjsBlackFormat\";\n static extensions = [CJS_BLACK_EXTENSION];\n static fourCC = CJS_BLACK_FOURCC;\n static version = CJS_BLACK_VERSION;\n static mediaTypes = [ \"data\" ];\n static outputs = CjsFormat.defineOutputs({\n json: { default: true, decoded: true },\n document: { decoded: true },\n payload: { decoded: true },\n runtime: { decoded: true },\n raw: { role: \"debug\", decoded: true }\n });\n\n /** Provides the one-shot Black copy reader options helper entry point. */\n static copyReaderOptions(values)\n {\n const {\n emit: _emit,\n schema: _schema,\n classes: _classes,\n ...readerOptions\n } = values;\n return readerOptions;\n }\n\n}\n\nfunction getBlackProbeView(input)\n{\n if (input instanceof ArrayBuffer) return new DataView(input);\n if (!ArrayBuffer.isView(input)) return null;\n return new DataView(input.buffer, input.byteOffset, input.byteLength);\n}\n\nexport default CjsBlackFormat;\n"],"names":["FORMAT_NAME","CjsBlackFormat","CjsFormat","DEFAULT_VALUES","emit","schema","worker","module","import","meta","url","exportName","outputTypes","Object","freeze","OUTPUT_JSON","OUTPUT_PAYLOAD","defaultOutput","constructor","options","SetValues","values","normalizeValues","GetValues","CLASS_KEYS","classes","copyReaderOptions","SetClasses","SetClass","type","Class","validateClassKey","undefined","validateClass","GetClass","HasClass","Read","input","read","ReadDocument","readDocument","ReadRuntime","readRuntime","ReadPayload","readPayload","Inspect","inspect","ToJSON","value","toJsonValue","OUTPUT_DOCUMENT","OUTPUT_RAW","OUTPUT_RUNTIME","CjsBlackReader","toJSON","probeSupport","view","getBlackProbeView","Boolean","byteLength","getUint32","CJS_BLACK_FOURCC","classKeys","id","extensions","CJS_BLACK_EXTENSION","fourCC","version","CJS_BLACK_VERSION","mediaTypes","outputs","defineOutputs","json","default","decoded","document","payload","runtime","raw","role","_emit","_schema","_classes","readerOptions","ArrayBuffer","DataView","isView","buffer","byteOffset"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { asUint8Array } from '#utils/bytes';
2
2
  import { CjsFormat } from '../../format/CjsFormat.js';
3
3
  import { wwiseIdFromName, joinSoundbanksInfo, buildSoundbanksCatalog, parseSoundbanksInfo, isSoundbanksInfo } from './core/soundbanksInfo.js';
4
- import { DEFAULT_VALUES, OUTPUT_RAW, OUTPUT_MEDIA, OUTPUT_BNK_JSON, normalizeValues, readWithValues, inspectWithValues, probeSupportWithValues, extractMedia, isBNK, OUTPUT_JSON, HIRC_TYPE_NAMES, HIRC_V150_TYPE_NAMES } from './core/helpers.js';
4
+ import { DEFAULT_VALUES, OUTPUT_RAW, OUTPUT_MEDIA, OUTPUT_BNK_JSON, normalizeValues, readWithValues, inspectWithValues, probeSupportWithValues, extractMedia, isBNK } from './core/helpers.js';
5
5
  import { eventMediaFromBanks } from './core/graph.js';
6
6
  import { parseEventAction } from './core/eventAction.js';
7
7
  import { parseGlobalSettings } from './core/globalSettings.js';
@@ -25,17 +25,17 @@ const FORMAT_NAME = "CjsBnkFormat";
25
25
  * `wwise` static.
26
26
  */
27
27
  class CjsBnkFormat extends CjsFormat {
28
- #values = DEFAULT_VALUES;
28
+ _values = DEFAULT_VALUES;
29
29
 
30
30
  /**
31
31
  * Browser-worker module declaration consumed by CjsResManWorkerLoader.
32
32
  */
33
- static worker = Object.freeze({
33
+ static worker = {
34
34
  module: import.meta.url,
35
35
  exportName: "CjsBnkFormat",
36
36
  outputTypes: Object.freeze([OUTPUT_RAW, OUTPUT_MEDIA, OUTPUT_BNK_JSON]),
37
37
  defaultOutput: OUTPUT_RAW
38
- });
38
+ };
39
39
 
40
40
  /**
41
41
  * Create a reusable bnk format profile.
@@ -54,7 +54,7 @@ class CjsBnkFormat extends CjsFormat {
54
54
  * @returns {CjsBnkFormat} This format profile.
55
55
  */
56
56
  SetValues(options = {}) {
57
- this.#values = normalizeValues(this.#values, options, FORMAT_NAME);
57
+ this._values = normalizeValues(this._values, options, FORMAT_NAME);
58
58
  return this;
59
59
  }
60
60
 
@@ -65,7 +65,7 @@ class CjsBnkFormat extends CjsFormat {
65
65
  * @returns {object} Normalized read values.
66
66
  */
67
67
  GetValues(options = {}) {
68
- return normalizeValues(this.#values, options, FORMAT_NAME);
68
+ return normalizeValues(this._values, options, FORMAT_NAME);
69
69
  }
70
70
 
71
71
  /**
@@ -228,7 +228,7 @@ class CjsBnkFormat extends CjsFormat {
228
228
  * v150 Fx ShareSet and Fx Custom bodies while leaving plug-in parameter
229
229
  * blocks opaque for separately qualified DSP adapters.
230
230
  */
231
- static wwise = Object.freeze({
231
+ static wwise = {
232
232
  isSoundbanksInfo,
233
233
  parseSoundbanksInfo,
234
234
  buildSoundbanksCatalog,
@@ -252,21 +252,14 @@ class CjsBnkFormat extends CjsFormat {
252
252
  parseSfxRandomSequence,
253
253
  parseSfxSwitch,
254
254
  parseSfxLayer
255
- });
255
+ };
256
256
 
257
257
  /**
258
258
  * Emit targets for this format (canonical frozen enum).
259
259
  */
260
- static Output = Object.freeze({
261
- RAW: OUTPUT_RAW,
262
- JSON: OUTPUT_JSON,
263
- BNK_JSON: OUTPUT_BNK_JSON,
264
- MEDIA: OUTPUT_MEDIA
265
- });
266
- static HIRC_TYPE_NAMES = HIRC_TYPE_NAMES;
267
- static HIRC_V150_TYPE_NAMES = HIRC_V150_TYPE_NAMES;
268
- static id = "bnk";
269
- static mediaTypes = Object.freeze(["audio"]);
260
+
261
+ static id = "CjsBnkFormat";
262
+ static mediaTypes = ["audio"];
270
263
  static outputs = CjsFormat.defineOutputs({
271
264
  raw: {
272
265
  default: true,
@@ -278,7 +271,7 @@ class CjsBnkFormat extends CjsFormat {
278
271
  probes: ["bnkJson", "raw"]
279
272
  }
280
273
  });
281
- static extensions = Object.freeze([".bnk"]);
274
+ static extensions = [".bnk"];
282
275
  }
283
276
 
284
277
  export { CjsBnkFormat };
@@ -1 +1 @@
1
- {"version":3,"file":"CjsBnkFormat.js","sources":["../../../../../src/resource/formats/bnk/CjsBnkFormat.js"],"sourcesContent":["import { asUint8Array } from \"#utils/bytes\";\nimport { CjsFormat } from \"../../format/CjsFormat.js\";\nimport {\n buildSoundbanksCatalog,\n isSoundbanksInfo,\n joinSoundbanksInfo,\n parseSoundbanksInfo,\n wwiseIdFromName\n} from \"./core/soundbanksInfo.js\";\nimport {\n DEFAULT_VALUES,\n HIRC_TYPE_NAMES,\n HIRC_V150_TYPE_NAMES,\n OUTPUT_BNK_JSON,\n OUTPUT_JSON,\n OUTPUT_MEDIA,\n OUTPUT_RAW,\n extractMedia,\n inspectWithValues,\n isBNK,\n probeSupportWithValues,\n normalizeValues,\n readWithValues,\n toJsonValue\n} from \"./core/helpers.js\";\nimport { eventMediaFromBanks } from \"./core/graph.js\";\nimport { parseEventAction } from \"./core/eventAction.js\";\nimport { parseGlobalSettings } from \"./core/globalSettings.js\";\nimport {\n busNodesFromBanks,\n parseBusNode\n} from \"./core/busNodes.js\";\nimport {\n effectNodesFromBanks,\n parseEffectNode\n} from \"./core/effectNodes.js\";\nimport {\n musicNodesFromBanks,\n parseMusicPlaylist,\n parseMusicSegment,\n parseMusicSwitch,\n parseMusicTrack\n} from \"./core/musicNodes.js\";\nimport {\n parseSfxActorMixer,\n parseSfxAttenuation,\n parseSfxLayer,\n parseSfxRandomSequence,\n parseSfxSwitch,\n sfxNodesFromBanks\n} from \"./core/sfxNodes.js\";\n\nconst FORMAT_NAME = \"CjsBnkFormat\";\n\n/**\n * Reader for Audiokinetic Wwise soundbank (.bnk) containers.\n *\n * Inspection decodes the bank header, embedded media index, exact v150 global\n * settings, object hierarchy listing (with version-stable typed fields), and\n * referenced bank names without copying payloads. Read can emit the raw bank,\n * debug JSON, or the embedded media items undecoded. The read path stays a\n * pure container reader; the Wwise-domain toolkit (SoundbanksInfo catalog\n * helpers, id hash, event -> media graph resolution) is grouped under the\n * `wwise` static.\n */\nexport class CjsBnkFormat extends CjsFormat\n{\n #values = DEFAULT_VALUES;\n\n /**\n * Browser-worker module declaration consumed by CjsResManWorkerLoader.\n */\n static worker = Object.freeze({\n module: import.meta.url,\n exportName: \"CjsBnkFormat\",\n outputTypes: Object.freeze([ OUTPUT_RAW, OUTPUT_MEDIA, OUTPUT_BNK_JSON ]),\n defaultOutput: OUTPUT_RAW\n });\n\n /**\n * Create a reusable bnk format profile.\n *\n * @param {object} [options] Default read/inspect options.\n */\n constructor(options = {})\n {\n super();\n this.SetValues(options);\n }\n\n /**\n * Merge options into this profile.\n *\n * @param {object} [options] Values to merge.\n * @returns {CjsBnkFormat} This format profile.\n */\n SetValues(options = {})\n {\n this.#values = normalizeValues(this.#values, 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, options, FORMAT_NAME);\n }\n\n /**\n * Read soundbank bytes with this profile.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} GPU-free raw/debug/media payload for the selected emit target.\n */\n Read(input, options = {})\n {\n return readWithValues(input, this.GetValues(options));\n }\n\n /**\n * Read soundbank bytes asynchronously with this profile.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.\n * @param {object} [options] Per-call values.\n * @returns {Promise<object>} GPU-free raw/debug/media payload for the selected emit target.\n */\n async ReadAsync(input, options = {})\n {\n return this.Read(input, options);\n }\n\n /**\n * Inspect soundbank bytes without copying media payloads.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} Soundbank metadata.\n */\n Inspect(input, options = {})\n {\n return inspectWithValues(input, this.GetValues(options));\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 soundbank read.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.\n * @param {object} [options] Read options.\n * @returns {object} GPU-free raw/debug/media payload for the selected emit target.\n */\n static read(input, options = {})\n {\n return readWithValues(input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME));\n }\n\n /**\n * One-shot asynchronous soundbank read.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.\n * @param {object} [options] Read options.\n * @returns {Promise<object>} GPU-free raw/debug/media payload for the selected emit target.\n */\n static async readAsync(input, options = {})\n {\n return CjsBnkFormat.read(input, options);\n }\n\n /**\n * One-shot soundbank inspection.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.\n * @param {object} [options] Inspect options.\n * @returns {object} Soundbank metadata.\n */\n static inspect(input, options = {})\n {\n return inspectWithValues(input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME));\n }\n\n /**\n * One-shot soundbank support probe.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.\n * @param {object} [options] Probe options.\n * @returns {object} Support/probe report.\n */\n static probeSupport(input, options = {})\n {\n return probeSupportWithValues(input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME));\n }\n\n /**\n * Extract embedded media payloads as views over the soundbank bytes.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.\n * @param {number} [mediaId] Optional single media id filter.\n * @returns {Array<object>} Extracted media items with undecoded bytes.\n */\n static extractMedia(input, mediaId)\n {\n const bytes = asUint8Array(input, \"Bnk input\");\n const metadata = inspectWithValues(bytes, DEFAULT_VALUES);\n return extractMedia(bytes, metadata, mediaId);\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 Wwise soundbank.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Candidate soundbank bytes.\n * @returns {boolean} True when the BKHD header chunk is present.\n */\n static isBNK(input)\n {\n try\n {\n return isBNK(asUint8Array(input, \"Bnk input\"));\n }\n catch\n {\n return false;\n }\n }\n\n /**\n * Wwise-domain toolkit, grouped apart from the container-reading statics -\n * the single home for the SoundbanksInfo catalog helpers\n * (`isSoundbanksInfo`, `parseSoundbanksInfo`, `buildSoundbanksCatalog`,\n * `joinSoundbanksInfo`), the id hash (`wwiseIdFromName`, FNV-1 of the\n * lowercased name), and event-graph resolution.\n *\n * `eventMediaFromBanks(inspections, options)` is graph interpretation over\n * `inspect()` results, not a read path: banks may split events from their\n * target objects (EVE keeps all events in one bank and their sounds in\n * others), so always pass every related bank to one call. Returns\n * `{ eventMedia: Map<eventObjectId, Set<wemId>>, diagnostics }`. See\n * core/graph.js for the walk policy.\n *\n * The interactive-music decoders (`musicNodesFromBanks` and the per-type\n * `parseMusicSegment/Track/Playlist/Switch`) turn the music-hierarchy\n * entries (HIRC 10-13) into typed nodes - children, meter, cue markers,\n * clips, playlist trees, decision trees, and transition rules. See\n * core/musicNodes.js for the anchored, exact-end-validated parse.\n *\n * The v150 authored-SFX decoders (`sfxNodesFromBanks` and the per-type\n * Global Settings, Event Action, Random/Sequence, Switch, Layer,\n * Actor-Mixer, and Attenuation parsers)\n * preserve raw Wwise semantics for the runtime audio layer's optional builder.\n * NodeBase facts, hierarchy-only Actor-Mixers, and attenuation objects\n * remain distinct from playable container behavior.\n *\n * `busNodesFromBanks` and `parseBusNode` expose qualified complete v150\n * Audio Bus and Auxiliary Bus bodies: ancestry, root output device,\n * properties, aux topology, policy, ducking, effect/metadata references,\n * RTPCs, and state values.\n *\n * `effectNodesFromBanks` and `parseEffectNode` expose complete generic\n * v150 Fx ShareSet and Fx Custom bodies while leaving plug-in parameter\n * blocks opaque for separately qualified DSP adapters.\n */\n static wwise = Object.freeze({\n isSoundbanksInfo,\n parseSoundbanksInfo,\n buildSoundbanksCatalog,\n joinSoundbanksInfo,\n wwiseIdFromName,\n eventMediaFromBanks,\n parseGlobalSettings,\n parseEventAction,\n musicNodesFromBanks,\n parseMusicSegment,\n parseMusicTrack,\n parseMusicPlaylist,\n parseMusicSwitch,\n busNodesFromBanks,\n parseBusNode,\n effectNodesFromBanks,\n parseEffectNode,\n sfxNodesFromBanks,\n parseSfxActorMixer,\n parseSfxAttenuation,\n parseSfxRandomSequence,\n parseSfxSwitch,\n parseSfxLayer\n });\n\n /**\n * Emit targets for this format (canonical frozen enum).\n */\n static Output = Object.freeze({\n RAW: OUTPUT_RAW,\n JSON: OUTPUT_JSON,\n BNK_JSON: OUTPUT_BNK_JSON,\n MEDIA: OUTPUT_MEDIA\n });\n\n static HIRC_TYPE_NAMES = HIRC_TYPE_NAMES;\n\n static HIRC_V150_TYPE_NAMES = HIRC_V150_TYPE_NAMES;\n\n static id = \"bnk\";\n\n static mediaTypes = Object.freeze([ \"audio\" ]);\n\n static outputs = CjsFormat.defineOutputs({\n\n raw: { default: true, passthrough: true },\n\n media: { },\n\n bnkJson: { role: \"debug\", probes: [ \"bnkJson\", \"raw\" ] }\n\n });\n\n static extensions = Object.freeze([ \".bnk\" ]);\n}\n\nexport default CjsBnkFormat;\n"],"names":["FORMAT_NAME","CjsBnkFormat","CjsFormat","DEFAULT_VALUES","worker","Object","freeze","module","import","meta","url","exportName","outputTypes","OUTPUT_RAW","OUTPUT_MEDIA","OUTPUT_BNK_JSON","defaultOutput","constructor","options","SetValues","normalizeValues","GetValues","Read","input","readWithValues","ReadAsync","Inspect","inspectWithValues","ToJSON","value","toJsonValue","read","readAsync","inspect","probeSupport","probeSupportWithValues","extractMedia","mediaId","bytes","asUint8Array","metadata","toJSON","isBNK","wwise","isSoundbanksInfo","parseSoundbanksInfo","buildSoundbanksCatalog","joinSoundbanksInfo","wwiseIdFromName","eventMediaFromBanks","parseGlobalSettings","parseEventAction","musicNodesFromBanks","parseMusicSegment","parseMusicTrack","parseMusicPlaylist","parseMusicSwitch","busNodesFromBanks","parseBusNode","effectNodesFromBanks","parseEffectNode","sfxNodesFromBanks","parseSfxActorMixer","parseSfxAttenuation","parseSfxRandomSequence","parseSfxSwitch","parseSfxLayer","Output","RAW","JSON","OUTPUT_JSON","BNK_JSON","MEDIA","HIRC_TYPE_NAMES","HIRC_V150_TYPE_NAMES","id","mediaTypes","outputs","defineOutputs","raw","default","passthrough","media","bnkJson","role","probes","extensions"],"mappings":"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"}
1
+ {"version":3,"file":"CjsBnkFormat.js","sources":["../../../../../src/resource/formats/bnk/CjsBnkFormat.js"],"sourcesContent":["import { asUint8Array } from \"#utils/bytes\";\nimport { CjsFormat } from \"../../format/CjsFormat.js\";\nimport {\n buildSoundbanksCatalog,\n isSoundbanksInfo,\n joinSoundbanksInfo,\n parseSoundbanksInfo,\n wwiseIdFromName\n} from \"./core/soundbanksInfo.js\";\nimport {\n DEFAULT_VALUES,\n HIRC_TYPE_NAMES,\n HIRC_V150_TYPE_NAMES,\n OUTPUT_BNK_JSON,\n OUTPUT_JSON,\n OUTPUT_MEDIA,\n OUTPUT_RAW,\n extractMedia,\n inspectWithValues,\n isBNK,\n probeSupportWithValues,\n normalizeValues,\n readWithValues,\n toJsonValue\n} from \"./core/helpers.js\";\nimport { eventMediaFromBanks } from \"./core/graph.js\";\nimport { parseEventAction } from \"./core/eventAction.js\";\nimport { parseGlobalSettings } from \"./core/globalSettings.js\";\nimport {\n busNodesFromBanks,\n parseBusNode\n} from \"./core/busNodes.js\";\nimport {\n effectNodesFromBanks,\n parseEffectNode\n} from \"./core/effectNodes.js\";\nimport {\n musicNodesFromBanks,\n parseMusicPlaylist,\n parseMusicSegment,\n parseMusicSwitch,\n parseMusicTrack\n} from \"./core/musicNodes.js\";\nimport {\n parseSfxActorMixer,\n parseSfxAttenuation,\n parseSfxLayer,\n parseSfxRandomSequence,\n parseSfxSwitch,\n sfxNodesFromBanks\n} from \"./core/sfxNodes.js\";\n\nconst FORMAT_NAME = \"CjsBnkFormat\";\n\n/**\n * Reader for Audiokinetic Wwise soundbank (.bnk) containers.\n *\n * Inspection decodes the bank header, embedded media index, exact v150 global\n * settings, object hierarchy listing (with version-stable typed fields), and\n * referenced bank names without copying payloads. Read can emit the raw bank,\n * debug JSON, or the embedded media items undecoded. The read path stays a\n * pure container reader; the Wwise-domain toolkit (SoundbanksInfo catalog\n * helpers, id hash, event -> media graph resolution) is grouped under the\n * `wwise` static.\n */\nexport class CjsBnkFormat extends CjsFormat\n{\n _values = DEFAULT_VALUES;\n\n /**\n * Browser-worker module declaration consumed by CjsResManWorkerLoader.\n */\n static worker = {\n module: import.meta.url,\n exportName: \"CjsBnkFormat\",\n outputTypes: Object.freeze([ OUTPUT_RAW, OUTPUT_MEDIA, OUTPUT_BNK_JSON ]),\n defaultOutput: OUTPUT_RAW\n };\n\n /**\n * Create a reusable bnk format profile.\n *\n * @param {object} [options] Default read/inspect options.\n */\n constructor(options = {})\n {\n super();\n this.SetValues(options);\n }\n\n /**\n * Merge options into this profile.\n *\n * @param {object} [options] Values to merge.\n * @returns {CjsBnkFormat} This format profile.\n */\n SetValues(options = {})\n {\n this._values = normalizeValues(this._values, 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, options, FORMAT_NAME);\n }\n\n /**\n * Read soundbank bytes with this profile.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} GPU-free raw/debug/media payload for the selected emit target.\n */\n Read(input, options = {})\n {\n return readWithValues(input, this.GetValues(options));\n }\n\n /**\n * Read soundbank bytes asynchronously with this profile.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.\n * @param {object} [options] Per-call values.\n * @returns {Promise<object>} GPU-free raw/debug/media payload for the selected emit target.\n */\n async ReadAsync(input, options = {})\n {\n return this.Read(input, options);\n }\n\n /**\n * Inspect soundbank bytes without copying media payloads.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.\n * @param {object} [options] Per-call values.\n * @returns {object} Soundbank metadata.\n */\n Inspect(input, options = {})\n {\n return inspectWithValues(input, this.GetValues(options));\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 soundbank read.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.\n * @param {object} [options] Read options.\n * @returns {object} GPU-free raw/debug/media payload for the selected emit target.\n */\n static read(input, options = {})\n {\n return readWithValues(input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME));\n }\n\n /**\n * One-shot asynchronous soundbank read.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.\n * @param {object} [options] Read options.\n * @returns {Promise<object>} GPU-free raw/debug/media payload for the selected emit target.\n */\n static async readAsync(input, options = {})\n {\n return CjsBnkFormat.read(input, options);\n }\n\n /**\n * One-shot soundbank inspection.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.\n * @param {object} [options] Inspect options.\n * @returns {object} Soundbank metadata.\n */\n static inspect(input, options = {})\n {\n return inspectWithValues(input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME));\n }\n\n /**\n * One-shot soundbank support probe.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.\n * @param {object} [options] Probe options.\n * @returns {object} Support/probe report.\n */\n static probeSupport(input, options = {})\n {\n return probeSupportWithValues(input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME));\n }\n\n /**\n * Extract embedded media payloads as views over the soundbank bytes.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.\n * @param {number} [mediaId] Optional single media id filter.\n * @returns {Array<object>} Extracted media items with undecoded bytes.\n */\n static extractMedia(input, mediaId)\n {\n const bytes = asUint8Array(input, \"Bnk input\");\n const metadata = inspectWithValues(bytes, DEFAULT_VALUES);\n return extractMedia(bytes, metadata, mediaId);\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 Wwise soundbank.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Candidate soundbank bytes.\n * @returns {boolean} True when the BKHD header chunk is present.\n */\n static isBNK(input)\n {\n try\n {\n return isBNK(asUint8Array(input, \"Bnk input\"));\n }\n catch\n {\n return false;\n }\n }\n\n /**\n * Wwise-domain toolkit, grouped apart from the container-reading statics -\n * the single home for the SoundbanksInfo catalog helpers\n * (`isSoundbanksInfo`, `parseSoundbanksInfo`, `buildSoundbanksCatalog`,\n * `joinSoundbanksInfo`), the id hash (`wwiseIdFromName`, FNV-1 of the\n * lowercased name), and event-graph resolution.\n *\n * `eventMediaFromBanks(inspections, options)` is graph interpretation over\n * `inspect()` results, not a read path: banks may split events from their\n * target objects (EVE keeps all events in one bank and their sounds in\n * others), so always pass every related bank to one call. Returns\n * `{ eventMedia: Map<eventObjectId, Set<wemId>>, diagnostics }`. See\n * core/graph.js for the walk policy.\n *\n * The interactive-music decoders (`musicNodesFromBanks` and the per-type\n * `parseMusicSegment/Track/Playlist/Switch`) turn the music-hierarchy\n * entries (HIRC 10-13) into typed nodes - children, meter, cue markers,\n * clips, playlist trees, decision trees, and transition rules. See\n * core/musicNodes.js for the anchored, exact-end-validated parse.\n *\n * The v150 authored-SFX decoders (`sfxNodesFromBanks` and the per-type\n * Global Settings, Event Action, Random/Sequence, Switch, Layer,\n * Actor-Mixer, and Attenuation parsers)\n * preserve raw Wwise semantics for the runtime audio layer's optional builder.\n * NodeBase facts, hierarchy-only Actor-Mixers, and attenuation objects\n * remain distinct from playable container behavior.\n *\n * `busNodesFromBanks` and `parseBusNode` expose qualified complete v150\n * Audio Bus and Auxiliary Bus bodies: ancestry, root output device,\n * properties, aux topology, policy, ducking, effect/metadata references,\n * RTPCs, and state values.\n *\n * `effectNodesFromBanks` and `parseEffectNode` expose complete generic\n * v150 Fx ShareSet and Fx Custom bodies while leaving plug-in parameter\n * blocks opaque for separately qualified DSP adapters.\n */\n static wwise = {\n isSoundbanksInfo,\n parseSoundbanksInfo,\n buildSoundbanksCatalog,\n joinSoundbanksInfo,\n wwiseIdFromName,\n eventMediaFromBanks,\n parseGlobalSettings,\n parseEventAction,\n musicNodesFromBanks,\n parseMusicSegment,\n parseMusicTrack,\n parseMusicPlaylist,\n parseMusicSwitch,\n busNodesFromBanks,\n parseBusNode,\n effectNodesFromBanks,\n parseEffectNode,\n sfxNodesFromBanks,\n parseSfxActorMixer,\n parseSfxAttenuation,\n parseSfxRandomSequence,\n parseSfxSwitch,\n parseSfxLayer\n };\n\n /**\n * Emit targets for this format (canonical frozen enum).\n */\n\n\n\n static id = \"CjsBnkFormat\";\n\n static mediaTypes = [ \"audio\" ];\n\n static outputs = CjsFormat.defineOutputs({\n\n raw: { default: true, passthrough: true },\n\n media: { },\n\n bnkJson: { role: \"debug\", probes: [ \"bnkJson\", \"raw\" ] }\n\n });\n\n static extensions = [ \".bnk\" ];\n}\n\nexport default CjsBnkFormat;\n"],"names":["FORMAT_NAME","CjsBnkFormat","CjsFormat","_values","DEFAULT_VALUES","worker","module","import","meta","url","exportName","outputTypes","Object","freeze","OUTPUT_RAW","OUTPUT_MEDIA","OUTPUT_BNK_JSON","defaultOutput","constructor","options","SetValues","normalizeValues","GetValues","Read","input","readWithValues","ReadAsync","Inspect","inspectWithValues","ToJSON","value","toJsonValue","read","readAsync","inspect","probeSupport","probeSupportWithValues","extractMedia","mediaId","bytes","asUint8Array","metadata","toJSON","isBNK","wwise","isSoundbanksInfo","parseSoundbanksInfo","buildSoundbanksCatalog","joinSoundbanksInfo","wwiseIdFromName","eventMediaFromBanks","parseGlobalSettings","parseEventAction","musicNodesFromBanks","parseMusicSegment","parseMusicTrack","parseMusicPlaylist","parseMusicSwitch","busNodesFromBanks","parseBusNode","effectNodesFromBanks","parseEffectNode","sfxNodesFromBanks","parseSfxActorMixer","parseSfxAttenuation","parseSfxRandomSequence","parseSfxSwitch","parseSfxLayer","id","mediaTypes","outputs","defineOutputs","raw","default","passthrough","media","bnkJson","role","probes","extensions"],"mappings":"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"}
@@ -4,7 +4,6 @@ import { parseEventAction } from './eventAction.js';
4
4
  import { parseGlobalSettings } from './globalSettings.js';
5
5
 
6
6
  const OUTPUT_RAW = "raw";
7
- const OUTPUT_JSON = "json";
8
7
  const OUTPUT_BNK_JSON = "bnkJson";
9
8
  const OUTPUT_MEDIA = "media";
10
9
  const DEFAULT_VALUES = Object.freeze({
@@ -75,7 +74,6 @@ function normalizeValues(base = DEFAULT_VALUES, options = {}, readerName = "CjsB
75
74
  /** Normalizes the requested output representation for the BNK format reader. */
76
75
  function normalizeEmit(emit, readerName) {
77
76
  if (emit === undefined || emit === null) return OUTPUT_RAW;
78
- if (emit === OUTPUT_JSON) return OUTPUT_BNK_JSON;
79
77
  if ([OUTPUT_RAW, OUTPUT_BNK_JSON, OUTPUT_MEDIA].includes(emit)) return emit;
80
78
  throw new TypeError(`${readerName}: unknown emit value ${JSON.stringify(emit)}`);
81
79
  }
@@ -441,5 +439,5 @@ function readU32(bytes, offset) {
441
439
  return (bytes[offset] | bytes[offset + 1] << 8 | bytes[offset + 2] << 16 | bytes[offset + 3] * 0x1000000) >>> 0;
442
440
  }
443
441
 
444
- export { DEFAULT_VALUES, HIRC_TYPE_NAMES, HIRC_V150_TYPE_NAMES, OUTPUT_BNK_JSON, OUTPUT_JSON, OUTPUT_MEDIA, OUTPUT_RAW, extractMedia, inspectBNK, inspectWithValues, isBNK, normalizeEmit, normalizeValues, probeSupportWithValues, readWithValues, readWwiseVar };
442
+ export { DEFAULT_VALUES, HIRC_TYPE_NAMES, HIRC_V150_TYPE_NAMES, OUTPUT_BNK_JSON, OUTPUT_MEDIA, OUTPUT_RAW, extractMedia, inspectBNK, inspectWithValues, isBNK, normalizeEmit, normalizeValues, probeSupportWithValues, readWithValues, readWwiseVar };
445
443
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sources":["../../../../../../src/resource/formats/bnk/core/helpers.js"],"sourcesContent":["import { readWwiseVar } from \"./WwiseCursor.js\";\nimport { toJsonWithByteSummary as toJsonValue } from \"../../../format/jsonPolicies.js\";\nimport { asUint8Array, readFourCc } from \"#utils/bytes\";\nimport { parseEventAction } from \"./eventAction.js\";\nimport { parseGlobalSettings } from \"./globalSettings.js\";\n\nexport const OUTPUT_RAW = \"raw\";\nexport const OUTPUT_JSON = \"json\";\nexport const OUTPUT_BNK_JSON = \"bnkJson\";\nexport const OUTPUT_MEDIA = \"media\";\n\nexport const DEFAULT_VALUES = Object.freeze({\n emit: OUTPUT_RAW,\n inputType: \"bnk\",\n source: \"\"\n});\n\n/**\n * Advisory names for classic HIRC object type ids.\n *\n * Type ids shifted in later Wwise releases, so these names are hints for\n * debugging and inventory work, not a version-exact schema. Unknown ids are\n * reported as `hirc-type-<n>`.\n */\nexport const HIRC_TYPE_NAMES = Object.freeze({\n 1: \"settings\",\n 2: \"sound\",\n 3: \"event-action\",\n 4: \"event\",\n 5: \"random-sequence-container\",\n 6: \"switch-container\",\n 7: \"actor-mixer\",\n 8: \"audio-bus\",\n 9: \"blend-container\",\n 10: \"music-segment\",\n 11: \"music-track\",\n 12: \"music-switch-container\",\n 13: \"music-playlist-container\",\n 14: \"attenuation\",\n 15: \"dialogue-event\",\n 16: \"motion-bus\",\n 17: \"motion-fx\",\n 18: \"effect\",\n 19: \"auxiliary-bus\",\n 20: \"lfo\",\n 21: \"envelope\",\n 22: \"audio-device\"\n});\n\n/** Version-qualified HIRC names for Wwise bank versions 128 through 154. */\nexport const HIRC_V150_TYPE_NAMES = Object.freeze({\n ...HIRC_TYPE_NAMES,\n 16: \"fx-share-set\",\n 17: \"fx-custom\",\n 18: \"auxiliary-bus\",\n 19: \"lfo\",\n 20: \"envelope\",\n 21: \"audio-device\",\n 22: \"time-modulator\"\n});\n\n/**\n * Normalizes reader options against their supported defaults for the BNK format\n * reader.\n */\nexport function normalizeValues(base = DEFAULT_VALUES, options = {}, readerName = \"CjsBnkFormat\")\n{\n const values = { ...DEFAULT_VALUES, ...(base || {}), ...(options || {}) };\n values.inputType = values.inputType ? String(values.inputType).replace(/^\\./u, \"\").toLowerCase() : \"bnk\";\n values.emit = normalizeEmit(values.emit, readerName);\n return values;\n}\n\n/** Normalizes the requested output representation for the BNK format reader. */\nexport function normalizeEmit(emit, readerName)\n{\n if (emit === undefined || emit === null) return OUTPUT_RAW;\n if (emit === OUTPUT_JSON) return OUTPUT_BNK_JSON;\n if ([ OUTPUT_RAW, OUTPUT_BNK_JSON, OUTPUT_MEDIA ].includes(emit)) return emit;\n throw new TypeError(`${readerName}: unknown emit value ${JSON.stringify(emit)}`);\n}\n\n/** Returns a byte view over the supplied binary input for the BNK format reader. */\n/**\n * Test for a Wwise soundbank BKHD signature.\n *\n * @param {Uint8Array} bytes Candidate bytes.\n * @returns {boolean} True when the bank header chunk is present.\n */\nexport function isBNK(bytes)\n{\n return bytes.byteLength >= 8 && readFourCc(bytes, 0) === \"BKHD\";\n}\n\n/**\n * Inspect Wwise soundbank bytes without copying media payloads.\n *\n * Walks the chunk sequence and decodes the bank header (BKHD), embedded media\n * index (DIDX/DATA), global settings (STMG), object hierarchy listing (HIRC),\n * and referenced bank names (STID). Unknown chunks are recorded, never\n * rejected; a truncated trailing chunk stops the walk and is flagged.\n *\n * Wwise soundbanks are written little-endian on all platforms EVE ships on;\n * this reader assumes little-endian data.\n *\n * @param {Uint8Array} bytes Soundbank bytes.\n * @returns {object} Soundbank metadata.\n */\nexport function inspectBNK(bytes)\n{\n const info = {\n sourceFormat: \"bnk\",\n bankVersion: 0,\n bankId: 0,\n languageId: 0,\n media: [],\n hirc: [],\n names: [],\n globalSettings: null,\n chunks: []\n };\n\n let dataChunkOffset = 0;\n let dataChunkSize = 0;\n let mediaIndex = [];\n let globalSettingsPayload = null;\n let duplicateGlobalSettings = false;\n let offset = 0;\n\n while (offset + 8 <= bytes.byteLength)\n {\n const id = readFourCc(bytes, offset);\n const size = readU32(bytes, offset + 4);\n const dataOffset = offset + 8;\n if (dataOffset + size > bytes.byteLength)\n {\n info.chunks.push({ id, offset, dataOffset, size, truncated: true });\n break;\n }\n info.chunks.push({ id, offset, dataOffset, size });\n\n if (id === \"BKHD\" && size >= 12)\n {\n info.bankVersion = readU32(bytes, dataOffset);\n info.bankId = readU32(bytes, dataOffset + 4);\n info.languageId = readU32(bytes, dataOffset + 8);\n }\n if (id === \"DIDX\")\n {\n mediaIndex = readMediaIndex(bytes, dataOffset, size);\n }\n if (id === \"DATA\")\n {\n dataChunkOffset = dataOffset;\n dataChunkSize = size;\n }\n if (id === \"HIRC\")\n {\n info.hirc = readHircListing(\n bytes,\n dataOffset,\n size,\n info.bankVersion,\n );\n }\n if (id === \"STMG\")\n {\n if (globalSettingsPayload)\n {\n duplicateGlobalSettings = true;\n }\n else\n {\n globalSettingsPayload = bytes.subarray(\n dataOffset,\n dataOffset + size,\n );\n }\n }\n if (id === \"STID\")\n {\n info.names = readNameTable(bytes, dataOffset, size);\n }\n\n offset = dataOffset + size;\n }\n\n info.media = mediaIndex.map((entry) =>\n {\n const absoluteOffset = dataChunkOffset + entry.offset;\n const available = dataChunkOffset > 0 &&\n entry.offset + entry.length <= dataChunkSize &&\n absoluteOffset + entry.length <= bytes.byteLength;\n return {\n id: entry.id,\n offset: entry.offset,\n absoluteOffset: dataChunkOffset > 0 ? absoluteOffset : 0,\n length: entry.length,\n available\n };\n });\n\n if (globalSettingsPayload && !duplicateGlobalSettings)\n {\n info.globalSettings = parseGlobalSettings(\n globalSettingsPayload,\n { bankVersion: info.bankVersion },\n );\n }\n\n info.mediaCount = info.media.length;\n info.hircCount = info.hirc.length;\n return info;\n}\n\nfunction readMediaIndex(bytes, dataOffset, size)\n{\n const entries = [];\n const count = Math.floor(size / 12);\n for (let i = 0; i < count; i++)\n {\n const entryOffset = dataOffset + i * 12;\n entries.push({\n id: readU32(bytes, entryOffset),\n offset: readU32(bytes, entryOffset + 4),\n length: readU32(bytes, entryOffset + 8)\n });\n }\n return entries;\n}\n\nfunction readHircListing(bytes, dataOffset, size, bankVersion)\n{\n const entries = [];\n if (size < 4) return entries;\n const count = readU32(bytes, dataOffset);\n const end = dataOffset + size;\n let offset = dataOffset + 4;\n\n for (let i = 0; i < count; i++)\n {\n if (offset + 9 > end) break;\n const type = bytes[offset];\n const entrySize = readU32(bytes, offset + 1);\n const payloadOffset = offset + 5;\n if (entrySize < 4 || payloadOffset + entrySize > end) break;\n const entry = {\n type,\n typeName: hircTypeName(type, bankVersion),\n id: readU32(bytes, payloadOffset),\n offset: payloadOffset,\n size: entrySize,\n // View over the object body AFTER the leading u32 id; not a copy.\n payload: bytes.subarray(payloadOffset + 4, payloadOffset + entrySize)\n };\n decodeHircFields(entry, bankVersion);\n entries.push(entry);\n offset = payloadOffset + entrySize;\n }\n\n return entries;\n}\n\nfunction hircTypeName(type, bankVersion)\n{\n const names = bankVersion >= 128 && bankVersion <= 154\n ? HIRC_V150_TYPE_NAMES\n : HIRC_TYPE_NAMES;\n\n return names[type] || `hirc-type-${type}`;\n}\n\n/**\n * Decode the version-stable typed fields of common HIRC object types in\n * place. Field layouts verified by hexdump against EVE soundbanks (bank\n * generator version 150 / Wwise 2022.1); every read is bounds-checked, and a\n * body too short for its type's layout simply keeps the raw payload only.\n *\n * - event (4): version >122 uses Wwise's MSB-first base-128 action count;\n * older banks use `u8 actionCount`; both are followed by u32 action ids.\n * - event-action (3): `u16 actionType` (high byte = family: 0x04 play,\n * 0x01 stop, 0x02 pause, 0x03 resume) + `u32 targetId`.\n * - sound (2): `u32 pluginId, u8 streamType, u32 sourceId,\n * u32 inMemoryMediaSize, u8 sourceBits` (streamType 0 = bank data,\n * 1 = streaming prefetch, 2 = streamed). Only plugin type 1 is\n * codec-backed WEM media.\n * - music-track (11): `u8 flags, u32 sourceCount`, then per source the same\n * plugin/stream/source/size quad as sound -> `sources`.\n *\n * Deeper structures (container children, positioning, RTPC curves) remain\n * undecoded; consumers interpret `payload` themselves.\n */\nfunction decodeHircFields(entry, bankVersion)\n{\n const body = entry.payload;\n if (entry.type === 4 && body.byteLength >= 1)\n {\n const actionIds = [];\n const decoded = bankVersion > 122\n ? readWwiseVar(body, 0)\n : { value: body[0], nextOffset: 1 };\n const actionCount = decoded?.value ?? 0;\n const actionOffset = decoded?.nextOffset ?? body.byteLength;\n\n for (let i = 0;\n i < actionCount\n && actionOffset + i * 4 + 4 <= body.byteLength;\n i++)\n {\n actionIds.push(readU32(body, actionOffset + i * 4));\n }\n entry.actionIds = actionIds;\n }\n else if (entry.type === 3 && body.byteLength >= 6)\n {\n entry.actionType = body[0] | (body[1] << 8);\n entry.targetId = readU32(body, 2);\n entry.action = parseEventAction(body, { bankVersion });\n }\n else if (entry.type === 2 && body.byteLength >= 13)\n {\n entry.pluginId = readU32(body, 0);\n entry.pluginType = entry.pluginId & 0x0f;\n entry.streamType = body[4];\n entry.sourceId = readU32(body, 5);\n entry.inMemoryMediaSize = readU32(body, 9);\n if (body.byteLength >= 14)\n {\n entry.sourceBits = body[13];\n }\n }\n else if (entry.type === 11 && body.byteLength >= 5)\n {\n const sources = [];\n const sourceCount = readU32(body, 1);\n for (let i = 0; i < sourceCount; i++)\n {\n const at = 5 + i * 14;\n if (at + 13 > body.byteLength) break;\n sources.push({\n pluginId: readU32(body, at),\n pluginType: readU32(body, at) & 0x0f,\n streamType: body[at + 4],\n sourceId: readU32(body, at + 5),\n inMemoryMediaSize: readU32(body, at + 9)\n });\n }\n entry.sources = sources;\n }\n}\n\n\nfunction readNameTable(bytes, dataOffset, size)\n{\n const names = [];\n if (size < 8) return names;\n const count = readU32(bytes, dataOffset + 4);\n const end = dataOffset + size;\n let offset = dataOffset + 8;\n\n for (let i = 0; i < count; i++)\n {\n if (offset + 5 > end) break;\n const bankId = readU32(bytes, offset);\n const length = bytes[offset + 4];\n if (offset + 5 + length > end) break;\n names.push({\n bankId,\n name: asciiString(bytes, offset + 5, length)\n });\n offset += 5 + length;\n }\n\n return names;\n}\n\n/** Inspects input using normalized format options for the BNK format reader. */\nexport function inspectWithValues(input, values = DEFAULT_VALUES)\n{\n const bytes = asUint8Array(input, \"Bnk input\");\n if (!isBNK(bytes))\n {\n throw new TypeError(\"CjsBnkFormat: expected a Wwise soundbank starting with a BKHD chunk\");\n }\n return {\n payloadType: \"audio\",\n mediaTypes: [ \"audio\" ],\n byteLength: bytes.byteLength,\n source: values.source || \"buffer\",\n ...inspectBNK(bytes)\n };\n}\n\n/**\n * Extract embedded media payloads as views over the soundbank bytes.\n *\n * Returned `bytes` are subarray views, not copies; callers that outlive the\n * source buffer should copy them.\n *\n * @param {Uint8Array} bytes Soundbank bytes.\n * @param {object} metadata Inspection result for those bytes.\n * @param {number} [mediaId] Optional single media id filter.\n * @returns {Array<object>} Extracted media items.\n */\nexport function extractMedia(bytes, metadata, mediaId)\n{\n const items = [];\n for (const entry of metadata.media)\n {\n if (mediaId !== undefined && entry.id !== mediaId) continue;\n if (!entry.available) continue;\n const payload = bytes.subarray(entry.absoluteOffset, entry.absoluteOffset + entry.length);\n items.push({\n id: entry.id,\n length: entry.length,\n isWem: payload.length >= 12 &&\n (readFourCc(payload, 0) === \"RIFF\" || readFourCc(payload, 0) === \"RIFX\") &&\n readFourCc(payload, 8) === \"WAVE\",\n bytes: payload\n });\n }\n return items;\n}\n\n/**\n * Reports whether input is supported under normalized format options for the BNK\n * format reader.\n */\nexport function probeSupportWithValues(input, values = DEFAULT_VALUES)\n{\n try\n {\n const metadata = inspectWithValues(input, values);\n const extractable = metadata.media.some((entry) => entry.available);\n return {\n format: \"bnk\",\n source: values.source || \"buffer\",\n supported: \"partial\",\n confidence: 1,\n preferredOutput: extractable ? OUTPUT_MEDIA : \"raw\",\n reason: extractable\n ? \"Soundbank recognized; embedded media can be extracted undecoded.\"\n : \"Soundbank recognized; it carries no extractable embedded media.\",\n metadata,\n variants: [\n {\n kind: \"raw\",\n payloadType: \"raw\",\n codec: \"wwise-soundbank\",\n mimeType: \"application/octet-stream\",\n supported: true,\n },\n {\n kind: OUTPUT_MEDIA,\n payloadType: OUTPUT_MEDIA,\n codec: \"wem\",\n supported: extractable,\n reason: extractable ? \"\" : \"No DIDX/DATA media entries are present.\"\n }\n ],\n warnings: [],\n errors: []\n };\n }\n catch (error)\n {\n return {\n format: \"bnk\",\n source: values.source || \"buffer\",\n supported: \"none\",\n confidence: 0,\n preferredOutput: \"\",\n reason: error.message,\n metadata: null,\n variants: [],\n warnings: [],\n errors: [ error.message ]\n };\n }\n}\n\n/** Reads input using normalized format options for the BNK format reader. */\nexport function readWithValues(input, values = DEFAULT_VALUES)\n{\n const bytes = asUint8Array(input, \"Bnk input\");\n const metadata = inspectWithValues(bytes, values);\n if (values.emit === OUTPUT_BNK_JSON) return metadata;\n if (values.emit === OUTPUT_MEDIA)\n {\n return {\n payloadType: OUTPUT_MEDIA,\n sourceFormat: \"bnk\",\n metadata,\n items: extractMedia(bytes, metadata)\n };\n }\n return {\n payloadType: \"raw\",\n sourceFormat: \"bnk\",\n mimeType: \"application/octet-stream\",\n metadata,\n bytes\n };\n}\n\n/** Converts a parsed payload into a JSON-safe value for the BNK format reader. */\n/** The shared JSON policy for this reader, under the name its callers use. */\nexport { toJsonValue };\n\nfunction asciiString(bytes, offset, length)\n{\n let value = \"\";\n for (let i = 0; i < length; i++) value += String.fromCharCode(bytes[offset + i]);\n return value;\n}\n\n\nfunction readU32(bytes, offset)\n{\n return (bytes[offset] | (bytes[offset + 1] << 8) | (bytes[offset + 2] << 16) | (bytes[offset + 3] * 0x1000000)) >>> 0;\n}\n\nexport { readWwiseVar };\n"],"names":["OUTPUT_RAW","OUTPUT_JSON","OUTPUT_BNK_JSON","OUTPUT_MEDIA","DEFAULT_VALUES","Object","freeze","emit","inputType","source","HIRC_TYPE_NAMES","HIRC_V150_TYPE_NAMES","normalizeValues","base","options","readerName","values","String","replace","toLowerCase","normalizeEmit","undefined","includes","TypeError","JSON","stringify","isBNK","bytes","byteLength","readFourCc","inspectBNK","info","sourceFormat","bankVersion","bankId","languageId","media","hirc","names","globalSettings","chunks","dataChunkOffset","dataChunkSize","mediaIndex","globalSettingsPayload","duplicateGlobalSettings","offset","id","size","readU32","dataOffset","push","truncated","readMediaIndex","readHircListing","subarray","readNameTable","map","entry","absoluteOffset","available","length","parseGlobalSettings","mediaCount","hircCount","entries","count","Math","floor","i","entryOffset","end","type","entrySize","payloadOffset","typeName","hircTypeName","payload","decodeHircFields","body","actionIds","decoded","readWwiseVar","value","nextOffset","actionCount","actionOffset","actionType","targetId","action","parseEventAction","pluginId","pluginType","streamType","sourceId","inMemoryMediaSize","sourceBits","sources","sourceCount","at","name","asciiString","inspectWithValues","input","asUint8Array","payloadType","mediaTypes","extractMedia","metadata","mediaId","items","isWem","probeSupportWithValues","extractable","some","format","supported","confidence","preferredOutput","reason","variants","kind","codec","mimeType","warnings","errors","error","message","readWithValues","fromCharCode"],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","sources":["../../../../../../src/resource/formats/bnk/core/helpers.js"],"sourcesContent":["import { readWwiseVar } from \"./WwiseCursor.js\";\nimport { toJsonWithByteSummary as toJsonValue } from \"../../../format/jsonPolicies.js\";\nimport { asUint8Array, readFourCc } from \"#utils/bytes\";\nimport { parseEventAction } from \"./eventAction.js\";\nimport { parseGlobalSettings } from \"./globalSettings.js\";\n\nexport const OUTPUT_RAW = \"raw\";\nexport const OUTPUT_JSON = \"json\";\nexport const OUTPUT_BNK_JSON = \"bnkJson\";\nexport const OUTPUT_MEDIA = \"media\";\n\nexport const DEFAULT_VALUES = Object.freeze({\n emit: OUTPUT_RAW,\n inputType: \"bnk\",\n source: \"\"\n});\n\n/**\n * Advisory names for classic HIRC object type ids.\n *\n * Type ids shifted in later Wwise releases, so these names are hints for\n * debugging and inventory work, not a version-exact schema. Unknown ids are\n * reported as `hirc-type-<n>`.\n */\nexport const HIRC_TYPE_NAMES = Object.freeze({\n 1: \"settings\",\n 2: \"sound\",\n 3: \"event-action\",\n 4: \"event\",\n 5: \"random-sequence-container\",\n 6: \"switch-container\",\n 7: \"actor-mixer\",\n 8: \"audio-bus\",\n 9: \"blend-container\",\n 10: \"music-segment\",\n 11: \"music-track\",\n 12: \"music-switch-container\",\n 13: \"music-playlist-container\",\n 14: \"attenuation\",\n 15: \"dialogue-event\",\n 16: \"motion-bus\",\n 17: \"motion-fx\",\n 18: \"effect\",\n 19: \"auxiliary-bus\",\n 20: \"lfo\",\n 21: \"envelope\",\n 22: \"audio-device\"\n});\n\n/** Version-qualified HIRC names for Wwise bank versions 128 through 154. */\nexport const HIRC_V150_TYPE_NAMES = Object.freeze({\n ...HIRC_TYPE_NAMES,\n 16: \"fx-share-set\",\n 17: \"fx-custom\",\n 18: \"auxiliary-bus\",\n 19: \"lfo\",\n 20: \"envelope\",\n 21: \"audio-device\",\n 22: \"time-modulator\"\n});\n\n/**\n * Normalizes reader options against their supported defaults for the BNK format\n * reader.\n */\nexport function normalizeValues(base = DEFAULT_VALUES, options = {}, readerName = \"CjsBnkFormat\")\n{\n const values = { ...DEFAULT_VALUES, ...(base || {}), ...(options || {}) };\n values.inputType = values.inputType ? String(values.inputType).replace(/^\\./u, \"\").toLowerCase() : \"bnk\";\n values.emit = normalizeEmit(values.emit, readerName);\n return values;\n}\n\n/** Normalizes the requested output representation for the BNK format reader. */\nexport function normalizeEmit(emit, readerName)\n{\n if (emit === undefined || emit === null) return OUTPUT_RAW;\n if ([ OUTPUT_RAW, OUTPUT_BNK_JSON, OUTPUT_MEDIA ].includes(emit)) return emit;\n throw new TypeError(`${readerName}: unknown emit value ${JSON.stringify(emit)}`);\n}\n\n/** Returns a byte view over the supplied binary input for the BNK format reader. */\n/**\n * Test for a Wwise soundbank BKHD signature.\n *\n * @param {Uint8Array} bytes Candidate bytes.\n * @returns {boolean} True when the bank header chunk is present.\n */\nexport function isBNK(bytes)\n{\n return bytes.byteLength >= 8 && readFourCc(bytes, 0) === \"BKHD\";\n}\n\n/**\n * Inspect Wwise soundbank bytes without copying media payloads.\n *\n * Walks the chunk sequence and decodes the bank header (BKHD), embedded media\n * index (DIDX/DATA), global settings (STMG), object hierarchy listing (HIRC),\n * and referenced bank names (STID). Unknown chunks are recorded, never\n * rejected; a truncated trailing chunk stops the walk and is flagged.\n *\n * Wwise soundbanks are written little-endian on all platforms EVE ships on;\n * this reader assumes little-endian data.\n *\n * @param {Uint8Array} bytes Soundbank bytes.\n * @returns {object} Soundbank metadata.\n */\nexport function inspectBNK(bytes)\n{\n const info = {\n sourceFormat: \"bnk\",\n bankVersion: 0,\n bankId: 0,\n languageId: 0,\n media: [],\n hirc: [],\n names: [],\n globalSettings: null,\n chunks: []\n };\n\n let dataChunkOffset = 0;\n let dataChunkSize = 0;\n let mediaIndex = [];\n let globalSettingsPayload = null;\n let duplicateGlobalSettings = false;\n let offset = 0;\n\n while (offset + 8 <= bytes.byteLength)\n {\n const id = readFourCc(bytes, offset);\n const size = readU32(bytes, offset + 4);\n const dataOffset = offset + 8;\n if (dataOffset + size > bytes.byteLength)\n {\n info.chunks.push({ id, offset, dataOffset, size, truncated: true });\n break;\n }\n info.chunks.push({ id, offset, dataOffset, size });\n\n if (id === \"BKHD\" && size >= 12)\n {\n info.bankVersion = readU32(bytes, dataOffset);\n info.bankId = readU32(bytes, dataOffset + 4);\n info.languageId = readU32(bytes, dataOffset + 8);\n }\n if (id === \"DIDX\")\n {\n mediaIndex = readMediaIndex(bytes, dataOffset, size);\n }\n if (id === \"DATA\")\n {\n dataChunkOffset = dataOffset;\n dataChunkSize = size;\n }\n if (id === \"HIRC\")\n {\n info.hirc = readHircListing(\n bytes,\n dataOffset,\n size,\n info.bankVersion,\n );\n }\n if (id === \"STMG\")\n {\n if (globalSettingsPayload)\n {\n duplicateGlobalSettings = true;\n }\n else\n {\n globalSettingsPayload = bytes.subarray(\n dataOffset,\n dataOffset + size,\n );\n }\n }\n if (id === \"STID\")\n {\n info.names = readNameTable(bytes, dataOffset, size);\n }\n\n offset = dataOffset + size;\n }\n\n info.media = mediaIndex.map((entry) =>\n {\n const absoluteOffset = dataChunkOffset + entry.offset;\n const available = dataChunkOffset > 0 &&\n entry.offset + entry.length <= dataChunkSize &&\n absoluteOffset + entry.length <= bytes.byteLength;\n return {\n id: entry.id,\n offset: entry.offset,\n absoluteOffset: dataChunkOffset > 0 ? absoluteOffset : 0,\n length: entry.length,\n available\n };\n });\n\n if (globalSettingsPayload && !duplicateGlobalSettings)\n {\n info.globalSettings = parseGlobalSettings(\n globalSettingsPayload,\n { bankVersion: info.bankVersion },\n );\n }\n\n info.mediaCount = info.media.length;\n info.hircCount = info.hirc.length;\n return info;\n}\n\nfunction readMediaIndex(bytes, dataOffset, size)\n{\n const entries = [];\n const count = Math.floor(size / 12);\n for (let i = 0; i < count; i++)\n {\n const entryOffset = dataOffset + i * 12;\n entries.push({\n id: readU32(bytes, entryOffset),\n offset: readU32(bytes, entryOffset + 4),\n length: readU32(bytes, entryOffset + 8)\n });\n }\n return entries;\n}\n\nfunction readHircListing(bytes, dataOffset, size, bankVersion)\n{\n const entries = [];\n if (size < 4) return entries;\n const count = readU32(bytes, dataOffset);\n const end = dataOffset + size;\n let offset = dataOffset + 4;\n\n for (let i = 0; i < count; i++)\n {\n if (offset + 9 > end) break;\n const type = bytes[offset];\n const entrySize = readU32(bytes, offset + 1);\n const payloadOffset = offset + 5;\n if (entrySize < 4 || payloadOffset + entrySize > end) break;\n const entry = {\n type,\n typeName: hircTypeName(type, bankVersion),\n id: readU32(bytes, payloadOffset),\n offset: payloadOffset,\n size: entrySize,\n // View over the object body AFTER the leading u32 id; not a copy.\n payload: bytes.subarray(payloadOffset + 4, payloadOffset + entrySize)\n };\n decodeHircFields(entry, bankVersion);\n entries.push(entry);\n offset = payloadOffset + entrySize;\n }\n\n return entries;\n}\n\nfunction hircTypeName(type, bankVersion)\n{\n const names = bankVersion >= 128 && bankVersion <= 154\n ? HIRC_V150_TYPE_NAMES\n : HIRC_TYPE_NAMES;\n\n return names[type] || `hirc-type-${type}`;\n}\n\n/**\n * Decode the version-stable typed fields of common HIRC object types in\n * place. Field layouts verified by hexdump against EVE soundbanks (bank\n * generator version 150 / Wwise 2022.1); every read is bounds-checked, and a\n * body too short for its type's layout simply keeps the raw payload only.\n *\n * - event (4): version >122 uses Wwise's MSB-first base-128 action count;\n * older banks use `u8 actionCount`; both are followed by u32 action ids.\n * - event-action (3): `u16 actionType` (high byte = family: 0x04 play,\n * 0x01 stop, 0x02 pause, 0x03 resume) + `u32 targetId`.\n * - sound (2): `u32 pluginId, u8 streamType, u32 sourceId,\n * u32 inMemoryMediaSize, u8 sourceBits` (streamType 0 = bank data,\n * 1 = streaming prefetch, 2 = streamed). Only plugin type 1 is\n * codec-backed WEM media.\n * - music-track (11): `u8 flags, u32 sourceCount`, then per source the same\n * plugin/stream/source/size quad as sound -> `sources`.\n *\n * Deeper structures (container children, positioning, RTPC curves) remain\n * undecoded; consumers interpret `payload` themselves.\n */\nfunction decodeHircFields(entry, bankVersion)\n{\n const body = entry.payload;\n if (entry.type === 4 && body.byteLength >= 1)\n {\n const actionIds = [];\n const decoded = bankVersion > 122\n ? readWwiseVar(body, 0)\n : { value: body[0], nextOffset: 1 };\n const actionCount = decoded?.value ?? 0;\n const actionOffset = decoded?.nextOffset ?? body.byteLength;\n\n for (let i = 0;\n i < actionCount\n && actionOffset + i * 4 + 4 <= body.byteLength;\n i++)\n {\n actionIds.push(readU32(body, actionOffset + i * 4));\n }\n entry.actionIds = actionIds;\n }\n else if (entry.type === 3 && body.byteLength >= 6)\n {\n entry.actionType = body[0] | (body[1] << 8);\n entry.targetId = readU32(body, 2);\n entry.action = parseEventAction(body, { bankVersion });\n }\n else if (entry.type === 2 && body.byteLength >= 13)\n {\n entry.pluginId = readU32(body, 0);\n entry.pluginType = entry.pluginId & 0x0f;\n entry.streamType = body[4];\n entry.sourceId = readU32(body, 5);\n entry.inMemoryMediaSize = readU32(body, 9);\n if (body.byteLength >= 14)\n {\n entry.sourceBits = body[13];\n }\n }\n else if (entry.type === 11 && body.byteLength >= 5)\n {\n const sources = [];\n const sourceCount = readU32(body, 1);\n for (let i = 0; i < sourceCount; i++)\n {\n const at = 5 + i * 14;\n if (at + 13 > body.byteLength) break;\n sources.push({\n pluginId: readU32(body, at),\n pluginType: readU32(body, at) & 0x0f,\n streamType: body[at + 4],\n sourceId: readU32(body, at + 5),\n inMemoryMediaSize: readU32(body, at + 9)\n });\n }\n entry.sources = sources;\n }\n}\n\n\nfunction readNameTable(bytes, dataOffset, size)\n{\n const names = [];\n if (size < 8) return names;\n const count = readU32(bytes, dataOffset + 4);\n const end = dataOffset + size;\n let offset = dataOffset + 8;\n\n for (let i = 0; i < count; i++)\n {\n if (offset + 5 > end) break;\n const bankId = readU32(bytes, offset);\n const length = bytes[offset + 4];\n if (offset + 5 + length > end) break;\n names.push({\n bankId,\n name: asciiString(bytes, offset + 5, length)\n });\n offset += 5 + length;\n }\n\n return names;\n}\n\n/** Inspects input using normalized format options for the BNK format reader. */\nexport function inspectWithValues(input, values = DEFAULT_VALUES)\n{\n const bytes = asUint8Array(input, \"Bnk input\");\n if (!isBNK(bytes))\n {\n throw new TypeError(\"CjsBnkFormat: expected a Wwise soundbank starting with a BKHD chunk\");\n }\n return {\n payloadType: \"audio\",\n mediaTypes: [ \"audio\" ],\n byteLength: bytes.byteLength,\n source: values.source || \"buffer\",\n ...inspectBNK(bytes)\n };\n}\n\n/**\n * Extract embedded media payloads as views over the soundbank bytes.\n *\n * Returned `bytes` are subarray views, not copies; callers that outlive the\n * source buffer should copy them.\n *\n * @param {Uint8Array} bytes Soundbank bytes.\n * @param {object} metadata Inspection result for those bytes.\n * @param {number} [mediaId] Optional single media id filter.\n * @returns {Array<object>} Extracted media items.\n */\nexport function extractMedia(bytes, metadata, mediaId)\n{\n const items = [];\n for (const entry of metadata.media)\n {\n if (mediaId !== undefined && entry.id !== mediaId) continue;\n if (!entry.available) continue;\n const payload = bytes.subarray(entry.absoluteOffset, entry.absoluteOffset + entry.length);\n items.push({\n id: entry.id,\n length: entry.length,\n isWem: payload.length >= 12 &&\n (readFourCc(payload, 0) === \"RIFF\" || readFourCc(payload, 0) === \"RIFX\") &&\n readFourCc(payload, 8) === \"WAVE\",\n bytes: payload\n });\n }\n return items;\n}\n\n/**\n * Reports whether input is supported under normalized format options for the BNK\n * format reader.\n */\nexport function probeSupportWithValues(input, values = DEFAULT_VALUES)\n{\n try\n {\n const metadata = inspectWithValues(input, values);\n const extractable = metadata.media.some((entry) => entry.available);\n return {\n format: \"bnk\",\n source: values.source || \"buffer\",\n supported: \"partial\",\n confidence: 1,\n preferredOutput: extractable ? OUTPUT_MEDIA : \"raw\",\n reason: extractable\n ? \"Soundbank recognized; embedded media can be extracted undecoded.\"\n : \"Soundbank recognized; it carries no extractable embedded media.\",\n metadata,\n variants: [\n {\n kind: \"raw\",\n payloadType: \"raw\",\n codec: \"wwise-soundbank\",\n mimeType: \"application/octet-stream\",\n supported: true,\n },\n {\n kind: OUTPUT_MEDIA,\n payloadType: OUTPUT_MEDIA,\n codec: \"wem\",\n supported: extractable,\n reason: extractable ? \"\" : \"No DIDX/DATA media entries are present.\"\n }\n ],\n warnings: [],\n errors: []\n };\n }\n catch (error)\n {\n return {\n format: \"bnk\",\n source: values.source || \"buffer\",\n supported: \"none\",\n confidence: 0,\n preferredOutput: \"\",\n reason: error.message,\n metadata: null,\n variants: [],\n warnings: [],\n errors: [ error.message ]\n };\n }\n}\n\n/** Reads input using normalized format options for the BNK format reader. */\nexport function readWithValues(input, values = DEFAULT_VALUES)\n{\n const bytes = asUint8Array(input, \"Bnk input\");\n const metadata = inspectWithValues(bytes, values);\n if (values.emit === OUTPUT_BNK_JSON) return metadata;\n if (values.emit === OUTPUT_MEDIA)\n {\n return {\n payloadType: OUTPUT_MEDIA,\n sourceFormat: \"bnk\",\n metadata,\n items: extractMedia(bytes, metadata)\n };\n }\n return {\n payloadType: \"raw\",\n sourceFormat: \"bnk\",\n mimeType: \"application/octet-stream\",\n metadata,\n bytes\n };\n}\n\n/** Converts a parsed payload into a JSON-safe value for the BNK format reader. */\n/** The shared JSON policy for this reader, under the name its callers use. */\nexport { toJsonValue };\n\nfunction asciiString(bytes, offset, length)\n{\n let value = \"\";\n for (let i = 0; i < length; i++) value += String.fromCharCode(bytes[offset + i]);\n return value;\n}\n\n\nfunction readU32(bytes, offset)\n{\n return (bytes[offset] | (bytes[offset + 1] << 8) | (bytes[offset + 2] << 16) | (bytes[offset + 3] * 0x1000000)) >>> 0;\n}\n\nexport { readWwiseVar };\n"],"names":["OUTPUT_RAW","OUTPUT_BNK_JSON","OUTPUT_MEDIA","DEFAULT_VALUES","Object","freeze","emit","inputType","source","HIRC_TYPE_NAMES","HIRC_V150_TYPE_NAMES","normalizeValues","base","options","readerName","values","String","replace","toLowerCase","normalizeEmit","undefined","includes","TypeError","JSON","stringify","isBNK","bytes","byteLength","readFourCc","inspectBNK","info","sourceFormat","bankVersion","bankId","languageId","media","hirc","names","globalSettings","chunks","dataChunkOffset","dataChunkSize","mediaIndex","globalSettingsPayload","duplicateGlobalSettings","offset","id","size","readU32","dataOffset","push","truncated","readMediaIndex","readHircListing","subarray","readNameTable","map","entry","absoluteOffset","available","length","parseGlobalSettings","mediaCount","hircCount","entries","count","Math","floor","i","entryOffset","end","type","entrySize","payloadOffset","typeName","hircTypeName","payload","decodeHircFields","body","actionIds","decoded","readWwiseVar","value","nextOffset","actionCount","actionOffset","actionType","targetId","action","parseEventAction","pluginId","pluginType","streamType","sourceId","inMemoryMediaSize","sourceBits","sources","sourceCount","at","name","asciiString","inspectWithValues","input","asUint8Array","payloadType","mediaTypes","extractMedia","metadata","mediaId","items","isWem","probeSupportWithValues","extractable","some","format","supported","confidence","preferredOutput","reason","variants","kind","codec","mimeType","warnings","errors","error","message","readWithValues","fromCharCode"],"mappings":"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"}
@@ -1,9 +1,10 @@
1
1
  import { CjsFormat } from '../../format/CjsFormat.js';
2
+ import { CjsGeometryFormat } from '../../format/CjsGeometryFormat.js';
2
3
  import { packGraphBuffers } from './core/pack.js';
3
4
  import { buildCmfFromShared } from './core/shared.js';
4
5
  import { writeCmf, writeCmfAsync } from './core/writer.js';
5
- import { DEFAULT_VALUES, normalizeValues, validateClassKey, validateClass, readWithValues, loadNativeWithValues, loadSharedWithValues, readWithValuesAsync, readRawInput, readRawInputAsync, inspectRawCmfResult, toJsonValue } from './core/helpers.js';
6
- import { OUTPUT_SHARED, OUTPUT_RAW, OUTPUT_NATIVE, OUTPUT_GR2, OUTPUT_CMF_JSON, OUTPUT_CMF, OUTPUT_JSON, CLASS_KEYS } from './core/constants.js';
6
+ import { DEFAULT_VALUES, normalizeValues, readWithValues, loadNativeWithValues, loadSharedWithValues, readWithValuesAsync, readRawInput, readRawInputAsync, inspectRawCmfResult, toJsonValue } from './core/helpers.js';
7
+ import { OUTPUT_SHARED, CLASS_KEYS } from './core/constants.js';
7
8
 
8
9
  /**
9
10
  * CarbonEngineJS-facing CMF reader.
@@ -13,11 +14,11 @@ import { OUTPUT_SHARED, OUTPUT_RAW, OUTPUT_NATIVE, OUTPUT_GR2, OUTPUT_CMF_JSON,
13
14
  * shared geometry, emit shared geometry when requested, or hydrate
14
15
  * caller-supplied CarbonEngineJS-style classes.
15
16
  */
16
- class CjsCmfFormat extends CjsFormat {
17
- #emit = DEFAULT_VALUES.emit;
18
- #validateCrc = DEFAULT_VALUES.validateCrc;
19
- #decodeBuffers = DEFAULT_VALUES.decodeBuffers;
20
- #classes = {};
17
+ class CjsCmfFormat extends CjsGeometryFormat {
18
+ _emit = DEFAULT_VALUES.emit;
19
+ _validateCrc = DEFAULT_VALUES.validateCrc;
20
+ _decodeBuffers = DEFAULT_VALUES.decodeBuffers;
21
+ _classes = {};
21
22
 
22
23
  /**
23
24
  * Create a reusable format profile.
@@ -37,10 +38,10 @@ class CjsCmfFormat extends CjsFormat {
37
38
  */
38
39
  SetValues(options = {}) {
39
40
  const values = normalizeValues(this.GetValues(), options);
40
- this.#emit = values.emit;
41
- this.#validateCrc = values.validateCrc;
42
- this.#decodeBuffers = values.decodeBuffers;
43
- this.#classes = values.classes;
41
+ this._emit = values.emit;
42
+ this._validateCrc = values.validateCrc;
43
+ this._decodeBuffers = values.decodeBuffers;
44
+ this._classes = values.classes;
44
45
  return this;
45
46
  }
46
47
 
@@ -52,67 +53,13 @@ class CjsCmfFormat extends CjsFormat {
52
53
  */
53
54
  GetValues(options = {}) {
54
55
  return normalizeValues({
55
- emit: this.#emit,
56
- validateCrc: this.#validateCrc,
57
- decodeBuffers: this.#decodeBuffers,
58
- classes: this.#classes
56
+ emit: this._emit,
57
+ validateCrc: this._validateCrc,
58
+ decodeBuffers: this._decodeBuffers,
59
+ classes: this._classes
59
60
  }, options);
60
61
  }
61
62
 
62
- /**
63
- * Set multiple CMF JSON node constructors for this profile.
64
- *
65
- * @param {object} [classes] Map of node class keys to constructors.
66
- * @returns {CjsCmfFormat} This format profile.
67
- */
68
- SetClasses(classes = {}) {
69
- return this.SetValues({
70
- classes
71
- });
72
- }
73
-
74
- /**
75
- * Set a CMF JSON node constructor for this profile.
76
- *
77
- * @param {string} type Node class key.
78
- * @param {Function|null|undefined} Class Constructor to use, or nullish to delete.
79
- * @returns {CjsCmfFormat} This format profile.
80
- */
81
- SetClass(type, Class) {
82
- validateClassKey(type);
83
- if (Class === null || Class === undefined) {
84
- delete this.#classes[type];
85
- return this;
86
- }
87
- validateClass(type, Class);
88
- this.#classes = {
89
- ...this.#classes,
90
- [type]: Class
91
- };
92
- return this;
93
- }
94
-
95
- /**
96
- * Get a configured CMF JSON node constructor.
97
- *
98
- * @param {string} type Node class key.
99
- * @returns {Function|undefined}
100
- */
101
- GetClass(type) {
102
- validateClassKey(type);
103
- return this.#classes[type];
104
- }
105
-
106
- /**
107
- * Whether this reader has a constructor for a CMF JSON node key.
108
- *
109
- * @param {string} type Node class key.
110
- * @returns {boolean}
111
- */
112
- HasClass(type) {
113
- return !!this.GetClass(type);
114
- }
115
-
116
63
  /**
117
64
  * Parse a .cmf buffer and return CMF-native JSON by default, shared
118
65
  * geometry when `emit` is "shared", or raw parsed data when `emit` is
@@ -460,18 +407,8 @@ class CjsCmfFormat extends CjsFormat {
460
407
  /**
461
408
  * Emit targets for this format (canonical frozen enum).
462
409
  */
463
- static Output = Object.freeze({
464
- JSON: OUTPUT_JSON,
465
- CMF: OUTPUT_CMF,
466
- CMF_JSON: OUTPUT_CMF_JSON,
467
- GR2: OUTPUT_GR2,
468
- NATIVE: OUTPUT_NATIVE,
469
- RAW: OUTPUT_RAW,
470
- SHARED: OUTPUT_SHARED
471
- });
472
- static CLASS_KEYS = CLASS_KEYS;
473
- static id = "cmf";
474
- static mediaTypes = Object.freeze(["geometry"]);
410
+ static classKeys = CLASS_KEYS;
411
+ static id = "CjsCmfFormat";
475
412
  // The writer's own graph is the default: `write` takes a CMF-native graph,
476
413
  // while `writeShared` converts a shared geometry root through it first.
477
414
  // Both are lossless - CMF is the container this package writes for keeps.
@@ -512,7 +449,7 @@ class CjsCmfFormat extends CjsFormat {
512
449
  decoded: true
513
450
  }
514
451
  });
515
- static extensions = Object.freeze([".cmf"]);
452
+ static extensions = [".cmf"];
516
453
  }
517
454
 
518
455
  export { CjsCmfFormat, CjsCmfFormat as default };