@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
@@ -36,14 +36,14 @@ class CjsFsd64Binary {
36
36
  UINT_64: "UINT_64",
37
37
  UINT_64_IDENTIFIER: "UINT_64_IDENTIFIER"
38
38
  };
39
- #bytes;
40
- #view;
39
+ _bytes;
40
+ _view;
41
41
 
42
42
  /** Creates a validated view over caller-supplied container bytes. */
43
43
  constructor(bytes, options = {}) {
44
- this.#bytes = NormalizeBytes(bytes);
45
- this.#view = new DataView(this.#bytes.buffer, this.#bytes.byteOffset, this.#bytes.byteLength);
46
- this.#AssertContainer(options.path ?? "FSD input");
44
+ this._bytes = NormalizeBytes(bytes);
45
+ this._view = new DataView(this._bytes.buffer, this._bytes.byteOffset, this._bytes.byteLength);
46
+ this._AssertContainer(options.path ?? "FSD input");
47
47
  if (options.schemaID) {
48
48
  this.AssertSchema(options.schemaID, options.path);
49
49
  }
@@ -51,7 +51,7 @@ class CjsFsd64Binary {
51
51
 
52
52
  /** Returns the complete container byte length. */
53
53
  get ByteLength() {
54
- return this.#bytes.byteLength;
54
+ return this._bytes.byteLength;
55
55
  }
56
56
 
57
57
  /** Returns the payload length declared by the container header. */
@@ -66,7 +66,7 @@ class CjsFsd64Binary {
66
66
 
67
67
  /** Returns the lossless hexadecimal schema identity from the header. */
68
68
  get SchemaID() {
69
- return Hex(this.#bytes.subarray(0, 24));
69
+ return Hex(this._bytes.subarray(0, 24));
70
70
  }
71
71
 
72
72
  /**
@@ -81,7 +81,7 @@ class CjsFsd64Binary {
81
81
  * file that is byte-identical on both.
82
82
  */
83
83
  get LayoutID() {
84
- return Hex(this.#bytes.subarray(0, 16));
84
+ return Hex(this._bytes.subarray(0, 16));
85
85
  }
86
86
 
87
87
  /**
@@ -142,43 +142,43 @@ class CjsFsd64Binary {
142
142
  /** Reads one unsigned byte at an absolute offset. */
143
143
  Byte(offset) {
144
144
  this.AssertRange(offset, 1);
145
- return this.#view.getUint8(offset);
145
+ return this._view.getUint8(offset);
146
146
  }
147
147
 
148
148
  /** Returns a bounded byte view without copying its contents. */
149
149
  Bytes(offset, size) {
150
150
  this.AssertRange(offset, size);
151
- return this.#bytes.subarray(offset, offset + size);
151
+ return this._bytes.subarray(offset, offset + size);
152
152
  }
153
153
 
154
154
  /** Reads one little-endian 32-bit floating-point value. */
155
155
  Float32(offset) {
156
156
  this.AssertRange(offset, 4);
157
- return this.#view.getFloat32(offset, true);
157
+ return this._view.getFloat32(offset, true);
158
158
  }
159
159
 
160
160
  /** Reads one little-endian 64-bit floating-point value. */
161
161
  Float64(offset) {
162
162
  this.AssertRange(offset, 8);
163
- return this.#view.getFloat64(offset, true);
163
+ return this._view.getFloat64(offset, true);
164
164
  }
165
165
 
166
166
  /** Reads one little-endian signed 32-bit integer. */
167
167
  Int32(offset) {
168
168
  this.AssertRange(offset, 4);
169
- return this.#view.getInt32(offset, true);
169
+ return this._view.getInt32(offset, true);
170
170
  }
171
171
 
172
172
  /** Reads one little-endian unsigned 32-bit integer. */
173
173
  Uint32(offset) {
174
174
  this.AssertRange(offset, 4);
175
- return this.#view.getUint32(offset, true);
175
+ return this._view.getUint32(offset, true);
176
176
  }
177
177
 
178
178
  /** Reads one little-endian unsigned 64-bit safe integer. */
179
179
  Uint64(offset) {
180
180
  this.AssertRange(offset, 8);
181
- const value = this.#view.getBigUint64(offset, true);
181
+ const value = this._view.getBigUint64(offset, true);
182
182
  if (value > BigInt(Number.MAX_SAFE_INTEGER)) {
183
183
  const error = new RangeError(`FSD uint64 is not a safe JavaScript offset/count: ${value}`);
184
184
  error.code = "CJS_FSD_UINT64_UNSAFE";
@@ -194,7 +194,7 @@ class CjsFsd64Binary {
194
194
  */
195
195
  Uint64Identity(offset) {
196
196
  this.AssertRange(offset, 8);
197
- return this.#view.getBigUint64(offset, true).toString(10);
197
+ return this._view.getBigUint64(offset, true).toString(10);
198
198
  }
199
199
 
200
200
  /** Returns a safe unsigned 64-bit value or null for an invalid read. */
@@ -202,7 +202,7 @@ class CjsFsd64Binary {
202
202
  if (!Number.isSafeInteger(offset) || offset < 0 || offset + 8 > this.ByteLength) {
203
203
  return null;
204
204
  }
205
- const value = this.#view.getBigUint64(offset, true);
205
+ const value = this._view.getBigUint64(offset, true);
206
206
  return value <= BigInt(Number.MAX_SAFE_INTEGER) ? Number(value) : null;
207
207
  }
208
208
 
@@ -218,12 +218,12 @@ class CjsFsd64Binary {
218
218
  }
219
219
  const tableOffset = this.Absolute(this.Uint64(headerOffset));
220
220
  const bucketCount = this.Uint64(tableOffset - 8);
221
- this.#AssertElementRange(tableOffset, bucketCount, 8);
221
+ this._AssertElementRange(tableOffset, bucketCount, 8);
222
222
  const offsets = [];
223
223
  for (let index = 0; index < bucketCount; index++) {
224
224
  const bucketOffset = this.Absolute(this.Uint64(tableOffset + index * 8));
225
225
  const recordCount = this.Uint64(bucketOffset - 8);
226
- this.#AssertElementRange(bucketOffset, recordCount, recordSize);
226
+ this._AssertElementRange(bucketOffset, recordCount, recordSize);
227
227
  for (let recordIndex = 0; recordIndex < recordCount; recordIndex++) {
228
228
  offsets.push(bucketOffset + recordIndex * recordSize);
229
229
  }
@@ -261,7 +261,7 @@ class CjsFsd64Binary {
261
261
  error.maximumCount = maximumCount;
262
262
  throw error;
263
263
  }
264
- this.#AssertElementRange(dataOffset, count, recordSize);
264
+ this._AssertElementRange(dataOffset, count, recordSize);
265
265
  return Array.from({
266
266
  length: count
267
267
  }, (_, index) => dataOffset + index * recordSize);
@@ -293,7 +293,7 @@ class CjsFsd64Binary {
293
293
  return null;
294
294
  }
295
295
  try {
296
- return strictTextDecoder.decode(this.#bytes.subarray(dataOffset, dataOffset + length));
296
+ return strictTextDecoder.decode(this._bytes.subarray(dataOffset, dataOffset + length));
297
297
  } catch {
298
298
  return null;
299
299
  }
@@ -339,7 +339,7 @@ class CjsFsd64Binary {
339
339
  }
340
340
 
341
341
  /** Validates the byte range occupied by a repeated fixed-size value. */
342
- #AssertElementRange(offset, count, size) {
342
+ _AssertElementRange(offset, count, size) {
343
343
  if (!Number.isSafeInteger(count) || count < 0 || count > Math.floor(this.ByteLength / size)) {
344
344
  const error = new RangeError(`FSD element count is invalid: ${count}`);
345
345
  error.code = "CJS_FSD_COUNT_INVALID";
@@ -351,7 +351,7 @@ class CjsFsd64Binary {
351
351
  }
352
352
 
353
353
  /** Validates the fixed header and its declared payload length. */
354
- #AssertContainer(path) {
354
+ _AssertContainer(path) {
355
355
  if (this.ByteLength < HEADER_SIZE) {
356
356
  const error = new Error(`FSD input is smaller than its ${HEADER_SIZE}-byte header: ${path}`);
357
357
  error.code = "CJS_FSD_HEADER_INVALID";
@@ -1 +1 @@
1
- {"version":3,"file":"CjsFsd64Binary.js","sources":["../../../../../../../src/resource/formats/fsd/64/core/CjsFsd64Binary.js"],"sourcesContent":["const HEADER_SIZE = 32;\r\nconst strictTextDecoder = new TextDecoder(\"utf-8\", { fatal: true });\r\n\r\n/**\r\n * Provides bounds-checked access to 64-bit FSD container bytes.\r\n */\r\nexport class CjsFsd64Binary\r\n{\r\n /**\r\n * Binary value types accepted by declarative reader schemas.\r\n *\r\n * Schema files store these property names as strings so they remain inert\r\n * JSON. Schema validation resolves the names through this object.\r\n */\r\n static Type = {\r\n /**\r\n * A single flag bit inside a byte, addressed by `offset` plus `bit`.\r\n *\r\n * The container packs several independent flags into one byte, so a\r\n * schema that called such a field `UINT_8` would describe the byte\r\n * rather than the field and hand a consumer 1 where it expected true.\r\n */\r\n BOOLEAN: \"BOOLEAN\",\r\n FLOAT_32: \"FLOAT_32\",\r\n FLOAT_64: \"FLOAT_64\",\r\n INT_32: \"INT_32\",\r\n INT_32_IDENTIFIER: \"INT_32_IDENTIFIER\",\r\n LIST: \"LIST\",\r\n MAP: \"MAP\",\r\n OBJECT: \"OBJECT\",\r\n STRING: \"STRING\",\r\n UINT_8: \"UINT_8\",\r\n UINT_32: \"UINT_32\",\r\n UINT_32_IDENTIFIER: \"UINT_32_IDENTIFIER\",\r\n UINT_64: \"UINT_64\",\r\n UINT_64_IDENTIFIER: \"UINT_64_IDENTIFIER\",\r\n };\r\n\r\n #bytes;\r\n #view;\r\n\r\n /** Creates a validated view over caller-supplied container bytes. */\r\n constructor(bytes, options = {})\r\n {\r\n this.#bytes = NormalizeBytes(bytes);\r\n this.#view = new DataView(\r\n this.#bytes.buffer,\r\n this.#bytes.byteOffset,\r\n this.#bytes.byteLength,\r\n );\r\n\r\n this.#AssertContainer(options.path ?? \"FSD input\");\r\n\r\n if (options.schemaID)\r\n {\r\n this.AssertSchema(options.schemaID, options.path);\r\n }\r\n }\r\n\r\n /** Returns the complete container byte length. */\r\n get ByteLength()\r\n {\r\n return this.#bytes.byteLength;\r\n }\r\n\r\n /** Returns the payload length declared by the container header. */\r\n get PayloadLength()\r\n {\r\n return this.Uint64(24);\r\n }\r\n\r\n /** Returns the first byte offset after the fixed container header. */\r\n get RootOffset()\r\n {\r\n return HEADER_SIZE;\r\n }\r\n\r\n /** Returns the lossless hexadecimal schema identity from the header. */\r\n get SchemaID()\r\n {\r\n return Hex(this.#bytes.subarray(0, 24));\r\n }\r\n\r\n /**\r\n * Returns the layout half of the schema identity.\r\n *\r\n * The 24-byte identity is two values: the first sixteen bytes identify the\r\n * record layout and are stable across builds and across publishers, while\r\n * the last eight are a digest of the data itself and change whenever the\r\n * file's contents do. Measured 2026-08-14 across CCP build 3466501 and\r\n * NetEase build 3466057: eleven datasets agreed on the first sixteen bytes\r\n * and differed on the last eight in every case, the sole exception being a\r\n * file that is byte-identical on both.\r\n */\r\n get LayoutID()\r\n {\r\n return Hex(this.#bytes.subarray(0, 16));\r\n }\r\n\r\n /**\r\n * Rejects the container when its schema identity differs from the expected value.\r\n *\r\n * A 32-character expectation pins the layout alone, which is what a reader\r\n * wants: it keeps decoding the same dataset after its contents change and\r\n * accepts the same layout from another publisher. A 48-character\r\n * expectation additionally pins the content digest, so it accepts exactly\r\n * one build's bytes.\r\n *\r\n * Several identities may be passed. The identity is not a hash of the byte\r\n * layout alone, so one layout can appear under two of them: Infinity's\r\n * `dogmaeffects.fsdbinary` reads `3f128288…` where CCP and Serenity read\r\n * `b7107f57…`, yet every offset, every presence bit and the modifier entry\r\n * are the same. A reader may accept both, and should say what it measured\r\n * to justify each one.\r\n */\r\n AssertSchema(expected, path = \"FSD input\")\r\n {\r\n const wanted = (Array.isArray(expected) ? expected : [ expected ])\r\n .map(value => String(value).toLowerCase());\r\n const actual = new Set(wanted.map(value => value.length === 32 ? this.LayoutID : this.SchemaID));\r\n\r\n if (wanted.some(value => actual.has(value))) return;\r\n\r\n // Reported in the form that was asked for, so a reader pinning the\r\n // content digest is not told about the layout half it did not ask about.\r\n const reported = wanted[0].length === 32 ? this.LayoutID : this.SchemaID;\r\n const error = new Error(`Unsupported FSD schema for ${path}: ${reported}`);\r\n\r\n error.code = \"CJS_FSD_SCHEMA_UNSUPPORTED\";\r\n error.actualSchemaID = reported;\r\n error.expectedSchemaID = wanted.length === 1 ? wanted[0] : wanted;\r\n error.path = path;\r\n throw error;\r\n }\r\n\r\n /** Resolves one payload-relative offset to an absolute container offset. */\r\n Absolute(relativeOffset)\r\n {\r\n const absolute = this.RootOffset + relativeOffset;\r\n this.AssertRange(absolute, 0);\r\n return absolute;\r\n }\r\n\r\n /** Aligns an absolute byte offset to the next eight-byte boundary. */\r\n Align8(offset)\r\n {\r\n return Math.ceil(offset / 8) * 8;\r\n }\r\n\r\n /** Rejects a byte range which falls outside the supplied container. */\r\n AssertRange(offset, size)\r\n {\r\n if (!Number.isSafeInteger(offset) || !Number.isSafeInteger(size) ||\r\n offset < 0 || size < 0 || offset + size > this.ByteLength)\r\n {\r\n const error = new RangeError(`FSD offset is outside the input: ${offset} + ${size}`);\r\n error.code = \"CJS_FSD_OFFSET_INVALID\";\r\n error.offset = offset;\r\n error.size = size;\r\n throw error;\r\n }\r\n }\r\n\r\n /** Reads one unsigned byte at an absolute offset. */\r\n Byte(offset)\r\n {\r\n this.AssertRange(offset, 1);\r\n return this.#view.getUint8(offset);\r\n }\r\n\r\n /** Returns a bounded byte view without copying its contents. */\r\n Bytes(offset, size)\r\n {\r\n this.AssertRange(offset, size);\r\n return this.#bytes.subarray(offset, offset + size);\r\n }\r\n\r\n /** Reads one little-endian 32-bit floating-point value. */\r\n Float32(offset)\r\n {\r\n this.AssertRange(offset, 4);\r\n return this.#view.getFloat32(offset, true);\r\n }\r\n\r\n /** Reads one little-endian 64-bit floating-point value. */\r\n Float64(offset)\r\n {\r\n this.AssertRange(offset, 8);\r\n return this.#view.getFloat64(offset, true);\r\n }\r\n\r\n /** Reads one little-endian signed 32-bit integer. */\r\n Int32(offset)\r\n {\r\n this.AssertRange(offset, 4);\r\n return this.#view.getInt32(offset, true);\r\n }\r\n\r\n /** Reads one little-endian unsigned 32-bit integer. */\r\n Uint32(offset)\r\n {\r\n this.AssertRange(offset, 4);\r\n return this.#view.getUint32(offset, true);\r\n }\r\n\r\n /** Reads one little-endian unsigned 64-bit safe integer. */\r\n Uint64(offset)\r\n {\r\n this.AssertRange(offset, 8);\r\n const value = this.#view.getBigUint64(offset, true);\r\n\r\n if (value > BigInt(Number.MAX_SAFE_INTEGER))\r\n {\r\n const error = new RangeError(`FSD uint64 is not a safe JavaScript offset/count: ${value}`);\r\n error.code = \"CJS_FSD_UINT64_UNSAFE\";\r\n error.offset = offset;\r\n throw error;\r\n }\r\n\r\n return Number(value);\r\n }\r\n\r\n /**\r\n * Reads an unsigned 64-bit identity without passing through a JavaScript\r\n * number, returning its lossless decimal JSON representation.\r\n */\r\n Uint64Identity(offset)\r\n {\r\n this.AssertRange(offset, 8);\r\n return this.#view.getBigUint64(offset, true).toString(10);\r\n }\r\n\r\n /** Returns a safe unsigned 64-bit value or null for an invalid read. */\r\n TryUint64(offset)\r\n {\r\n if (!Number.isSafeInteger(offset) || offset < 0 || offset + 8 > this.ByteLength)\r\n {\r\n return null;\r\n }\r\n\r\n const value = this.#view.getBigUint64(offset, true);\r\n return value <= BigInt(Number.MAX_SAFE_INTEGER) ? Number(value) : null;\r\n }\r\n\r\n /**\r\n * Returns the absolute offsets of every record in an FSD hash-map.\r\n */\r\n MapEntries(recordSize, headerOffset = this.RootOffset)\r\n {\r\n AssertRecordSize(recordSize);\r\n this.AssertRange(headerOffset, 16);\r\n\r\n const expectedCount = this.Uint64(headerOffset + 8);\r\n\r\n if (expectedCount === 0)\r\n {\r\n return [];\r\n }\r\n\r\n const tableOffset = this.Absolute(this.Uint64(headerOffset));\r\n const bucketCount = this.Uint64(tableOffset - 8);\r\n this.#AssertElementRange(tableOffset, bucketCount, 8);\r\n\r\n const offsets = [];\r\n\r\n for (let index = 0; index < bucketCount; index++)\r\n {\r\n const bucketOffset = this.Absolute(this.Uint64(tableOffset + index * 8));\r\n const recordCount = this.Uint64(bucketOffset - 8);\r\n this.#AssertElementRange(bucketOffset, recordCount, recordSize);\r\n\r\n for (let recordIndex = 0; recordIndex < recordCount; recordIndex++)\r\n {\r\n offsets.push(bucketOffset + recordIndex * recordSize);\r\n }\r\n }\r\n\r\n if (offsets.length !== expectedCount)\r\n {\r\n const error = new Error(\r\n `FSD map contains ${offsets.length} records; its header declares ${expectedCount}.`,\r\n );\r\n error.code = \"CJS_FSD_RECORD_COUNT_INVALID\";\r\n error.actualCount = offsets.length;\r\n error.expectedCount = expectedCount;\r\n throw error;\r\n }\r\n\r\n return offsets;\r\n }\r\n\r\n /**\r\n * Returns absolute offsets for a count-prefixed FSD list.\r\n */\r\n ListEntries(relativeOffset, recordSize, maximumCount = Number.MAX_SAFE_INTEGER)\r\n {\r\n AssertRecordSize(recordSize);\r\n\r\n if (relativeOffset === 0)\r\n {\r\n return [];\r\n }\r\n\r\n if (!Number.isSafeInteger(relativeOffset) || relativeOffset < 8)\r\n {\r\n const error = new RangeError(`FSD list pointer is invalid: ${relativeOffset}`);\r\n error.code = \"CJS_FSD_OFFSET_INVALID\";\r\n error.offset = relativeOffset;\r\n throw error;\r\n }\r\n\r\n const dataOffset = this.Absolute(relativeOffset);\r\n const count = this.Uint64(dataOffset - 8);\r\n\r\n if (count > maximumCount)\r\n {\r\n const error = new RangeError(`FSD list count exceeds its limit: ${count}`);\r\n error.code = \"CJS_FSD_COUNT_INVALID\";\r\n error.count = count;\r\n error.maximumCount = maximumCount;\r\n throw error;\r\n }\r\n\r\n this.#AssertElementRange(dataOffset, count, recordSize);\r\n return Array.from(\r\n { length: count },\r\n (_, index) => dataOffset + index * recordSize,\r\n );\r\n }\r\n\r\n /** Returns a printable ASCII string or null for invalid evidence. */\r\n StringAtDataPointer(relativeOffset, maximumLength = 4096)\r\n {\r\n const value = this.Utf8StringAtDataPointer(relativeOffset, maximumLength);\r\n\r\n if (value === null)\r\n {\r\n return null;\r\n }\r\n\r\n for (const character of value)\r\n {\r\n const code = character.codePointAt(0);\r\n\r\n if (code < 32 || code > 126)\r\n {\r\n return null;\r\n }\r\n }\r\n\r\n return value;\r\n }\r\n\r\n /** Returns a strict UTF-8 string or null for invalid evidence. */\r\n Utf8StringAtDataPointer(relativeOffset, maximumLength = 4096)\r\n {\r\n if (!Number.isSafeInteger(relativeOffset) || relativeOffset < 8)\r\n {\r\n return null;\r\n }\r\n\r\n const dataOffset = this.RootOffset + relativeOffset;\r\n const length = this.TryUint64(dataOffset - 8);\r\n\r\n if (length === null || length > maximumLength || dataOffset + length > this.ByteLength)\r\n {\r\n return null;\r\n }\r\n\r\n try\r\n {\r\n return strictTextDecoder.decode(this.#bytes.subarray(dataOffset, dataOffset + length));\r\n }\r\n catch\r\n {\r\n return null;\r\n }\r\n }\r\n\r\n /** Returns a bounded printable string list or null for invalid evidence. */\r\n StringList(relativeOffset, maximumCount = 100)\r\n {\r\n if (!Number.isSafeInteger(relativeOffset) || relativeOffset < 8)\r\n {\r\n return null;\r\n }\r\n\r\n const tableOffset = this.RootOffset + relativeOffset;\r\n const count = this.TryUint64(tableOffset - 8);\r\n\r\n if (count === null || count > maximumCount || tableOffset + count * 8 > this.ByteLength)\r\n {\r\n return null;\r\n }\r\n\r\n const values = [];\r\n\r\n for (let index = 0; index < count; index++)\r\n {\r\n const value = this.StringAtDataPointer(this.TryUint64(tableOffset + index * 8));\r\n\r\n if (value === null)\r\n {\r\n return null;\r\n }\r\n\r\n values.push(value);\r\n }\r\n\r\n return values;\r\n }\r\n\r\n /** Returns a bounded unsigned 32-bit list or null for invalid evidence. */\r\n Uint32List(relativeOffset, maximumCount = 100)\r\n {\r\n if (relativeOffset === 0)\r\n {\r\n return [];\r\n }\r\n\r\n if (!Number.isSafeInteger(relativeOffset) || relativeOffset < 8)\r\n {\r\n return null;\r\n }\r\n\r\n const dataOffset = this.RootOffset + relativeOffset;\r\n const count = this.TryUint64(dataOffset - 8);\r\n\r\n if (count === null || count > maximumCount || dataOffset + count * 4 > this.ByteLength)\r\n {\r\n return null;\r\n }\r\n\r\n return Array.from(\r\n { length: count },\r\n (_, index) => this.Uint32(dataOffset + index * 4),\r\n );\r\n }\r\n\r\n /** Validates the byte range occupied by a repeated fixed-size value. */\r\n #AssertElementRange(offset, count, size)\r\n {\r\n if (!Number.isSafeInteger(count) || count < 0 ||\r\n count > Math.floor(this.ByteLength / size))\r\n {\r\n const error = new RangeError(`FSD element count is invalid: ${count}`);\r\n error.code = \"CJS_FSD_COUNT_INVALID\";\r\n error.count = count;\r\n error.elementSize = size;\r\n throw error;\r\n }\r\n\r\n this.AssertRange(offset, count * size);\r\n }\r\n\r\n /** Validates the fixed header and its declared payload length. */\r\n #AssertContainer(path)\r\n {\r\n if (this.ByteLength < HEADER_SIZE)\r\n {\r\n const error = new Error(`FSD input is smaller than its ${HEADER_SIZE}-byte header: ${path}`);\r\n error.code = \"CJS_FSD_HEADER_INVALID\";\r\n throw error;\r\n }\r\n\r\n const payloadLength = this.Uint64(24);\r\n\r\n if (payloadLength !== this.ByteLength - HEADER_SIZE)\r\n {\r\n const error = new Error(`FSD payload length does not match its header: ${path}`);\r\n error.code = \"CJS_FSD_LENGTH_INVALID\";\r\n error.actualLength = this.ByteLength - HEADER_SIZE;\r\n error.expectedLength = payloadLength;\r\n throw error;\r\n }\r\n }\r\n}\r\n\r\nfunction AssertRecordSize(value)\r\n{\r\n if (!Number.isSafeInteger(value) || value < 1)\r\n {\r\n const error = new RangeError(`FSD record size is invalid: ${value}`);\r\n error.code = \"CJS_FSD_RECORD_SIZE_INVALID\";\r\n throw error;\r\n }\r\n}\r\n\r\nfunction Hex(bytes)\r\n{\r\n return Array.from(bytes, value => value.toString(16).padStart(2, \"0\")).join(\"\");\r\n}\r\n\r\nfunction NormalizeBytes(input)\r\n{\r\n if (input instanceof ArrayBuffer)\r\n {\r\n return new Uint8Array(input);\r\n }\r\n\r\n if (ArrayBuffer.isView(input))\r\n {\r\n return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\r\n }\r\n\r\n const error = new TypeError(\"FSD input must be an ArrayBuffer or an ArrayBuffer view.\");\r\n error.code = \"CJS_FSD_INPUT_INVALID\";\r\n throw error;\r\n}\r\n\r\nexport default CjsFsd64Binary;\r\n"],"names":["HEADER_SIZE","strictTextDecoder","TextDecoder","fatal","CjsFsd64Binary","Type","BOOLEAN","FLOAT_32","FLOAT_64","INT_32","INT_32_IDENTIFIER","LIST","MAP","OBJECT","STRING","UINT_8","UINT_32","UINT_32_IDENTIFIER","UINT_64","UINT_64_IDENTIFIER","constructor","bytes","options","NormalizeBytes","DataView","buffer","byteOffset","byteLength","path","schemaID","AssertSchema","ByteLength","PayloadLength","Uint64","RootOffset","SchemaID","Hex","subarray","LayoutID","expected","wanted","Array","isArray","map","value","String","toLowerCase","actual","Set","length","some","has","reported","error","Error","code","actualSchemaID","expectedSchemaID","Absolute","relativeOffset","absolute","AssertRange","Align8","offset","Math","ceil","size","Number","isSafeInteger","RangeError","Byte","getUint8","Bytes","Float32","getFloat32","Float64","getFloat64","Int32","getInt32","Uint32","getUint32","getBigUint64","BigInt","MAX_SAFE_INTEGER","Uint64Identity","toString","TryUint64","MapEntries","recordSize","headerOffset","AssertRecordSize","expectedCount","tableOffset","bucketCount","offsets","index","bucketOffset","recordCount","recordIndex","push","actualCount","ListEntries","maximumCount","dataOffset","count","from","_","StringAtDataPointer","maximumLength","Utf8StringAtDataPointer","character","codePointAt","decode","StringList","values","Uint32List","#AssertElementRange","floor","elementSize","#AssertContainer","payloadLength","actualLength","expectedLength","padStart","join","input","ArrayBuffer","Uint8Array","isView","TypeError"],"mappings":"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"}
1
+ {"version":3,"file":"CjsFsd64Binary.js","sources":["../../../../../../../src/resource/formats/fsd/64/core/CjsFsd64Binary.js"],"sourcesContent":["const HEADER_SIZE = 32;\r\nconst strictTextDecoder = new TextDecoder(\"utf-8\", { fatal: true });\r\n\r\n/**\r\n * Provides bounds-checked access to 64-bit FSD container bytes.\r\n */\r\nexport class CjsFsd64Binary\r\n{\r\n /**\r\n * Binary value types accepted by declarative reader schemas.\r\n *\r\n * Schema files store these property names as strings so they remain inert\r\n * JSON. Schema validation resolves the names through this object.\r\n */\r\n static Type = {\r\n /**\r\n * A single flag bit inside a byte, addressed by `offset` plus `bit`.\r\n *\r\n * The container packs several independent flags into one byte, so a\r\n * schema that called such a field `UINT_8` would describe the byte\r\n * rather than the field and hand a consumer 1 where it expected true.\r\n */\r\n BOOLEAN: \"BOOLEAN\",\r\n FLOAT_32: \"FLOAT_32\",\r\n FLOAT_64: \"FLOAT_64\",\r\n INT_32: \"INT_32\",\r\n INT_32_IDENTIFIER: \"INT_32_IDENTIFIER\",\r\n LIST: \"LIST\",\r\n MAP: \"MAP\",\r\n OBJECT: \"OBJECT\",\r\n STRING: \"STRING\",\r\n UINT_8: \"UINT_8\",\r\n UINT_32: \"UINT_32\",\r\n UINT_32_IDENTIFIER: \"UINT_32_IDENTIFIER\",\r\n UINT_64: \"UINT_64\",\r\n UINT_64_IDENTIFIER: \"UINT_64_IDENTIFIER\",\r\n };\r\n\r\n _bytes;\r\n _view;\r\n\r\n /** Creates a validated view over caller-supplied container bytes. */\r\n constructor(bytes, options = {})\r\n {\r\n this._bytes = NormalizeBytes(bytes);\r\n this._view = new DataView(\r\n this._bytes.buffer,\r\n this._bytes.byteOffset,\r\n this._bytes.byteLength,\r\n );\r\n\r\n this._AssertContainer(options.path ?? \"FSD input\");\r\n\r\n if (options.schemaID)\r\n {\r\n this.AssertSchema(options.schemaID, options.path);\r\n }\r\n }\r\n\r\n /** Returns the complete container byte length. */\r\n get ByteLength()\r\n {\r\n return this._bytes.byteLength;\r\n }\r\n\r\n /** Returns the payload length declared by the container header. */\r\n get PayloadLength()\r\n {\r\n return this.Uint64(24);\r\n }\r\n\r\n /** Returns the first byte offset after the fixed container header. */\r\n get RootOffset()\r\n {\r\n return HEADER_SIZE;\r\n }\r\n\r\n /** Returns the lossless hexadecimal schema identity from the header. */\r\n get SchemaID()\r\n {\r\n return Hex(this._bytes.subarray(0, 24));\r\n }\r\n\r\n /**\r\n * Returns the layout half of the schema identity.\r\n *\r\n * The 24-byte identity is two values: the first sixteen bytes identify the\r\n * record layout and are stable across builds and across publishers, while\r\n * the last eight are a digest of the data itself and change whenever the\r\n * file's contents do. Measured 2026-08-14 across CCP build 3466501 and\r\n * NetEase build 3466057: eleven datasets agreed on the first sixteen bytes\r\n * and differed on the last eight in every case, the sole exception being a\r\n * file that is byte-identical on both.\r\n */\r\n get LayoutID()\r\n {\r\n return Hex(this._bytes.subarray(0, 16));\r\n }\r\n\r\n /**\r\n * Rejects the container when its schema identity differs from the expected value.\r\n *\r\n * A 32-character expectation pins the layout alone, which is what a reader\r\n * wants: it keeps decoding the same dataset after its contents change and\r\n * accepts the same layout from another publisher. A 48-character\r\n * expectation additionally pins the content digest, so it accepts exactly\r\n * one build's bytes.\r\n *\r\n * Several identities may be passed. The identity is not a hash of the byte\r\n * layout alone, so one layout can appear under two of them: Infinity's\r\n * `dogmaeffects.fsdbinary` reads `3f128288…` where CCP and Serenity read\r\n * `b7107f57…`, yet every offset, every presence bit and the modifier entry\r\n * are the same. A reader may accept both, and should say what it measured\r\n * to justify each one.\r\n */\r\n AssertSchema(expected, path = \"FSD input\")\r\n {\r\n const wanted = (Array.isArray(expected) ? expected : [ expected ])\r\n .map(value => String(value).toLowerCase());\r\n const actual = new Set(wanted.map(value => value.length === 32 ? this.LayoutID : this.SchemaID));\r\n\r\n if (wanted.some(value => actual.has(value))) return;\r\n\r\n // Reported in the form that was asked for, so a reader pinning the\r\n // content digest is not told about the layout half it did not ask about.\r\n const reported = wanted[0].length === 32 ? this.LayoutID : this.SchemaID;\r\n const error = new Error(`Unsupported FSD schema for ${path}: ${reported}`);\r\n\r\n error.code = \"CJS_FSD_SCHEMA_UNSUPPORTED\";\r\n error.actualSchemaID = reported;\r\n error.expectedSchemaID = wanted.length === 1 ? wanted[0] : wanted;\r\n error.path = path;\r\n throw error;\r\n }\r\n\r\n /** Resolves one payload-relative offset to an absolute container offset. */\r\n Absolute(relativeOffset)\r\n {\r\n const absolute = this.RootOffset + relativeOffset;\r\n this.AssertRange(absolute, 0);\r\n return absolute;\r\n }\r\n\r\n /** Aligns an absolute byte offset to the next eight-byte boundary. */\r\n Align8(offset)\r\n {\r\n return Math.ceil(offset / 8) * 8;\r\n }\r\n\r\n /** Rejects a byte range which falls outside the supplied container. */\r\n AssertRange(offset, size)\r\n {\r\n if (!Number.isSafeInteger(offset) || !Number.isSafeInteger(size) ||\r\n offset < 0 || size < 0 || offset + size > this.ByteLength)\r\n {\r\n const error = new RangeError(`FSD offset is outside the input: ${offset} + ${size}`);\r\n error.code = \"CJS_FSD_OFFSET_INVALID\";\r\n error.offset = offset;\r\n error.size = size;\r\n throw error;\r\n }\r\n }\r\n\r\n /** Reads one unsigned byte at an absolute offset. */\r\n Byte(offset)\r\n {\r\n this.AssertRange(offset, 1);\r\n return this._view.getUint8(offset);\r\n }\r\n\r\n /** Returns a bounded byte view without copying its contents. */\r\n Bytes(offset, size)\r\n {\r\n this.AssertRange(offset, size);\r\n return this._bytes.subarray(offset, offset + size);\r\n }\r\n\r\n /** Reads one little-endian 32-bit floating-point value. */\r\n Float32(offset)\r\n {\r\n this.AssertRange(offset, 4);\r\n return this._view.getFloat32(offset, true);\r\n }\r\n\r\n /** Reads one little-endian 64-bit floating-point value. */\r\n Float64(offset)\r\n {\r\n this.AssertRange(offset, 8);\r\n return this._view.getFloat64(offset, true);\r\n }\r\n\r\n /** Reads one little-endian signed 32-bit integer. */\r\n Int32(offset)\r\n {\r\n this.AssertRange(offset, 4);\r\n return this._view.getInt32(offset, true);\r\n }\r\n\r\n /** Reads one little-endian unsigned 32-bit integer. */\r\n Uint32(offset)\r\n {\r\n this.AssertRange(offset, 4);\r\n return this._view.getUint32(offset, true);\r\n }\r\n\r\n /** Reads one little-endian unsigned 64-bit safe integer. */\r\n Uint64(offset)\r\n {\r\n this.AssertRange(offset, 8);\r\n const value = this._view.getBigUint64(offset, true);\r\n\r\n if (value > BigInt(Number.MAX_SAFE_INTEGER))\r\n {\r\n const error = new RangeError(`FSD uint64 is not a safe JavaScript offset/count: ${value}`);\r\n error.code = \"CJS_FSD_UINT64_UNSAFE\";\r\n error.offset = offset;\r\n throw error;\r\n }\r\n\r\n return Number(value);\r\n }\r\n\r\n /**\r\n * Reads an unsigned 64-bit identity without passing through a JavaScript\r\n * number, returning its lossless decimal JSON representation.\r\n */\r\n Uint64Identity(offset)\r\n {\r\n this.AssertRange(offset, 8);\r\n return this._view.getBigUint64(offset, true).toString(10);\r\n }\r\n\r\n /** Returns a safe unsigned 64-bit value or null for an invalid read. */\r\n TryUint64(offset)\r\n {\r\n if (!Number.isSafeInteger(offset) || offset < 0 || offset + 8 > this.ByteLength)\r\n {\r\n return null;\r\n }\r\n\r\n const value = this._view.getBigUint64(offset, true);\r\n return value <= BigInt(Number.MAX_SAFE_INTEGER) ? Number(value) : null;\r\n }\r\n\r\n /**\r\n * Returns the absolute offsets of every record in an FSD hash-map.\r\n */\r\n MapEntries(recordSize, headerOffset = this.RootOffset)\r\n {\r\n AssertRecordSize(recordSize);\r\n this.AssertRange(headerOffset, 16);\r\n\r\n const expectedCount = this.Uint64(headerOffset + 8);\r\n\r\n if (expectedCount === 0)\r\n {\r\n return [];\r\n }\r\n\r\n const tableOffset = this.Absolute(this.Uint64(headerOffset));\r\n const bucketCount = this.Uint64(tableOffset - 8);\r\n this._AssertElementRange(tableOffset, bucketCount, 8);\r\n\r\n const offsets = [];\r\n\r\n for (let index = 0; index < bucketCount; index++)\r\n {\r\n const bucketOffset = this.Absolute(this.Uint64(tableOffset + index * 8));\r\n const recordCount = this.Uint64(bucketOffset - 8);\r\n this._AssertElementRange(bucketOffset, recordCount, recordSize);\r\n\r\n for (let recordIndex = 0; recordIndex < recordCount; recordIndex++)\r\n {\r\n offsets.push(bucketOffset + recordIndex * recordSize);\r\n }\r\n }\r\n\r\n if (offsets.length !== expectedCount)\r\n {\r\n const error = new Error(\r\n `FSD map contains ${offsets.length} records; its header declares ${expectedCount}.`,\r\n );\r\n error.code = \"CJS_FSD_RECORD_COUNT_INVALID\";\r\n error.actualCount = offsets.length;\r\n error.expectedCount = expectedCount;\r\n throw error;\r\n }\r\n\r\n return offsets;\r\n }\r\n\r\n /**\r\n * Returns absolute offsets for a count-prefixed FSD list.\r\n */\r\n ListEntries(relativeOffset, recordSize, maximumCount = Number.MAX_SAFE_INTEGER)\r\n {\r\n AssertRecordSize(recordSize);\r\n\r\n if (relativeOffset === 0)\r\n {\r\n return [];\r\n }\r\n\r\n if (!Number.isSafeInteger(relativeOffset) || relativeOffset < 8)\r\n {\r\n const error = new RangeError(`FSD list pointer is invalid: ${relativeOffset}`);\r\n error.code = \"CJS_FSD_OFFSET_INVALID\";\r\n error.offset = relativeOffset;\r\n throw error;\r\n }\r\n\r\n const dataOffset = this.Absolute(relativeOffset);\r\n const count = this.Uint64(dataOffset - 8);\r\n\r\n if (count > maximumCount)\r\n {\r\n const error = new RangeError(`FSD list count exceeds its limit: ${count}`);\r\n error.code = \"CJS_FSD_COUNT_INVALID\";\r\n error.count = count;\r\n error.maximumCount = maximumCount;\r\n throw error;\r\n }\r\n\r\n this._AssertElementRange(dataOffset, count, recordSize);\r\n return Array.from(\r\n { length: count },\r\n (_, index) => dataOffset + index * recordSize,\r\n );\r\n }\r\n\r\n /** Returns a printable ASCII string or null for invalid evidence. */\r\n StringAtDataPointer(relativeOffset, maximumLength = 4096)\r\n {\r\n const value = this.Utf8StringAtDataPointer(relativeOffset, maximumLength);\r\n\r\n if (value === null)\r\n {\r\n return null;\r\n }\r\n\r\n for (const character of value)\r\n {\r\n const code = character.codePointAt(0);\r\n\r\n if (code < 32 || code > 126)\r\n {\r\n return null;\r\n }\r\n }\r\n\r\n return value;\r\n }\r\n\r\n /** Returns a strict UTF-8 string or null for invalid evidence. */\r\n Utf8StringAtDataPointer(relativeOffset, maximumLength = 4096)\r\n {\r\n if (!Number.isSafeInteger(relativeOffset) || relativeOffset < 8)\r\n {\r\n return null;\r\n }\r\n\r\n const dataOffset = this.RootOffset + relativeOffset;\r\n const length = this.TryUint64(dataOffset - 8);\r\n\r\n if (length === null || length > maximumLength || dataOffset + length > this.ByteLength)\r\n {\r\n return null;\r\n }\r\n\r\n try\r\n {\r\n return strictTextDecoder.decode(this._bytes.subarray(dataOffset, dataOffset + length));\r\n }\r\n catch\r\n {\r\n return null;\r\n }\r\n }\r\n\r\n /** Returns a bounded printable string list or null for invalid evidence. */\r\n StringList(relativeOffset, maximumCount = 100)\r\n {\r\n if (!Number.isSafeInteger(relativeOffset) || relativeOffset < 8)\r\n {\r\n return null;\r\n }\r\n\r\n const tableOffset = this.RootOffset + relativeOffset;\r\n const count = this.TryUint64(tableOffset - 8);\r\n\r\n if (count === null || count > maximumCount || tableOffset + count * 8 > this.ByteLength)\r\n {\r\n return null;\r\n }\r\n\r\n const values = [];\r\n\r\n for (let index = 0; index < count; index++)\r\n {\r\n const value = this.StringAtDataPointer(this.TryUint64(tableOffset + index * 8));\r\n\r\n if (value === null)\r\n {\r\n return null;\r\n }\r\n\r\n values.push(value);\r\n }\r\n\r\n return values;\r\n }\r\n\r\n /** Returns a bounded unsigned 32-bit list or null for invalid evidence. */\r\n Uint32List(relativeOffset, maximumCount = 100)\r\n {\r\n if (relativeOffset === 0)\r\n {\r\n return [];\r\n }\r\n\r\n if (!Number.isSafeInteger(relativeOffset) || relativeOffset < 8)\r\n {\r\n return null;\r\n }\r\n\r\n const dataOffset = this.RootOffset + relativeOffset;\r\n const count = this.TryUint64(dataOffset - 8);\r\n\r\n if (count === null || count > maximumCount || dataOffset + count * 4 > this.ByteLength)\r\n {\r\n return null;\r\n }\r\n\r\n return Array.from(\r\n { length: count },\r\n (_, index) => this.Uint32(dataOffset + index * 4),\r\n );\r\n }\r\n\r\n /** Validates the byte range occupied by a repeated fixed-size value. */\r\n _AssertElementRange(offset, count, size)\r\n {\r\n if (!Number.isSafeInteger(count) || count < 0 ||\r\n count > Math.floor(this.ByteLength / size))\r\n {\r\n const error = new RangeError(`FSD element count is invalid: ${count}`);\r\n error.code = \"CJS_FSD_COUNT_INVALID\";\r\n error.count = count;\r\n error.elementSize = size;\r\n throw error;\r\n }\r\n\r\n this.AssertRange(offset, count * size);\r\n }\r\n\r\n /** Validates the fixed header and its declared payload length. */\r\n _AssertContainer(path)\r\n {\r\n if (this.ByteLength < HEADER_SIZE)\r\n {\r\n const error = new Error(`FSD input is smaller than its ${HEADER_SIZE}-byte header: ${path}`);\r\n error.code = \"CJS_FSD_HEADER_INVALID\";\r\n throw error;\r\n }\r\n\r\n const payloadLength = this.Uint64(24);\r\n\r\n if (payloadLength !== this.ByteLength - HEADER_SIZE)\r\n {\r\n const error = new Error(`FSD payload length does not match its header: ${path}`);\r\n error.code = \"CJS_FSD_LENGTH_INVALID\";\r\n error.actualLength = this.ByteLength - HEADER_SIZE;\r\n error.expectedLength = payloadLength;\r\n throw error;\r\n }\r\n }\r\n}\r\n\r\nfunction AssertRecordSize(value)\r\n{\r\n if (!Number.isSafeInteger(value) || value < 1)\r\n {\r\n const error = new RangeError(`FSD record size is invalid: ${value}`);\r\n error.code = \"CJS_FSD_RECORD_SIZE_INVALID\";\r\n throw error;\r\n }\r\n}\r\n\r\nfunction Hex(bytes)\r\n{\r\n return Array.from(bytes, value => value.toString(16).padStart(2, \"0\")).join(\"\");\r\n}\r\n\r\nfunction NormalizeBytes(input)\r\n{\r\n if (input instanceof ArrayBuffer)\r\n {\r\n return new Uint8Array(input);\r\n }\r\n\r\n if (ArrayBuffer.isView(input))\r\n {\r\n return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\r\n }\r\n\r\n const error = new TypeError(\"FSD input must be an ArrayBuffer or an ArrayBuffer view.\");\r\n error.code = \"CJS_FSD_INPUT_INVALID\";\r\n throw error;\r\n}\r\n\r\nexport default CjsFsd64Binary;\r\n"],"names":["HEADER_SIZE","strictTextDecoder","TextDecoder","fatal","CjsFsd64Binary","Type","BOOLEAN","FLOAT_32","FLOAT_64","INT_32","INT_32_IDENTIFIER","LIST","MAP","OBJECT","STRING","UINT_8","UINT_32","UINT_32_IDENTIFIER","UINT_64","UINT_64_IDENTIFIER","_bytes","_view","constructor","bytes","options","NormalizeBytes","DataView","buffer","byteOffset","byteLength","_AssertContainer","path","schemaID","AssertSchema","ByteLength","PayloadLength","Uint64","RootOffset","SchemaID","Hex","subarray","LayoutID","expected","wanted","Array","isArray","map","value","String","toLowerCase","actual","Set","length","some","has","reported","error","Error","code","actualSchemaID","expectedSchemaID","Absolute","relativeOffset","absolute","AssertRange","Align8","offset","Math","ceil","size","Number","isSafeInteger","RangeError","Byte","getUint8","Bytes","Float32","getFloat32","Float64","getFloat64","Int32","getInt32","Uint32","getUint32","getBigUint64","BigInt","MAX_SAFE_INTEGER","Uint64Identity","toString","TryUint64","MapEntries","recordSize","headerOffset","AssertRecordSize","expectedCount","tableOffset","bucketCount","_AssertElementRange","offsets","index","bucketOffset","recordCount","recordIndex","push","actualCount","ListEntries","maximumCount","dataOffset","count","from","_","StringAtDataPointer","maximumLength","Utf8StringAtDataPointer","character","codePointAt","decode","StringList","values","Uint32List","floor","elementSize","payloadLength","actualLength","expectedLength","padStart","join","input","ArrayBuffer","Uint8Array","isView","TypeError"],"mappings":"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"}
@@ -5,7 +5,7 @@
5
5
  * or resource-index work.
6
6
  */
7
7
  class CjsFsd64Reader {
8
- #readers = new Map();
8
+ _readers = new Map();
9
9
 
10
10
  /**
11
11
  * Registers one approved file-specific reader by logical path.
@@ -13,13 +13,13 @@ class CjsFsd64Reader {
13
13
  Register(path, reader, options = {}) {
14
14
  const key = NormalizeReaderKey(path);
15
15
  const implementation = NormalizeReader(reader);
16
- if (this.#readers.has(key) && options.replace !== true) {
16
+ if (this._readers.has(key) && options.replace !== true) {
17
17
  const error = new Error(`FSD reader is already registered: ${key}`);
18
18
  error.code = "CJS_FSD_READER_EXISTS";
19
19
  error.path = key;
20
20
  throw error;
21
21
  }
22
- this.#readers.set(key, implementation);
22
+ this._readers.set(key, implementation);
23
23
  return this;
24
24
  }
25
25
 
@@ -27,21 +27,21 @@ class CjsFsd64Reader {
27
27
  * Removes a reader without affecting any caller-owned bytes or data.
28
28
  */
29
29
  Remove(path) {
30
- return this.#readers.delete(NormalizeReaderKey(path));
30
+ return this._readers.delete(NormalizeReaderKey(path));
31
31
  }
32
32
 
33
33
  /**
34
34
  * Reports whether an exact file-specific reader is registered.
35
35
  */
36
36
  Has(path) {
37
- return this.#readers.has(NormalizeReaderKey(path));
37
+ return this._readers.has(NormalizeReaderKey(path));
38
38
  }
39
39
 
40
40
  /**
41
41
  * Lists registered logical paths in deterministic order.
42
42
  */
43
43
  List() {
44
- return [...this.#readers.keys()].sort();
44
+ return [...this._readers.keys()].sort();
45
45
  }
46
46
 
47
47
  /**
@@ -49,7 +49,7 @@ class CjsFsd64Reader {
49
49
  */
50
50
  async Read(input, options = {}) {
51
51
  const path = NormalizeReaderKey(options.path);
52
- const reader = this.#readers.get(path);
52
+ const reader = this._readers.get(path);
53
53
  if (!reader) {
54
54
  const error = new Error(`No FSD reader is registered for: ${path}`);
55
55
  error.code = "CJS_FSD_READER_NOT_FOUND";
@@ -69,7 +69,7 @@ class CjsFsd64Reader {
69
69
  */
70
70
  async ReadJSON(input, options = {}) {
71
71
  const path = NormalizeReaderKey(options.path);
72
- const reader = this.#readers.get(path);
72
+ const reader = this._readers.get(path);
73
73
  if (!reader) {
74
74
  const error = new Error(`No FSD reader is registered for: ${path}`);
75
75
  error.code = "CJS_FSD_READER_NOT_FOUND";
@@ -1 +1 @@
1
- {"version":3,"file":"CjsFsd64Reader.js","sources":["../../../../../../../src/resource/formats/fsd/64/core/CjsFsd64Reader.js"],"sourcesContent":["/**\r\n * Dispatches caller-supplied bytes to an explicitly registered FSD reader.\r\n *\r\n * This class deliberately performs no filesystem, network, provider, build,\r\n * or resource-index work.\r\n */\r\nexport class CjsFsd64Reader\r\n{\r\n #readers = new Map();\r\n\r\n /**\r\n * Registers one approved file-specific reader by logical path.\r\n */\r\n Register(path, reader, options = {})\r\n {\r\n const key = NormalizeReaderKey(path);\r\n const implementation = NormalizeReader(reader);\r\n\r\n if (this.#readers.has(key) && options.replace !== true)\r\n {\r\n const error = new Error(`FSD reader is already registered: ${key}`);\r\n error.code = \"CJS_FSD_READER_EXISTS\";\r\n error.path = key;\r\n throw error;\r\n }\r\n\r\n this.#readers.set(key, implementation);\r\n return this;\r\n }\r\n\r\n /**\r\n * Removes a reader without affecting any caller-owned bytes or data.\r\n */\r\n Remove(path)\r\n {\r\n return this.#readers.delete(NormalizeReaderKey(path));\r\n }\r\n\r\n /**\r\n * Reports whether an exact file-specific reader is registered.\r\n */\r\n Has(path)\r\n {\r\n return this.#readers.has(NormalizeReaderKey(path));\r\n }\r\n\r\n /**\r\n * Lists registered logical paths in deterministic order.\r\n */\r\n List()\r\n {\r\n return [ ...this.#readers.keys() ].sort();\r\n }\r\n\r\n /**\r\n * Reads caller-supplied bytes with the reader registered for options.path.\r\n */\r\n async Read(input, options = {})\r\n {\r\n const path = NormalizeReaderKey(options.path);\r\n const reader = this.#readers.get(path);\r\n\r\n if (!reader)\r\n {\r\n const error = new Error(`No FSD reader is registered for: ${path}`);\r\n error.code = \"CJS_FSD_READER_NOT_FOUND\";\r\n error.path = path;\r\n throw error;\r\n }\r\n\r\n const bytes = NormalizeBytes(input);\r\n return reader.Read(bytes, {\r\n ...options,\r\n path,\r\n });\r\n }\r\n\r\n /**\r\n * Reads caller-supplied bytes as a plain JSON-compatible value through the\r\n * schema-backed reader registered for options.path.\r\n */\r\n async ReadJSON(input, options = {})\r\n {\r\n const path = NormalizeReaderKey(options.path);\r\n const reader = this.#readers.get(path);\r\n\r\n if (!reader)\r\n {\r\n const error = new Error(`No FSD reader is registered for: ${path}`);\r\n error.code = \"CJS_FSD_READER_NOT_FOUND\";\r\n error.path = path;\r\n throw error;\r\n }\r\n\r\n if (typeof reader.ReadJSON !== \"function\")\r\n {\r\n const error = new Error(`FSD reader does not expose JSON decoding: ${path}`);\r\n error.code = \"CJS_FSD_JSON_READER_INVALID\";\r\n error.path = path;\r\n throw error;\r\n }\r\n\r\n const bytes = NormalizeBytes(input);\r\n return reader.ReadJSON(bytes, {\r\n ...options,\r\n path,\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Produces a stable registry key without importing resource-source policy.\r\n */\r\nfunction NormalizeReaderKey(value)\r\n{\r\n if (typeof value !== \"string\" || value.trim() === \"\")\r\n {\r\n const error = new TypeError(\"FSD reader path must be a non-empty string.\");\r\n error.code = \"CJS_FSD_PATH_INVALID\";\r\n throw error;\r\n }\r\n\r\n return value.trim().replaceAll(\"\\\\\", \"/\").toLowerCase();\r\n}\r\n\r\n/**\r\n * Accepts object readers and function shorthand while storing one contract.\r\n */\r\nfunction NormalizeReader(value)\r\n{\r\n if (typeof value === \"function\")\r\n {\r\n return { Read: value };\r\n }\r\n\r\n if (!value || typeof value.Read !== \"function\")\r\n {\r\n const error = new TypeError(\"FSD reader must be a function or expose Read(bytes, context).\");\r\n error.code = \"CJS_FSD_READER_INVALID\";\r\n throw error;\r\n }\r\n\r\n return value;\r\n}\r\n\r\n/**\r\n * Creates a byte view over accepted binary inputs without copying or mutation.\r\n */\r\nfunction NormalizeBytes(input)\r\n{\r\n if (input instanceof ArrayBuffer)\r\n {\r\n return new Uint8Array(input);\r\n }\r\n\r\n if (ArrayBuffer.isView(input))\r\n {\r\n return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\r\n }\r\n\r\n const error = new TypeError(\"FSD input must be an ArrayBuffer or an ArrayBuffer view.\");\r\n error.code = \"CJS_FSD_INPUT_INVALID\";\r\n throw error;\r\n}\r\n\r\nexport default CjsFsd64Reader;\r\n"],"names":["CjsFsd64Reader","Map","Register","path","reader","options","key","NormalizeReaderKey","implementation","NormalizeReader","has","replace","error","Error","code","set","Remove","delete","Has","List","keys","sort","Read","input","get","bytes","NormalizeBytes","ReadJSON","value","trim","TypeError","replaceAll","toLowerCase","ArrayBuffer","Uint8Array","isView","buffer","byteOffset","byteLength"],"mappings":"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"}
1
+ {"version":3,"file":"CjsFsd64Reader.js","sources":["../../../../../../../src/resource/formats/fsd/64/core/CjsFsd64Reader.js"],"sourcesContent":["/**\r\n * Dispatches caller-supplied bytes to an explicitly registered FSD reader.\r\n *\r\n * This class deliberately performs no filesystem, network, provider, build,\r\n * or resource-index work.\r\n */\r\nexport class CjsFsd64Reader\r\n{\r\n _readers = new Map();\r\n\r\n /**\r\n * Registers one approved file-specific reader by logical path.\r\n */\r\n Register(path, reader, options = {})\r\n {\r\n const key = NormalizeReaderKey(path);\r\n const implementation = NormalizeReader(reader);\r\n\r\n if (this._readers.has(key) && options.replace !== true)\r\n {\r\n const error = new Error(`FSD reader is already registered: ${key}`);\r\n error.code = \"CJS_FSD_READER_EXISTS\";\r\n error.path = key;\r\n throw error;\r\n }\r\n\r\n this._readers.set(key, implementation);\r\n return this;\r\n }\r\n\r\n /**\r\n * Removes a reader without affecting any caller-owned bytes or data.\r\n */\r\n Remove(path)\r\n {\r\n return this._readers.delete(NormalizeReaderKey(path));\r\n }\r\n\r\n /**\r\n * Reports whether an exact file-specific reader is registered.\r\n */\r\n Has(path)\r\n {\r\n return this._readers.has(NormalizeReaderKey(path));\r\n }\r\n\r\n /**\r\n * Lists registered logical paths in deterministic order.\r\n */\r\n List()\r\n {\r\n return [ ...this._readers.keys() ].sort();\r\n }\r\n\r\n /**\r\n * Reads caller-supplied bytes with the reader registered for options.path.\r\n */\r\n async Read(input, options = {})\r\n {\r\n const path = NormalizeReaderKey(options.path);\r\n const reader = this._readers.get(path);\r\n\r\n if (!reader)\r\n {\r\n const error = new Error(`No FSD reader is registered for: ${path}`);\r\n error.code = \"CJS_FSD_READER_NOT_FOUND\";\r\n error.path = path;\r\n throw error;\r\n }\r\n\r\n const bytes = NormalizeBytes(input);\r\n return reader.Read(bytes, {\r\n ...options,\r\n path,\r\n });\r\n }\r\n\r\n /**\r\n * Reads caller-supplied bytes as a plain JSON-compatible value through the\r\n * schema-backed reader registered for options.path.\r\n */\r\n async ReadJSON(input, options = {})\r\n {\r\n const path = NormalizeReaderKey(options.path);\r\n const reader = this._readers.get(path);\r\n\r\n if (!reader)\r\n {\r\n const error = new Error(`No FSD reader is registered for: ${path}`);\r\n error.code = \"CJS_FSD_READER_NOT_FOUND\";\r\n error.path = path;\r\n throw error;\r\n }\r\n\r\n if (typeof reader.ReadJSON !== \"function\")\r\n {\r\n const error = new Error(`FSD reader does not expose JSON decoding: ${path}`);\r\n error.code = \"CJS_FSD_JSON_READER_INVALID\";\r\n error.path = path;\r\n throw error;\r\n }\r\n\r\n const bytes = NormalizeBytes(input);\r\n return reader.ReadJSON(bytes, {\r\n ...options,\r\n path,\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Produces a stable registry key without importing resource-source policy.\r\n */\r\nfunction NormalizeReaderKey(value)\r\n{\r\n if (typeof value !== \"string\" || value.trim() === \"\")\r\n {\r\n const error = new TypeError(\"FSD reader path must be a non-empty string.\");\r\n error.code = \"CJS_FSD_PATH_INVALID\";\r\n throw error;\r\n }\r\n\r\n return value.trim().replaceAll(\"\\\\\", \"/\").toLowerCase();\r\n}\r\n\r\n/**\r\n * Accepts object readers and function shorthand while storing one contract.\r\n */\r\nfunction NormalizeReader(value)\r\n{\r\n if (typeof value === \"function\")\r\n {\r\n return { Read: value };\r\n }\r\n\r\n if (!value || typeof value.Read !== \"function\")\r\n {\r\n const error = new TypeError(\"FSD reader must be a function or expose Read(bytes, context).\");\r\n error.code = \"CJS_FSD_READER_INVALID\";\r\n throw error;\r\n }\r\n\r\n return value;\r\n}\r\n\r\n/**\r\n * Creates a byte view over accepted binary inputs without copying or mutation.\r\n */\r\nfunction NormalizeBytes(input)\r\n{\r\n if (input instanceof ArrayBuffer)\r\n {\r\n return new Uint8Array(input);\r\n }\r\n\r\n if (ArrayBuffer.isView(input))\r\n {\r\n return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\r\n }\r\n\r\n const error = new TypeError(\"FSD input must be an ArrayBuffer or an ArrayBuffer view.\");\r\n error.code = \"CJS_FSD_INPUT_INVALID\";\r\n throw error;\r\n}\r\n\r\nexport default CjsFsd64Reader;\r\n"],"names":["CjsFsd64Reader","_readers","Map","Register","path","reader","options","key","NormalizeReaderKey","implementation","NormalizeReader","has","replace","error","Error","code","set","Remove","delete","Has","List","keys","sort","Read","input","get","bytes","NormalizeBytes","ReadJSON","value","trim","TypeError","replaceAll","toLowerCase","ArrayBuffer","Uint8Array","isView","buffer","byteOffset","byteLength"],"mappings":"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"}
@@ -14,11 +14,11 @@ const OUTPUT_JSON = "json";
14
14
  * `bitWidth: 32` or `variant: "fsd32"` until its schema-driven reader exists.
15
15
  */
16
16
  class CjsFsdFormat extends CjsFormat {
17
- /**
18
- * Inspect the explicitly selected legacy layout or recognized modern layout.
19
- * @param {*} input Candidate input.
20
- * @param {object} [options] Format profile.
21
- * @returns {object} Variant metadata.
17
+ /**
18
+ * Inspect the explicitly selected legacy layout or recognized modern layout.
19
+ * @param {*} input Candidate input.
20
+ * @param {object} [options] Format profile.
21
+ * @returns {object} Variant metadata.
22
22
  */
23
23
  static inspect(input, options = {}) {
24
24
  if (CjsFsd32Format.is(input, options)) {
@@ -27,11 +27,11 @@ class CjsFsdFormat extends CjsFormat {
27
27
  return CjsFsd64Format.inspect(input, options);
28
28
  }
29
29
 
30
- /**
31
- * Report support for the selected or recognized FSD variant.
32
- * @param {*|string} input Candidate input.
33
- * @param {object} [options] Format and reader options.
34
- * @returns {object} Plain support report.
30
+ /**
31
+ * Report support for the selected or recognized FSD variant.
32
+ * @param {*|string} input Candidate input.
33
+ * @param {object} [options] Format and reader options.
34
+ * @returns {object} Plain support report.
35
35
  */
36
36
  static probeSupport(input, options = {}) {
37
37
  if (CjsFsd32Format.is(input, options)) {
@@ -40,11 +40,11 @@ class CjsFsdFormat extends CjsFormat {
40
40
  return CjsFsd64Format.probeSupport(input, options);
41
41
  }
42
42
 
43
- /**
44
- * Decode the selected or recognized FSD variant.
45
- * @param {*} input Candidate input.
46
- * @param {object} [options] Format and reader options.
47
- * @returns {*} Decoded payload.
43
+ /**
44
+ * Decode the selected or recognized FSD variant.
45
+ * @param {*} input Candidate input.
46
+ * @param {object} [options] Format and reader options.
47
+ * @returns {*} Decoded payload.
48
48
  */
49
49
  static read(input, options = {}) {
50
50
  if (CjsFsd32Format.is(input, options)) {
@@ -59,11 +59,11 @@ class CjsFsdFormat extends CjsFormat {
59
59
  throw error;
60
60
  }
61
61
 
62
- /**
63
- * Decode the selected or recognized FSD variant to JSON-compatible values.
64
- * @param {*} input Candidate input.
65
- * @param {object} [options] Format and reader options.
66
- * @returns {*} Decoded JSON-compatible value.
62
+ /**
63
+ * Decode the selected or recognized FSD variant to JSON-compatible values.
64
+ * @param {*} input Candidate input.
65
+ * @param {object} [options] Format and reader options.
66
+ * @returns {*} Decoded JSON-compatible value.
67
67
  */
68
68
  static readJSON(input, options = {}) {
69
69
  return this.read(input, {
@@ -71,9 +71,9 @@ class CjsFsdFormat extends CjsFormat {
71
71
  emit: OUTPUT_JSON
72
72
  });
73
73
  }
74
- static id = "fsd";
75
- static extensions = Object.freeze([".fsdbinary"]);
76
- static mediaTypes = Object.freeze(["data"]);
74
+ static id = "CjsFsdFormat";
75
+ static extensions = [".fsdbinary"];
76
+ static mediaTypes = ["data"];
77
77
  static outputs = CjsFormat.defineOutputs({
78
78
  payload: {
79
79
  default: true,
@@ -1 +1 @@
1
- {"version":3,"file":"CjsFsdFormat.js","sources":["../../../../../src/resource/formats/fsd/CjsFsdFormat.js"],"sourcesContent":["import { CjsFormat } from \"../../format/CjsFormat.js\";\r\nimport { CjsFsd32Format } from \"./32/index.js\";\r\nimport { CjsFsd64Format } from \"./64/index.js\";\r\n\r\nconst OUTPUT_JSON = \"json\";\r\nconst OUTPUT_PAYLOAD = \"payload\";\r\n\r\n/**\r\n * Normal FSD format-pipeline entry point.\r\n *\r\n * Modern cFSD identifies itself through its 32-byte envelope. Legacy FSD is\r\n * headerless and therefore must be identified by the caller/profile through\r\n * `bitWidth: 32` or `variant: \"fsd32\"` until its schema-driven reader exists.\r\n */\r\nexport class CjsFsdFormat extends CjsFormat\n{\n /**\n * Inspect the explicitly selected legacy layout or recognized modern layout.\n * @param {*} input Candidate input.\n * @param {object} [options] Format profile.\n * @returns {object} Variant metadata.\n */\n static inspect(input, options = {})\n {\r\n if (CjsFsd32Format.is(input, options))\r\n {\r\n return CjsFsd32Format.inspect(input, options);\r\n }\r\n\r\n return CjsFsd64Format.inspect(input, options);\r\n }\r\n\r\n /**\n * Report support for the selected or recognized FSD variant.\n * @param {*|string} input Candidate input.\n * @param {object} [options] Format and reader options.\n * @returns {object} Plain support report.\n */\n static probeSupport(input, options = {})\n {\r\n if (CjsFsd32Format.is(input, options))\r\n {\r\n return CjsFsd32Format.probeSupport(input, options);\r\n }\r\n\r\n return CjsFsd64Format.probeSupport(input, options);\r\n }\r\n\r\n /**\n * Decode the selected or recognized FSD variant.\n * @param {*} input Candidate input.\n * @param {object} [options] Format and reader options.\n * @returns {*} Decoded payload.\n */\n static read(input, options = {})\n {\r\n if (CjsFsd32Format.is(input, options))\r\n {\r\n return CjsFsd32Format.read(input, options);\r\n }\r\n\r\n if (CjsFsd64Format.is(input))\r\n {\r\n return CjsFsd64Format.read(input, options);\r\n }\r\n\r\n const error = new Error(\r\n \"FSD input is neither an identified legacy 32-bit layout nor a valid modern 64-bit cFSD container.\"\r\n );\r\n\r\n error.code = \"CJS_FSD_VARIANT_UNKNOWN\";\r\n error.path = options.path ?? null;\r\n throw error;\r\n }\r\n\r\n /**\n * Decode the selected or recognized FSD variant to JSON-compatible values.\n * @param {*} input Candidate input.\n * @param {object} [options] Format and reader options.\n * @returns {*} Decoded JSON-compatible value.\n */\n static readJSON(input, options = {})\n {\r\n return this.read(input, { ...options, emit: OUTPUT_JSON });\r\n }\r\n\r\n static id = \"fsd\";\r\n static extensions = Object.freeze([ \".fsdbinary\" ]);\r\n static mediaTypes = Object.freeze([ \"data\" ]);\r\n static outputs = CjsFormat.defineOutputs({\r\n payload: { default: true, decoded: true },\r\n json: { decoded: true }\r\n });\r\n}\r\n\r\nexport default CjsFsdFormat;\r\n"],"names":["OUTPUT_JSON","CjsFsdFormat","CjsFormat","inspect","input","options","CjsFsd32Format","is","CjsFsd64Format","probeSupport","read","error","Error","code","path","readJSON","emit","id","extensions","Object","freeze","mediaTypes","outputs","defineOutputs","payload","default","decoded","json"],"mappings":";;;;;;AAIA,MAAMA,WAAW,GAAG,MAAM;;AAG1B;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,YAAY,SAASC,SAAS,CAC3C;AACI;AACJ;AACA;AACA;AACA;AACA;EACI,OAAOC,OAAOA,CAACC,KAAK,EAAEC,OAAO,GAAG,EAAE,EAClC;IACI,IAAIC,cAAc,CAACC,EAAE,CAACH,KAAK,EAAEC,OAAO,CAAC,EACrC;AACI,MAAA,OAAOC,cAAc,CAACH,OAAO,CAACC,KAAK,EAAEC,OAAO,CAAC;AACjD,IAAA;AAEA,IAAA,OAAOG,cAAc,CAACL,OAAO,CAACC,KAAK,EAAEC,OAAO,CAAC;AACjD,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACA;EACI,OAAOI,YAAYA,CAACL,KAAK,EAAEC,OAAO,GAAG,EAAE,EACvC;IACI,IAAIC,cAAc,CAACC,EAAE,CAACH,KAAK,EAAEC,OAAO,CAAC,EACrC;AACI,MAAA,OAAOC,cAAc,CAACG,YAAY,CAACL,KAAK,EAAEC,OAAO,CAAC;AACtD,IAAA;AAEA,IAAA,OAAOG,cAAc,CAACC,YAAY,CAACL,KAAK,EAAEC,OAAO,CAAC;AACtD,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACA;EACI,OAAOK,IAAIA,CAACN,KAAK,EAAEC,OAAO,GAAG,EAAE,EAC/B;IACI,IAAIC,cAAc,CAACC,EAAE,CAACH,KAAK,EAAEC,OAAO,CAAC,EACrC;AACI,MAAA,OAAOC,cAAc,CAACI,IAAI,CAACN,KAAK,EAAEC,OAAO,CAAC;AAC9C,IAAA;AAEA,IAAA,IAAIG,cAAc,CAACD,EAAE,CAACH,KAAK,CAAC,EAC5B;AACI,MAAA,OAAOI,cAAc,CAACE,IAAI,CAACN,KAAK,EAAEC,OAAO,CAAC;AAC9C,IAAA;AAEA,IAAA,MAAMM,KAAK,GAAG,IAAIC,KAAK,CACnB,mGACJ,CAAC;IAEDD,KAAK,CAACE,IAAI,GAAG,yBAAyB;AACtCF,IAAAA,KAAK,CAACG,IAAI,GAAGT,OAAO,CAACS,IAAI,IAAI,IAAI;AACjC,IAAA,MAAMH,KAAK;AACf,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACA;EACI,OAAOI,QAAQA,CAACX,KAAK,EAAEC,OAAO,GAAG,EAAE,EACnC;AACI,IAAA,OAAO,IAAI,CAACK,IAAI,CAACN,KAAK,EAAE;AAAE,MAAA,GAAGC,OAAO;AAAEW,MAAAA,IAAI,EAAEhB;AAAY,KAAC,CAAC;AAC9D,EAAA;EAEA,OAAOiB,EAAE,GAAG,KAAK;EACjB,OAAOC,UAAU,GAAGC,MAAM,CAACC,MAAM,CAAC,CAAE,YAAY,CAAE,CAAC;EACnD,OAAOC,UAAU,GAAGF,MAAM,CAACC,MAAM,CAAC,CAAE,MAAM,CAAE,CAAC;AAC7C,EAAA,OAAOE,OAAO,GAAGpB,SAAS,CAACqB,aAAa,CAAC;AACrCC,IAAAA,OAAO,EAAE;AAAEC,MAAAA,OAAO,EAAE,IAAI;AAAEC,MAAAA,OAAO,EAAE;KAAM;AACzCC,IAAAA,IAAI,EAAE;AAAED,MAAAA,OAAO,EAAE;AAAK;AAC1B,GAAC,CAAC;AACN;;;;"}
1
+ {"version":3,"file":"CjsFsdFormat.js","sources":["../../../../../src/resource/formats/fsd/CjsFsdFormat.js"],"sourcesContent":["import { CjsFormat } from \"../../format/CjsFormat.js\";\r\nimport { CjsFsd32Format } from \"./32/index.js\";\r\nimport { CjsFsd64Format } from \"./64/index.js\";\r\n\r\nconst OUTPUT_JSON = \"json\";\r\nconst OUTPUT_PAYLOAD = \"payload\";\r\n\r\n/**\r\n * Normal FSD format-pipeline entry point.\r\n *\r\n * Modern cFSD identifies itself through its 32-byte envelope. Legacy FSD is\r\n * headerless and therefore must be identified by the caller/profile through\r\n * `bitWidth: 32` or `variant: \"fsd32\"` until its schema-driven reader exists.\r\n */\r\nexport class CjsFsdFormat extends CjsFormat\r\n{\r\n /**\r\n * Inspect the explicitly selected legacy layout or recognized modern layout.\r\n * @param {*} input Candidate input.\r\n * @param {object} [options] Format profile.\r\n * @returns {object} Variant metadata.\r\n */\r\n static inspect(input, options = {})\r\n {\r\n if (CjsFsd32Format.is(input, options))\r\n {\r\n return CjsFsd32Format.inspect(input, options);\r\n }\r\n\r\n return CjsFsd64Format.inspect(input, options);\r\n }\r\n\r\n /**\r\n * Report support for the selected or recognized FSD variant.\r\n * @param {*|string} input Candidate input.\r\n * @param {object} [options] Format and reader options.\r\n * @returns {object} Plain support report.\r\n */\r\n static probeSupport(input, options = {})\r\n {\r\n if (CjsFsd32Format.is(input, options))\r\n {\r\n return CjsFsd32Format.probeSupport(input, options);\r\n }\r\n\r\n return CjsFsd64Format.probeSupport(input, options);\r\n }\r\n\r\n /**\r\n * Decode the selected or recognized FSD variant.\r\n * @param {*} input Candidate input.\r\n * @param {object} [options] Format and reader options.\r\n * @returns {*} Decoded payload.\r\n */\r\n static read(input, options = {})\r\n {\r\n if (CjsFsd32Format.is(input, options))\r\n {\r\n return CjsFsd32Format.read(input, options);\r\n }\r\n\r\n if (CjsFsd64Format.is(input))\r\n {\r\n return CjsFsd64Format.read(input, options);\r\n }\r\n\r\n const error = new Error(\r\n \"FSD input is neither an identified legacy 32-bit layout nor a valid modern 64-bit cFSD container.\"\r\n );\r\n\r\n error.code = \"CJS_FSD_VARIANT_UNKNOWN\";\r\n error.path = options.path ?? null;\r\n throw error;\r\n }\r\n\r\n /**\r\n * Decode the selected or recognized FSD variant to JSON-compatible values.\r\n * @param {*} input Candidate input.\r\n * @param {object} [options] Format and reader options.\r\n * @returns {*} Decoded JSON-compatible value.\r\n */\r\n static readJSON(input, options = {})\r\n {\r\n return this.read(input, { ...options, emit: OUTPUT_JSON });\r\n }\r\n\r\n static id = \"CjsFsdFormat\";\r\n static extensions = [ \".fsdbinary\" ];\r\n static mediaTypes = [ \"data\" ];\r\n static outputs = CjsFormat.defineOutputs({\r\n payload: { default: true, decoded: true },\r\n json: { decoded: true }\r\n });\r\n}\r\n\r\nexport default CjsFsdFormat;\r\n"],"names":["OUTPUT_JSON","CjsFsdFormat","CjsFormat","inspect","input","options","CjsFsd32Format","is","CjsFsd64Format","probeSupport","read","error","Error","code","path","readJSON","emit","id","extensions","mediaTypes","outputs","defineOutputs","payload","default","decoded","json"],"mappings":";;;;;;AAIA,MAAMA,WAAW,GAAG,MAAM;;AAG1B;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,YAAY,SAASC,SAAS,CAC3C;AACI;AACJ;AACA;AACA;AACA;AACA;EACI,OAAOC,OAAOA,CAACC,KAAK,EAAEC,OAAO,GAAG,EAAE,EAClC;IACI,IAAIC,cAAc,CAACC,EAAE,CAACH,KAAK,EAAEC,OAAO,CAAC,EACrC;AACI,MAAA,OAAOC,cAAc,CAACH,OAAO,CAACC,KAAK,EAAEC,OAAO,CAAC;AACjD,IAAA;AAEA,IAAA,OAAOG,cAAc,CAACL,OAAO,CAACC,KAAK,EAAEC,OAAO,CAAC;AACjD,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACA;EACI,OAAOI,YAAYA,CAACL,KAAK,EAAEC,OAAO,GAAG,EAAE,EACvC;IACI,IAAIC,cAAc,CAACC,EAAE,CAACH,KAAK,EAAEC,OAAO,CAAC,EACrC;AACI,MAAA,OAAOC,cAAc,CAACG,YAAY,CAACL,KAAK,EAAEC,OAAO,CAAC;AACtD,IAAA;AAEA,IAAA,OAAOG,cAAc,CAACC,YAAY,CAACL,KAAK,EAAEC,OAAO,CAAC;AACtD,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACA;EACI,OAAOK,IAAIA,CAACN,KAAK,EAAEC,OAAO,GAAG,EAAE,EAC/B;IACI,IAAIC,cAAc,CAACC,EAAE,CAACH,KAAK,EAAEC,OAAO,CAAC,EACrC;AACI,MAAA,OAAOC,cAAc,CAACI,IAAI,CAACN,KAAK,EAAEC,OAAO,CAAC;AAC9C,IAAA;AAEA,IAAA,IAAIG,cAAc,CAACD,EAAE,CAACH,KAAK,CAAC,EAC5B;AACI,MAAA,OAAOI,cAAc,CAACE,IAAI,CAACN,KAAK,EAAEC,OAAO,CAAC;AAC9C,IAAA;AAEA,IAAA,MAAMM,KAAK,GAAG,IAAIC,KAAK,CACnB,mGACJ,CAAC;IAEDD,KAAK,CAACE,IAAI,GAAG,yBAAyB;AACtCF,IAAAA,KAAK,CAACG,IAAI,GAAGT,OAAO,CAACS,IAAI,IAAI,IAAI;AACjC,IAAA,MAAMH,KAAK;AACf,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACA;EACI,OAAOI,QAAQA,CAACX,KAAK,EAAEC,OAAO,GAAG,EAAE,EACnC;AACI,IAAA,OAAO,IAAI,CAACK,IAAI,CAACN,KAAK,EAAE;AAAE,MAAA,GAAGC,OAAO;AAAEW,MAAAA,IAAI,EAAEhB;AAAY,KAAC,CAAC;AAC9D,EAAA;EAEA,OAAOiB,EAAE,GAAG,cAAc;AAC1B,EAAA,OAAOC,UAAU,GAAG,CAAE,YAAY,CAAE;AACpC,EAAA,OAAOC,UAAU,GAAG,CAAE,MAAM,CAAE;AAC9B,EAAA,OAAOC,OAAO,GAAGlB,SAAS,CAACmB,aAAa,CAAC;AACrCC,IAAAA,OAAO,EAAE;AAAEC,MAAAA,OAAO,EAAE,IAAI;AAAEC,MAAAA,OAAO,EAAE;KAAM;AACzCC,IAAAA,IAAI,EAAE;AAAED,MAAAA,OAAO,EAAE;AAAK;AAC1B,GAAC,CAAC;AACN;;;;"}
@@ -1,6 +1,7 @@
1
1
  import { asUint8Array } from '#utils/bytes';
2
2
  import { CjsFormat } from '../../format/CjsFormat.js';
3
- import { DEFAULT_VALUES, normalizeValues, readWithValues, inspectWithValues, isGIF, OUTPUT_JSON, OUTPUT_RAW, OUTPUT_RGBA, OUTPUT_IMAGE } from './core/helpers.js';
3
+ import { CjsImageFormat } from '../../format/CjsImageFormat.js';
4
+ import { DEFAULT_VALUES, normalizeValues, readWithValues, inspectWithValues, isGIF } from './core/helpers.js';
4
5
  import { toJsonWithByteSummary } from '../../format/jsonPolicies.js';
5
6
 
6
7
  const FORMAT_NAME = "CjsGifFormat";
@@ -9,8 +10,8 @@ const FORMAT_NAME = "CjsGifFormat";
9
10
  * GIF format profile that inspects header and frame metadata and reads GIF
10
11
  * bytes into raw, debug JSON, or LZW-decoded RGBA frame payloads.
11
12
  */
12
- class CjsGifFormat extends CjsFormat {
13
- #values = DEFAULT_VALUES;
13
+ class CjsGifFormat extends CjsImageFormat {
14
+ _values = DEFAULT_VALUES;
14
15
 
15
16
  /** Creates a CjsGifFormat with caller-provided reader configuration. */
16
17
  constructor(options = {}) {
@@ -23,7 +24,7 @@ class CjsGifFormat extends CjsFormat {
23
24
  * GIF format configuration.
24
25
  */
25
26
  SetValues(options = {}) {
26
- this.#values = normalizeValues(this.#values, {
27
+ this._values = normalizeValues(this._values, {
27
28
  inputType: "gif",
28
29
  ...options
29
30
  }, FORMAT_NAME);
@@ -35,7 +36,7 @@ class CjsGifFormat extends CjsFormat {
35
36
  * configuration.
36
37
  */
37
38
  GetValues(options = {}) {
38
- return normalizeValues(this.#values, {
39
+ return normalizeValues(this._values, {
39
40
  inputType: "gif",
40
41
  ...options
41
42
  }, FORMAT_NAME);
@@ -113,15 +114,8 @@ class CjsGifFormat extends CjsFormat {
113
114
  /**
114
115
  * Emit targets for this format (canonical frozen enum).
115
116
  */
116
- static Output = Object.freeze({
117
- IMAGE: OUTPUT_IMAGE,
118
- RGBA: OUTPUT_RGBA,
119
- RAW: OUTPUT_RAW,
120
- JSON: OUTPUT_JSON
121
- });
122
- static OUTPUT_GIF_JSON = "gifJson";
123
- static id = "gif";
124
- static mediaTypes = Object.freeze(["image"]);
117
+ static id = "CjsGifFormat";
118
+ static mediaTypes = ["image"];
125
119
  static outputs = CjsFormat.defineOutputs({
126
120
  image: {
127
121
  decoded: true,
@@ -140,7 +134,22 @@ class CjsGifFormat extends CjsFormat {
140
134
  passthrough: true
141
135
  }
142
136
  });
143
- static extensions = Object.freeze([".gif"]);
137
+ /**
138
+ * Fill a HostBitmap through this format's RGBA8 output, for Carbon's ImageIO
139
+ * registry (`CjsGifFormat.carbon`). See CjsImageFormat.readImageFromRgbaPayload.
140
+ *
141
+ * @param {Uint8Array|ArrayBuffer} input Image bytes.
142
+ * @param {object} _loadParameters Load parameters; a single-mip image skips nothing.
143
+ * @param {object} bitmap Destination HostBitmap.
144
+ * @param {object|null} [metadata] Optional Metadata out.
145
+ * @returns {object} ImageIOResult.
146
+ */
147
+ static readImageNative(input, _loadParameters, bitmap, metadata = null) {
148
+ return this.readImageFromRgbaPayload(this.read(input, {
149
+ emit: "rgba"
150
+ }), bitmap, metadata);
151
+ }
152
+ static extensions = [".gif"];
144
153
  }
145
154
 
146
155
  export { CjsGifFormat };