@carbonenginejs/runtime-resource 0.19.2 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (308) hide show
  1. package/NOTICE +6 -0
  2. package/dist/CjsResMan.js +1374 -1318
  3. package/dist/CjsResMan.js.map +1 -1
  4. package/dist/format/CjsFormat.js +393 -164
  5. package/dist/format/CjsFormat.js.map +1 -1
  6. package/dist/format/CjsFormatStore.js +315 -0
  7. package/dist/format/CjsFormatStore.js.map +1 -0
  8. package/dist/format/CjsResourceProbe.js +66 -234
  9. package/dist/format/CjsResourceProbe.js.map +1 -1
  10. package/dist/format/payloadContract.js +47 -6
  11. package/dist/format/payloadContract.js.map +1 -1
  12. package/dist/formats/black/CjsBlackFormat.js +23 -6
  13. package/dist/formats/black/CjsBlackFormat.js.map +1 -1
  14. package/dist/formats/bnk/CjsBnkFormat.js +122 -120
  15. package/dist/formats/bnk/CjsBnkFormat.js.map +1 -1
  16. package/dist/formats/bnk/core/helpers.js +5 -15
  17. package/dist/formats/bnk/core/helpers.js.map +1 -1
  18. package/dist/formats/cmf/CjsCmfFormat.js +31 -14
  19. package/dist/formats/cmf/CjsCmfFormat.js.map +1 -1
  20. package/dist/formats/dds/CjsDdsFormat.js +29 -19
  21. package/dist/formats/dds/CjsDdsFormat.js.map +1 -1
  22. package/dist/formats/dds/core/helpers.js +4 -5
  23. package/dist/formats/dds/core/helpers.js.map +1 -1
  24. package/dist/formats/dxbc/CjsDxbcFormat.js +15 -13
  25. package/dist/formats/dxbc/CjsDxbcFormat.js.map +1 -1
  26. package/dist/formats/fbx/CjsFbxFormat.js +27 -19
  27. package/dist/formats/fbx/CjsFbxFormat.js.map +1 -1
  28. package/dist/formats/fbx/core/helpers.js +4 -4
  29. package/dist/formats/fbx/core/helpers.js.map +1 -1
  30. package/dist/formats/flac/CjsFlacFormat.js +19 -17
  31. package/dist/formats/flac/CjsFlacFormat.js.map +1 -1
  32. package/dist/formats/flac/core/helpers.js +5 -11
  33. package/dist/formats/flac/core/helpers.js.map +1 -1
  34. package/dist/formats/fsd/32/CjsFsd32Format.js +55 -0
  35. package/dist/formats/fsd/32/CjsFsd32Format.js.map +1 -0
  36. package/dist/formats/fsd/32/index.js +2 -0
  37. package/dist/formats/fsd/32/index.js.map +1 -0
  38. package/dist/formats/fsd/64/CjsFsd64Format.js +119 -0
  39. package/dist/formats/fsd/64/CjsFsd64Format.js.map +1 -0
  40. package/dist/formats/fsd/64/core/CjsFsd64Binary.js +393 -0
  41. package/dist/formats/fsd/64/core/CjsFsd64Binary.js.map +1 -0
  42. package/dist/formats/fsd/64/core/CjsFsd64Reader.js +138 -0
  43. package/dist/formats/fsd/64/core/CjsFsd64Reader.js.map +1 -0
  44. package/dist/formats/fsd/64/core/CjsFsd64SchemaDecoder.js +389 -0
  45. package/dist/formats/fsd/64/core/CjsFsd64SchemaDecoder.js.map +1 -0
  46. package/dist/formats/fsd/64/core/CjsFsd64SchemaReader.js +43 -0
  47. package/dist/formats/fsd/64/core/CjsFsd64SchemaReader.js.map +1 -0
  48. package/dist/formats/fsd/64/core/fsd64Records.js +60 -0
  49. package/dist/formats/fsd/64/core/fsd64Records.js.map +1 -0
  50. package/dist/formats/fsd/64/index.js +7 -0
  51. package/dist/formats/fsd/64/index.js.map +1 -0
  52. package/dist/formats/fsd/64/readers/CjsFsd64ReaderSetCharacterStaticData.js +33 -0
  53. package/dist/formats/fsd/64/readers/CjsFsd64ReaderSetCharacterStaticData.js.map +1 -0
  54. package/dist/formats/fsd/64/readers/CjsFsd64SchemaAgentTypes.js +35 -0
  55. package/dist/formats/fsd/64/readers/CjsFsd64SchemaAgentTypes.js.map +1 -0
  56. package/dist/formats/fsd/64/readers/CjsFsd64SchemaAgentsInSpace.js +50 -0
  57. package/dist/formats/fsd/64/readers/CjsFsd64SchemaAgentsInSpace.js.map +1 -0
  58. package/dist/formats/fsd/64/readers/CjsFsd64SchemaAncestries.js +75 -0
  59. package/dist/formats/fsd/64/readers/CjsFsd64SchemaAncestries.js.map +1 -0
  60. package/dist/formats/fsd/64/readers/CjsFsd64SchemaArchetypes.js +57 -0
  61. package/dist/formats/fsd/64/readers/CjsFsd64SchemaArchetypes.js.map +1 -0
  62. package/dist/formats/fsd/64/readers/CjsFsd64SchemaAudioMetadata.js +201 -0
  63. package/dist/formats/fsd/64/readers/CjsFsd64SchemaAudioMetadata.js.map +1 -0
  64. package/dist/formats/fsd/64/readers/CjsFsd64SchemaBloodlines.js +73 -0
  65. package/dist/formats/fsd/64/readers/CjsFsd64SchemaBloodlines.js.map +1 -0
  66. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCategories.js +53 -0
  67. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCategories.js.map +1 -0
  68. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCharacterAvatarBehaviors.js +44 -0
  69. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCharacterAvatarBehaviors.js.map +1 -0
  70. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCharacterColorLocations.js +38 -0
  71. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCharacterColorLocations.js.map +1 -0
  72. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCharacterColorNames.js +34 -0
  73. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCharacterColorNames.js.map +1 -0
  74. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCharacterModifierLocations.js +34 -0
  75. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCharacterModifierLocations.js.map +1 -0
  76. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCharacterPortraitResources.js +44 -0
  77. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCharacterPortraitResources.js.map +1 -0
  78. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCharacterResources.js +81 -0
  79. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCharacterResources.js.map +1 -0
  80. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCharacterSculptingLocations.js +34 -0
  81. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCharacterSculptingLocations.js.map +1 -0
  82. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCompressibleTypes.js +41 -0
  83. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCompressibleTypes.js.map +1 -0
  84. package/dist/formats/fsd/64/readers/CjsFsd64SchemaContrabandTypes.js +63 -0
  85. package/dist/formats/fsd/64/readers/CjsFsd64SchemaContrabandTypes.js.map +1 -0
  86. package/dist/formats/fsd/64/readers/CjsFsd64SchemaControlTowerResources.js +76 -0
  87. package/dist/formats/fsd/64/readers/CjsFsd64SchemaControlTowerResources.js.map +1 -0
  88. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCorporationActivities.js +38 -0
  89. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCorporationActivities.js.map +1 -0
  90. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCorporationRoleGroups.js +74 -0
  91. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCorporationRoleGroups.js.map +1 -0
  92. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCorporationRoles.js +59 -0
  93. package/dist/formats/fsd/64/readers/CjsFsd64SchemaCorporationRoles.js.map +1 -0
  94. package/dist/formats/fsd/64/readers/CjsFsd64SchemaDogmaAttributeCategories.js +46 -0
  95. package/dist/formats/fsd/64/readers/CjsFsd64SchemaDogmaAttributeCategories.js.map +1 -0
  96. package/dist/formats/fsd/64/readers/CjsFsd64SchemaDogmaAttributes.js +133 -0
  97. package/dist/formats/fsd/64/readers/CjsFsd64SchemaDogmaAttributes.js.map +1 -0
  98. package/dist/formats/fsd/64/readers/CjsFsd64SchemaDogmaEffects.js +236 -0
  99. package/dist/formats/fsd/64/readers/CjsFsd64SchemaDogmaEffects.js.map +1 -0
  100. package/dist/formats/fsd/64/readers/CjsFsd64SchemaDogmaUnits.js +60 -0
  101. package/dist/formats/fsd/64/readers/CjsFsd64SchemaDogmaUnits.js.map +1 -0
  102. package/dist/formats/fsd/64/readers/CjsFsd64SchemaDynamicItemAttributes.js +95 -0
  103. package/dist/formats/fsd/64/readers/CjsFsd64SchemaDynamicItemAttributes.js.map +1 -0
  104. package/dist/formats/fsd/64/readers/CjsFsd64SchemaEpicArcs.js +106 -0
  105. package/dist/formats/fsd/64/readers/CjsFsd64SchemaEpicArcs.js.map +1 -0
  106. package/dist/formats/fsd/64/readers/CjsFsd64SchemaExpertSystems.js +86 -0
  107. package/dist/formats/fsd/64/readers/CjsFsd64SchemaExpertSystems.js.map +1 -0
  108. package/dist/formats/fsd/64/readers/CjsFsd64SchemaFactions.js +117 -0
  109. package/dist/formats/fsd/64/readers/CjsFsd64SchemaFactions.js.map +1 -0
  110. package/dist/formats/fsd/64/readers/CjsFsd64SchemaGraphicIds.js +70 -0
  111. package/dist/formats/fsd/64/readers/CjsFsd64SchemaGraphicIds.js.map +1 -0
  112. package/dist/formats/fsd/64/readers/CjsFsd64SchemaGraphicMaterialSets.js +173 -0
  113. package/dist/formats/fsd/64/readers/CjsFsd64SchemaGraphicMaterialSets.js.map +1 -0
  114. package/dist/formats/fsd/64/readers/CjsFsd64SchemaGroups.js +77 -0
  115. package/dist/formats/fsd/64/readers/CjsFsd64SchemaGroups.js.map +1 -0
  116. package/dist/formats/fsd/64/readers/CjsFsd64SchemaIcons.js +62 -0
  117. package/dist/formats/fsd/64/readers/CjsFsd64SchemaIcons.js.map +1 -0
  118. package/dist/formats/fsd/64/readers/CjsFsd64SchemaMarketGroups.js +63 -0
  119. package/dist/formats/fsd/64/readers/CjsFsd64SchemaMarketGroups.js.map +1 -0
  120. package/dist/formats/fsd/64/readers/CjsFsd64SchemaMetaGroups.js +86 -0
  121. package/dist/formats/fsd/64/readers/CjsFsd64SchemaMetaGroups.js.map +1 -0
  122. package/dist/formats/fsd/64/readers/CjsFsd64SchemaNpcCorporationDivisions.js +72 -0
  123. package/dist/formats/fsd/64/readers/CjsFsd64SchemaNpcCorporationDivisions.js.map +1 -0
  124. package/dist/formats/fsd/64/readers/CjsFsd64SchemaNpcCorporations.js +326 -0
  125. package/dist/formats/fsd/64/readers/CjsFsd64SchemaNpcCorporations.js.map +1 -0
  126. package/dist/formats/fsd/64/readers/CjsFsd64SchemaPaperdolls.js +279 -0
  127. package/dist/formats/fsd/64/readers/CjsFsd64SchemaPaperdolls.js.map +1 -0
  128. package/dist/formats/fsd/64/readers/CjsFsd64SchemaRaces.js +64 -0
  129. package/dist/formats/fsd/64/readers/CjsFsd64SchemaRaces.js.map +1 -0
  130. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSchoolMap.js +40 -0
  131. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSchoolMap.js.map +1 -0
  132. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSchools.js +113 -0
  133. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSchools.js.map +1 -0
  134. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkillPlans.js +130 -0
  135. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkillPlans.js.map +1 -0
  136. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrComponentCategories.js +38 -0
  137. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrComponentCategories.js.map +1 -0
  138. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrComponentPointValues.js +45 -0
  139. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrComponentPointValues.js.map +1 -0
  140. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrComponentRarities.js +44 -0
  141. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrComponentRarities.js.map +1 -0
  142. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrComponents.js +163 -0
  143. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrComponents.js.map +1 -0
  144. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrSlotCategories.js +37 -0
  145. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrSlotCategories.js.map +1 -0
  146. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrSlotConfigurations.js +77 -0
  147. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrSlotConfigurations.js.map +1 -0
  148. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrSlotNames.js +37 -0
  149. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrSlotNames.js.map +1 -0
  150. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrSlots.js +74 -0
  151. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrSlots.js.map +1 -0
  152. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrTierThresholds.js +44 -0
  153. package/dist/formats/fsd/64/readers/CjsFsd64SchemaSkinrTierThresholds.js.map +1 -0
  154. package/dist/formats/fsd/64/readers/CjsFsd64SchemaStationOperations.js +120 -0
  155. package/dist/formats/fsd/64/readers/CjsFsd64SchemaStationOperations.js.map +1 -0
  156. package/dist/formats/fsd/64/readers/CjsFsd64SchemaStationServices.js +49 -0
  157. package/dist/formats/fsd/64/readers/CjsFsd64SchemaStationServices.js.map +1 -0
  158. package/dist/formats/fsd/64/readers/CjsFsd64SchemaTypeDogma.js +73 -0
  159. package/dist/formats/fsd/64/readers/CjsFsd64SchemaTypeDogma.js.map +1 -0
  160. package/dist/formats/fsd/64/readers/CjsFsd64SchemaTypeLists.js +122 -0
  161. package/dist/formats/fsd/64/readers/CjsFsd64SchemaTypeLists.js.map +1 -0
  162. package/dist/formats/fsd/64/readers/CjsFsd64SchemaTypeMaterials.js +83 -0
  163. package/dist/formats/fsd/64/readers/CjsFsd64SchemaTypeMaterials.js.map +1 -0
  164. package/dist/formats/fsd/64/readers/CjsFsd64SchemaTypes.js +194 -0
  165. package/dist/formats/fsd/64/readers/CjsFsd64SchemaTypes.js.map +1 -0
  166. package/dist/formats/fsd/64/readers/index.js +58 -0
  167. package/dist/formats/fsd/64/readers/index.js.map +1 -0
  168. package/dist/formats/fsd/CjsFsdFormat.js +62 -0
  169. package/dist/formats/fsd/CjsFsdFormat.js.map +1 -0
  170. package/dist/formats/fsd/index.js +9 -0
  171. package/dist/formats/fsd/index.js.map +1 -0
  172. package/dist/formats/gif/CjsGifFormat.js +26 -16
  173. package/dist/formats/gif/CjsGifFormat.js.map +1 -1
  174. package/dist/formats/gif/core/helpers.js +6 -18
  175. package/dist/formats/gif/core/helpers.js.map +1 -1
  176. package/dist/formats/gltf/CjsGltfFormat.js +25 -13
  177. package/dist/formats/gltf/CjsGltfFormat.js.map +1 -1
  178. package/dist/formats/gr2/CjsGr2Format.js +27 -6
  179. package/dist/formats/gr2/CjsGr2Format.js.map +1 -1
  180. package/dist/formats/hlsl/CjsHlslFormat.js +20 -16
  181. package/dist/formats/hlsl/CjsHlslFormat.js.map +1 -1
  182. package/dist/formats/hlsl/core/analysis.js +1 -1
  183. package/dist/formats/index.js +5 -0
  184. package/dist/formats/index.js.map +1 -1
  185. package/dist/formats/jpeg/CjsJpegFormat.js +26 -19
  186. package/dist/formats/jpeg/CjsJpegFormat.js.map +1 -1
  187. package/dist/formats/jpeg/core/helpers.js +6 -15
  188. package/dist/formats/jpeg/core/helpers.js.map +1 -1
  189. package/dist/formats/jpeg/core/jpeg.js +0 -3
  190. package/dist/formats/jpeg/core/jpeg.js.map +1 -1
  191. package/dist/formats/mp3/CjsMp3Format.js +19 -19
  192. package/dist/formats/mp3/CjsMp3Format.js.map +1 -1
  193. package/dist/formats/mp3/core/helpers.js +5 -11
  194. package/dist/formats/mp3/core/helpers.js.map +1 -1
  195. package/dist/formats/mp4/CjsMp4Format.js +20 -19
  196. package/dist/formats/mp4/CjsMp4Format.js.map +1 -1
  197. package/dist/formats/mp4/core/helpers.js +6 -15
  198. package/dist/formats/mp4/core/helpers.js.map +1 -1
  199. package/dist/formats/obj/CjsObjFormat.js +25 -12
  200. package/dist/formats/obj/CjsObjFormat.js.map +1 -1
  201. package/dist/formats/ogg/CjsOggFormat.js +26 -17
  202. package/dist/formats/ogg/CjsOggFormat.js.map +1 -1
  203. package/dist/formats/ogg/core/helpers.js +5 -16
  204. package/dist/formats/ogg/core/helpers.js.map +1 -1
  205. package/dist/formats/pickle/CjsPickleFormat.js +64 -5
  206. package/dist/formats/pickle/CjsPickleFormat.js.map +1 -1
  207. package/dist/formats/png/CjsPngFormat.js +28 -19
  208. package/dist/formats/png/CjsPngFormat.js.map +1 -1
  209. package/dist/formats/png/core/helpers.js +5 -14
  210. package/dist/formats/png/core/helpers.js.map +1 -1
  211. package/dist/formats/red/CjsRedFormat.js +19 -5
  212. package/dist/formats/red/CjsRedFormat.js.map +1 -1
  213. package/dist/formats/schemabound/CjsSchemaBoundFormat.js +48 -38
  214. package/dist/formats/schemabound/CjsSchemaBoundFormat.js.map +1 -1
  215. package/dist/formats/sqlite/CjsSqliteFormat.js +49 -41
  216. package/dist/formats/sqlite/CjsSqliteFormat.js.map +1 -1
  217. package/dist/formats/static/CjsStaticFormat.js +15 -57
  218. package/dist/formats/static/CjsStaticFormat.js.map +1 -1
  219. package/dist/formats/static/staticContainers.js +6 -6
  220. package/dist/formats/static/staticContainers.js.map +1 -1
  221. package/dist/formats/stl/CjsStlFormat.js +25 -12
  222. package/dist/formats/stl/CjsStlFormat.js.map +1 -1
  223. package/dist/formats/tga/CjsTgaFormat.js +26 -19
  224. package/dist/formats/tga/CjsTgaFormat.js.map +1 -1
  225. package/dist/formats/tga/core/helpers.js +7 -22
  226. package/dist/formats/tga/core/helpers.js.map +1 -1
  227. package/dist/formats/wav/CjsWavFormat.js +26 -19
  228. package/dist/formats/wav/CjsWavFormat.js.map +1 -1
  229. package/dist/formats/wav/core/helpers.js +7 -16
  230. package/dist/formats/wav/core/helpers.js.map +1 -1
  231. package/dist/formats/webgl/CjsWebglFormat.js +11 -13
  232. package/dist/formats/webgl/CjsWebglFormat.js.map +1 -1
  233. package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js +90 -12
  234. package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
  235. package/dist/formats/webgl/core/helpers.js +2 -2
  236. package/dist/formats/webgl/core/helpers.js.map +1 -1
  237. package/dist/formats/webgl/core/readGlslEffectContainer.js +8 -8
  238. package/dist/formats/webgl/core/readGlslEffectContainer.js.map +1 -1
  239. package/dist/formats/webgpu/CjsWebgpuFormat.js +11 -5
  240. package/dist/formats/webgpu/CjsWebgpuFormat.js.map +1 -1
  241. package/dist/formats/webm/CjsWebmFormat.js +20 -19
  242. package/dist/formats/webm/CjsWebmFormat.js.map +1 -1
  243. package/dist/formats/webm/core/helpers.js +6 -15
  244. package/dist/formats/webm/core/helpers.js.map +1 -1
  245. package/dist/formats/webp/CjsWebpFormat.js +19 -17
  246. package/dist/formats/webp/CjsWebpFormat.js.map +1 -1
  247. package/dist/formats/webp/core/helpers.js +5 -11
  248. package/dist/formats/webp/core/helpers.js.map +1 -1
  249. package/dist/formats/wem/CjsWemFormat.js +128 -141
  250. package/dist/formats/wem/CjsWemFormat.js.map +1 -1
  251. package/dist/formats/wem/core/helpers.js +1 -114
  252. package/dist/formats/wem/core/helpers.js.map +1 -1
  253. package/dist/formats/wem/core/{resolve.js → probeCodecSupport.js} +11 -18
  254. package/dist/formats/wem/core/probeCodecSupport.js.map +1 -0
  255. package/dist/formats/yaml/CjsYamlFormat.js +20 -5
  256. package/dist/formats/yaml/CjsYamlFormat.js.map +1 -1
  257. package/dist/generated/index.js +2 -0
  258. package/dist/generated/index.js.map +1 -0
  259. package/dist/generated/resources/Tr2RaycastGeometryRes.js +34 -0
  260. package/dist/generated/resources/Tr2RaycastGeometryRes.js.map +1 -0
  261. package/dist/generated/resources/index.js +2 -0
  262. package/dist/generated/resources/index.js.map +1 -0
  263. package/dist/index.js +3 -1
  264. package/dist/index.js.map +1 -1
  265. package/dist/resource/CjsResource.js +134 -0
  266. package/dist/resource/CjsResource.js.map +1 -1
  267. package/dist/resource/ResourceRequirement.js +42 -0
  268. package/dist/resource/ResourceRequirement.js.map +1 -0
  269. package/dist/resource/Tr2LightProfileRes.js +2 -1
  270. package/dist/resource/Tr2LightProfileRes.js.map +1 -1
  271. package/dist/resource/geometry/TriGeometryRes.js +34 -7
  272. package/dist/resource/geometry/TriGeometryRes.js.map +1 -1
  273. package/dist/resource/geometry/granny/Tr2GrannyStateRes.js +184 -7
  274. package/dist/resource/geometry/granny/Tr2GrannyStateRes.js.map +1 -1
  275. package/dist/resource/geometry/granny/TriGrannyRes.js +20 -8
  276. package/dist/resource/geometry/granny/TriGrannyRes.js.map +1 -1
  277. package/dist/resource/index.js +1 -0
  278. package/dist/resource/index.js.map +1 -1
  279. package/dist/resource/resourceBoundary.js +24 -1
  280. package/dist/resource/resourceBoundary.js.map +1 -1
  281. package/dist/resource/shader/Tr2EffectRes.js +2 -1
  282. package/dist/resource/shader/Tr2EffectRes.js.map +1 -1
  283. package/dist/resource/texture/CjsTextureArrayRes.js +2 -1
  284. package/dist/resource/texture/CjsTextureArrayRes.js.map +1 -1
  285. package/dist/resource/texture/Tr2ImageRes.js +2 -1
  286. package/dist/resource/texture/Tr2ImageRes.js.map +1 -1
  287. package/dist/resource/texture/TriTextureRes.js +40 -2
  288. package/dist/resource/texture/TriTextureRes.js.map +1 -1
  289. package/docs/architecture.md +121 -116
  290. package/docs/concepts/format-capabilities.md +90 -0
  291. package/docs/formats/README.md +14 -6
  292. package/docs/formats/fsd.md +104 -0
  293. package/docs/formats/gr2.md +1 -1
  294. package/docs/formats/hlsl/reference/api.md +6 -4
  295. package/docs/formats/provenance.md +18 -0
  296. package/docs/formats/schemabound.md +10 -4
  297. package/docs/formats/static.md +26 -26
  298. package/docs/formats/webgpu/reference/api.md +4 -3
  299. package/docs/reference/classes/core.md +22 -2
  300. package/docs/reference/classes/formats.md +643 -1
  301. package/docs/reference/classes/resources.md +463 -453
  302. package/docs/reference/queues.md +205 -194
  303. package/docs/roadmap.md +14 -18
  304. package/format-notices/fsd/LICENSE +21 -0
  305. package/format-notices/fsd/NOTICE +11 -0
  306. package/package.json +70 -64
  307. package/dist/formats/wem/core/resolve.js.map +0 -1
  308. package/docs/concepts/format-type-resolution.md +0 -79
@@ -1,3 +1,4 @@
1
+ import { CjsFormat } from '../../format/CjsFormat.js';
1
2
  import { CLASS_KEYS } from './core/schema.js';
2
3
  import { DEFAULT_VALUES, OUTPUT_JSON, OUTPUT_PAYLOAD, normalizeValues, validateClassKey, validateClass, toJsonValue, OUTPUT_DOCUMENT, OUTPUT_RAW, OUTPUT_RUNTIME } from './core/helpers.js';
3
4
  import { CJS_BLACK_FOURCC, CJS_BLACK_FORMAT_ID, CJS_BLACK_EXTENSION, CJS_BLACK_VERSION } from './core/blackConstants.js';
@@ -11,7 +12,7 @@ const FORMAT_NAME = "CjsBlackFormat";
11
12
  * This package reads public-facing `.black` payload data using CarbonEngineJS
12
13
  * canonical schemas or source-shape registries.
13
14
  */
14
- class CjsBlackFormat {
15
+ class CjsBlackFormat extends CjsFormat {
15
16
  #emit = DEFAULT_VALUES.emit;
16
17
  #schema = DEFAULT_VALUES.schema;
17
18
  #readerOptions = {};
@@ -35,6 +36,7 @@ class CjsBlackFormat {
35
36
  * @param {object} [options] Default format values.
36
37
  */
37
38
  constructor(options = {}) {
39
+ super();
38
40
  this.SetValues(options);
39
41
  }
40
42
 
@@ -263,7 +265,7 @@ class CjsBlackFormat {
263
265
  * @param {ArrayBuffer|ArrayBufferView} input Candidate source bytes.
264
266
  * @returns {boolean} True when the little-endian Black magic is present.
265
267
  */
266
- static isSupported(input) {
268
+ static probeSupport(input) {
267
269
  const view = getBlackProbeView(input);
268
270
  return Boolean(view && view.byteLength >= 4 && view.getUint32(0, true) === CJS_BLACK_FOURCC);
269
271
  }
@@ -283,11 +285,26 @@ class CjsBlackFormat {
283
285
  static extensions = Object.freeze([CJS_BLACK_EXTENSION]);
284
286
  static fourCC = CJS_BLACK_FOURCC;
285
287
  static version = CJS_BLACK_VERSION;
286
- static type = Object.freeze(["data"]);
287
288
  static mediaTypes = Object.freeze(["data"]);
288
- static inputTypes = Object.freeze(["black"]);
289
- static outputTypes = Object.freeze([OUTPUT_JSON, OUTPUT_DOCUMENT, OUTPUT_PAYLOAD, OUTPUT_RUNTIME]);
290
- static debugOutputTypes = Object.freeze([OUTPUT_RAW]);
289
+ static outputs = CjsFormat.defineOutputs({
290
+ json: {
291
+ default: true,
292
+ decoded: true
293
+ },
294
+ document: {
295
+ decoded: true
296
+ },
297
+ payload: {
298
+ decoded: true
299
+ },
300
+ runtime: {
301
+ decoded: true
302
+ },
303
+ raw: {
304
+ role: "debug",
305
+ decoded: true
306
+ }
307
+ });
291
308
 
292
309
  /** Provides the one-shot Black copy reader options helper entry point. */
293
310
  static copyReaderOptions(values) {
@@ -1 +1 @@
1
- {"version":3,"file":"CjsBlackFormat.js","sources":["../../../../src/formats/black/CjsBlackFormat.js"],"sourcesContent":["import { 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_FORMAT_ID,\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\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 = Object.freeze({\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 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 isSupported(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 Output = Object.freeze({\n JSON: OUTPUT_JSON,\n RAW: OUTPUT_RAW,\n DOCUMENT: OUTPUT_DOCUMENT,\n PAYLOAD: OUTPUT_PAYLOAD,\n RUNTIME: OUTPUT_RUNTIME\n });\n static CLASS_KEYS = CLASS_KEYS;\n static id = CJS_BLACK_FORMAT_ID;\n static extensions = Object.freeze([CJS_BLACK_EXTENSION]);\n static fourCC = CJS_BLACK_FOURCC;\n static version = CJS_BLACK_VERSION;\n static type = Object.freeze([ \"data\" ]);\n static mediaTypes = Object.freeze([ \"data\" ]);\n static inputTypes = Object.freeze([ \"black\" ]);\n static outputTypes = Object.freeze([ OUTPUT_JSON, OUTPUT_DOCUMENT, OUTPUT_PAYLOAD, OUTPUT_RUNTIME ]);\n static debugOutputTypes = Object.freeze([ OUTPUT_RAW ]);\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","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","isSupported","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","inputTypes","debugOutputTypes","_emit","_schema","_classes","readerOptions","ArrayBuffer","DataView","isView","buffer","byteOffset"],"mappings":"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"}
1
+ {"version":3,"file":"CjsBlackFormat.js","sources":["../../../../src/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_FORMAT_ID,\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 = Object.freeze({\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 Output = Object.freeze({\n JSON: OUTPUT_JSON,\n RAW: OUTPUT_RAW,\n DOCUMENT: OUTPUT_DOCUMENT,\n PAYLOAD: OUTPUT_PAYLOAD,\n RUNTIME: OUTPUT_RUNTIME\n });\n static CLASS_KEYS = CLASS_KEYS;\n static id = CJS_BLACK_FORMAT_ID;\n static extensions = Object.freeze([CJS_BLACK_EXTENSION]);\n static fourCC = CJS_BLACK_FOURCC;\n static version = CJS_BLACK_VERSION;\n static mediaTypes = Object.freeze([ \"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","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,5 +1,6 @@
1
+ import { CjsFormat } from '../../format/CjsFormat.js';
1
2
  import { wwiseIdFromName, joinSoundbanksInfo, buildSoundbanksCatalog, parseSoundbanksInfo, isSoundbanksInfo } from './core/soundbanksInfo.js';
2
- import { DEFAULT_VALUES, normalizeValues, readWithValues, inspectWithValues, isSupportedWithValues, toJsonValue, toBytes, extractMedia, isBNK, OUTPUT_MEDIA, OUTPUT_BNK_JSON, OUTPUT_JSON, OUTPUT_RAW, HIRC_TYPE_NAMES, HIRC_V150_TYPE_NAMES } from './core/helpers.js';
3
+ import { DEFAULT_VALUES, OUTPUT_RAW, OUTPUT_MEDIA, OUTPUT_BNK_JSON, normalizeValues, readWithValues, inspectWithValues, toJsonValue, probeSupportWithValues, toBytes, extractMedia, isBNK, OUTPUT_JSON, HIRC_TYPE_NAMES, HIRC_V150_TYPE_NAMES } from './core/helpers.js';
3
4
  import { eventMediaFromBanks } from './core/graph.js';
4
5
  import { parseEventAction } from './core/eventAction.js';
5
6
  import { parseGlobalSettings } from './core/globalSettings.js';
@@ -10,9 +11,9 @@ import { parseSfxLayer, parseSfxSwitch, parseSfxRandomSequence, parseSfxAttenuat
10
11
 
11
12
  const FORMAT_NAME = "CjsBnkFormat";
12
13
 
13
- /**
14
- * Reader for Audiokinetic Wwise soundbank (.bnk) containers.
15
- *
14
+ /**
15
+ * Reader for Audiokinetic Wwise soundbank (.bnk) containers.
16
+ *
16
17
  * Inspection decodes the bank header, embedded media index, exact v150 global
17
18
  * settings, object hierarchy listing (with version-stable typed fields), and
18
19
  * referenced bank names without copying payloads. Read can emit the raw bank,
@@ -21,7 +22,7 @@ const FORMAT_NAME = "CjsBnkFormat";
21
22
  * helpers, id hash, event -> media graph resolution) is grouped under the
22
23
  * `wwise` static.
23
24
  */
24
- class CjsBnkFormat {
25
+ class CjsBnkFormat extends CjsFormat {
25
26
  #values = DEFAULT_VALUES;
26
27
 
27
28
  /**
@@ -29,143 +30,135 @@ class CjsBnkFormat {
29
30
  */
30
31
  static worker = Object.freeze({
31
32
  module: import.meta.url,
32
- exportName: "CjsBnkFormat"
33
+ exportName: "CjsBnkFormat",
34
+ outputTypes: Object.freeze([OUTPUT_RAW, OUTPUT_MEDIA, OUTPUT_BNK_JSON]),
35
+ defaultOutput: OUTPUT_RAW
33
36
  });
34
37
 
35
- /**
36
- * Create a reusable bnk format profile.
37
- *
38
- * @param {object} [options] Default read/inspect options.
38
+ /**
39
+ * Create a reusable bnk format profile.
40
+ *
41
+ * @param {object} [options] Default read/inspect options.
39
42
  */
40
43
  constructor(options = {}) {
44
+ super();
41
45
  this.SetValues(options);
42
46
  }
43
47
 
44
- /**
45
- * Merge options into this profile.
46
- *
47
- * @param {object} [options] Values to merge.
48
- * @returns {CjsBnkFormat} This format profile.
48
+ /**
49
+ * Merge options into this profile.
50
+ *
51
+ * @param {object} [options] Values to merge.
52
+ * @returns {CjsBnkFormat} This format profile.
49
53
  */
50
54
  SetValues(options = {}) {
51
55
  this.#values = normalizeValues(this.#values, options, FORMAT_NAME);
52
56
  return this;
53
57
  }
54
58
 
55
- /**
56
- * Get normalized profile values with optional per-call overrides.
57
- *
58
- * @param {object} [options] Per-call values.
59
- * @returns {object} Normalized read values.
59
+ /**
60
+ * Get normalized profile values with optional per-call overrides.
61
+ *
62
+ * @param {object} [options] Per-call values.
63
+ * @returns {object} Normalized read values.
60
64
  */
61
65
  GetValues(options = {}) {
62
66
  return normalizeValues(this.#values, options, FORMAT_NAME);
63
67
  }
64
68
 
65
- /**
66
- * Read soundbank bytes with this profile.
67
- *
68
- * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.
69
- * @param {object} [options] Per-call values.
70
- * @returns {object} GPU-free raw/debug/media payload for the selected emit target.
69
+ /**
70
+ * Read soundbank bytes with this profile.
71
+ *
72
+ * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.
73
+ * @param {object} [options] Per-call values.
74
+ * @returns {object} GPU-free raw/debug/media payload for the selected emit target.
71
75
  */
72
76
  Read(input, options = {}) {
73
77
  return readWithValues(input, this.GetValues(options));
74
78
  }
75
79
 
76
- /**
77
- * Read soundbank bytes asynchronously with this profile.
78
- *
79
- * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.
80
- * @param {object} [options] Per-call values.
81
- * @returns {Promise<object>} GPU-free raw/debug/media payload for the selected emit target.
80
+ /**
81
+ * Read soundbank bytes asynchronously with this profile.
82
+ *
83
+ * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.
84
+ * @param {object} [options] Per-call values.
85
+ * @returns {Promise<object>} GPU-free raw/debug/media payload for the selected emit target.
82
86
  */
83
87
  async ReadAsync(input, options = {}) {
84
88
  return this.Read(input, options);
85
89
  }
86
90
 
87
- /**
88
- * Inspect soundbank bytes without copying media payloads.
89
- *
90
- * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.
91
- * @param {object} [options] Per-call values.
92
- * @returns {object} Soundbank metadata.
91
+ /**
92
+ * Inspect soundbank bytes without copying media payloads.
93
+ *
94
+ * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.
95
+ * @param {object} [options] Per-call values.
96
+ * @returns {object} Soundbank metadata.
93
97
  */
94
98
  Inspect(input, options = {}) {
95
99
  return inspectWithValues(input, this.GetValues(options));
96
100
  }
97
101
 
98
- /**
99
- * Report whether soundbank input and requested output variants are supported.
100
- *
101
- * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.
102
- * @param {object} [options] Per-call values.
103
- * @returns {object} Support/probe report.
104
- */
105
- IsSupported(input, options = {}) {
106
- return isSupportedWithValues(input, this.GetValues(options));
107
- }
108
-
109
- /**
110
- * Convert format output into JSON-compatible debug data.
111
- *
112
- * @param {any} value Format output.
113
- * @returns {any} JSON-compatible value.
102
+ /**
103
+ * Convert format output into JSON-compatible debug data.
104
+ *
105
+ * @param {any} value Format output.
106
+ * @returns {any} JSON-compatible value.
114
107
  */
115
108
  ToJSON(value) {
116
109
  return toJsonValue(value);
117
110
  }
118
111
 
119
- /**
120
- * One-shot soundbank read.
121
- *
122
- * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.
123
- * @param {object} [options] Read options.
124
- * @returns {object} GPU-free raw/debug/media payload for the selected emit target.
112
+ /**
113
+ * One-shot soundbank read.
114
+ *
115
+ * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.
116
+ * @param {object} [options] Read options.
117
+ * @returns {object} GPU-free raw/debug/media payload for the selected emit target.
125
118
  */
126
119
  static read(input, options = {}) {
127
120
  return readWithValues(input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME));
128
121
  }
129
122
 
130
- /**
131
- * One-shot asynchronous soundbank read.
132
- *
133
- * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.
134
- * @param {object} [options] Read options.
135
- * @returns {Promise<object>} GPU-free raw/debug/media payload for the selected emit target.
123
+ /**
124
+ * One-shot asynchronous soundbank read.
125
+ *
126
+ * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.
127
+ * @param {object} [options] Read options.
128
+ * @returns {Promise<object>} GPU-free raw/debug/media payload for the selected emit target.
136
129
  */
137
130
  static async readAsync(input, options = {}) {
138
131
  return CjsBnkFormat.read(input, options);
139
132
  }
140
133
 
141
- /**
142
- * One-shot soundbank inspection.
143
- *
144
- * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.
145
- * @param {object} [options] Inspect options.
146
- * @returns {object} Soundbank metadata.
134
+ /**
135
+ * One-shot soundbank inspection.
136
+ *
137
+ * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.
138
+ * @param {object} [options] Inspect options.
139
+ * @returns {object} Soundbank metadata.
147
140
  */
148
141
  static inspect(input, options = {}) {
149
142
  return inspectWithValues(input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME));
150
143
  }
151
144
 
152
- /**
153
- * One-shot soundbank support probe.
154
- *
155
- * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.
156
- * @param {object} [options] Probe options.
157
- * @returns {object} Support/probe report.
145
+ /**
146
+ * One-shot soundbank support probe.
147
+ *
148
+ * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.
149
+ * @param {object} [options] Probe options.
150
+ * @returns {object} Support/probe report.
158
151
  */
159
- static isSupported(input, options = {}) {
160
- return isSupportedWithValues(input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME));
152
+ static probeSupport(input, options = {}) {
153
+ return probeSupportWithValues(input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME));
161
154
  }
162
155
 
163
- /**
164
- * Extract embedded media payloads as views over the soundbank bytes.
165
- *
166
- * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.
167
- * @param {number} [mediaId] Optional single media id filter.
168
- * @returns {Array<object>} Extracted media items with undecoded bytes.
156
+ /**
157
+ * Extract embedded media payloads as views over the soundbank bytes.
158
+ *
159
+ * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.
160
+ * @param {number} [mediaId] Optional single media id filter.
161
+ * @returns {Array<object>} Extracted media items with undecoded bytes.
169
162
  */
170
163
  static extractMedia(input, mediaId) {
171
164
  const bytes = toBytes(input);
@@ -173,21 +166,21 @@ class CjsBnkFormat {
173
166
  return extractMedia(bytes, metadata, mediaId);
174
167
  }
175
168
 
176
- /**
177
- * Convert format output into JSON-compatible debug data.
178
- *
179
- * @param {any} value Format output.
180
- * @returns {any} JSON-compatible value.
169
+ /**
170
+ * Convert format output into JSON-compatible debug data.
171
+ *
172
+ * @param {any} value Format output.
173
+ * @returns {any} JSON-compatible value.
181
174
  */
182
175
  static toJSON(value) {
183
176
  return toJsonValue(value);
184
177
  }
185
178
 
186
- /**
187
- * Test whether bytes look like a Wwise soundbank.
188
- *
189
- * @param {Uint8Array|ArrayBuffer|DataView} input Candidate soundbank bytes.
190
- * @returns {boolean} True when the BKHD header chunk is present.
179
+ /**
180
+ * Test whether bytes look like a Wwise soundbank.
181
+ *
182
+ * @param {Uint8Array|ArrayBuffer|DataView} input Candidate soundbank bytes.
183
+ * @returns {boolean} True when the BKHD header chunk is present.
191
184
  */
192
185
  static isBNK(input) {
193
186
  try {
@@ -197,24 +190,24 @@ class CjsBnkFormat {
197
190
  }
198
191
  }
199
192
 
200
- /**
201
- * Wwise-domain toolkit, grouped apart from the container-reading statics -
202
- * the single home for the SoundbanksInfo catalog helpers
203
- * (`isSoundbanksInfo`, `parseSoundbanksInfo`, `buildSoundbanksCatalog`,
204
- * `joinSoundbanksInfo`), the id hash (`wwiseIdFromName`, FNV-1 of the
205
- * lowercased name), and event-graph resolution.
206
- *
207
- * `eventMediaFromBanks(inspections, options)` is graph interpretation over
208
- * `inspect()` results, not a read path: banks may split events from their
209
- * target objects (EVE keeps all events in one bank and their sounds in
210
- * others), so always pass every related bank to one call. Returns
211
- * `{ eventMedia: Map<eventObjectId, Set<wemId>>, diagnostics }`. See
212
- * core/graph.js for the walk policy.
213
- *
214
- * The interactive-music decoders (`musicNodesFromBanks` and the per-type
215
- * `parseMusicSegment/Track/Playlist/Switch`) turn the music-hierarchy
216
- * entries (HIRC 10-13) into typed nodes - children, meter, cue markers,
217
- * clips, playlist trees, decision trees, and transition rules. See
193
+ /**
194
+ * Wwise-domain toolkit, grouped apart from the container-reading statics -
195
+ * the single home for the SoundbanksInfo catalog helpers
196
+ * (`isSoundbanksInfo`, `parseSoundbanksInfo`, `buildSoundbanksCatalog`,
197
+ * `joinSoundbanksInfo`), the id hash (`wwiseIdFromName`, FNV-1 of the
198
+ * lowercased name), and event-graph resolution.
199
+ *
200
+ * `eventMediaFromBanks(inspections, options)` is graph interpretation over
201
+ * `inspect()` results, not a read path: banks may split events from their
202
+ * target objects (EVE keeps all events in one bank and their sounds in
203
+ * others), so always pass every related bank to one call. Returns
204
+ * `{ eventMedia: Map<eventObjectId, Set<wemId>>, diagnostics }`. See
205
+ * core/graph.js for the walk policy.
206
+ *
207
+ * The interactive-music decoders (`musicNodesFromBanks` and the per-type
208
+ * `parseMusicSegment/Track/Playlist/Switch`) turn the music-hierarchy
209
+ * entries (HIRC 10-13) into typed nodes - children, meter, cue markers,
210
+ * clips, playlist trees, decision trees, and transition rules. See
218
211
  * core/musicNodes.js for the anchored, exact-end-validated parse.
219
212
  *
220
213
  * The v150 authored-SFX decoders (`sfxNodesFromBanks` and the per-type
@@ -259,8 +252,8 @@ class CjsBnkFormat {
259
252
  parseSfxLayer
260
253
  });
261
254
 
262
- /**
263
- * Emit targets for this format (canonical frozen enum).
255
+ /**
256
+ * Emit targets for this format (canonical frozen enum).
264
257
  */
265
258
  static Output = Object.freeze({
266
259
  RAW: OUTPUT_RAW,
@@ -270,11 +263,20 @@ class CjsBnkFormat {
270
263
  });
271
264
  static HIRC_TYPE_NAMES = HIRC_TYPE_NAMES;
272
265
  static HIRC_V150_TYPE_NAMES = HIRC_V150_TYPE_NAMES;
273
- static type = Object.freeze(["audio"]);
266
+ static id = "bnk";
274
267
  static mediaTypes = Object.freeze(["audio"]);
275
- static inputTypes = Object.freeze(["bnk"]);
276
- static outputTypes = Object.freeze([OUTPUT_RAW, OUTPUT_MEDIA]);
277
- static debugOutputTypes = Object.freeze([OUTPUT_BNK_JSON, OUTPUT_RAW]);
268
+ static outputs = CjsFormat.defineOutputs({
269
+ raw: {
270
+ default: true,
271
+ passthrough: true
272
+ },
273
+ media: {},
274
+ bnkJson: {
275
+ role: "debug",
276
+ probes: ["bnkJson", "raw"]
277
+ }
278
+ });
279
+ static extensions = Object.freeze([".bnk"]);
278
280
  }
279
281
 
280
282
  export { CjsBnkFormat };
@@ -1 +1 @@
1
- {"version":3,"file":"CjsBnkFormat.js","sources":["../../../../src/formats/bnk/CjsBnkFormat.js"],"sourcesContent":["import {\n buildSoundbanksCatalog,\r\n isSoundbanksInfo,\r\n joinSoundbanksInfo,\r\n parseSoundbanksInfo,\r\n wwiseIdFromName\r\n} from \"./core/soundbanksInfo.js\";\r\nimport {\r\n DEFAULT_VALUES,\n HIRC_TYPE_NAMES,\n HIRC_V150_TYPE_NAMES,\n OUTPUT_BNK_JSON,\r\n OUTPUT_JSON,\r\n OUTPUT_MEDIA,\r\n OUTPUT_RAW,\r\n extractMedia,\r\n inspectWithValues,\r\n isBNK,\r\n isSupportedWithValues,\r\n normalizeValues,\r\n readWithValues,\r\n toBytes,\r\n toJsonValue\r\n} from \"./core/helpers.js\";\r\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 {\r\n musicNodesFromBanks,\r\n parseMusicPlaylist,\r\n parseMusicSegment,\r\n parseMusicSwitch,\r\n parseMusicTrack\r\n} from \"./core/musicNodes.js\";\nimport {\n parseSfxActorMixer,\n parseSfxAttenuation,\n parseSfxLayer,\n parseSfxRandomSequence,\n parseSfxSwitch,\n sfxNodesFromBanks\n} from \"./core/sfxNodes.js\";\n\r\nconst FORMAT_NAME = \"CjsBnkFormat\";\r\n\r\n/**\r\n * Reader for Audiokinetic Wwise soundbank (.bnk) containers.\r\n *\r\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 */\r\nexport class CjsBnkFormat\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 });\n\r\n /**\r\n * Create a reusable bnk format profile.\r\n *\r\n * @param {object} [options] Default read/inspect options.\r\n */\r\n constructor(options = {})\r\n {\r\n this.SetValues(options);\r\n }\r\n\r\n /**\r\n * Merge options into this profile.\r\n *\r\n * @param {object} [options] Values to merge.\r\n * @returns {CjsBnkFormat} This format profile.\r\n */\r\n SetValues(options = {})\r\n {\r\n this.#values = normalizeValues(this.#values, options, FORMAT_NAME);\r\n return this;\r\n }\r\n\r\n /**\r\n * Get normalized profile values with optional per-call overrides.\r\n *\r\n * @param {object} [options] Per-call values.\r\n * @returns {object} Normalized read values.\r\n */\r\n GetValues(options = {})\r\n {\r\n return normalizeValues(this.#values, options, FORMAT_NAME);\r\n }\r\n\r\n /**\r\n * Read soundbank bytes with this profile.\r\n *\r\n * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.\r\n * @param {object} [options] Per-call values.\r\n * @returns {object} GPU-free raw/debug/media payload for the selected emit target.\r\n */\r\n Read(input, options = {})\r\n {\r\n return readWithValues(input, this.GetValues(options));\r\n }\r\n\r\n /**\r\n * Read soundbank bytes asynchronously with this profile.\r\n *\r\n * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.\r\n * @param {object} [options] Per-call values.\r\n * @returns {Promise<object>} GPU-free raw/debug/media payload for the selected emit target.\r\n */\r\n async ReadAsync(input, options = {})\r\n {\r\n return this.Read(input, options);\r\n }\r\n\r\n /**\r\n * Inspect soundbank bytes without copying media payloads.\r\n *\r\n * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.\r\n * @param {object} [options] Per-call values.\r\n * @returns {object} Soundbank metadata.\r\n */\r\n Inspect(input, options = {})\r\n {\r\n return inspectWithValues(input, this.GetValues(options));\r\n }\r\n\r\n /**\r\n * Report whether soundbank input and requested output variants are supported.\r\n *\r\n * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.\r\n * @param {object} [options] Per-call values.\r\n * @returns {object} Support/probe report.\r\n */\r\n IsSupported(input, options = {})\r\n {\r\n return isSupportedWithValues(input, this.GetValues(options));\r\n }\r\n\r\n /**\r\n * Convert format output into JSON-compatible debug data.\r\n *\r\n * @param {any} value Format output.\r\n * @returns {any} JSON-compatible value.\r\n */\r\n ToJSON(value)\r\n {\r\n return toJsonValue(value);\r\n }\r\n\r\n /**\r\n * One-shot soundbank read.\r\n *\r\n * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.\r\n * @param {object} [options] Read options.\r\n * @returns {object} GPU-free raw/debug/media payload for the selected emit target.\r\n */\r\n static read(input, options = {})\r\n {\r\n return readWithValues(input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME));\r\n }\r\n\r\n /**\r\n * One-shot asynchronous soundbank read.\r\n *\r\n * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.\r\n * @param {object} [options] Read options.\r\n * @returns {Promise<object>} GPU-free raw/debug/media payload for the selected emit target.\r\n */\r\n static async readAsync(input, options = {})\r\n {\r\n return CjsBnkFormat.read(input, options);\r\n }\r\n\r\n /**\r\n * One-shot soundbank inspection.\r\n *\r\n * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.\r\n * @param {object} [options] Inspect options.\r\n * @returns {object} Soundbank metadata.\r\n */\r\n static inspect(input, options = {})\r\n {\r\n return inspectWithValues(input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME));\r\n }\r\n\r\n /**\r\n * One-shot soundbank support probe.\r\n *\r\n * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.\r\n * @param {object} [options] Probe options.\r\n * @returns {object} Support/probe report.\r\n */\r\n static isSupported(input, options = {})\r\n {\r\n return isSupportedWithValues(input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME));\r\n }\r\n\r\n /**\r\n * Extract embedded media payloads as views over the soundbank bytes.\r\n *\r\n * @param {Uint8Array|ArrayBuffer|DataView} input Soundbank bytes.\r\n * @param {number} [mediaId] Optional single media id filter.\r\n * @returns {Array<object>} Extracted media items with undecoded bytes.\r\n */\r\n static extractMedia(input, mediaId)\r\n {\r\n const bytes = toBytes(input);\r\n const metadata = inspectWithValues(bytes, DEFAULT_VALUES);\r\n return extractMedia(bytes, metadata, mediaId);\r\n }\r\n\r\n /**\r\n * Convert format output into JSON-compatible debug data.\r\n *\r\n * @param {any} value Format output.\r\n * @returns {any} JSON-compatible value.\r\n */\r\n static toJSON(value)\r\n {\r\n return toJsonValue(value);\r\n }\r\n\r\n /**\r\n * Test whether bytes look like a Wwise soundbank.\r\n *\r\n * @param {Uint8Array|ArrayBuffer|DataView} input Candidate soundbank bytes.\r\n * @returns {boolean} True when the BKHD header chunk is present.\r\n */\r\n static isBNK(input)\r\n {\r\n try\r\n {\r\n return isBNK(toBytes(input));\r\n }\r\n catch\r\n {\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * Wwise-domain toolkit, grouped apart from the container-reading statics -\r\n * the single home for the SoundbanksInfo catalog helpers\r\n * (`isSoundbanksInfo`, `parseSoundbanksInfo`, `buildSoundbanksCatalog`,\r\n * `joinSoundbanksInfo`), the id hash (`wwiseIdFromName`, FNV-1 of the\r\n * lowercased name), and event-graph resolution.\r\n *\r\n * `eventMediaFromBanks(inspections, options)` is graph interpretation over\r\n * `inspect()` results, not a read path: banks may split events from their\r\n * target objects (EVE keeps all events in one bank and their sounds in\r\n * others), so always pass every related bank to one call. Returns\r\n * `{ eventMedia: Map<eventObjectId, Set<wemId>>, diagnostics }`. See\r\n * core/graph.js for the walk policy.\r\n *\r\n * The interactive-music decoders (`musicNodesFromBanks` and the per-type\r\n * `parseMusicSegment/Track/Playlist/Switch`) turn the music-hierarchy\r\n * entries (HIRC 10-13) into typed nodes - children, meter, cue markers,\r\n * clips, playlist trees, decision trees, and transition rules. See\r\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 runtime-audio'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 */\r\n static wwise = Object.freeze({\r\n isSoundbanksInfo,\r\n parseSoundbanksInfo,\r\n buildSoundbanksCatalog,\r\n joinSoundbanksInfo,\r\n wwiseIdFromName,\n eventMediaFromBanks,\n parseGlobalSettings,\n parseEventAction,\n musicNodesFromBanks,\r\n parseMusicSegment,\r\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\r\n /**\r\n * Emit targets for this format (canonical frozen enum).\r\n */\r\n static Output = Object.freeze({\r\n RAW: OUTPUT_RAW,\r\n JSON: OUTPUT_JSON,\r\n BNK_JSON: OUTPUT_BNK_JSON,\r\n MEDIA: OUTPUT_MEDIA\r\n });\r\n\r\n static HIRC_TYPE_NAMES = HIRC_TYPE_NAMES;\n\n static HIRC_V150_TYPE_NAMES = HIRC_V150_TYPE_NAMES;\n\r\n static type = Object.freeze([ \"audio\" ]);\r\n\r\n static mediaTypes = Object.freeze([ \"audio\" ]);\r\n\r\n static inputTypes = Object.freeze([ \"bnk\" ]);\r\n\r\n static outputTypes = Object.freeze([ OUTPUT_RAW, OUTPUT_MEDIA ]);\r\n\r\n static debugOutputTypes = Object.freeze([ OUTPUT_BNK_JSON, OUTPUT_RAW ]);\r\n}\r\n\r\nexport default CjsBnkFormat;\r\n"],"names":["FORMAT_NAME","CjsBnkFormat","DEFAULT_VALUES","worker","Object","freeze","module","import","meta","url","exportName","constructor","options","SetValues","normalizeValues","GetValues","Read","input","readWithValues","ReadAsync","Inspect","inspectWithValues","IsSupported","isSupportedWithValues","ToJSON","value","toJsonValue","read","readAsync","inspect","isSupported","extractMedia","mediaId","bytes","toBytes","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","OUTPUT_RAW","JSON","OUTPUT_JSON","BNK_JSON","OUTPUT_BNK_JSON","MEDIA","OUTPUT_MEDIA","HIRC_TYPE_NAMES","HIRC_V150_TYPE_NAMES","type","mediaTypes","inputTypes","outputTypes","debugOutputTypes"],"mappings":"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"}
1
+ {"version":3,"file":"CjsBnkFormat.js","sources":["../../../../src/formats/bnk/CjsBnkFormat.js"],"sourcesContent":["import { 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 toBytes,\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 = toBytes(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(toBytes(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 runtime-audio'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","toBytes","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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"}