@carbonenginejs/runtime-resource 0.9.2 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (544) hide show
  1. package/NOTICE +3 -2
  2. package/README.md +47 -6
  3. package/dist/CjsMotherLode.js +88 -88
  4. package/dist/CjsMotherLode.js.map +1 -1
  5. package/dist/CjsResMan.js +717 -228
  6. package/dist/CjsResMan.js.map +1 -1
  7. package/dist/CjsResManFetchProvider.js +94 -0
  8. package/dist/CjsResManFetchProvider.js.map +1 -0
  9. package/dist/{CjsResManQueue.js → CjsResManWorkQueue.js} +112 -25
  10. package/dist/CjsResManWorkQueue.js.map +1 -0
  11. package/dist/format/CjsBlueReader.js +89 -0
  12. package/dist/format/CjsBlueReader.js.map +1 -1
  13. package/dist/format/CjsFormat.js +42 -16
  14. package/dist/format/CjsFormat.js.map +1 -1
  15. package/dist/format/CjsReader.js +4 -0
  16. package/dist/format/CjsReader.js.map +1 -1
  17. package/dist/format/CjsResourceProbe.js +2 -0
  18. package/dist/format/CjsResourceProbe.js.map +1 -1
  19. package/dist/format/effect/effectPermutationGraph.js +257 -0
  20. package/dist/format/effect/effectPermutationGraph.js.map +1 -0
  21. package/dist/format/effect/effectReflectionPackage.js +636 -0
  22. package/dist/format/effect/effectReflectionPackage.js.map +1 -0
  23. package/dist/format/effect/sha256.js +114 -0
  24. package/dist/format/effect/sha256.js.map +1 -0
  25. package/dist/format/payloadContract.js +20 -0
  26. package/dist/format/payloadContract.js.map +1 -1
  27. package/dist/formats/black/CjsBlackFormat.js +15 -1
  28. package/dist/formats/black/CjsBlackFormat.js.map +1 -1
  29. package/dist/formats/black/core/CjsBlackBinaryReader.js +103 -0
  30. package/dist/formats/black/core/CjsBlackBinaryReader.js.map +1 -1
  31. package/dist/formats/black/core/CjsBlackPropertyReaders.js +61 -0
  32. package/dist/formats/black/core/CjsBlackPropertyReaders.js.map +1 -1
  33. package/dist/formats/black/core/CjsBlackReader.js +125 -0
  34. package/dist/formats/black/core/CjsBlackReader.js.map +1 -1
  35. package/dist/formats/black/core/CjsBlackSchemaRegistry.js +103 -0
  36. package/dist/formats/black/core/CjsBlackSchemaRegistry.js.map +1 -1
  37. package/dist/formats/black/core/helpers.js +17 -0
  38. package/dist/formats/black/core/helpers.js.map +1 -1
  39. package/dist/formats/bnk/CjsBnkFormat.js +8 -0
  40. package/dist/formats/bnk/CjsBnkFormat.js.map +1 -1
  41. package/dist/formats/bnk/core/helpers.js +20 -0
  42. package/dist/formats/bnk/core/helpers.js.map +1 -1
  43. package/dist/formats/bnk/core/musicNodes.js +40 -3
  44. package/dist/formats/bnk/core/musicNodes.js.map +1 -1
  45. package/dist/formats/bnk/core/soundbanksInfo.js +2 -0
  46. package/dist/formats/bnk/core/soundbanksInfo.js.map +1 -1
  47. package/dist/formats/cmf/core/binary.js +71 -0
  48. package/dist/formats/cmf/core/binary.js.map +1 -1
  49. package/dist/formats/cmf/core/buffers.js +4 -0
  50. package/dist/formats/cmf/core/buffers.js.map +1 -1
  51. package/dist/formats/cmf/core/helpers.js +31 -0
  52. package/dist/formats/cmf/core/helpers.js.map +1 -1
  53. package/dist/formats/cmf/core/schema.js +10 -0
  54. package/dist/formats/cmf/core/schema.js.map +1 -1
  55. package/dist/formats/cmf/core/shared.js +9 -0
  56. package/dist/formats/cmf/core/shared.js.map +1 -1
  57. package/dist/formats/cmf/core/writer.js +54 -0
  58. package/dist/formats/cmf/core/writer.js.map +1 -1
  59. package/dist/formats/dds/core/bc6h.js +10 -0
  60. package/dist/formats/dds/core/bc6h.js.map +1 -1
  61. package/dist/formats/dds/core/bc7.js +16 -0
  62. package/dist/formats/dds/core/bc7.js.map +1 -1
  63. package/dist/formats/dds/core/helpers.js +47 -0
  64. package/dist/formats/dds/core/helpers.js.map +1 -1
  65. package/dist/formats/dxbc/CjsDxbcFormat.js +142 -0
  66. package/dist/formats/dxbc/CjsDxbcFormat.js.map +1 -0
  67. package/dist/formats/dxbc/core/DxbcReader.js +266 -0
  68. package/dist/formats/dxbc/core/DxbcReader.js.map +1 -0
  69. package/dist/formats/dxbc/core/container.js +169 -0
  70. package/dist/formats/dxbc/core/container.js.map +1 -0
  71. package/dist/formats/dxbc/core/decoder.js +789 -0
  72. package/dist/formats/dxbc/core/decoder.js.map +1 -0
  73. package/dist/formats/dxbc/core/errors.js +19 -0
  74. package/dist/formats/dxbc/core/errors.js.map +1 -0
  75. package/dist/formats/dxbc/core/helpers.js +220 -0
  76. package/dist/formats/dxbc/core/helpers.js.map +1 -0
  77. package/dist/formats/dxbc/core/opcodes.js +45 -0
  78. package/dist/formats/dxbc/core/opcodes.js.map +1 -0
  79. package/dist/formats/dxbc/core/program.js +91 -0
  80. package/dist/formats/dxbc/core/program.js.map +1 -0
  81. package/dist/formats/dxbc/core/signature.js +172 -0
  82. package/dist/formats/dxbc/core/signature.js.map +1 -0
  83. package/dist/formats/dxbc/index.js +2 -0
  84. package/dist/formats/dxbc/index.js.map +1 -0
  85. package/dist/formats/fbx/core/helpers.js +21 -0
  86. package/dist/formats/fbx/core/helpers.js.map +1 -1
  87. package/dist/formats/flac/CjsFlacFormat.js +49 -0
  88. package/dist/formats/flac/CjsFlacFormat.js.map +1 -1
  89. package/dist/formats/flac/core/helpers.js +20 -0
  90. package/dist/formats/flac/core/helpers.js.map +1 -1
  91. package/dist/formats/gif/CjsGifFormat.js +49 -0
  92. package/dist/formats/gif/CjsGifFormat.js.map +1 -1
  93. package/dist/formats/gif/core/helpers.js +20 -0
  94. package/dist/formats/gif/core/helpers.js.map +1 -1
  95. package/dist/formats/gltf/core/helpers.js +15 -0
  96. package/dist/formats/gltf/core/helpers.js.map +1 -1
  97. package/dist/formats/gltf/core/parser.js +13 -0
  98. package/dist/formats/gltf/core/parser.js.map +1 -1
  99. package/dist/formats/gltf/core/targets.js +10 -0
  100. package/dist/formats/gltf/core/targets.js.map +1 -1
  101. package/dist/formats/gr2/core/bitknit2.js +2 -0
  102. package/dist/formats/gr2/core/bitknit2.js.map +1 -1
  103. package/dist/formats/gr2/core/helpers.js +20 -0
  104. package/dist/formats/gr2/core/helpers.js.map +1 -1
  105. package/dist/formats/gr2/core/targets.js +10 -0
  106. package/dist/formats/gr2/core/targets.js.map +1 -1
  107. package/dist/formats/hlsl/CjsHlslFormat.js +254 -0
  108. package/dist/formats/hlsl/CjsHlslFormat.js.map +1 -0
  109. package/dist/formats/hlsl/core/HlslBinaryUtils.js +15 -0
  110. package/dist/formats/hlsl/core/HlslBinaryUtils.js.map +1 -0
  111. package/dist/formats/hlsl/core/HlslEffectReadError.js +19 -0
  112. package/dist/formats/hlsl/core/HlslEffectReadError.js.map +1 -0
  113. package/dist/formats/hlsl/core/HlslEffectStateManager.js +130 -0
  114. package/dist/formats/hlsl/core/HlslEffectStateManager.js.map +1 -0
  115. package/dist/formats/hlsl/core/HlslReader.js +266 -0
  116. package/dist/formats/hlsl/core/HlslReader.js.map +1 -0
  117. package/dist/formats/hlsl/core/HlslRenderStateSetup.js +37 -0
  118. package/dist/formats/hlsl/core/HlslRenderStateSetup.js.map +1 -0
  119. package/dist/formats/hlsl/core/HlslResourceSetDescription.js +94 -0
  120. package/dist/formats/hlsl/core/HlslResourceSetDescription.js.map +1 -0
  121. package/dist/formats/hlsl/core/HlslShaderBytecode.js +44 -0
  122. package/dist/formats/hlsl/core/HlslShaderBytecode.js.map +1 -0
  123. package/dist/formats/hlsl/core/analysis.js +51 -0
  124. package/dist/formats/hlsl/core/analysis.js.map +1 -0
  125. package/dist/formats/hlsl/core/helpers.js +270 -0
  126. package/dist/formats/hlsl/core/helpers.js.map +1 -0
  127. package/dist/formats/hlsl/core/json.js +284 -0
  128. package/dist/formats/hlsl/core/json.js.map +1 -0
  129. package/dist/formats/hlsl/core/metadata.js +327 -0
  130. package/dist/formats/hlsl/core/metadata.js.map +1 -0
  131. package/dist/formats/hlsl/core/portableReflection.js +848 -0
  132. package/dist/formats/hlsl/core/portableReflection.js.map +1 -0
  133. package/dist/formats/hlsl/core/render-states.js +280 -0
  134. package/dist/formats/hlsl/core/render-states.js.map +1 -0
  135. package/dist/formats/hlsl/core/tr2/HlslRenderContextEnum.js +43 -0
  136. package/dist/formats/hlsl/core/tr2/HlslRenderContextEnum.js.map +1 -0
  137. package/dist/formats/hlsl/core/tr2/resources/HlslEffectRes.js +294 -0
  138. package/dist/formats/hlsl/core/tr2/resources/HlslEffectRes.js.map +1 -0
  139. package/dist/formats/hlsl/core/tr2/resources/HlslShaderPermutation.js +33 -0
  140. package/dist/formats/hlsl/core/tr2/resources/HlslShaderPermutation.js.map +1 -0
  141. package/dist/formats/hlsl/core/tr2/shader/HlslEffectBindingManifest.js +416 -0
  142. package/dist/formats/hlsl/core/tr2/shader/HlslEffectBindingManifest.js.map +1 -0
  143. package/dist/formats/hlsl/core/tr2/shader/HlslEffectConstant.js +40 -0
  144. package/dist/formats/hlsl/core/tr2/shader/HlslEffectConstant.js.map +1 -0
  145. package/dist/formats/hlsl/core/tr2/shader/HlslEffectDescription.js +742 -0
  146. package/dist/formats/hlsl/core/tr2/shader/HlslEffectDescription.js.map +1 -0
  147. package/dist/formats/hlsl/core/tr2/shader/HlslEffectLibrary.js +52 -0
  148. package/dist/formats/hlsl/core/tr2/shader/HlslEffectLibrary.js.map +1 -0
  149. package/dist/formats/hlsl/core/tr2/shader/HlslEffectParameterAnnotation.js +38 -0
  150. package/dist/formats/hlsl/core/tr2/shader/HlslEffectParameterAnnotation.js.map +1 -0
  151. package/dist/formats/hlsl/core/tr2/shader/HlslEffectResource.js +50 -0
  152. package/dist/formats/hlsl/core/tr2/shader/HlslEffectResource.js.map +1 -0
  153. package/dist/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js +86 -0
  154. package/dist/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js.map +1 -0
  155. package/dist/formats/hlsl/core/tr2/shader/HlslEffectTechnique.js +31 -0
  156. package/dist/formats/hlsl/core/tr2/shader/HlslEffectTechnique.js.map +1 -0
  157. package/dist/formats/hlsl/core/tr2/shader/HlslPass.js +42 -0
  158. package/dist/formats/hlsl/core/tr2/shader/HlslPass.js.map +1 -0
  159. package/dist/formats/hlsl/core/tr2/shader/HlslSamplerDescription.js +55 -0
  160. package/dist/formats/hlsl/core/tr2/shader/HlslSamplerDescription.js.map +1 -0
  161. package/dist/formats/hlsl/core/tr2/shader/HlslSamplerSetup.js +29 -0
  162. package/dist/formats/hlsl/core/tr2/shader/HlslSamplerSetup.js.map +1 -0
  163. package/dist/formats/hlsl/core/tr2/shader/HlslShader.js +220 -0
  164. package/dist/formats/hlsl/core/tr2/shader/HlslShader.js.map +1 -0
  165. package/dist/formats/hlsl/core/tr2/shader/HlslShaderOption.js +30 -0
  166. package/dist/formats/hlsl/core/tr2/shader/HlslShaderOption.js.map +1 -0
  167. package/dist/formats/hlsl/index.js +2 -0
  168. package/dist/formats/hlsl/index.js.map +1 -0
  169. package/dist/formats/hlsl/portable.js +2 -0
  170. package/dist/formats/hlsl/portable.js.map +1 -0
  171. package/dist/formats/index.js +4 -0
  172. package/dist/formats/index.js.map +1 -1
  173. package/dist/formats/jpeg/core/helpers.js +52 -0
  174. package/dist/formats/jpeg/core/helpers.js.map +1 -1
  175. package/dist/formats/jpeg/core/jpeg.js +93 -0
  176. package/dist/formats/jpeg/core/jpeg.js.map +1 -1
  177. package/dist/formats/mp3/core/helpers.js +37 -0
  178. package/dist/formats/mp3/core/helpers.js.map +1 -1
  179. package/dist/formats/mp4/core/helpers.js +35 -0
  180. package/dist/formats/mp4/core/helpers.js.map +1 -1
  181. package/dist/formats/ogg/CjsOggFormat.js +49 -0
  182. package/dist/formats/ogg/CjsOggFormat.js.map +1 -1
  183. package/dist/formats/ogg/core/helpers.js +23 -0
  184. package/dist/formats/ogg/core/helpers.js.map +1 -1
  185. package/dist/formats/ogg/core/vorbis.js +13 -0
  186. package/dist/formats/ogg/core/vorbis.js.map +1 -1
  187. package/dist/formats/png/core/helpers.js +52 -0
  188. package/dist/formats/png/core/helpers.js.map +1 -1
  189. package/dist/formats/red/CjsRedFormat.js +2 -0
  190. package/dist/formats/red/CjsRedFormat.js.map +1 -1
  191. package/dist/formats/red/core/CjsRedReader.js +52 -0
  192. package/dist/formats/red/core/CjsRedReader.js.map +1 -1
  193. package/dist/formats/red/core/helpers.js +19 -0
  194. package/dist/formats/red/core/helpers.js.map +1 -1
  195. package/dist/formats/stl/core/stl.js +8 -0
  196. package/dist/formats/stl/core/stl.js.map +1 -1
  197. package/dist/formats/stl/core/targets.js +10 -0
  198. package/dist/formats/stl/core/targets.js.map +1 -1
  199. package/dist/formats/tga/core/helpers.js +47 -0
  200. package/dist/formats/tga/core/helpers.js.map +1 -1
  201. package/dist/formats/wav/core/helpers.js +37 -0
  202. package/dist/formats/wav/core/helpers.js.map +1 -1
  203. package/dist/formats/webgl/CjsWebglFormat.js +221 -0
  204. package/dist/formats/webgl/CjsWebglFormat.js.map +1 -0
  205. package/dist/formats/webgl/core/cewg/CewgPackage.js +339 -0
  206. package/dist/formats/webgl/core/cewg/CewgPackage.js.map +1 -0
  207. package/dist/formats/webgl/core/cewg/CewgPackageBuilder.js +104 -0
  208. package/dist/formats/webgl/core/cewg/CewgPackageBuilder.js.map +1 -0
  209. package/dist/formats/webgl/core/cewg/binary.js +101 -0
  210. package/dist/formats/webgl/core/cewg/binary.js.map +1 -0
  211. package/dist/formats/webgl/core/cewgCompleteness.js +81 -0
  212. package/dist/formats/webgl/core/cewgCompleteness.js.map +1 -0
  213. package/dist/formats/webgl/core/effectPackage.js +789 -0
  214. package/dist/formats/webgl/core/effectPackage.js.map +1 -0
  215. package/dist/formats/webgl/core/effectPackageValidation.js +331 -0
  216. package/dist/formats/webgl/core/effectPackageValidation.js.map +1 -0
  217. package/dist/formats/webgl/core/errors.js +27 -0
  218. package/dist/formats/webgl/core/errors.js.map +1 -0
  219. package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js +2678 -0
  220. package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -0
  221. package/dist/formats/webgl/core/glsl/DxbcGlslHelpers.js +89 -0
  222. package/dist/formats/webgl/core/glsl/DxbcGlslHelpers.js.map +1 -0
  223. package/dist/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js +428 -0
  224. package/dist/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js.map +1 -0
  225. package/dist/formats/webgl/core/helpers.js +306 -0
  226. package/dist/formats/webgl/core/helpers.js.map +1 -0
  227. package/dist/formats/webgl/index.js +2 -0
  228. package/dist/formats/webgl/index.js.map +1 -0
  229. package/dist/formats/webgpu/CjsWebgpuFormat.js +376 -0
  230. package/dist/formats/webgpu/CjsWebgpuFormat.js.map +1 -0
  231. package/dist/formats/webgpu/core/cewgpu/CewgpuPackage.js +415 -0
  232. package/dist/formats/webgpu/core/cewgpu/CewgpuPackage.js.map +1 -0
  233. package/dist/formats/webgpu/core/cewgpu/CewgpuPackageBuilder.js +100 -0
  234. package/dist/formats/webgpu/core/cewgpu/CewgpuPackageBuilder.js.map +1 -0
  235. package/dist/formats/webgpu/core/cewgpu/binary.js +93 -0
  236. package/dist/formats/webgpu/core/cewgpu/binary.js.map +1 -0
  237. package/dist/formats/webgpu/core/cewgpu/tags.js +17 -0
  238. package/dist/formats/webgpu/core/cewgpu/tags.js.map +1 -0
  239. package/dist/formats/webgpu/core/effectAnalysis.js +82 -0
  240. package/dist/formats/webgpu/core/effectAnalysis.js.map +1 -0
  241. package/dist/formats/webgpu/core/effectBackendBodySet.js +305 -0
  242. package/dist/formats/webgpu/core/effectBackendBodySet.js.map +1 -0
  243. package/dist/formats/webgpu/core/effectPackageValidation.js +1078 -0
  244. package/dist/formats/webgpu/core/effectPackageValidation.js.map +1 -0
  245. package/dist/formats/webgpu/core/errors.js +20 -0
  246. package/dist/formats/webgpu/core/errors.js.map +1 -0
  247. package/dist/formats/webgpu/core/helpers.js +448 -0
  248. package/dist/formats/webgpu/core/helpers.js.map +1 -0
  249. package/dist/formats/webgpu/core/ir/analyzeRegisterValues.js +223 -0
  250. package/dist/formats/webgpu/core/ir/analyzeRegisterValues.js.map +1 -0
  251. package/dist/formats/webgpu/core/ir/buildControlFlow.js +220 -0
  252. package/dist/formats/webgpu/core/ir/buildControlFlow.js.map +1 -0
  253. package/dist/formats/webgpu/core/ir/indexableTemps.js +137 -0
  254. package/dist/formats/webgpu/core/ir/indexableTemps.js.map +1 -0
  255. package/dist/formats/webgpu/core/ir/inferValueTypes.js +454 -0
  256. package/dist/formats/webgpu/core/ir/inferValueTypes.js.map +1 -0
  257. package/dist/formats/webgpu/core/ir/lowerDxbcToIr.js +494 -0
  258. package/dist/formats/webgpu/core/ir/lowerDxbcToIr.js.map +1 -0
  259. package/dist/formats/webgpu/core/ir/resolveRegisterFlow.js +177 -0
  260. package/dist/formats/webgpu/core/ir/resolveRegisterFlow.js.map +1 -0
  261. package/dist/formats/webgpu/core/ir/sourceLanes.js +61 -0
  262. package/dist/formats/webgpu/core/ir/sourceLanes.js.map +1 -0
  263. package/dist/formats/webgpu/core/packageEffect.js +300 -0
  264. package/dist/formats/webgpu/core/packageEffect.js.map +1 -0
  265. package/dist/formats/webgpu/core/packageEffectSelection.js +164 -0
  266. package/dist/formats/webgpu/core/packageEffectSelection.js.map +1 -0
  267. package/dist/formats/webgpu/core/packageMetadata.js +8 -0
  268. package/dist/formats/webgpu/core/packageMetadata.js.map +1 -0
  269. package/dist/formats/webgpu/core/schema.js +4 -0
  270. package/dist/formats/webgpu/core/schema.js.map +1 -0
  271. package/dist/formats/webgpu/core/wgsl/buildResourceTransformPlan.js +275 -0
  272. package/dist/formats/webgpu/core/wgsl/buildResourceTransformPlan.js.map +1 -0
  273. package/dist/formats/webgpu/core/wgsl/buildWgslBindingPlan.js +182 -0
  274. package/dist/formats/webgpu/core/wgsl/buildWgslBindingPlan.js.map +1 -0
  275. package/dist/formats/webgpu/core/wgsl/buildWgslSet.js +324 -0
  276. package/dist/formats/webgpu/core/wgsl/buildWgslSet.js.map +1 -0
  277. package/dist/formats/webgpu/core/wgsl/emitWgsl.js +356 -0
  278. package/dist/formats/webgpu/core/wgsl/emitWgsl.js.map +1 -0
  279. package/dist/formats/webgpu/core/wgsl/hoistEscapingValues.js +77 -0
  280. package/dist/formats/webgpu/core/wgsl/hoistEscapingValues.js.map +1 -0
  281. package/dist/formats/webgpu/core/wgsl/lowerBindingLayout.js +451 -0
  282. package/dist/formats/webgpu/core/wgsl/lowerBindingLayout.js.map +1 -0
  283. package/dist/formats/webgpu/core/wgsl/lowerComputeProgram.js +754 -0
  284. package/dist/formats/webgpu/core/wgsl/lowerComputeProgram.js.map +1 -0
  285. package/dist/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js +457 -0
  286. package/dist/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js.map +1 -0
  287. package/dist/formats/webgpu/core/wgsl/lowerFragmentProgram.js +1572 -0
  288. package/dist/formats/webgpu/core/wgsl/lowerFragmentProgram.js.map +1 -0
  289. package/dist/formats/webgpu/core/wgsl/lowerMergeHistogramsComputeProgram.js +659 -0
  290. package/dist/formats/webgpu/core/wgsl/lowerMergeHistogramsComputeProgram.js.map +1 -0
  291. package/dist/formats/webgpu/core/wgsl/lowerParticleClearComputePrograms.js +734 -0
  292. package/dist/formats/webgpu/core/wgsl/lowerParticleClearComputePrograms.js.map +1 -0
  293. package/dist/formats/webgpu/core/wgsl/lowerParticleEmitComputeProgram.js +583 -0
  294. package/dist/formats/webgpu/core/wgsl/lowerParticleEmitComputeProgram.js.map +1 -0
  295. package/dist/formats/webgpu/core/wgsl/lowerSkinVerticesComputeProgram.js +621 -0
  296. package/dist/formats/webgpu/core/wgsl/lowerSkinVerticesComputeProgram.js.map +1 -0
  297. package/dist/formats/webgpu/core/wgsl/lowerSortComputeProgram.js +824 -0
  298. package/dist/formats/webgpu/core/wgsl/lowerSortComputeProgram.js.map +1 -0
  299. package/dist/formats/webgpu/core/wgsl/lowerSortInnerComputeProgram.js +697 -0
  300. package/dist/formats/webgpu/core/wgsl/lowerSortInnerComputeProgram.js.map +1 -0
  301. package/dist/formats/webgpu/core/wgsl/lowerSortStepComputeProgram.js +559 -0
  302. package/dist/formats/webgpu/core/wgsl/lowerSortStepComputeProgram.js.map +1 -0
  303. package/dist/formats/webgpu/core/wgsl/lowerVertexProgram.js +1328 -0
  304. package/dist/formats/webgpu/core/wgsl/lowerVertexProgram.js.map +1 -0
  305. package/dist/formats/webgpu/core/wgsl/particleEmitSemanticDigest.js +110 -0
  306. package/dist/formats/webgpu/core/wgsl/particleEmitSemanticDigest.js.map +1 -0
  307. package/dist/formats/webgpu/core/wgsl/precisionControls.js +55 -0
  308. package/dist/formats/webgpu/core/wgsl/precisionControls.js.map +1 -0
  309. package/dist/formats/webgpu/core/wgsl/selectionPlans.js +758 -0
  310. package/dist/formats/webgpu/core/wgsl/selectionPlans.js.map +1 -0
  311. package/dist/formats/webgpu/core/wgsl/uniformity.js +78 -0
  312. package/dist/formats/webgpu/core/wgsl/uniformity.js.map +1 -0
  313. package/dist/formats/webgpu/core/wgsl/validateExactComputeIr.js +196 -0
  314. package/dist/formats/webgpu/core/wgsl/validateExactComputeIr.js.map +1 -0
  315. package/dist/formats/webgpu/core/wgsl/validateHandleOperand.js +37 -0
  316. package/dist/formats/webgpu/core/wgsl/validateHandleOperand.js.map +1 -0
  317. package/dist/formats/webgpu/index.js +2 -0
  318. package/dist/formats/webgpu/index.js.map +1 -0
  319. package/dist/formats/webm/core/helpers.js +35 -0
  320. package/dist/formats/webm/core/helpers.js.map +1 -1
  321. package/dist/formats/webp/CjsWebpFormat.js +49 -0
  322. package/dist/formats/webp/CjsWebpFormat.js.map +1 -1
  323. package/dist/formats/webp/core/helpers.js +23 -0
  324. package/dist/formats/webp/core/helpers.js.map +1 -1
  325. package/dist/formats/wem/CjsWemFormat.js +8 -0
  326. package/dist/formats/wem/CjsWemFormat.js.map +1 -1
  327. package/dist/formats/wem/core/bitStream.js +2 -0
  328. package/dist/formats/wem/core/bitStream.js.map +1 -1
  329. package/dist/formats/wem/core/helpers.js +20 -0
  330. package/dist/formats/wem/core/helpers.js.map +1 -1
  331. package/dist/formats/yaml/CjsYamlFormat.js +45 -0
  332. package/dist/formats/yaml/CjsYamlFormat.js.map +1 -1
  333. package/dist/formats/yaml/core/CjsYamlReader.js +91 -0
  334. package/dist/formats/yaml/core/CjsYamlReader.js.map +1 -1
  335. package/dist/formats/yaml/core/helpers.js +10 -0
  336. package/dist/formats/yaml/core/helpers.js.map +1 -1
  337. package/dist/index.js +56 -43
  338. package/dist/index.js.map +1 -1
  339. package/dist/{CjsResource.js → resource/CjsResource.js} +232 -17
  340. package/dist/resource/CjsResource.js.map +1 -0
  341. package/dist/{resources → resource}/Tr2LightProfileRes.js +4 -3
  342. package/dist/resource/Tr2LightProfileRes.js.map +1 -0
  343. package/dist/{resources → resource/audio}/AudioGeometryResData.js +1 -1
  344. package/dist/resource/audio/AudioGeometryResData.js.map +1 -0
  345. package/dist/resource/audio/CjsAudioBufferRes.js +86 -0
  346. package/dist/resource/audio/CjsAudioBufferRes.js.map +1 -0
  347. package/dist/resource/audio/CjsAudioRes.js +213 -0
  348. package/dist/resource/audio/CjsAudioRes.js.map +1 -0
  349. package/dist/resource/audio/index.js +4 -0
  350. package/dist/resource/audio/index.js.map +1 -0
  351. package/dist/{resources → resource/geometry}/MeshDecalData.js +1 -1
  352. package/dist/resource/geometry/MeshDecalData.js.map +1 -0
  353. package/dist/{resources → resource/geometry}/MeshDecalLodData.js +1 -1
  354. package/dist/resource/geometry/MeshDecalLodData.js.map +1 -0
  355. package/dist/resource/geometry/TriGeometryRes.js +656 -0
  356. package/dist/resource/geometry/TriGeometryRes.js.map +1 -0
  357. package/dist/{resources → resource/geometry}/TriGeometryResAreaData.js +1 -1
  358. package/dist/resource/geometry/TriGeometryResAreaData.js.map +1 -0
  359. package/dist/{resources → resource/geometry}/TriGeometryResJointData.js +1 -1
  360. package/dist/resource/geometry/TriGeometryResJointData.js.map +1 -0
  361. package/dist/{resources → resource/geometry}/TriGeometryResLodData.js +1 -1
  362. package/dist/resource/geometry/TriGeometryResLodData.js.map +1 -0
  363. package/dist/{resources → resource/geometry}/TriGeometryResMeshData.js +1 -1
  364. package/dist/resource/geometry/TriGeometryResMeshData.js.map +1 -0
  365. package/dist/{resources → resource/geometry}/TriGeometryResSkeletonData.js +1 -1
  366. package/dist/resource/geometry/TriGeometryResSkeletonData.js.map +1 -0
  367. package/dist/{resources → resource/geometry}/TriJointBinding.js +1 -1
  368. package/dist/resource/geometry/TriJointBinding.js.map +1 -0
  369. package/dist/{resources → resource/geometry}/TriMorphTargetGeometryConstants.js +1 -1
  370. package/dist/resource/geometry/TriMorphTargetGeometryConstants.js.map +1 -0
  371. package/dist/{resources → resource/geometry}/TriRtGeometryConstants.js +1 -1
  372. package/dist/resource/geometry/TriRtGeometryConstants.js.map +1 -0
  373. package/dist/{resources → resource/geometry/granny}/GStateBindingCallbackData.js +1 -1
  374. package/dist/resource/geometry/granny/GStateBindingCallbackData.js.map +1 -0
  375. package/dist/{resources → resource/geometry/granny}/Tr2GrannyIntersectionResult.js +1 -1
  376. package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js.map +1 -0
  377. package/dist/{resources → resource/geometry/granny}/Tr2GrannyStateRes.js +6 -5
  378. package/dist/resource/geometry/granny/Tr2GrannyStateRes.js.map +1 -0
  379. package/dist/{resources → resource/geometry/granny}/TriGrannyRes.js +6 -5
  380. package/dist/resource/geometry/granny/TriGrannyRes.js.map +1 -0
  381. package/dist/{resources → resource/geometry/granny}/enums.js +1 -9
  382. package/dist/resource/geometry/granny/enums.js.map +1 -0
  383. package/dist/resource/geometry/granny/index.js +6 -0
  384. package/dist/resource/geometry/granny/index.js.map +1 -0
  385. package/dist/resource/geometry/index.js +17 -0
  386. package/dist/resource/geometry/index.js.map +1 -0
  387. package/dist/resource/index.js +52 -0
  388. package/dist/resource/index.js.map +1 -0
  389. package/dist/resource/resourceBoundary.js +64 -0
  390. package/dist/resource/resourceBoundary.js.map +1 -0
  391. package/dist/resource/shader/Tr2EffectRes.js +429 -0
  392. package/dist/resource/shader/Tr2EffectRes.js.map +1 -0
  393. package/dist/resource/shader/Tr2MaterialArea.js +34 -0
  394. package/dist/resource/shader/Tr2MaterialArea.js.map +1 -0
  395. package/dist/resource/shader/Tr2MaterialMesh.js +30 -0
  396. package/dist/resource/shader/Tr2MaterialMesh.js.map +1 -0
  397. package/dist/resource/shader/Tr2MaterialRes.js +35 -0
  398. package/dist/resource/shader/Tr2MaterialRes.js.map +1 -0
  399. package/dist/resource/shader/Tr2Shader.js +256 -0
  400. package/dist/resource/shader/Tr2Shader.js.map +1 -0
  401. package/dist/resource/shader/Tr2ShaderPermutation.js +47 -0
  402. package/dist/resource/shader/Tr2ShaderPermutation.js.map +1 -0
  403. package/dist/resource/shader/index.js +17 -0
  404. package/dist/resource/shader/index.js.map +1 -0
  405. package/dist/resource/shader/portable.js +33 -0
  406. package/dist/resource/shader/portable.js.map +1 -0
  407. package/dist/resource/shader/reflection/Tr2EffectConstant.js +135 -0
  408. package/dist/resource/shader/reflection/Tr2EffectConstant.js.map +1 -0
  409. package/dist/resource/shader/reflection/Tr2EffectDefine.js +28 -0
  410. package/dist/resource/shader/reflection/Tr2EffectDefine.js.map +1 -0
  411. package/dist/resource/shader/reflection/Tr2EffectDescription.js +107 -0
  412. package/dist/resource/shader/reflection/Tr2EffectDescription.js.map +1 -0
  413. package/dist/resource/shader/reflection/Tr2EffectLibrary.js +145 -0
  414. package/dist/resource/shader/reflection/Tr2EffectLibrary.js.map +1 -0
  415. package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +103 -0
  416. package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js.map +1 -0
  417. package/dist/resource/shader/reflection/Tr2EffectResource.js +84 -0
  418. package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -0
  419. package/dist/resource/shader/reflection/Tr2EffectStageInput.js +239 -0
  420. package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -0
  421. package/dist/resource/shader/reflection/Tr2EffectTechnique.js +66 -0
  422. package/dist/resource/shader/reflection/Tr2EffectTechnique.js.map +1 -0
  423. package/dist/resource/shader/reflection/Tr2Pass.js +109 -0
  424. package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -0
  425. package/dist/resource/shader/sampler/Tr2SamplerSetup.js +75 -0
  426. package/dist/resource/shader/sampler/Tr2SamplerSetup.js.map +1 -0
  427. package/dist/{texture → resource/texture}/CjsTextureArrayRes.js +83 -6
  428. package/dist/resource/texture/CjsTextureArrayRes.js.map +1 -0
  429. package/dist/{texture/CjsTextureParameterProxy.js → resource/texture/CjsTextureArrayResParameterProxy.js} +56 -10
  430. package/dist/resource/texture/CjsTextureArrayResParameterProxy.js.map +1 -0
  431. package/dist/{resources → resource/texture}/Tr2ImageRes.js +6 -4
  432. package/dist/resource/texture/Tr2ImageRes.js.map +1 -0
  433. package/dist/{resources → resource/texture}/Tr2TextureLodManager.js +3 -1
  434. package/dist/resource/texture/Tr2TextureLodManager.js.map +1 -0
  435. package/dist/{resources → resource/texture}/Tr2TextureLodUpdateRequest.js +1 -1
  436. package/dist/resource/texture/Tr2TextureLodUpdateRequest.js.map +1 -0
  437. package/dist/{resources → resource/texture}/Tr2TexturePackChannel.js +1 -1
  438. package/dist/resource/texture/Tr2TexturePackChannel.js.map +1 -0
  439. package/dist/{resources → resource/texture}/Tr2TexturePipeline.js +6 -4
  440. package/dist/resource/texture/Tr2TexturePipeline.js.map +1 -0
  441. package/dist/{resources → resource/texture}/Tr2TexturePipelineParams.js +1 -1
  442. package/dist/resource/texture/Tr2TexturePipelineParams.js.map +1 -0
  443. package/dist/{resources → resource/texture}/Tr2TexturePipelineStepCompress.js +1 -1
  444. package/dist/resource/texture/Tr2TexturePipelineStepCompress.js.map +1 -0
  445. package/dist/{resources → resource/texture}/Tr2TexturePipelineStepGenerateMips.js +1 -1
  446. package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js.map +1 -0
  447. package/dist/{resources → resource/texture}/Tr2TexturePipelineStepLimitSize.js +1 -1
  448. package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js.map +1 -0
  449. package/dist/{resources → resource/texture}/Tr2TexturePipelineStepLoad.js +1 -1
  450. package/dist/resource/texture/Tr2TexturePipelineStepLoad.js.map +1 -0
  451. package/dist/{resources → resource/texture}/Tr2TexturePipelineStepPack.js +1 -1
  452. package/dist/resource/texture/Tr2TexturePipelineStepPack.js.map +1 -0
  453. package/dist/{resources → resource/texture}/TriTextureRes.js +42 -26
  454. package/dist/resource/texture/TriTextureRes.js.map +1 -0
  455. package/dist/resource/texture/index.js +15 -0
  456. package/dist/resource/texture/index.js.map +1 -0
  457. package/dist/{resources → resource/texture}/texturePipelineBehavior.js +59 -59
  458. package/dist/resource/texture/texturePipelineBehavior.js.map +1 -0
  459. package/dist/worker/CjsResManMainThreadLoader.js +87 -0
  460. package/dist/worker/CjsResManMainThreadLoader.js.map +1 -0
  461. package/dist/worker/CjsResManWorker.js +217 -0
  462. package/dist/worker/CjsResManWorker.js.map +1 -0
  463. package/dist/worker/CjsResManWorkerLoader.js +434 -0
  464. package/dist/worker/CjsResManWorkerLoader.js.map +1 -0
  465. package/dist/worker/protocol.js +12 -0
  466. package/dist/worker/protocol.js.map +1 -0
  467. package/docs/README.md +16 -3
  468. package/docs/architecture.md +39 -16
  469. package/docs/concepts/resource-lifecycle.md +2 -1
  470. package/docs/formats/README.md +8 -0
  471. package/docs/formats/provenance.md +11 -3
  472. package/docs/reference/classes/README.md +6 -4
  473. package/docs/reference/classes/audio.md +30 -0
  474. package/docs/reference/classes/core.md +31 -11
  475. package/docs/reference/classes/formats.md +440 -0
  476. package/docs/reference/classes/resources.md +151 -41
  477. package/docs/reference/classes/texture.md +7 -7
  478. package/docs/reference/motherlode-cache.md +17 -0
  479. package/docs/reference/queues.md +9 -1
  480. package/docs/reference/workers.md +135 -0
  481. package/docs/roadmap.md +27 -1
  482. package/format-notices/dxbc/LICENSE +21 -0
  483. package/format-notices/dxbc/NOTICE +20 -0
  484. package/format-notices/hlsl/LICENSE +21 -0
  485. package/format-notices/hlsl/NOTICE +25 -0
  486. package/format-notices/webgl/LICENSE +21 -0
  487. package/format-notices/webgl/NOTICE +35 -0
  488. package/format-notices/webgpu/LICENSE +21 -0
  489. package/format-notices/webgpu/NOTICE +31 -0
  490. package/package.json +13 -1
  491. package/dist/CjsResManQueue.js.map +0 -1
  492. package/dist/CjsResource.js.map +0 -1
  493. package/dist/CjsResourceSource.js +0 -68
  494. package/dist/CjsResourceSource.js.map +0 -1
  495. package/dist/resourcePath.js +0 -18
  496. package/dist/resourcePath.js.map +0 -1
  497. package/dist/resourceStates.js +0 -9
  498. package/dist/resourceStates.js.map +0 -1
  499. package/dist/resources/AudioGeometryResData.js.map +0 -1
  500. package/dist/resources/GStateBindingCallbackData.js.map +0 -1
  501. package/dist/resources/MeshDecalData.js.map +0 -1
  502. package/dist/resources/MeshDecalLodData.js.map +0 -1
  503. package/dist/resources/Tr2EffectRes.js +0 -71
  504. package/dist/resources/Tr2EffectRes.js.map +0 -1
  505. package/dist/resources/Tr2GrannyIntersectionResult.js.map +0 -1
  506. package/dist/resources/Tr2GrannyStateRes.js.map +0 -1
  507. package/dist/resources/Tr2ImageRes.js.map +0 -1
  508. package/dist/resources/Tr2LightProfileRes.js.map +0 -1
  509. package/dist/resources/Tr2MaterialArea.js +0 -34
  510. package/dist/resources/Tr2MaterialArea.js.map +0 -1
  511. package/dist/resources/Tr2MaterialMesh.js +0 -31
  512. package/dist/resources/Tr2MaterialMesh.js.map +0 -1
  513. package/dist/resources/Tr2MaterialRes.js +0 -34
  514. package/dist/resources/Tr2MaterialRes.js.map +0 -1
  515. package/dist/resources/Tr2ShaderPermutation.js +0 -43
  516. package/dist/resources/Tr2ShaderPermutation.js.map +0 -1
  517. package/dist/resources/Tr2TextureLodManager.js.map +0 -1
  518. package/dist/resources/Tr2TextureLodUpdateRequest.js.map +0 -1
  519. package/dist/resources/Tr2TexturePackChannel.js.map +0 -1
  520. package/dist/resources/Tr2TexturePipeline.js.map +0 -1
  521. package/dist/resources/Tr2TexturePipelineParams.js.map +0 -1
  522. package/dist/resources/Tr2TexturePipelineStepCompress.js.map +0 -1
  523. package/dist/resources/Tr2TexturePipelineStepGenerateMips.js.map +0 -1
  524. package/dist/resources/Tr2TexturePipelineStepLimitSize.js.map +0 -1
  525. package/dist/resources/Tr2TexturePipelineStepLoad.js.map +0 -1
  526. package/dist/resources/Tr2TexturePipelineStepPack.js.map +0 -1
  527. package/dist/resources/TriGeometryRes.js +0 -239
  528. package/dist/resources/TriGeometryRes.js.map +0 -1
  529. package/dist/resources/TriGeometryResAreaData.js.map +0 -1
  530. package/dist/resources/TriGeometryResJointData.js.map +0 -1
  531. package/dist/resources/TriGeometryResLodData.js.map +0 -1
  532. package/dist/resources/TriGeometryResMeshData.js.map +0 -1
  533. package/dist/resources/TriGeometryResSkeletonData.js.map +0 -1
  534. package/dist/resources/TriGrannyRes.js.map +0 -1
  535. package/dist/resources/TriJointBinding.js.map +0 -1
  536. package/dist/resources/TriMorphTargetGeometryConstants.js.map +0 -1
  537. package/dist/resources/TriRtGeometryConstants.js.map +0 -1
  538. package/dist/resources/TriTextureRes.js.map +0 -1
  539. package/dist/resources/enums.js.map +0 -1
  540. package/dist/resources/resourceBoundary.js +0 -47
  541. package/dist/resources/resourceBoundary.js.map +0 -1
  542. package/dist/resources/texturePipelineBehavior.js.map +0 -1
  543. package/dist/texture/CjsTextureArrayRes.js.map +0 -1
  544. package/dist/texture/CjsTextureParameterProxy.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effectReflectionPackage.js","sources":["../../../../src/format/effect/effectReflectionPackage.js"],"sourcesContent":["import {\n buildEffectBodyReflection,\n EFFECT_BODY_REFLECTION_FORMAT,\n EFFECT_BODY_REFLECTION_VERSION,\n enumerateUniqueEffectBodies,\n validateEffectBodyReflection\n} from \"../../formats/hlsl/portable.js\";\n\nimport { sha256Bytes, sha256Utf8 } from \"./sha256.js\";\n\nexport const EFFECT_REFLECTION_CHUNK = \"RFLX\";\nexport const EFFECT_REFLECTION_BLOB_CHUNK = \"RBLB\";\nexport const EFFECT_REFLECTION_FORMAT = \"CJS_EFFECT_REFLECTION\";\nexport const EFFECT_REFLECTION_VERSION = 2;\n\nconst SHA256 = /^[0-9a-f]{64}$/u;\nconst SELECTED_EFFECT_REFLECTION_VERSION = 1;\n\n/**\n * Build selected-body source reflection plus its deduplicated binary store.\n *\n * @param {object} effectRes Loaded format-hlsl Tr2EffectRes.\n * @param {number} permutationIndex Exact selected permutation-table index.\n * @param {object} permutationGraph Complete source PGRF document.\n * @param {object} options Source identity and diagnostic label.\n * @param {object} options.sourceIdentity Canonical INFO source identity.\n * @param {string} options.sourcePath Diagnostic INFO/META/ANLS source label.\n * @returns {{reflection:object,blobBytes:Uint8Array,pointer:object,counts:object}}\n * Frozen reflection documents and owned blob bytes.\n */\nexport function buildSelectedEffectReflection(\n effectRes,\n permutationIndex,\n permutationGraph,\n options\n)\n{\n const portable = buildEffectBodyReflection(effectRes, permutationIndex);\n const portableCounts = validateEffectBodyReflection(portable);\n const sourceBytes = effectRes.m_data;\n if (!(sourceBytes instanceof Uint8Array)\n || options?.sourceIdentity?.byteLength !== sourceBytes.byteLength\n || options?.sourceIdentity?.sha256 !== sha256Bytes(sourceBytes))\n {\n throw new Error(\n \"Selected effect reflection source identity disagrees with exact source bytes\"\n );\n }\n const store = new ReflectionBlobStore();\n const source = {\n label: portable.source.label,\n effectVersion: portable.source.effectVersion,\n compilerVersion: portable.source.compilerVersion,\n nativeHash: store.add(portable.source.nativeHash),\n stringTableByteLength: portable.source.stringTableByteLength,\n byteLength: portable.source.byteLength,\n sha256: options?.sourceIdentity?.sha256\n };\n const effect = packByteArrays(portable.effect, store);\n const blobBytes = store.finish();\n const variant = selectedVariant(permutationGraph, permutationIndex);\n const body = selectedBody(permutationGraph, variant.bodyKey);\n const exactBodyBytes = sourceBytes.subarray(\n portable.sourceRecord.offset,\n portable.sourceRecord.offset + portable.sourceRecord.byteLength\n );\n if (body.byteLength !== exactBodyBytes.byteLength\n || body.sha256 !== sha256Bytes(exactBodyBytes))\n {\n throw new Error(\n \"Selected effect reflection PGRF body identity disagrees with exact source bytes\"\n );\n }\n const reflection = {\n format: EFFECT_REFLECTION_FORMAT,\n formatVersion: SELECTED_EFFECT_REFLECTION_VERSION,\n portableFormat: EFFECT_BODY_REFLECTION_FORMAT,\n portableFormatVersion: EFFECT_BODY_REFLECTION_VERSION,\n keyScope: portable.keyScope,\n coverage: {\n bodies: \"selected\",\n reflection: \"complete-for-listed\",\n sourcePrograms: \"complete-for-listed\",\n constantDefaults: \"exact-for-listed\"\n },\n selectedBody: {\n permutationIndex,\n bodyKey: variant.bodyKey,\n sourceRecord: {\n offset: portable.sourceRecord.offset,\n byteLength: portable.sourceRecord.byteLength\n },\n byteLength: body.byteLength,\n sha256: body.sha256\n },\n source,\n effect,\n blobStore: {\n chunk: EFFECT_REFLECTION_BLOB_CHUNK,\n byteLength: blobBytes.byteLength,\n sha256: sha256Bytes(blobBytes),\n blobCount: store.entries.length,\n blobs: store.entries.map((entry) => ({ ...entry }))\n }\n };\n const counts = validateSelectedEffectReflection(\n reflection,\n blobBytes,\n {\n permutationGraph,\n permutationIndex,\n sourceIdentity: options?.sourceIdentity,\n sourcePath: options?.sourcePath\n }\n );\n if (counts.sourceProgramCount !== portableCounts.sourceProgramCount)\n {\n throw new Error(\n \"Selected effect reflection source-program count changed while packing\"\n );\n }\n const pointer = {\n chunk: EFFECT_REFLECTION_CHUNK,\n format: EFFECT_REFLECTION_FORMAT,\n formatVersion: SELECTED_EFFECT_REFLECTION_VERSION,\n blobChunk: EFFECT_REFLECTION_BLOB_CHUNK,\n bodyCount: 1,\n sourceProgramCount: counts.sourceProgramCount,\n blobCount: counts.blobCount,\n blobByteLength: counts.blobByteLength\n };\n\n return Object.freeze({\n reflection: deepFreeze(reflection),\n blobBytes,\n pointer: Object.freeze(pointer),\n counts\n });\n}\n\n/**\n * Build complete unique-body source reflection plus one deduplicated byte\n * arena while retaining body-local portable keys.\n *\n * @param {object} effectRes Loaded format-hlsl Tr2EffectRes.\n * @param {object} permutationGraph Complete source PGRF document.\n * @param {object} options Source identity and diagnostic label.\n * @param {object} options.sourceIdentity Canonical INFO source identity.\n * @param {string} options.sourcePath Diagnostic INFO/META/ANLS source label.\n * @returns {{reflection:object,blobBytes:Uint8Array,pointer:object,counts:object}}\n * Frozen all-unique reflection documents and owned blob bytes.\n */\nexport function buildCompleteEffectReflection(\n effectRes,\n permutationGraph,\n options\n)\n{\n const sourceBytes = effectRes?.m_data;\n if (!(sourceBytes instanceof Uint8Array)\n || options?.sourceIdentity?.byteLength !== sourceBytes.byteLength\n || options?.sourceIdentity?.sha256 !== sha256Bytes(sourceBytes))\n {\n throw new Error(\n \"Complete effect reflection source identity disagrees with exact source bytes\"\n );\n }\n\n const inventory = enumerateUniqueEffectBodies(effectRes);\n if (inventory.length !== permutationGraph?.bodies?.length)\n {\n throw new Error(\n \"Complete effect reflection body inventory disagrees with PGRF\"\n );\n }\n\n const store = new ReflectionBlobStore();\n let source = null;\n const bodies = inventory.map((group, bodyIndex) =>\n {\n const graphBody = permutationGraph.bodies[bodyIndex];\n const representative = selectedVariant(\n permutationGraph,\n group.permutationIndex\n );\n if (representative.bodyKey !== graphBody?.key\n || group.variants.some((variant) =>\n {\n const graphVariant = selectedVariant(\n permutationGraph,\n variant.permutationIndex\n );\n return graphVariant.bodyKey !== graphBody.key\n || graphVariant.sourceRecord.offset\n !== variant.sourceRecord.offset\n || graphVariant.sourceRecord.byteLength\n !== variant.sourceRecord.byteLength;\n }))\n {\n throw new Error(\n `Complete effect reflection body ${bodyIndex} aliases disagree with PGRF`\n );\n }\n\n const portable = buildEffectBodyReflection(\n effectRes,\n group.permutationIndex\n );\n if (portable.sourceRecord.offset !== group.sourceRecord.offset\n || portable.sourceRecord.byteLength !== group.sourceRecord.byteLength)\n {\n throw new Error(\n `Complete effect reflection body ${bodyIndex} source record changed`\n );\n }\n if (!source)\n {\n source = {\n label: portable.source.label,\n effectVersion: portable.source.effectVersion,\n compilerVersion: portable.source.compilerVersion,\n nativeHash: store.add(portable.source.nativeHash),\n stringTableByteLength: portable.source.stringTableByteLength,\n byteLength: portable.source.byteLength,\n sha256: options.sourceIdentity.sha256\n };\n }\n else if (!samePortableSource(source, portable.source, store))\n {\n throw new Error(\n `Complete effect reflection body ${bodyIndex} source envelope changed`\n );\n }\n\n const exactBodyBytes = sourceBytes.subarray(\n portable.sourceRecord.offset,\n portable.sourceRecord.offset + portable.sourceRecord.byteLength\n );\n if (graphBody.byteLength !== exactBodyBytes.byteLength\n || graphBody.sha256 !== sha256Bytes(exactBodyBytes))\n {\n throw new Error(\n `Complete effect reflection body ${bodyIndex} identity disagrees with PGRF`\n );\n }\n return {\n bodyKey: graphBody.key,\n representativePermutationIndex: group.permutationIndex,\n byteLength: graphBody.byteLength,\n sha256: graphBody.sha256,\n effect: packByteArrays(portable.effect, store)\n };\n });\n const blobBytes = store.finish();\n const reflection = {\n format: EFFECT_REFLECTION_FORMAT,\n formatVersion: EFFECT_REFLECTION_VERSION,\n portableFormat: EFFECT_BODY_REFLECTION_FORMAT,\n portableFormatVersion: EFFECT_BODY_REFLECTION_VERSION,\n keyScope: \"body-local\",\n coverage: {\n bodies: \"all-unique\",\n reflection: \"complete-for-listed\",\n sourcePrograms: \"complete-for-listed\",\n constantDefaults: \"exact-for-listed\"\n },\n source,\n bodies,\n blobStore: {\n chunk: EFFECT_REFLECTION_BLOB_CHUNK,\n byteLength: blobBytes.byteLength,\n sha256: sha256Bytes(blobBytes),\n blobCount: store.entries.length,\n blobs: store.entries.map((entry) => ({ ...entry }))\n }\n };\n const counts = validateCompleteEffectReflection(\n reflection,\n blobBytes,\n {\n permutationGraph,\n sourceIdentity: options.sourceIdentity,\n sourcePath: options.sourcePath\n }\n );\n const pointer = {\n chunk: EFFECT_REFLECTION_CHUNK,\n format: EFFECT_REFLECTION_FORMAT,\n formatVersion: EFFECT_REFLECTION_VERSION,\n blobChunk: EFFECT_REFLECTION_BLOB_CHUNK,\n sha256: sha256Utf8(`${JSON.stringify(reflection)}\\n`),\n coverage: \"all-unique\",\n permutationCount: permutationGraph.variants.length,\n bodyCount: counts.bodyCount,\n sourceProgramCount: counts.sourceProgramCount,\n blobCount: counts.blobCount,\n blobByteLength: counts.blobByteLength\n };\n\n return Object.freeze({\n reflection: deepFreeze(reflection),\n blobBytes,\n pointer: Object.freeze(pointer),\n counts\n });\n}\n\n/**\n * Validate selected-body reflection against its binary store, PGRF, and INFO\n * source identity.\n *\n * @param {object} reflection Parsed RFLX document.\n * @param {Uint8Array} blobBytes Raw RBLB chunk bytes.\n * @param {object} options Reconciliation context.\n * @param {object} options.permutationGraph Validated complete PGRF document.\n * @param {number} options.permutationIndex Package-selected permutation index.\n * @param {object} options.sourceIdentity Validated INFO source identity.\n * @param {string} options.sourcePath Validated INFO source label.\n * @returns {{bodyCount:number,sourceProgramCount:number,blobCount:number,blobByteLength:number}}\n * Validated selected reflection counts.\n */\nexport function validateSelectedEffectReflection(\n reflection,\n blobBytes,\n options\n)\n{\n requireExactKeys(reflection, [\n \"format\",\n \"formatVersion\",\n \"portableFormat\",\n \"portableFormatVersion\",\n \"keyScope\",\n \"coverage\",\n \"selectedBody\",\n \"source\",\n \"effect\",\n \"blobStore\"\n ], \"CEWGPU RFLX\");\n requireExactKeys(reflection.coverage, [\n \"bodies\",\n \"reflection\",\n \"sourcePrograms\",\n \"constantDefaults\"\n ], \"CEWGPU RFLX.coverage\");\n if (reflection.format !== EFFECT_REFLECTION_FORMAT\n || reflection.formatVersion !== SELECTED_EFFECT_REFLECTION_VERSION\n || reflection.portableFormat !== EFFECT_BODY_REFLECTION_FORMAT\n || reflection.portableFormatVersion !== EFFECT_BODY_REFLECTION_VERSION\n || reflection.keyScope !== \"body-local\"\n || reflection.coverage.bodies !== \"selected\"\n || reflection.coverage.reflection !== \"complete-for-listed\"\n || reflection.coverage.sourcePrograms !== \"complete-for-listed\"\n || reflection.coverage.constantDefaults !== \"exact-for-listed\")\n {\n throw new Error(\"CEWGPU RFLX schema or coverage is unsupported\");\n }\n\n const graph = requireRecord(\n options?.permutationGraph,\n \"CEWGPU RFLX permutation graph\"\n );\n const sourceIdentity = requireRecord(\n options?.sourceIdentity,\n \"CEWGPU RFLX source identity\"\n );\n const sourcePath = requireString(\n options?.sourcePath,\n \"CEWGPU RFLX sourcePath\"\n );\n const selected = requireRecord(\n reflection.selectedBody,\n \"CEWGPU RFLX.selectedBody\"\n );\n requireExactKeys(selected, [\n \"permutationIndex\",\n \"bodyKey\",\n \"sourceRecord\",\n \"byteLength\",\n \"sha256\"\n ], \"CEWGPU RFLX.selectedBody\");\n requireUint(selected.permutationIndex, \"CEWGPU RFLX selected permutationIndex\");\n if (selected.permutationIndex !== options?.permutationIndex)\n {\n throw new Error(\"CEWGPU RFLX selected body disagrees with META\");\n }\n requireString(selected.bodyKey, \"CEWGPU RFLX selected bodyKey\");\n requireUint(selected.byteLength, \"CEWGPU RFLX selected byteLength\", true);\n requireSha256(selected.sha256, \"CEWGPU RFLX selected sha256\");\n const sourceRecord = requireRecord(\n selected.sourceRecord,\n \"CEWGPU RFLX selected sourceRecord\"\n );\n requireExactKeys(\n sourceRecord,\n [ \"offset\", \"byteLength\" ],\n \"CEWGPU RFLX selected sourceRecord\"\n );\n requireUint(sourceRecord.offset, \"CEWGPU RFLX selected sourceRecord offset\");\n requireUint(\n sourceRecord.byteLength,\n \"CEWGPU RFLX selected sourceRecord byteLength\",\n true\n );\n\n const variant = selectedVariant(graph, selected.permutationIndex);\n const body = selectedBody(graph, selected.bodyKey);\n if (variant.bodyKey !== selected.bodyKey\n || variant.sourceRecord.offset !== sourceRecord.offset\n || variant.sourceRecord.byteLength !== sourceRecord.byteLength\n || selected.byteLength !== body.byteLength\n || sourceRecord.byteLength !== body.byteLength\n || selected.sha256 !== body.sha256)\n {\n throw new Error(\"CEWGPU RFLX selected body disagrees with PGRF\");\n }\n\n const source = requireRecord(reflection.source, \"CEWGPU RFLX.source\");\n requireExactKeys(source, [\n \"label\",\n \"effectVersion\",\n \"compilerVersion\",\n \"nativeHash\",\n \"stringTableByteLength\",\n \"byteLength\",\n \"sha256\"\n ], \"CEWGPU RFLX.source\");\n if (source.label !== sourcePath\n || source.byteLength !== sourceIdentity.byteLength\n || source.sha256 !== sourceIdentity.sha256)\n {\n throw new Error(\"CEWGPU RFLX source identity disagrees with INFO\");\n }\n requireSha256(source.sha256, \"CEWGPU RFLX source sha256\");\n\n const blobInventory = validateBlobStore(reflection.blobStore, blobBytes);\n const usedBlobKeys = new Set();\n const portable = {\n format: reflection.portableFormat,\n formatVersion: reflection.portableFormatVersion,\n mode: \"single-body\",\n keyScope: reflection.keyScope,\n coverage: {\n bodies: \"single\",\n reflection: \"complete\",\n sourcePrograms: \"complete\",\n constantDefaults: \"exact\"\n },\n source: {\n label: source.label,\n effectVersion: source.effectVersion,\n compilerVersion: source.compilerVersion,\n nativeHash: unpackBlobReference(\n source.nativeHash,\n blobInventory,\n blobBytes,\n usedBlobKeys\n ),\n stringTableByteLength: source.stringTableByteLength,\n byteLength: source.byteLength\n },\n permutationIndex: selected.permutationIndex,\n sourceRecord: {\n offset: sourceRecord.offset,\n byteLength: sourceRecord.byteLength\n },\n effect: unpackByteReferences(\n reflection.effect,\n blobInventory,\n blobBytes,\n usedBlobKeys\n )\n };\n const portableCounts = validateEffectBodyReflection(portable);\n if (usedBlobKeys.size !== blobInventory.size)\n {\n throw new Error(\"CEWGPU RFLX blob store contains unreferenced payloads\");\n }\n\n return Object.freeze({\n bodyCount: 1,\n sourceProgramCount: portableCounts.sourceProgramCount,\n blobCount: blobInventory.size,\n blobByteLength: blobBytes.byteLength\n });\n}\n\n/**\n * Validate complete unique-body reflection against PGRF and its shared byte\n * arena.\n *\n * @param {object} reflection Parsed RFLX v2 document.\n * @param {Uint8Array} blobBytes Raw RBLB bytes.\n * @param {object} options Reconciliation context.\n * @param {object} options.permutationGraph Validated complete PGRF document.\n * @param {object} options.sourceIdentity Validated INFO source identity.\n * @param {string} options.sourcePath Validated INFO source label.\n * @returns {{permutationCount:number,bodyCount:number,sourceProgramCount:number,blobCount:number,blobByteLength:number}}\n * Validated complete source-reflection counts.\n */\nexport function validateCompleteEffectReflection(\n reflection,\n blobBytes,\n options\n)\n{\n requireExactKeys(reflection, [\n \"format\",\n \"formatVersion\",\n \"portableFormat\",\n \"portableFormatVersion\",\n \"keyScope\",\n \"coverage\",\n \"source\",\n \"bodies\",\n \"blobStore\"\n ], \"CEWGPU RFLX\");\n requireExactKeys(reflection.coverage, [\n \"bodies\",\n \"reflection\",\n \"sourcePrograms\",\n \"constantDefaults\"\n ], \"CEWGPU RFLX.coverage\");\n if (reflection.format !== EFFECT_REFLECTION_FORMAT\n || reflection.formatVersion !== EFFECT_REFLECTION_VERSION\n || reflection.portableFormat !== EFFECT_BODY_REFLECTION_FORMAT\n || reflection.portableFormatVersion !== EFFECT_BODY_REFLECTION_VERSION\n || reflection.keyScope !== \"body-local\"\n || reflection.coverage.bodies !== \"all-unique\"\n || reflection.coverage.reflection !== \"complete-for-listed\"\n || reflection.coverage.sourcePrograms !== \"complete-for-listed\"\n || reflection.coverage.constantDefaults !== \"exact-for-listed\"\n || !Array.isArray(reflection.bodies))\n {\n throw new Error(\"CEWGPU RFLX schema or coverage is unsupported\");\n }\n\n const graph = requireRecord(\n options?.permutationGraph,\n \"CEWGPU RFLX permutation graph\"\n );\n const sourceIdentity = requireRecord(\n options?.sourceIdentity,\n \"CEWGPU RFLX source identity\"\n );\n const sourcePath = requireString(\n options?.sourcePath,\n \"CEWGPU RFLX sourcePath\"\n );\n if (reflection.bodies.length !== graph.bodies?.length)\n {\n throw new Error(\"CEWGPU RFLX does not cover every PGRF body\");\n }\n\n const source = requireRecord(reflection.source, \"CEWGPU RFLX.source\");\n requireExactKeys(source, [\n \"label\",\n \"effectVersion\",\n \"compilerVersion\",\n \"nativeHash\",\n \"stringTableByteLength\",\n \"byteLength\",\n \"sha256\"\n ], \"CEWGPU RFLX.source\");\n if (source.label !== sourcePath\n || source.byteLength !== sourceIdentity.byteLength\n || source.sha256 !== sourceIdentity.sha256)\n {\n throw new Error(\"CEWGPU RFLX source identity disagrees with INFO\");\n }\n requireSha256(source.sha256, \"CEWGPU RFLX source sha256\");\n\n const blobInventory = validateBlobStore(reflection.blobStore, blobBytes);\n const usedBlobKeys = new Set();\n const nativeHash = unpackBlobReference(\n source.nativeHash,\n blobInventory,\n blobBytes,\n usedBlobKeys\n );\n const representativeByBodyKey = new Map();\n for (const variant of graph.variants)\n {\n if (!representativeByBodyKey.has(variant.bodyKey))\n {\n representativeByBodyKey.set(variant.bodyKey, variant);\n }\n }\n let sourceProgramCount = 0;\n for (const [ bodyIndex, reflectedBody ] of reflection.bodies.entries())\n {\n requireExactKeys(reflectedBody, [\n \"bodyKey\",\n \"representativePermutationIndex\",\n \"byteLength\",\n \"sha256\",\n \"effect\"\n ], `CEWGPU RFLX body ${bodyIndex}`);\n const graphBody = graph.bodies[bodyIndex];\n requireString(reflectedBody.bodyKey, `CEWGPU RFLX body ${bodyIndex} key`);\n requireUint(\n reflectedBody.representativePermutationIndex,\n `CEWGPU RFLX body ${bodyIndex} representative`\n );\n requireUint(\n reflectedBody.byteLength,\n `CEWGPU RFLX body ${bodyIndex} byteLength`,\n true\n );\n requireSha256(\n reflectedBody.sha256,\n `CEWGPU RFLX body ${bodyIndex} sha256`\n );\n const representative = representativeByBodyKey.get(\n reflectedBody.bodyKey\n );\n if (!graphBody\n || reflectedBody.bodyKey !== graphBody.key\n || reflectedBody.byteLength !== graphBody.byteLength\n || reflectedBody.sha256 !== graphBody.sha256\n || !representative\n || reflectedBody.representativePermutationIndex\n !== representative.permutationIndex)\n {\n throw new Error(\n `CEWGPU RFLX body ${bodyIndex} disagrees with PGRF`\n );\n }\n const portable = {\n format: reflection.portableFormat,\n formatVersion: reflection.portableFormatVersion,\n mode: \"single-body\",\n keyScope: reflection.keyScope,\n coverage: {\n bodies: \"single\",\n reflection: \"complete\",\n sourcePrograms: \"complete\",\n constantDefaults: \"exact\"\n },\n source: {\n label: source.label,\n effectVersion: source.effectVersion,\n compilerVersion: source.compilerVersion,\n nativeHash: Uint8Array.from(nativeHash),\n stringTableByteLength: source.stringTableByteLength,\n byteLength: source.byteLength\n },\n permutationIndex: representative.permutationIndex,\n sourceRecord: { ...representative.sourceRecord },\n effect: unpackByteReferences(\n reflectedBody.effect,\n blobInventory,\n blobBytes,\n usedBlobKeys\n )\n };\n sourceProgramCount += validateEffectBodyReflection(portable)\n .sourceProgramCount;\n }\n if (usedBlobKeys.size !== blobInventory.size)\n {\n throw new Error(\"CEWGPU RFLX blob store contains unreferenced payloads\");\n }\n\n return Object.freeze({\n permutationCount: graph.variants.length,\n bodyCount: reflection.bodies.length,\n sourceProgramCount,\n blobCount: blobInventory.size,\n blobByteLength: blobBytes.byteLength\n });\n}\n\n/**\n * Validate an INFO reflection pointer against parsed RFLX/RBLB payloads.\n *\n * @param {object} pointer INFO reflection pointer.\n * @param {object} reflection Parsed RFLX document.\n * @param {Uint8Array} blobBytes Raw RBLB bytes.\n * @param {object} options Reconciliation context for RFLX.\n * @param {Uint8Array} [options.reflectionBytes] Exact RFLX chunk bytes for v2.\n * @returns {object} Validated reflection counts.\n */\nexport function validateEffectReflectionPointer(\n pointer,\n reflection,\n blobBytes,\n options\n)\n{\n const version = pointer?.formatVersion;\n requireExactKeys(pointer, version === EFFECT_REFLECTION_VERSION ? [\n \"chunk\",\n \"format\",\n \"formatVersion\",\n \"blobChunk\",\n \"sha256\",\n \"coverage\",\n \"permutationCount\",\n \"bodyCount\",\n \"sourceProgramCount\",\n \"blobCount\",\n \"blobByteLength\"\n ] : [\n \"chunk\",\n \"format\",\n \"formatVersion\",\n \"blobChunk\",\n \"bodyCount\",\n \"sourceProgramCount\",\n \"blobCount\",\n \"blobByteLength\"\n ], \"CEWGPU INFO.effectReflection\");\n if (pointer.chunk !== EFFECT_REFLECTION_CHUNK\n || pointer.format !== EFFECT_REFLECTION_FORMAT\n || ![\n SELECTED_EFFECT_REFLECTION_VERSION,\n EFFECT_REFLECTION_VERSION\n ].includes(version)\n || pointer.blobChunk !== EFFECT_REFLECTION_BLOB_CHUNK)\n {\n throw new Error(\"CEWGPU INFO.effectReflection is malformed\");\n }\n for (const field of [\n \"bodyCount\",\n \"sourceProgramCount\",\n \"blobCount\",\n \"blobByteLength\"\n ])\n {\n requireUint(pointer[field], `CEWGPU INFO.effectReflection.${field}`);\n }\n\n let counts;\n if (version === EFFECT_REFLECTION_VERSION)\n {\n requireSha256(pointer.sha256, \"CEWGPU INFO.effectReflection.sha256\");\n if (!(options?.reflectionBytes instanceof Uint8Array)\n || sha256Bytes(options.reflectionBytes) !== pointer.sha256)\n {\n throw new Error(\n \"CEWGPU INFO effect-reflection digest disagrees with RFLX\"\n );\n }\n if (pointer.coverage !== \"all-unique\")\n {\n throw new Error(\"CEWGPU INFO.effectReflection is malformed\");\n }\n requireUint(\n pointer.permutationCount,\n \"CEWGPU INFO.effectReflection.permutationCount\",\n true\n );\n counts = validateCompleteEffectReflection(\n reflection,\n blobBytes,\n options\n );\n if (pointer.permutationCount !== counts.permutationCount)\n {\n throw new Error(\n \"CEWGPU INFO effect-reflection counts disagree with RFLX/RBLB\"\n );\n }\n }\n else\n {\n counts = validateSelectedEffectReflection(\n reflection,\n blobBytes,\n options\n );\n }\n if (pointer.bodyCount !== counts.bodyCount\n || pointer.sourceProgramCount !== counts.sourceProgramCount\n || pointer.blobCount !== counts.blobCount\n || pointer.blobByteLength !== counts.blobByteLength)\n {\n throw new Error(\"CEWGPU INFO effect-reflection counts disagree with RFLX/RBLB\");\n }\n return counts;\n}\n\n/**\n * Selects the body-local reflected effect for one PGRF permutation.\n *\n * @param {object} reflection Validated RFLX v1 or v2 document.\n * @param {object} permutationGraph Validated PGRF document.\n * @param {number} permutationIndex Exact package-selected permutation index.\n * @returns {object} Reflected body-local effect graph.\n */\nexport function effectReflectionForPermutation(\n reflection,\n permutationGraph,\n permutationIndex\n)\n{\n const variant = selectedVariant(permutationGraph, permutationIndex);\n if (reflection?.formatVersion === SELECTED_EFFECT_REFLECTION_VERSION)\n {\n if (reflection.selectedBody?.permutationIndex !== permutationIndex\n || reflection.selectedBody?.bodyKey !== variant.bodyKey)\n {\n throw new Error(\"CEWGPU selected RFLX body disagrees with PGRF\");\n }\n return requireRecord(reflection.effect, \"CEWGPU RFLX.effect\");\n }\n if (reflection?.formatVersion === EFFECT_REFLECTION_VERSION)\n {\n const body = reflection.bodies?.find((entry) =>\n entry.bodyKey === variant.bodyKey);\n return requireRecord(body?.effect, \"CEWGPU RFLX selected effect\");\n }\n throw new Error(\"CEWGPU RFLX schema or coverage is unsupported\");\n}\n\n/**\n * Hydrates one package permutation into the validated portable reflection\n * contract owned by format-hlsl.\n *\n * @param {object} reflection Validated RFLX v1 or v2 document.\n * @param {object} permutationGraph Validated PGRF document.\n * @param {number} permutationIndex Exact package permutation index.\n * @param {(reference:object)=>Uint8Array|null} resolveBlob Exact RBLB resolver.\n * @returns {object} Fresh portable single-body reflection with owned bytes.\n */\nexport function hydrateEffectReflectionForPermutation(\n reflection,\n permutationGraph,\n permutationIndex,\n resolveBlob\n)\n{\n if (typeof resolveBlob !== \"function\")\n {\n throw new TypeError(\"CEWGPU reflection blob resolver must be a function\");\n }\n const variant = selectedVariant(permutationGraph, permutationIndex);\n const selected = reflection?.formatVersion\n === SELECTED_EFFECT_REFLECTION_VERSION\n ? reflection.selectedBody\n : variant;\n const cache = new Map();\n const portable = {\n format: reflection?.portableFormat,\n formatVersion: reflection?.portableFormatVersion,\n mode: \"single-body\",\n keyScope: reflection?.keyScope,\n coverage: {\n bodies: \"single\",\n reflection: \"complete\",\n sourcePrograms: \"complete\",\n constantDefaults: \"exact\"\n },\n source: {\n label: reflection?.source?.label,\n effectVersion: reflection?.source?.effectVersion,\n compilerVersion: reflection?.source?.compilerVersion,\n nativeHash: hydrateResolvedBytes(\n reflection?.source?.nativeHash,\n resolveBlob,\n cache\n ),\n stringTableByteLength:\n reflection?.source?.stringTableByteLength,\n byteLength: reflection?.source?.byteLength\n },\n permutationIndex,\n sourceRecord: { ...selected?.sourceRecord },\n effect: hydrateResolvedBytes(\n effectReflectionForPermutation(\n reflection,\n permutationGraph,\n permutationIndex\n ),\n resolveBlob,\n cache\n )\n };\n validateEffectBodyReflection(portable);\n return portable;\n}\n\n/**\n * Builds a deterministic deduplicated byte arena for portable reflection.\n */\nclass ReflectionBlobStore\n{\n /**\n * Initializes an empty first-seen blob inventory.\n */\n constructor()\n {\n this.payloads = [];\n this.entries = [];\n this.byDigest = new Map();\n this.byteLength = 0;\n }\n\n /**\n * Adds exact bytes and returns their canonical immutable reference.\n *\n * @param {Uint8Array} value Portable reflection bytes.\n * @returns {object} Canonical blob reference.\n */\n add(value)\n {\n if (!(value instanceof Uint8Array))\n {\n throw new TypeError(\"Selected effect reflection bytes must be Uint8Array\");\n }\n const bytes = Uint8Array.from(value);\n const sha256 = sha256Bytes(bytes);\n const candidates = this.byDigest.get(sha256) ?? [];\n const existing = candidates.find((candidate) =>\n bytesEqual(candidate.bytes, bytes));\n if (existing)\n {\n return Object.freeze({ ...existing.reference });\n }\n if (candidates.length)\n {\n throw new Error(\"Selected effect reflection SHA-256 collision detected\");\n }\n\n const entry = Object.freeze({\n blobKey: `blob${this.entries.length}`,\n offset: this.byteLength,\n byteLength: bytes.byteLength,\n sha256\n });\n const record = { bytes, reference: entry };\n candidates.push(record);\n this.byDigest.set(sha256, candidates);\n this.payloads.push(bytes);\n this.entries.push(entry);\n this.byteLength += bytes.byteLength;\n return Object.freeze({ ...entry });\n }\n\n /**\n * Materializes the contiguous blob arena in inventory order.\n *\n * @returns {Uint8Array} Owned RBLB payload.\n */\n finish()\n {\n const out = new Uint8Array(this.byteLength);\n let offset = 0;\n for (const bytes of this.payloads)\n {\n out.set(bytes, offset);\n offset += bytes.byteLength;\n }\n return out;\n }\n}\n\nfunction samePortableSource(source, portableSource, store)\n{\n const nativeHash = store.add(portableSource.nativeHash);\n return source.label === portableSource.label\n && source.effectVersion === portableSource.effectVersion\n && source.compilerVersion === portableSource.compilerVersion\n && source.stringTableByteLength === portableSource.stringTableByteLength\n && source.byteLength === portableSource.byteLength\n && source.nativeHash.blobKey === nativeHash.blobKey\n && source.nativeHash.offset === nativeHash.offset\n && source.nativeHash.byteLength === nativeHash.byteLength\n && source.nativeHash.sha256 === nativeHash.sha256;\n}\n\nfunction packByteArrays(value, store)\n{\n if (value instanceof Uint8Array) return store.add(value);\n if (Array.isArray(value))\n {\n return value.map((entry) => packByteArrays(entry, store));\n }\n if (isRecord(value))\n {\n return Object.fromEntries(Object.entries(value).map(([ key, entry ]) => [\n key,\n packByteArrays(entry, store)\n ]));\n }\n return value;\n}\n\nfunction unpackByteReferences(\n value,\n inventory,\n blobBytes,\n usedBlobKeys\n)\n{\n if (isBlobReference(value))\n {\n return unpackBlobReference(\n value,\n inventory,\n blobBytes,\n usedBlobKeys\n );\n }\n if (Array.isArray(value))\n {\n return value.map((entry) =>\n unpackByteReferences(entry, inventory, blobBytes, usedBlobKeys));\n }\n if (isRecord(value))\n {\n return Object.fromEntries(Object.entries(value).map(([ key, entry ]) => [\n key,\n unpackByteReferences(entry, inventory, blobBytes, usedBlobKeys)\n ]));\n }\n return value;\n}\n\nfunction unpackBlobReference(reference, inventory, blobBytes, usedBlobKeys)\n{\n requireExactKeys(reference, [\n \"blobKey\",\n \"offset\",\n \"byteLength\",\n \"sha256\"\n ], \"CEWGPU RFLX blob reference\");\n const entry = inventory.get(reference.blobKey);\n if (!entry\n || reference.offset !== entry.offset\n || reference.byteLength !== entry.byteLength\n || reference.sha256 !== entry.sha256)\n {\n throw new Error(\"CEWGPU RFLX blob reference disagrees with its inventory\");\n }\n usedBlobKeys.add(reference.blobKey);\n return Uint8Array.from(blobBytes.subarray(\n reference.offset,\n reference.offset + reference.byteLength\n ));\n}\n\nfunction validateBlobStore(blobStore, blobBytes)\n{\n requireExactKeys(blobStore, [\n \"chunk\",\n \"byteLength\",\n \"sha256\",\n \"blobCount\",\n \"blobs\"\n ], \"CEWGPU RFLX.blobStore\");\n if (!(blobBytes instanceof Uint8Array))\n {\n throw new Error(\"CEWGPU RBLB must be raw Uint8Array bytes\");\n }\n if (blobStore.chunk !== EFFECT_REFLECTION_BLOB_CHUNK\n || blobStore.byteLength !== blobBytes.byteLength\n || blobStore.sha256 !== sha256Bytes(blobBytes)\n || !Array.isArray(blobStore.blobs)\n || blobStore.blobCount !== blobStore.blobs.length)\n {\n throw new Error(\"CEWGPU RFLX blob-store envelope disagrees with RBLB\");\n }\n requireSha256(blobStore.sha256, \"CEWGPU RFLX blob-store sha256\");\n\n const inventory = new Map();\n const digests = new Set();\n let expectedOffset = 0;\n for (const [ index, entry ] of blobStore.blobs.entries())\n {\n requireExactKeys(entry, [\n \"blobKey\",\n \"offset\",\n \"byteLength\",\n \"sha256\"\n ], `CEWGPU RFLX blob ${index}`);\n if (entry.blobKey !== `blob${index}`)\n {\n throw new Error(`CEWGPU RFLX blob ${index} has a noncanonical key`);\n }\n requireUint(entry.offset, `CEWGPU RFLX blob ${index} offset`);\n requireUint(entry.byteLength, `CEWGPU RFLX blob ${index} byteLength`);\n requireSha256(entry.sha256, `CEWGPU RFLX blob ${index} sha256`);\n const end = entry.offset + entry.byteLength;\n if (entry.offset !== expectedOffset\n || end > blobBytes.byteLength\n || digests.has(entry.sha256)\n || sha256Bytes(blobBytes.subarray(entry.offset, end)) !== entry.sha256)\n {\n throw new Error(`CEWGPU RFLX blob ${index} is malformed or duplicated`);\n }\n inventory.set(entry.blobKey, entry);\n digests.add(entry.sha256);\n expectedOffset = end;\n }\n if (expectedOffset !== blobBytes.byteLength)\n {\n throw new Error(\"CEWGPU RFLX blob inventory does not cover RBLB\");\n }\n return inventory;\n}\n\nfunction selectedVariant(graph, permutationIndex)\n{\n const variant = graph?.variants?.[permutationIndex];\n if (!variant || variant.permutationIndex !== permutationIndex)\n {\n throw new Error(\n `Selected effect reflection body ${permutationIndex} is absent from PGRF`\n );\n }\n return variant;\n}\n\nfunction selectedBody(graph, bodyKey)\n{\n const body = graph?.bodies?.find((entry) => entry.key === bodyKey);\n if (!body)\n {\n throw new Error(`Selected effect reflection body ${bodyKey} is absent from PGRF`);\n }\n return body;\n}\n\nfunction isBlobReference(value)\n{\n return isRecord(value)\n && Object.prototype.hasOwnProperty.call(value, \"blobKey\")\n && Object.prototype.hasOwnProperty.call(value, \"offset\")\n && Object.prototype.hasOwnProperty.call(value, \"byteLength\")\n && Object.prototype.hasOwnProperty.call(value, \"sha256\");\n}\n\nfunction hydrateResolvedBytes(value, resolveBlob, cache)\n{\n if (isBlobReference(value))\n {\n const key = [\n value.blobKey,\n value.offset,\n value.byteLength,\n value.sha256\n ].join(\":\");\n if (!cache.has(key))\n {\n const bytes = resolveBlob(value);\n if (!(bytes instanceof Uint8Array))\n {\n throw new Error(\n `CEWGPU reflection blob ${value.blobKey} is unavailable`\n );\n }\n cache.set(key, bytes);\n }\n return Uint8Array.from(cache.get(key));\n }\n if (Array.isArray(value))\n {\n return value.map((entry) =>\n hydrateResolvedBytes(entry, resolveBlob, cache));\n }\n if (isRecord(value))\n {\n return Object.fromEntries(Object.entries(value).map(([ key, entry ]) => [\n key,\n hydrateResolvedBytes(entry, resolveBlob, cache)\n ]));\n }\n return value;\n}\n\nfunction requireExactKeys(value, allowed, context)\n{\n requireRecord(value, context);\n const keys = Reflect.ownKeys(value);\n if (keys.length !== allowed.length\n || keys.some((key) =>\n typeof key !== \"string\" || !allowed.includes(key)))\n {\n throw new Error(`${context} has unsupported or missing fields`);\n }\n return value;\n}\n\nfunction requireRecord(value, context)\n{\n if (!isRecord(value))\n {\n throw new Error(`${context} must be an object`);\n }\n return value;\n}\n\nfunction requireString(value, context)\n{\n if (typeof value !== \"string\" || !value || value !== value.trim())\n {\n throw new Error(`${context} must be a non-empty string`);\n }\n return value;\n}\n\nfunction requireSha256(value, context)\n{\n if (typeof value !== \"string\" || !SHA256.test(value))\n {\n throw new Error(`${context} must be lowercase SHA-256`);\n }\n return value;\n}\n\nfunction requireUint(value, context, positive = false)\n{\n if (!Number.isSafeInteger(value) || value < (positive ? 1 : 0)\n || value > 0xffffffff)\n {\n throw new Error(`${context} must fit uint32`);\n }\n return value;\n}\n\nfunction isRecord(value)\n{\n return !!value && typeof value === \"object\"\n && !Array.isArray(value) && !ArrayBuffer.isView(value);\n}\n\nfunction bytesEqual(left, right)\n{\n return left.byteLength === right.byteLength\n && left.every((value, index) => value === right[index]);\n}\n\nfunction deepFreeze(value)\n{\n if (!value || typeof value !== \"object\" || Object.isFrozen(value)\n || ArrayBuffer.isView(value))\n {\n return value;\n }\n Object.freeze(value);\n for (const entry of Object.values(value)) deepFreeze(entry);\n return value;\n}\n"],"names":["EFFECT_REFLECTION_CHUNK","EFFECT_REFLECTION_BLOB_CHUNK","EFFECT_REFLECTION_FORMAT","EFFECT_REFLECTION_VERSION","SHA256","SELECTED_EFFECT_REFLECTION_VERSION","buildCompleteEffectReflection","effectRes","permutationGraph","options","sourceBytes","m_data","Uint8Array","sourceIdentity","byteLength","sha256","sha256Bytes","Error","inventory","enumerateUniqueEffectBodies","length","bodies","store","ReflectionBlobStore","source","map","group","bodyIndex","graphBody","representative","selectedVariant","permutationIndex","bodyKey","key","variants","some","variant","graphVariant","sourceRecord","offset","portable","buildEffectBodyReflection","label","effectVersion","compilerVersion","nativeHash","add","stringTableByteLength","samePortableSource","exactBodyBytes","subarray","representativePermutationIndex","effect","packByteArrays","blobBytes","finish","reflection","format","formatVersion","portableFormat","EFFECT_BODY_REFLECTION_FORMAT","portableFormatVersion","EFFECT_BODY_REFLECTION_VERSION","keyScope","coverage","sourcePrograms","constantDefaults","blobStore","chunk","blobCount","entries","blobs","entry","counts","validateCompleteEffectReflection","sourcePath","pointer","blobChunk","sha256Utf8","JSON","stringify","permutationCount","bodyCount","sourceProgramCount","blobByteLength","Object","freeze","deepFreeze","validateSelectedEffectReflection","requireExactKeys","graph","requireRecord","requireString","selected","selectedBody","requireUint","requireSha256","body","blobInventory","validateBlobStore","usedBlobKeys","Set","mode","unpackBlobReference","unpackByteReferences","portableCounts","validateEffectBodyReflection","size","Array","isArray","representativeByBodyKey","Map","has","set","reflectedBody","get","from","validateEffectReflectionPointer","version","includes","field","reflectionBytes","effectReflectionForPermutation","find","hydrateEffectReflectionForPermutation","resolveBlob","TypeError","cache","hydrateResolvedBytes","constructor","payloads","byDigest","value","bytes","candidates","existing","candidate","bytesEqual","reference","blobKey","record","push","out","portableSource","isRecord","fromEntries","isBlobReference","digests","expectedOffset","index","end","prototype","hasOwnProperty","call","join","allowed","context","keys","Reflect","ownKeys","trim","test","positive","Number","isSafeInteger","ArrayBuffer","isView","left","right","every","isFrozen","values"],"mappings":"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"}
@@ -0,0 +1,114 @@
1
+ const SHA256_CONSTANTS = Object.freeze([0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2]);
2
+
3
+ /**
4
+ * Rotate one unsigned 32-bit word right.
5
+ *
6
+ * @param {number} value Unsigned word.
7
+ * @param {number} shift Bit count.
8
+ * @returns {number} Rotated word.
9
+ */
10
+ function rotateRight(value, shift) {
11
+ return value >>> shift | value << 32 - shift;
12
+ }
13
+
14
+ /**
15
+ * Normalize an exact byte range without copying it.
16
+ *
17
+ * @param {Uint8Array|ArrayBuffer|ArrayBufferView} input Candidate byte range.
18
+ * @returns {Uint8Array} Exact byte view.
19
+ */
20
+ function normalizeBytes(input) {
21
+ if (input instanceof Uint8Array) {
22
+ return input;
23
+ }
24
+ if (input instanceof ArrayBuffer) {
25
+ return new Uint8Array(input);
26
+ }
27
+ if (ArrayBuffer.isView(input)) {
28
+ return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);
29
+ }
30
+ throw new TypeError("SHA-256 input must be Uint8Array, ArrayBuffer, or ArrayBufferView bytes");
31
+ }
32
+
33
+ /**
34
+ * Browser-safe synchronous SHA-256 over an exact byte view.
35
+ *
36
+ * @param {Uint8Array|ArrayBuffer|ArrayBufferView} input Bytes to hash.
37
+ * @returns {string} Lower-case hexadecimal digest.
38
+ */
39
+ function sha256Bytes(input) {
40
+ const inputBytes = normalizeBytes(input);
41
+ const paddedLength = Math.ceil((inputBytes.length + 9) / 64) * 64;
42
+ const bytes = new Uint8Array(paddedLength);
43
+ bytes.set(inputBytes);
44
+ bytes[inputBytes.length] = 0x80;
45
+ let bitLength = BigInt(inputBytes.length) * 8n;
46
+ for (let index = 0; index < 8; index += 1) {
47
+ bytes[paddedLength - 1 - index] = Number(bitLength & 0xffn);
48
+ bitLength >>= 8n;
49
+ }
50
+ const hash = new Uint32Array([0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19]);
51
+ const schedule = new Uint32Array(64);
52
+ for (let offset = 0; offset < bytes.length; offset += 64) {
53
+ for (let index = 0; index < 16; index += 1) {
54
+ const word = offset + index * 4;
55
+ schedule[index] = bytes[word] * 0x1000000 + bytes[word + 1] * 0x10000 + bytes[word + 2] * 0x100 + bytes[word + 3] >>> 0;
56
+ }
57
+ for (let index = 16; index < 64; index += 1) {
58
+ const left = schedule[index - 15];
59
+ const right = schedule[index - 2];
60
+ const sigma0 = rotateRight(left, 7) ^ rotateRight(left, 18) ^ left >>> 3;
61
+ const sigma1 = rotateRight(right, 17) ^ rotateRight(right, 19) ^ right >>> 10;
62
+ schedule[index] = schedule[index - 16] + sigma0 + schedule[index - 7] + sigma1 >>> 0;
63
+ }
64
+ let a = hash[0];
65
+ let b = hash[1];
66
+ let c = hash[2];
67
+ let d = hash[3];
68
+ let e = hash[4];
69
+ let f = hash[5];
70
+ let g = hash[6];
71
+ let h = hash[7];
72
+ for (let index = 0; index < 64; index += 1) {
73
+ const sum1 = rotateRight(e, 6) ^ rotateRight(e, 11) ^ rotateRight(e, 25);
74
+ const choose = e & f ^ ~e & g;
75
+ const temporary1 = h + sum1 + choose + SHA256_CONSTANTS[index] + schedule[index] >>> 0;
76
+ const sum0 = rotateRight(a, 2) ^ rotateRight(a, 13) ^ rotateRight(a, 22);
77
+ const majority = a & b ^ a & c ^ b & c;
78
+ const temporary2 = sum0 + majority >>> 0;
79
+ h = g;
80
+ g = f;
81
+ f = e;
82
+ e = d + temporary1 >>> 0;
83
+ d = c;
84
+ c = b;
85
+ b = a;
86
+ a = temporary1 + temporary2 >>> 0;
87
+ }
88
+ hash[0] = hash[0] + a >>> 0;
89
+ hash[1] = hash[1] + b >>> 0;
90
+ hash[2] = hash[2] + c >>> 0;
91
+ hash[3] = hash[3] + d >>> 0;
92
+ hash[4] = hash[4] + e >>> 0;
93
+ hash[5] = hash[5] + f >>> 0;
94
+ hash[6] = hash[6] + g >>> 0;
95
+ hash[7] = hash[7] + h >>> 0;
96
+ }
97
+ return Array.from(hash, word => word.toString(16).padStart(8, "0")).join("");
98
+ }
99
+
100
+ /**
101
+ * Browser-safe synchronous SHA-256 for a UTF-8 string.
102
+ *
103
+ * @param {string} text UTF-16 JavaScript string encoded as UTF-8.
104
+ * @returns {string} Lower-case hexadecimal digest.
105
+ */
106
+ function sha256Utf8(text) {
107
+ if (typeof text !== "string") {
108
+ throw new TypeError("SHA-256 input must be a string");
109
+ }
110
+ return sha256Bytes(new TextEncoder().encode(text));
111
+ }
112
+
113
+ export { sha256Bytes, sha256Utf8 };
114
+ //# sourceMappingURL=sha256.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sha256.js","sources":["../../../../src/format/effect/sha256.js"],"sourcesContent":["const SHA256_CONSTANTS = Object.freeze([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n\n/**\n * Rotate one unsigned 32-bit word right.\n *\n * @param {number} value Unsigned word.\n * @param {number} shift Bit count.\n * @returns {number} Rotated word.\n */\nfunction rotateRight(value, shift)\n{\n return (value >>> shift) | (value << (32 - shift));\n}\n\n/**\n * Normalize an exact byte range without copying it.\n *\n * @param {Uint8Array|ArrayBuffer|ArrayBufferView} input Candidate byte range.\n * @returns {Uint8Array} Exact byte view.\n */\nfunction normalizeBytes(input)\n{\n if (input instanceof Uint8Array)\n {\n return input;\n }\n if (input instanceof ArrayBuffer)\n {\n return new Uint8Array(input);\n }\n if (ArrayBuffer.isView(input))\n {\n return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\n }\n throw new TypeError(\n \"SHA-256 input must be Uint8Array, ArrayBuffer, or ArrayBufferView bytes\"\n );\n}\n\n/**\n * Browser-safe synchronous SHA-256 over an exact byte view.\n *\n * @param {Uint8Array|ArrayBuffer|ArrayBufferView} input Bytes to hash.\n * @returns {string} Lower-case hexadecimal digest.\n */\nexport function sha256Bytes(input)\n{\n const inputBytes = normalizeBytes(input);\n const paddedLength = Math.ceil((inputBytes.length + 9) / 64) * 64;\n const bytes = new Uint8Array(paddedLength);\n bytes.set(inputBytes);\n bytes[inputBytes.length] = 0x80;\n let bitLength = BigInt(inputBytes.length) * 8n;\n for (let index = 0; index < 8; index += 1)\n {\n bytes[paddedLength - 1 - index] = Number(bitLength & 0xffn);\n bitLength >>= 8n;\n }\n const hash = new Uint32Array([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ]);\n const schedule = new Uint32Array(64);\n for (let offset = 0; offset < bytes.length; offset += 64)\n {\n for (let index = 0; index < 16; index += 1)\n {\n const word = offset + index * 4;\n schedule[index] = (\n bytes[word] * 0x1000000\n + bytes[word + 1] * 0x10000\n + bytes[word + 2] * 0x100\n + bytes[word + 3]\n ) >>> 0;\n }\n for (let index = 16; index < 64; index += 1)\n {\n const left = schedule[index - 15];\n const right = schedule[index - 2];\n const sigma0 = rotateRight(left, 7)\n ^ rotateRight(left, 18) ^ (left >>> 3);\n const sigma1 = rotateRight(right, 17)\n ^ rotateRight(right, 19) ^ (right >>> 10);\n schedule[index] = (\n schedule[index - 16] + sigma0\n + schedule[index - 7] + sigma1\n ) >>> 0;\n }\n let a = hash[0];\n let b = hash[1];\n let c = hash[2];\n let d = hash[3];\n let e = hash[4];\n let f = hash[5];\n let g = hash[6];\n let h = hash[7];\n for (let index = 0; index < 64; index += 1)\n {\n const sum1 = rotateRight(e, 6)\n ^ rotateRight(e, 11) ^ rotateRight(e, 25);\n const choose = (e & f) ^ (~e & g);\n const temporary1 = (\n h + sum1 + choose\n + SHA256_CONSTANTS[index] + schedule[index]\n ) >>> 0;\n const sum0 = rotateRight(a, 2)\n ^ rotateRight(a, 13) ^ rotateRight(a, 22);\n const majority = (a & b) ^ (a & c) ^ (b & c);\n const temporary2 = (sum0 + majority) >>> 0;\n h = g;\n g = f;\n f = e;\n e = (d + temporary1) >>> 0;\n d = c;\n c = b;\n b = a;\n a = (temporary1 + temporary2) >>> 0;\n }\n hash[0] = (hash[0] + a) >>> 0;\n hash[1] = (hash[1] + b) >>> 0;\n hash[2] = (hash[2] + c) >>> 0;\n hash[3] = (hash[3] + d) >>> 0;\n hash[4] = (hash[4] + e) >>> 0;\n hash[5] = (hash[5] + f) >>> 0;\n hash[6] = (hash[6] + g) >>> 0;\n hash[7] = (hash[7] + h) >>> 0;\n }\n return Array.from(hash, (word) =>\n word.toString(16).padStart(8, \"0\")).join(\"\");\n}\n\n/**\n * Browser-safe synchronous SHA-256 for a UTF-8 string.\n *\n * @param {string} text UTF-16 JavaScript string encoded as UTF-8.\n * @returns {string} Lower-case hexadecimal digest.\n */\nexport function sha256Utf8(text)\n{\n if (typeof text !== \"string\")\n {\n throw new TypeError(\"SHA-256 input must be a string\");\n }\n return sha256Bytes(new TextEncoder().encode(text));\n}\n"],"names":["SHA256_CONSTANTS","Object","freeze","rotateRight","value","shift","normalizeBytes","input","Uint8Array","ArrayBuffer","isView","buffer","byteOffset","byteLength","TypeError","sha256Bytes","inputBytes","paddedLength","Math","ceil","length","bytes","set","bitLength","BigInt","index","Number","hash","Uint32Array","schedule","offset","word","left","right","sigma0","sigma1","a","b","c","d","e","f","g","h","sum1","choose","temporary1","sum0","majority","temporary2","Array","from","toString","padStart","join","sha256Utf8","text","TextEncoder","encode"],"mappings":"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"}
@@ -20,6 +20,11 @@ const ResourcePayloadValues = Object.freeze({
20
20
  alphaModes: Object.freeze(["straight", "premultiplied", "opaque", "unknown"]),
21
21
  textureDimensions: Object.freeze(["2d", "cube", "3d", "array"])
22
22
  });
23
+
24
+ /**
25
+ * Validates dimensions, stride, and byte storage for a decoded RGBA payload for
26
+ * the resource payload contract.
27
+ */
23
28
  function validateRgbaPayload(payload, options = null) {
24
29
  const value = assertObject(payload, "RGBA payload");
25
30
  assertPayloadType(value, ResourcePayloadType.RGBA, "RGBA payload");
@@ -59,6 +64,11 @@ function validateRgbaPayload(payload, options = null) {
59
64
  }
60
65
  return value;
61
66
  }
67
+
68
+ /**
69
+ * Validates the discriminated fields required by a texture payload for the
70
+ * resource payload contract.
71
+ */
62
72
  function validateTexturePayload(payload) {
63
73
  const value = assertObject(payload, "Texture payload");
64
74
  assertPayloadType(value, ResourcePayloadType.TEXTURE, "Texture payload");
@@ -79,6 +89,11 @@ function validateTexturePayload(payload) {
79
89
  }
80
90
  return value;
81
91
  }
92
+
93
+ /**
94
+ * Validates the discriminated fields required by an audio payload for the
95
+ * resource payload contract.
96
+ */
82
97
  function validateAudioPayload(payload) {
83
98
  const value = assertObject(payload, "Audio payload");
84
99
  if (![ResourcePayloadType.AUDIO, ResourcePayloadType.PCM].includes(value.payloadType)) {
@@ -92,6 +107,11 @@ function validateAudioPayload(payload) {
92
107
  assertPositiveOrZeroNumber(value.durationSeconds, "Audio payload.durationSeconds");
93
108
  return value;
94
109
  }
110
+
111
+ /**
112
+ * Validates the discriminated fields required by a video payload for the
113
+ * resource payload contract.
114
+ */
95
115
  function validateVideoPayload(payload) {
96
116
  const value = assertObject(payload, "Video payload");
97
117
  assertPayloadType(value, ResourcePayloadType.VIDEO, "Video payload");
@@ -1 +1 @@
1
- {"version":3,"file":"payloadContract.js","sources":["../../../src/format/payloadContract.js"],"sourcesContent":["/**\n * Canonical semantic payload vocabulary shared by runtime-resource adapters\n * and pure format readers.\n *\n * Format packages may return plain objects matching these shapes without\n * importing runtime-resource. These validators are runtime-side guardrails;\n * they are not file decoders or GPU capability checks.\n */\n\nexport const ResourcePayloadType = Object.freeze({\n RGBA: \"rgba\",\n TEXTURE: \"texture\",\n AUDIO: \"audio\",\n PCM: \"pcm\",\n VIDEO: \"video\"\n});\n\nexport const ResourcePayloadValues = Object.freeze({\n imageOrigins: Object.freeze([ \"top-left\" ]),\n colorSpaces: Object.freeze([ \"srgb\", \"linear\", \"unknown\" ]),\n alphaModes: Object.freeze([ \"straight\", \"premultiplied\", \"opaque\", \"unknown\" ]),\n textureDimensions: Object.freeze([ \"2d\", \"cube\", \"3d\", \"array\" ])\n});\n\nexport function validateRgbaPayload(payload, options = null)\n{\n const value = assertObject(payload, \"RGBA payload\");\n assertPayloadType(value, ResourcePayloadType.RGBA, \"RGBA payload\");\n assertDimensions(value, \"RGBA payload\");\n assertString(value.pixelFormat, \"RGBA payload.pixelFormat\");\n const layout = {\n rgba8unorm: { bytesPerPixel: 4, arrayType: Uint8Array },\n rgba32float: { bytesPerPixel: 16, arrayType: Float32Array }\n }[value.pixelFormat];\n if (!layout)\n {\n throw new TypeError(\"RGBA payload.pixelFormat must be \\\"rgba8unorm\\\" or \\\"rgba32float\\\".\");\n }\n if (!(value.data instanceof layout.arrayType))\n {\n throw new TypeError(`RGBA payload.data must be a ${layout.arrayType.name}.`);\n }\n assertPositiveOrZeroInteger(value.strideBytes, \"RGBA payload.strideBytes\");\n if (value.strideBytes < value.width * layout.bytesPerPixel)\n {\n throw new RangeError(\"RGBA payload.strideBytes is smaller than one RGBA row.\");\n }\n if (value.data.byteLength < value.strideBytes * value.height)\n {\n throw new RangeError(\"RGBA payload.data is shorter than the declared image rows.\");\n }\n if (value.strideBytes % value.data.BYTES_PER_ELEMENT !== 0)\n {\n throw new RangeError(\"RGBA payload.strideBytes must align to its typed-array elements.\");\n }\n assertEnum(value.origin, ResourcePayloadValues.imageOrigins, \"RGBA payload.origin\");\n assertEnum(value.colorSpace, ResourcePayloadValues.colorSpaces, \"RGBA payload.colorSpace\");\n assertEnum(value.alphaMode, ResourcePayloadValues.alphaModes, \"RGBA payload.alphaMode\");\n if (options?.allowMetadata === false && value.metadata !== undefined)\n {\n throw new TypeError(\"RGBA payload.metadata is not allowed for this validation mode.\");\n }\n return value;\n}\n\nexport function validateTexturePayload(payload)\n{\n const value = assertObject(payload, \"Texture payload\");\n assertPayloadType(value, ResourcePayloadType.TEXTURE, \"Texture payload\");\n assertDimensions(value, \"Texture payload\");\n assertEnum(value.dimension, ResourcePayloadValues.textureDimensions, \"Texture payload.dimension\");\n assertString(value.pixelFormat, \"Texture payload.pixelFormat\");\n if (typeof value.isCompressed !== \"boolean\")\n {\n throw new TypeError(\"Texture payload.isCompressed must be boolean.\");\n }\n assertPositiveInteger(value.mipCount, \"Texture payload.mipCount\");\n assertPositiveInteger(value.arraySize, \"Texture payload.arraySize\");\n assertBytes(value.data, \"Texture payload.data\");\n if (!Array.isArray(value.subresources) || value.subresources.length === 0)\n {\n throw new TypeError(\"Texture payload.subresources must be a non-empty array.\");\n }\n for (const [ index, subresource ] of value.subresources.entries())\n {\n validateTextureSubresource(subresource, index, value.data.byteLength);\n }\n return value;\n}\n\nexport function validateAudioPayload(payload)\n{\n const value = assertObject(payload, \"Audio payload\");\n if (![ ResourcePayloadType.AUDIO, ResourcePayloadType.PCM ].includes(value.payloadType))\n {\n throw new TypeError(\"Audio payload.payloadType must be \\\"audio\\\" or \\\"pcm\\\".\");\n }\n assertPositiveInteger(value.sampleRate, \"Audio payload.sampleRate\");\n assertPositiveInteger(value.channels, \"Audio payload.channels\");\n assertPositiveOrZeroInteger(value.frameCount, \"Audio payload.frameCount\");\n assertString(value.sampleFormat, \"Audio payload.sampleFormat\");\n assertBytesOrTypedArray(value.data, \"Audio payload.data\");\n assertPositiveOrZeroNumber(value.durationSeconds, \"Audio payload.durationSeconds\");\n return value;\n}\n\nexport function validateVideoPayload(payload)\n{\n const value = assertObject(payload, \"Video payload\");\n assertPayloadType(value, ResourcePayloadType.VIDEO, \"Video payload\");\n assertString(value.sourceFormat, \"Video payload.sourceFormat\");\n assertPositiveInteger(value.durationTimescale, \"Video payload.durationTimescale\");\n assertPositiveOrZeroInteger(value.duration, \"Video payload.duration\");\n if (!Array.isArray(value.tracks))\n {\n throw new TypeError(\"Video payload.tracks must be an array.\");\n }\n return value;\n}\n\nfunction validateTextureSubresource(value, index, dataByteLength)\n{\n const prefix = `Texture payload.subresources[${index}]`;\n assertObject(value, prefix);\n assertPositiveOrZeroInteger(value.mip, `${prefix}.mip`);\n assertPositiveOrZeroInteger(value.layer, `${prefix}.layer`);\n assertPositiveOrZeroInteger(value.offset, `${prefix}.offset`);\n assertPositiveInteger(value.byteLength, `${prefix}.byteLength`);\n assertPositiveOrZeroInteger(value.width, `${prefix}.width`);\n assertPositiveOrZeroInteger(value.height, `${prefix}.height`);\n assertPositiveOrZeroInteger(value.rowPitch, `${prefix}.rowPitch`);\n assertPositiveOrZeroInteger(value.slicePitch, `${prefix}.slicePitch`);\n if (value.offset + value.byteLength > dataByteLength)\n {\n throw new RangeError(`${prefix} exceeds Texture payload.data.`);\n }\n}\n\nfunction assertObject(value, label)\n{\n if (!value || typeof value !== \"object\" || Array.isArray(value))\n {\n throw new TypeError(`${label} must be an object.`);\n }\n return value;\n}\n\nfunction assertPayloadType(value, expected, label)\n{\n if (value.payloadType !== expected)\n {\n throw new TypeError(`${label}.payloadType must be \\\"${expected}\\\".`);\n }\n}\n\nfunction assertDimensions(value, label)\n{\n assertPositiveInteger(value.width, `${label}.width`);\n assertPositiveInteger(value.height, `${label}.height`);\n}\n\nfunction assertBytes(value, label)\n{\n if (!(value instanceof Uint8Array))\n {\n throw new TypeError(`${label} must be a Uint8Array.`);\n }\n}\n\nfunction assertBytesOrTypedArray(value, label)\n{\n if (!ArrayBuffer.isView(value) || value instanceof DataView)\n {\n throw new TypeError(`${label} must be a typed array.`);\n }\n}\n\nfunction assertString(value, label)\n{\n if (typeof value !== \"string\" || value.length === 0)\n {\n throw new TypeError(`${label} must be a non-empty string.`);\n }\n}\n\nfunction assertEnum(value, allowed, label)\n{\n if (!allowed.includes(value))\n {\n throw new TypeError(`${label} must be one of: ${allowed.join(\", \")}.`);\n }\n}\n\nfunction assertPositiveInteger(value, label)\n{\n if (!Number.isSafeInteger(value) || value <= 0)\n {\n throw new TypeError(`${label} must be a positive safe integer.`);\n }\n}\n\nfunction assertPositiveOrZeroInteger(value, label)\n{\n if (!Number.isSafeInteger(value) || value < 0)\n {\n throw new TypeError(`${label} must be a non-negative safe integer.`);\n }\n}\n\nfunction assertPositiveOrZeroNumber(value, label)\n{\n if (typeof value !== \"number\" || !Number.isFinite(value) || value < 0)\n {\n throw new TypeError(`${label} must be a non-negative finite number.`);\n }\n}\n"],"names":["ResourcePayloadType","Object","freeze","RGBA","TEXTURE","AUDIO","PCM","VIDEO","ResourcePayloadValues","imageOrigins","colorSpaces","alphaModes","textureDimensions","validateRgbaPayload","payload","options","value","assertObject","assertPayloadType","assertDimensions","assertString","pixelFormat","layout","rgba8unorm","bytesPerPixel","arrayType","Uint8Array","rgba32float","Float32Array","TypeError","data","name","assertPositiveOrZeroInteger","strideBytes","width","RangeError","byteLength","height","BYTES_PER_ELEMENT","assertEnum","origin","colorSpace","alphaMode","allowMetadata","metadata","undefined","validateTexturePayload","dimension","isCompressed","assertPositiveInteger","mipCount","arraySize","assertBytes","Array","isArray","subresources","length","index","subresource","entries","validateTextureSubresource","validateAudioPayload","includes","payloadType","sampleRate","channels","frameCount","sampleFormat","assertBytesOrTypedArray","assertPositiveOrZeroNumber","durationSeconds","validateVideoPayload","sourceFormat","durationTimescale","duration","tracks","dataByteLength","prefix","mip","layer","offset","rowPitch","slicePitch","label","expected","ArrayBuffer","isView","DataView","allowed","join","Number","isSafeInteger","isFinite"],"mappings":"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"}
1
+ {"version":3,"file":"payloadContract.js","sources":["../../../src/format/payloadContract.js"],"sourcesContent":["/**\n * Canonical semantic payload vocabulary shared by runtime-resource adapters\n * and pure format readers.\n *\n * Format packages may return plain objects matching these shapes without\n * importing runtime-resource. These validators are runtime-side guardrails;\n * they are not file decoders or GPU capability checks.\n */\n\nexport const ResourcePayloadType = Object.freeze({\n RGBA: \"rgba\",\n TEXTURE: \"texture\",\n AUDIO: \"audio\",\n PCM: \"pcm\",\n VIDEO: \"video\"\n});\n\nexport const ResourcePayloadValues = Object.freeze({\n imageOrigins: Object.freeze([ \"top-left\" ]),\n colorSpaces: Object.freeze([ \"srgb\", \"linear\", \"unknown\" ]),\n alphaModes: Object.freeze([ \"straight\", \"premultiplied\", \"opaque\", \"unknown\" ]),\n textureDimensions: Object.freeze([ \"2d\", \"cube\", \"3d\", \"array\" ])\n});\n\n/**\n * Validates dimensions, stride, and byte storage for a decoded RGBA payload for\n * the resource payload contract.\n */\nexport function validateRgbaPayload(payload, options = null)\n{\n const value = assertObject(payload, \"RGBA payload\");\n assertPayloadType(value, ResourcePayloadType.RGBA, \"RGBA payload\");\n assertDimensions(value, \"RGBA payload\");\n assertString(value.pixelFormat, \"RGBA payload.pixelFormat\");\n const layout = {\n rgba8unorm: { bytesPerPixel: 4, arrayType: Uint8Array },\n rgba32float: { bytesPerPixel: 16, arrayType: Float32Array }\n }[value.pixelFormat];\n if (!layout)\n {\n throw new TypeError(\"RGBA payload.pixelFormat must be \\\"rgba8unorm\\\" or \\\"rgba32float\\\".\");\n }\n if (!(value.data instanceof layout.arrayType))\n {\n throw new TypeError(`RGBA payload.data must be a ${layout.arrayType.name}.`);\n }\n assertPositiveOrZeroInteger(value.strideBytes, \"RGBA payload.strideBytes\");\n if (value.strideBytes < value.width * layout.bytesPerPixel)\n {\n throw new RangeError(\"RGBA payload.strideBytes is smaller than one RGBA row.\");\n }\n if (value.data.byteLength < value.strideBytes * value.height)\n {\n throw new RangeError(\"RGBA payload.data is shorter than the declared image rows.\");\n }\n if (value.strideBytes % value.data.BYTES_PER_ELEMENT !== 0)\n {\n throw new RangeError(\"RGBA payload.strideBytes must align to its typed-array elements.\");\n }\n assertEnum(value.origin, ResourcePayloadValues.imageOrigins, \"RGBA payload.origin\");\n assertEnum(value.colorSpace, ResourcePayloadValues.colorSpaces, \"RGBA payload.colorSpace\");\n assertEnum(value.alphaMode, ResourcePayloadValues.alphaModes, \"RGBA payload.alphaMode\");\n if (options?.allowMetadata === false && value.metadata !== undefined)\n {\n throw new TypeError(\"RGBA payload.metadata is not allowed for this validation mode.\");\n }\n return value;\n}\n\n/**\n * Validates the discriminated fields required by a texture payload for the\n * resource payload contract.\n */\nexport function validateTexturePayload(payload)\n{\n const value = assertObject(payload, \"Texture payload\");\n assertPayloadType(value, ResourcePayloadType.TEXTURE, \"Texture payload\");\n assertDimensions(value, \"Texture payload\");\n assertEnum(value.dimension, ResourcePayloadValues.textureDimensions, \"Texture payload.dimension\");\n assertString(value.pixelFormat, \"Texture payload.pixelFormat\");\n if (typeof value.isCompressed !== \"boolean\")\n {\n throw new TypeError(\"Texture payload.isCompressed must be boolean.\");\n }\n assertPositiveInteger(value.mipCount, \"Texture payload.mipCount\");\n assertPositiveInteger(value.arraySize, \"Texture payload.arraySize\");\n assertBytes(value.data, \"Texture payload.data\");\n if (!Array.isArray(value.subresources) || value.subresources.length === 0)\n {\n throw new TypeError(\"Texture payload.subresources must be a non-empty array.\");\n }\n for (const [ index, subresource ] of value.subresources.entries())\n {\n validateTextureSubresource(subresource, index, value.data.byteLength);\n }\n return value;\n}\n\n/**\n * Validates the discriminated fields required by an audio payload for the\n * resource payload contract.\n */\nexport function validateAudioPayload(payload)\n{\n const value = assertObject(payload, \"Audio payload\");\n if (![ ResourcePayloadType.AUDIO, ResourcePayloadType.PCM ].includes(value.payloadType))\n {\n throw new TypeError(\"Audio payload.payloadType must be \\\"audio\\\" or \\\"pcm\\\".\");\n }\n assertPositiveInteger(value.sampleRate, \"Audio payload.sampleRate\");\n assertPositiveInteger(value.channels, \"Audio payload.channels\");\n assertPositiveOrZeroInteger(value.frameCount, \"Audio payload.frameCount\");\n assertString(value.sampleFormat, \"Audio payload.sampleFormat\");\n assertBytesOrTypedArray(value.data, \"Audio payload.data\");\n assertPositiveOrZeroNumber(value.durationSeconds, \"Audio payload.durationSeconds\");\n return value;\n}\n\n/**\n * Validates the discriminated fields required by a video payload for the\n * resource payload contract.\n */\nexport function validateVideoPayload(payload)\n{\n const value = assertObject(payload, \"Video payload\");\n assertPayloadType(value, ResourcePayloadType.VIDEO, \"Video payload\");\n assertString(value.sourceFormat, \"Video payload.sourceFormat\");\n assertPositiveInteger(value.durationTimescale, \"Video payload.durationTimescale\");\n assertPositiveOrZeroInteger(value.duration, \"Video payload.duration\");\n if (!Array.isArray(value.tracks))\n {\n throw new TypeError(\"Video payload.tracks must be an array.\");\n }\n return value;\n}\n\nfunction validateTextureSubresource(value, index, dataByteLength)\n{\n const prefix = `Texture payload.subresources[${index}]`;\n assertObject(value, prefix);\n assertPositiveOrZeroInteger(value.mip, `${prefix}.mip`);\n assertPositiveOrZeroInteger(value.layer, `${prefix}.layer`);\n assertPositiveOrZeroInteger(value.offset, `${prefix}.offset`);\n assertPositiveInteger(value.byteLength, `${prefix}.byteLength`);\n assertPositiveOrZeroInteger(value.width, `${prefix}.width`);\n assertPositiveOrZeroInteger(value.height, `${prefix}.height`);\n assertPositiveOrZeroInteger(value.rowPitch, `${prefix}.rowPitch`);\n assertPositiveOrZeroInteger(value.slicePitch, `${prefix}.slicePitch`);\n if (value.offset + value.byteLength > dataByteLength)\n {\n throw new RangeError(`${prefix} exceeds Texture payload.data.`);\n }\n}\n\nfunction assertObject(value, label)\n{\n if (!value || typeof value !== \"object\" || Array.isArray(value))\n {\n throw new TypeError(`${label} must be an object.`);\n }\n return value;\n}\n\nfunction assertPayloadType(value, expected, label)\n{\n if (value.payloadType !== expected)\n {\n throw new TypeError(`${label}.payloadType must be \\\"${expected}\\\".`);\n }\n}\n\nfunction assertDimensions(value, label)\n{\n assertPositiveInteger(value.width, `${label}.width`);\n assertPositiveInteger(value.height, `${label}.height`);\n}\n\nfunction assertBytes(value, label)\n{\n if (!(value instanceof Uint8Array))\n {\n throw new TypeError(`${label} must be a Uint8Array.`);\n }\n}\n\nfunction assertBytesOrTypedArray(value, label)\n{\n if (!ArrayBuffer.isView(value) || value instanceof DataView)\n {\n throw new TypeError(`${label} must be a typed array.`);\n }\n}\n\nfunction assertString(value, label)\n{\n if (typeof value !== \"string\" || value.length === 0)\n {\n throw new TypeError(`${label} must be a non-empty string.`);\n }\n}\n\nfunction assertEnum(value, allowed, label)\n{\n if (!allowed.includes(value))\n {\n throw new TypeError(`${label} must be one of: ${allowed.join(\", \")}.`);\n }\n}\n\nfunction assertPositiveInteger(value, label)\n{\n if (!Number.isSafeInteger(value) || value <= 0)\n {\n throw new TypeError(`${label} must be a positive safe integer.`);\n }\n}\n\nfunction assertPositiveOrZeroInteger(value, label)\n{\n if (!Number.isSafeInteger(value) || value < 0)\n {\n throw new TypeError(`${label} must be a non-negative safe integer.`);\n }\n}\n\nfunction assertPositiveOrZeroNumber(value, label)\n{\n if (typeof value !== \"number\" || !Number.isFinite(value) || value < 0)\n {\n throw new TypeError(`${label} must be a non-negative finite number.`);\n }\n}\n"],"names":["ResourcePayloadType","Object","freeze","RGBA","TEXTURE","AUDIO","PCM","VIDEO","ResourcePayloadValues","imageOrigins","colorSpaces","alphaModes","textureDimensions","validateRgbaPayload","payload","options","value","assertObject","assertPayloadType","assertDimensions","assertString","pixelFormat","layout","rgba8unorm","bytesPerPixel","arrayType","Uint8Array","rgba32float","Float32Array","TypeError","data","name","assertPositiveOrZeroInteger","strideBytes","width","RangeError","byteLength","height","BYTES_PER_ELEMENT","assertEnum","origin","colorSpace","alphaMode","allowMetadata","metadata","undefined","validateTexturePayload","dimension","isCompressed","assertPositiveInteger","mipCount","arraySize","assertBytes","Array","isArray","subresources","length","index","subresource","entries","validateTextureSubresource","validateAudioPayload","includes","payloadType","sampleRate","channels","frameCount","sampleFormat","assertBytesOrTypedArray","assertPositiveOrZeroNumber","durationSeconds","validateVideoPayload","sourceFormat","durationTimescale","duration","tracks","dataByteLength","prefix","mip","layer","offset","rowPitch","slicePitch","label","expected","ArrayBuffer","isView","DataView","allowed","join","Number","isSafeInteger","isFinite"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;MAEaA,mBAAmB,GAAGC,MAAM,CAACC,MAAM,CAAC;AAC7CC,EAAAA,IAAI,EAAE,MAAM;AACZC,EAAAA,OAAO,EAAE,SAAS;AAClBC,EAAAA,KAAK,EAAE,OAAO;AACdC,EAAAA,GAAG,EAAE,KAAK;AACVC,EAAAA,KAAK,EAAE;AACX,CAAC;MAEYC,qBAAqB,GAAGP,MAAM,CAACC,MAAM,CAAC;EAC/CO,YAAY,EAAER,MAAM,CAACC,MAAM,CAAC,CAAE,UAAU,CAAE,CAAC;AAC3CQ,EAAAA,WAAW,EAAET,MAAM,CAACC,MAAM,CAAC,CAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAE,CAAC;AAC3DS,EAAAA,UAAU,EAAEV,MAAM,CAACC,MAAM,CAAC,CAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,SAAS,CAAE,CAAC;AAC/EU,EAAAA,iBAAiB,EAAEX,MAAM,CAACC,MAAM,CAAC,CAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAE;AACpE,CAAC;;AAED;AACA;AACA;AACA;AACO,SAASW,mBAAmBA,CAACC,OAAO,EAAEC,OAAO,GAAG,IAAI,EAC3D;AACI,EAAA,MAAMC,KAAK,GAAGC,YAAY,CAACH,OAAO,EAAE,cAAc,CAAC;EACnDI,iBAAiB,CAACF,KAAK,EAAEhB,mBAAmB,CAACG,IAAI,EAAE,cAAc,CAAC;AAClEgB,EAAAA,gBAAgB,CAACH,KAAK,EAAE,cAAc,CAAC;AACvCI,EAAAA,YAAY,CAACJ,KAAK,CAACK,WAAW,EAAE,0BAA0B,CAAC;AAC3D,EAAA,MAAMC,MAAM,GAAG;AACXC,IAAAA,UAAU,EAAE;AAAEC,MAAAA,aAAa,EAAE,CAAC;AAAEC,MAAAA,SAAS,EAAEC;KAAY;AACvDC,IAAAA,WAAW,EAAE;AAAEH,MAAAA,aAAa,EAAE,EAAE;AAAEC,MAAAA,SAAS,EAAEG;AAAa;AAC9D,GAAC,CAACZ,KAAK,CAACK,WAAW,CAAC;EACpB,IAAI,CAACC,MAAM,EACX;AACI,IAAA,MAAM,IAAIO,SAAS,CAAC,qEAAqE,CAAC;AAC9F,EAAA;EACA,IAAI,EAAEb,KAAK,CAACc,IAAI,YAAYR,MAAM,CAACG,SAAS,CAAC,EAC7C;IACI,MAAM,IAAII,SAAS,CAAC,CAAA,4BAAA,EAA+BP,MAAM,CAACG,SAAS,CAACM,IAAI,CAAA,CAAA,CAAG,CAAC;AAChF,EAAA;AACAC,EAAAA,2BAA2B,CAAChB,KAAK,CAACiB,WAAW,EAAE,0BAA0B,CAAC;EAC1E,IAAIjB,KAAK,CAACiB,WAAW,GAAGjB,KAAK,CAACkB,KAAK,GAAGZ,MAAM,CAACE,aAAa,EAC1D;AACI,IAAA,MAAM,IAAIW,UAAU,CAAC,wDAAwD,CAAC;AAClF,EAAA;AACA,EAAA,IAAInB,KAAK,CAACc,IAAI,CAACM,UAAU,GAAGpB,KAAK,CAACiB,WAAW,GAAGjB,KAAK,CAACqB,MAAM,EAC5D;AACI,IAAA,MAAM,IAAIF,UAAU,CAAC,4DAA4D,CAAC;AACtF,EAAA;EACA,IAAInB,KAAK,CAACiB,WAAW,GAAGjB,KAAK,CAACc,IAAI,CAACQ,iBAAiB,KAAK,CAAC,EAC1D;AACI,IAAA,MAAM,IAAIH,UAAU,CAAC,kEAAkE,CAAC;AAC5F,EAAA;EACAI,UAAU,CAACvB,KAAK,CAACwB,MAAM,EAAEhC,qBAAqB,CAACC,YAAY,EAAE,qBAAqB,CAAC;EACnF8B,UAAU,CAACvB,KAAK,CAACyB,UAAU,EAAEjC,qBAAqB,CAACE,WAAW,EAAE,yBAAyB,CAAC;EAC1F6B,UAAU,CAACvB,KAAK,CAAC0B,SAAS,EAAElC,qBAAqB,CAACG,UAAU,EAAE,wBAAwB,CAAC;EACvF,IAAII,OAAO,EAAE4B,aAAa,KAAK,KAAK,IAAI3B,KAAK,CAAC4B,QAAQ,KAAKC,SAAS,EACpE;AACI,IAAA,MAAM,IAAIhB,SAAS,CAAC,gEAAgE,CAAC;AACzF,EAAA;AACA,EAAA,OAAOb,KAAK;AAChB;;AAEA;AACA;AACA;AACA;AACO,SAAS8B,sBAAsBA,CAAChC,OAAO,EAC9C;AACI,EAAA,MAAME,KAAK,GAAGC,YAAY,CAACH,OAAO,EAAE,iBAAiB,CAAC;EACtDI,iBAAiB,CAACF,KAAK,EAAEhB,mBAAmB,CAACI,OAAO,EAAE,iBAAiB,CAAC;AACxEe,EAAAA,gBAAgB,CAACH,KAAK,EAAE,iBAAiB,CAAC;EAC1CuB,UAAU,CAACvB,KAAK,CAAC+B,SAAS,EAAEvC,qBAAqB,CAACI,iBAAiB,EAAE,2BAA2B,CAAC;AACjGQ,EAAAA,YAAY,CAACJ,KAAK,CAACK,WAAW,EAAE,6BAA6B,CAAC;AAC9D,EAAA,IAAI,OAAOL,KAAK,CAACgC,YAAY,KAAK,SAAS,EAC3C;AACI,IAAA,MAAM,IAAInB,SAAS,CAAC,+CAA+C,CAAC;AACxE,EAAA;AACAoB,EAAAA,qBAAqB,CAACjC,KAAK,CAACkC,QAAQ,EAAE,0BAA0B,CAAC;AACjED,EAAAA,qBAAqB,CAACjC,KAAK,CAACmC,SAAS,EAAE,2BAA2B,CAAC;AACnEC,EAAAA,WAAW,CAACpC,KAAK,CAACc,IAAI,EAAE,sBAAsB,CAAC;AAC/C,EAAA,IAAI,CAACuB,KAAK,CAACC,OAAO,CAACtC,KAAK,CAACuC,YAAY,CAAC,IAAIvC,KAAK,CAACuC,YAAY,CAACC,MAAM,KAAK,CAAC,EACzE;AACI,IAAA,MAAM,IAAI3B,SAAS,CAAC,yDAAyD,CAAC;AAClF,EAAA;AACA,EAAA,KAAK,MAAM,CAAE4B,KAAK,EAAEC,WAAW,CAAE,IAAI1C,KAAK,CAACuC,YAAY,CAACI,OAAO,EAAE,EACjE;IACIC,0BAA0B,CAACF,WAAW,EAAED,KAAK,EAAEzC,KAAK,CAACc,IAAI,CAACM,UAAU,CAAC;AACzE,EAAA;AACA,EAAA,OAAOpB,KAAK;AAChB;;AAEA;AACA;AACA;AACA;AACO,SAAS6C,oBAAoBA,CAAC/C,OAAO,EAC5C;AACI,EAAA,MAAME,KAAK,GAAGC,YAAY,CAACH,OAAO,EAAE,eAAe,CAAC;AACpD,EAAA,IAAI,CAAC,CAAEd,mBAAmB,CAACK,KAAK,EAAEL,mBAAmB,CAACM,GAAG,CAAE,CAACwD,QAAQ,CAAC9C,KAAK,CAAC+C,WAAW,CAAC,EACvF;AACI,IAAA,MAAM,IAAIlC,SAAS,CAAC,yDAAyD,CAAC;AAClF,EAAA;AACAoB,EAAAA,qBAAqB,CAACjC,KAAK,CAACgD,UAAU,EAAE,0BAA0B,CAAC;AACnEf,EAAAA,qBAAqB,CAACjC,KAAK,CAACiD,QAAQ,EAAE,wBAAwB,CAAC;AAC/DjC,EAAAA,2BAA2B,CAAChB,KAAK,CAACkD,UAAU,EAAE,0BAA0B,CAAC;AACzE9C,EAAAA,YAAY,CAACJ,KAAK,CAACmD,YAAY,EAAE,4BAA4B,CAAC;AAC9DC,EAAAA,uBAAuB,CAACpD,KAAK,CAACc,IAAI,EAAE,oBAAoB,CAAC;AACzDuC,EAAAA,0BAA0B,CAACrD,KAAK,CAACsD,eAAe,EAAE,+BAA+B,CAAC;AAClF,EAAA,OAAOtD,KAAK;AAChB;;AAEA;AACA;AACA;AACA;AACO,SAASuD,oBAAoBA,CAACzD,OAAO,EAC5C;AACI,EAAA,MAAME,KAAK,GAAGC,YAAY,CAACH,OAAO,EAAE,eAAe,CAAC;EACpDI,iBAAiB,CAACF,KAAK,EAAEhB,mBAAmB,CAACO,KAAK,EAAE,eAAe,CAAC;AACpEa,EAAAA,YAAY,CAACJ,KAAK,CAACwD,YAAY,EAAE,4BAA4B,CAAC;AAC9DvB,EAAAA,qBAAqB,CAACjC,KAAK,CAACyD,iBAAiB,EAAE,iCAAiC,CAAC;AACjFzC,EAAAA,2BAA2B,CAAChB,KAAK,CAAC0D,QAAQ,EAAE,wBAAwB,CAAC;EACrE,IAAI,CAACrB,KAAK,CAACC,OAAO,CAACtC,KAAK,CAAC2D,MAAM,CAAC,EAChC;AACI,IAAA,MAAM,IAAI9C,SAAS,CAAC,wCAAwC,CAAC;AACjE,EAAA;AACA,EAAA,OAAOb,KAAK;AAChB;AAEA,SAAS4C,0BAA0BA,CAAC5C,KAAK,EAAEyC,KAAK,EAAEmB,cAAc,EAChE;AACI,EAAA,MAAMC,MAAM,GAAG,CAAA,6BAAA,EAAgCpB,KAAK,CAAA,CAAA,CAAG;AACvDxC,EAAAA,YAAY,CAACD,KAAK,EAAE6D,MAAM,CAAC;EAC3B7C,2BAA2B,CAAChB,KAAK,CAAC8D,GAAG,EAAE,CAAA,EAAGD,MAAM,MAAM,CAAC;EACvD7C,2BAA2B,CAAChB,KAAK,CAAC+D,KAAK,EAAE,CAAA,EAAGF,MAAM,QAAQ,CAAC;EAC3D7C,2BAA2B,CAAChB,KAAK,CAACgE,MAAM,EAAE,CAAA,EAAGH,MAAM,SAAS,CAAC;EAC7D5B,qBAAqB,CAACjC,KAAK,CAACoB,UAAU,EAAE,CAAA,EAAGyC,MAAM,aAAa,CAAC;EAC/D7C,2BAA2B,CAAChB,KAAK,CAACkB,KAAK,EAAE,CAAA,EAAG2C,MAAM,QAAQ,CAAC;EAC3D7C,2BAA2B,CAAChB,KAAK,CAACqB,MAAM,EAAE,CAAA,EAAGwC,MAAM,SAAS,CAAC;EAC7D7C,2BAA2B,CAAChB,KAAK,CAACiE,QAAQ,EAAE,CAAA,EAAGJ,MAAM,WAAW,CAAC;EACjE7C,2BAA2B,CAAChB,KAAK,CAACkE,UAAU,EAAE,CAAA,EAAGL,MAAM,aAAa,CAAC;EACrE,IAAI7D,KAAK,CAACgE,MAAM,GAAGhE,KAAK,CAACoB,UAAU,GAAGwC,cAAc,EACpD;AACI,IAAA,MAAM,IAAIzC,UAAU,CAAC,CAAA,EAAG0C,MAAM,gCAAgC,CAAC;AACnE,EAAA;AACJ;AAEA,SAAS5D,YAAYA,CAACD,KAAK,EAAEmE,KAAK,EAClC;AACI,EAAA,IAAI,CAACnE,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAIqC,KAAK,CAACC,OAAO,CAACtC,KAAK,CAAC,EAC/D;AACI,IAAA,MAAM,IAAIa,SAAS,CAAC,CAAA,EAAGsD,KAAK,qBAAqB,CAAC;AACtD,EAAA;AACA,EAAA,OAAOnE,KAAK;AAChB;AAEA,SAASE,iBAAiBA,CAACF,KAAK,EAAEoE,QAAQ,EAAED,KAAK,EACjD;AACI,EAAA,IAAInE,KAAK,CAAC+C,WAAW,KAAKqB,QAAQ,EAClC;IACI,MAAM,IAAIvD,SAAS,CAAC,CAAA,EAAGsD,KAAK,CAAA,uBAAA,EAA0BC,QAAQ,KAAK,CAAC;AACxE,EAAA;AACJ;AAEA,SAASjE,gBAAgBA,CAACH,KAAK,EAAEmE,KAAK,EACtC;EACIlC,qBAAqB,CAACjC,KAAK,CAACkB,KAAK,EAAE,CAAA,EAAGiD,KAAK,QAAQ,CAAC;EACpDlC,qBAAqB,CAACjC,KAAK,CAACqB,MAAM,EAAE,CAAA,EAAG8C,KAAK,SAAS,CAAC;AAC1D;AAEA,SAAS/B,WAAWA,CAACpC,KAAK,EAAEmE,KAAK,EACjC;AACI,EAAA,IAAI,EAAEnE,KAAK,YAAYU,UAAU,CAAC,EAClC;AACI,IAAA,MAAM,IAAIG,SAAS,CAAC,CAAA,EAAGsD,KAAK,wBAAwB,CAAC;AACzD,EAAA;AACJ;AAEA,SAASf,uBAAuBA,CAACpD,KAAK,EAAEmE,KAAK,EAC7C;EACI,IAAI,CAACE,WAAW,CAACC,MAAM,CAACtE,KAAK,CAAC,IAAIA,KAAK,YAAYuE,QAAQ,EAC3D;AACI,IAAA,MAAM,IAAI1D,SAAS,CAAC,CAAA,EAAGsD,KAAK,yBAAyB,CAAC;AAC1D,EAAA;AACJ;AAEA,SAAS/D,YAAYA,CAACJ,KAAK,EAAEmE,KAAK,EAClC;EACI,IAAI,OAAOnE,KAAK,KAAK,QAAQ,IAAIA,KAAK,CAACwC,MAAM,KAAK,CAAC,EACnD;AACI,IAAA,MAAM,IAAI3B,SAAS,CAAC,CAAA,EAAGsD,KAAK,8BAA8B,CAAC;AAC/D,EAAA;AACJ;AAEA,SAAS5C,UAAUA,CAACvB,KAAK,EAAEwE,OAAO,EAAEL,KAAK,EACzC;AACI,EAAA,IAAI,CAACK,OAAO,CAAC1B,QAAQ,CAAC9C,KAAK,CAAC,EAC5B;AACI,IAAA,MAAM,IAAIa,SAAS,CAAC,CAAA,EAAGsD,KAAK,CAAA,iBAAA,EAAoBK,OAAO,CAACC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1E,EAAA;AACJ;AAEA,SAASxC,qBAAqBA,CAACjC,KAAK,EAAEmE,KAAK,EAC3C;EACI,IAAI,CAACO,MAAM,CAACC,aAAa,CAAC3E,KAAK,CAAC,IAAIA,KAAK,IAAI,CAAC,EAC9C;AACI,IAAA,MAAM,IAAIa,SAAS,CAAC,CAAA,EAAGsD,KAAK,mCAAmC,CAAC;AACpE,EAAA;AACJ;AAEA,SAASnD,2BAA2BA,CAAChB,KAAK,EAAEmE,KAAK,EACjD;EACI,IAAI,CAACO,MAAM,CAACC,aAAa,CAAC3E,KAAK,CAAC,IAAIA,KAAK,GAAG,CAAC,EAC7C;AACI,IAAA,MAAM,IAAIa,SAAS,CAAC,CAAA,EAAGsD,KAAK,uCAAuC,CAAC;AACxE,EAAA;AACJ;AAEA,SAASd,0BAA0BA,CAACrD,KAAK,EAAEmE,KAAK,EAChD;AACI,EAAA,IAAI,OAAOnE,KAAK,KAAK,QAAQ,IAAI,CAAC0E,MAAM,CAACE,QAAQ,CAAC5E,KAAK,CAAC,IAAIA,KAAK,GAAG,CAAC,EACrE;AACI,IAAA,MAAM,IAAIa,SAAS,CAAC,CAAA,EAAGsD,KAAK,wCAAwC,CAAC;AACzE,EAAA;AACJ;;;;"}
@@ -1,5 +1,5 @@
1
1
  import { CLASS_KEYS } from './core/schema.js';
2
- import { DEFAULT_VALUES, normalizeValues, validateClassKey, validateClass, toJsonValue, OUTPUT_DOCUMENT, OUTPUT_RAW, OUTPUT_RUNTIME, OUTPUT_PAYLOAD, OUTPUT_JSON } from './core/helpers.js';
2
+ import { DEFAULT_VALUES, OUTPUT_JSON, OUTPUT_PAYLOAD, normalizeValues, validateClassKey, validateClass, toJsonValue, OUTPUT_DOCUMENT, OUTPUT_RAW, OUTPUT_RUNTIME } from './core/helpers.js';
3
3
  import { CJS_BLACK_FORMAT_ID, CJS_BLACK_EXTENSION, CJS_BLACK_FOURCC, CJS_BLACK_VERSION } from './core/blackConstants.js';
4
4
  import { CjsBlackReader } from './core/CjsBlackReader.js';
5
5
 
@@ -17,6 +17,18 @@ class CjsBlackFormat {
17
17
  #readerOptions = {};
18
18
  #classes = {};
19
19
 
20
+ /**
21
+ * Plain payload outputs can be decoded in a browser worker. Document and
22
+ * runtime outputs retain class identity and therefore stay on the caller
23
+ * thread.
24
+ */
25
+ static worker = Object.freeze({
26
+ module: import.meta.url,
27
+ exportName: "CjsBlackFormat",
28
+ outputTypes: Object.freeze([OUTPUT_JSON, OUTPUT_PAYLOAD]),
29
+ defaultOutput: OUTPUT_JSON
30
+ });
31
+
20
32
  /**
21
33
  * Create a reusable format profile.
22
34
  *
@@ -263,6 +275,8 @@ class CjsBlackFormat {
263
275
  static inputTypes = Object.freeze(["black"]);
264
276
  static outputTypes = Object.freeze([OUTPUT_JSON, OUTPUT_DOCUMENT, OUTPUT_PAYLOAD, OUTPUT_RUNTIME]);
265
277
  static debugOutputTypes = Object.freeze([OUTPUT_RAW]);
278
+
279
+ /** Provides the one-shot Black copy reader options helper entry point. */
266
280
  static copyReaderOptions(values) {
267
281
  const {
268
282
  emit: _emit,
@@ -1 +1 @@
1
- {"version":3,"file":"CjsBlackFormat.js","sources":["../../../../src/formats/black/CjsBlackFormat.js"],"sourcesContent":["import { CLASS_KEYS } from \"./core/schema.js\";\nimport {\n DEFAULT_VALUES,\n OUTPUT_DOCUMENT,\n OUTPUT_JSON,\n OUTPUT_PAYLOAD,\n OUTPUT_RAW,\n OUTPUT_RUNTIME,\n normalizeValues,\n toJsonValue,\n validateClass,\n validateClassKey\n} from \"./core/helpers.js\";\nimport {\n CJS_BLACK_EXTENSION,\n CJS_BLACK_FORMAT_ID,\n CJS_BLACK_FOURCC,\n CJS_BLACK_VERSION\n} from \"./core/blackConstants.js\";\nimport { CjsBlackReader } from \"./core/CjsBlackReader.js\";\n\nconst FORMAT_NAME = \"CjsBlackFormat\";\n\n/**\n * CarbonEngineJS-facing Black format profile.\n *\n * This package reads public-facing `.black` payload data using CarbonEngineJS\n * canonical schemas or source-shape registries.\n */\nexport class CjsBlackFormat\n{\n\n #emit = DEFAULT_VALUES.emit;\n #schema = DEFAULT_VALUES.schema;\n #readerOptions = {};\n #classes = {};\n\n /**\n * Create a reusable format profile.\n *\n * @param {object} [options] Default format values.\n */\n constructor(options = {})\n {\n this.SetValues(options);\n }\n\n /**\n * Set format values for this reusable profile.\n *\n * @param {object} [options] Values to merge into the profile.\n * @returns {CjsBlackFormat} This format profile.\n */\n SetValues(options = {})\n {\n const values = normalizeValues(this.GetValues(), options, CLASS_KEYS, FORMAT_NAME);\n this.#emit = values.emit;\n this.#schema = values.schema;\n this.#classes = values.classes;\n this.#readerOptions = CjsBlackFormat.copyReaderOptions(values);\n return this;\n }\n\n /**\n * Get this profile's current values, optionally with per-call overrides.\n *\n * @param {object} [options] Optional values to merge into a copy.\n * @returns {object} A copy of the effective values.\n */\n GetValues(options = {})\n {\n return normalizeValues({\n emit: this.#emit,\n schema: this.#schema,\n ...this.#readerOptions,\n classes: this.#classes\n }, options, CLASS_KEYS, FORMAT_NAME);\n }\n\n /**\n * Set multiple runtime class constructors for this profile.\n *\n * @param {object} [classes] Map of Black class names to constructors.\n * @returns {CjsBlackFormat} This format profile.\n */\n SetClasses(classes = {})\n {\n return this.SetValues({ classes });\n }\n\n /**\n * Set one node-class constructor for this profile.\n *\n * @param {string} type Black class name.\n * @param {Function|null|undefined} Class Constructor to use, or nullish to delete.\n * @returns {CjsBlackFormat} This format profile.\n */\n SetClass(type, Class)\n {\n validateClassKey(CLASS_KEYS, type, FORMAT_NAME);\n if (Class === null || Class === undefined)\n {\n delete this.#classes[type];\n return this;\n }\n\n validateClass(CLASS_KEYS, type, Class, FORMAT_NAME);\n this.#classes = { ...this.#classes, [type]: Class };\n return this;\n }\n\n /**\n * Get a configured runtime class constructor.\n *\n * @param {string} type Black class name.\n * @returns {Function|undefined} The registered constructor, if any.\n */\n GetClass(type)\n {\n validateClassKey(CLASS_KEYS, type, FORMAT_NAME);\n return this.#classes[type];\n }\n\n /**\n * Whether this format profile has a constructor registered for a node key.\n *\n * @param {string} type Node class key.\n * @returns {boolean} True when a constructor is registered.\n */\n HasClass(type)\n {\n return !!this.GetClass(type);\n }\n\n /**\n * Read Black data with this profile's values.\n *\n * @param {unknown} input Black format input.\n * @param {object} [options] Per-call value overrides.\n * @returns {object} Public payload output by default.\n */\n Read(input, options = {})\n {\n return CjsBlackFormat.read(input, this.GetValues(options));\n }\n\n /**\n * Read Black data as a neutral document graph for diagnostics.\n *\n * @param {unknown} input Black format input.\n * @param {object} [options] Per-call value overrides.\n * @returns {object} CarbonEngineJS document graph.\n */\n ReadDocument(input, options = {})\n {\n return CjsBlackFormat.readDocument(input, this.GetValues(options));\n }\n\n /**\n * Read Black data as runtime objects or plain source-shaped objects.\n *\n * @param {unknown} input Black format input.\n * @param {object} [options] Per-call value overrides.\n * @returns {object} Runtime read result.\n */\n ReadRuntime(input, options = {})\n {\n return CjsBlackFormat.readRuntime(input, this.GetValues(options));\n }\n\n /**\n * Read Black data as compact public payload JSON.\n *\n * @param {unknown} input Black format input.\n * @param {object} [options] Per-call value overrides.\n * @returns {object} Public payload output.\n */\n ReadPayload(input, options = {})\n {\n return CjsBlackFormat.readPayload(input, this.GetValues(options));\n }\n\n /**\n * Inspect Black data with this profile's values.\n *\n * @param {unknown} input Black format input.\n * @param {object} [options] Per-call value overrides.\n * @returns {object} Plain summary data.\n */\n Inspect(input, options = {})\n {\n return CjsBlackFormat.inspect(input, this.GetValues(options));\n }\n\n /**\n * Convert format output to JSON-compatible data.\n *\n * @param {any} value Format output to convert.\n * @returns {any} Plain JSON-compatible data.\n */\n ToJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * Static one-shot read. Static methods use camelCase by convention.\n *\n * @param {unknown} input Black format input.\n * @param {object} [options] Format values.\n * @returns {object} Format output.\n */\n static read(input, options = {})\n {\n const values = normalizeValues(DEFAULT_VALUES, options, CLASS_KEYS, FORMAT_NAME);\n if (values.emit === OUTPUT_DOCUMENT || values.emit === OUTPUT_RAW) return CjsBlackFormat.readDocument(input, values);\n if (values.emit === OUTPUT_RUNTIME) return CjsBlackFormat.readRuntime(input, values);\n return CjsBlackFormat.readPayload(input, values);\n }\n\n /**\n * Static one-shot document read.\n *\n * @param {unknown} input Black format input.\n * @param {object} [options] Format values.\n * @returns {object} CarbonEngineJS document graph.\n */\n static readDocument(input, options = {})\n {\n return new CjsBlackReader(input, normalizeValues(DEFAULT_VALUES, options, CLASS_KEYS, FORMAT_NAME)).ReadDocument();\n }\n\n /**\n * Static one-shot runtime read.\n *\n * @param {unknown} input Black format input.\n * @param {object} [options] Format values.\n * @returns {object} Runtime read result.\n */\n static readRuntime(input, options = {})\n {\n return new CjsBlackReader(input, normalizeValues(DEFAULT_VALUES, options, CLASS_KEYS, FORMAT_NAME)).ReadRuntime();\n }\n\n /**\n * Static one-shot public payload read.\n *\n * @param {unknown} input Black format input.\n * @param {object} [options] Format values.\n * @returns {object} Public payload output.\n */\n static readPayload(input, options = {})\n {\n return new CjsBlackReader(input, normalizeValues(DEFAULT_VALUES, options, CLASS_KEYS, FORMAT_NAME)).ReadPayload();\n }\n\n /**\n * Static one-shot inspection.\n *\n * @param {unknown} input Black format input.\n * @param {object} [options] Format values.\n * @returns {object} Plain summary data.\n */\n static inspect(input, options = {})\n {\n return new CjsBlackReader(input, normalizeValues(DEFAULT_VALUES, options, CLASS_KEYS, FORMAT_NAME)).Inspect();\n }\n\n /**\n * Static JSON-compatible conversion.\n *\n * @param {any} value Format output to convert.\n * @returns {any} Plain JSON-compatible data.\n */\n static toJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * Emit targets for this format (canonical frozen enum).\n */\n static Output = Object.freeze({\n JSON: OUTPUT_JSON,\n RAW: OUTPUT_RAW,\n DOCUMENT: OUTPUT_DOCUMENT,\n PAYLOAD: OUTPUT_PAYLOAD,\n RUNTIME: OUTPUT_RUNTIME\n });\n static CLASS_KEYS = CLASS_KEYS;\n static id = CJS_BLACK_FORMAT_ID;\n static extensions = Object.freeze([CJS_BLACK_EXTENSION]);\n static fourCC = CJS_BLACK_FOURCC;\n static version = CJS_BLACK_VERSION;\n static type = Object.freeze([ \"data\" ]);\n static mediaTypes = Object.freeze([ \"data\" ]);\n static inputTypes = Object.freeze([ \"black\" ]);\n static outputTypes = Object.freeze([ OUTPUT_JSON, OUTPUT_DOCUMENT, OUTPUT_PAYLOAD, OUTPUT_RUNTIME ]);\n static debugOutputTypes = Object.freeze([ OUTPUT_RAW ]);\n\n static copyReaderOptions(values)\n {\n const {\n emit: _emit,\n schema: _schema,\n classes: _classes,\n ...readerOptions\n } = values;\n return readerOptions;\n }\n\n}\n\nexport default CjsBlackFormat;\n"],"names":["FORMAT_NAME","CjsBlackFormat","DEFAULT_VALUES","emit","schema","constructor","options","SetValues","values","normalizeValues","GetValues","CLASS_KEYS","classes","copyReaderOptions","SetClasses","SetClass","type","Class","validateClassKey","undefined","validateClass","GetClass","HasClass","Read","input","read","ReadDocument","readDocument","ReadRuntime","readRuntime","ReadPayload","readPayload","Inspect","inspect","ToJSON","value","toJsonValue","OUTPUT_DOCUMENT","OUTPUT_RAW","OUTPUT_RUNTIME","CjsBlackReader","toJSON","Output","Object","freeze","JSON","OUTPUT_JSON","RAW","DOCUMENT","PAYLOAD","OUTPUT_PAYLOAD","RUNTIME","id","CJS_BLACK_FORMAT_ID","extensions","CJS_BLACK_EXTENSION","fourCC","CJS_BLACK_FOURCC","version","CJS_BLACK_VERSION","mediaTypes","inputTypes","outputTypes","debugOutputTypes","_emit","_schema","_classes","readerOptions"],"mappings":"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"}
1
+ {"version":3,"file":"CjsBlackFormat.js","sources":["../../../../src/formats/black/CjsBlackFormat.js"],"sourcesContent":["import { CLASS_KEYS } from \"./core/schema.js\";\nimport {\n DEFAULT_VALUES,\n OUTPUT_DOCUMENT,\n OUTPUT_JSON,\n OUTPUT_PAYLOAD,\n OUTPUT_RAW,\n OUTPUT_RUNTIME,\n normalizeValues,\n toJsonValue,\n validateClass,\n validateClassKey\n} from \"./core/helpers.js\";\nimport {\n CJS_BLACK_EXTENSION,\n CJS_BLACK_FORMAT_ID,\n CJS_BLACK_FOURCC,\n CJS_BLACK_VERSION\n} from \"./core/blackConstants.js\";\nimport { CjsBlackReader } from \"./core/CjsBlackReader.js\";\n\nconst FORMAT_NAME = \"CjsBlackFormat\";\n\n/**\n * CarbonEngineJS-facing Black format profile.\n *\n * This package reads public-facing `.black` payload data using CarbonEngineJS\n * canonical schemas or source-shape registries.\n */\nexport class CjsBlackFormat\n{\n\n #emit = DEFAULT_VALUES.emit;\n #schema = DEFAULT_VALUES.schema;\n #readerOptions = {};\n #classes = {};\n\n /**\n * Plain payload outputs can be decoded in a browser worker. Document and\n * runtime outputs retain class identity and therefore stay on the caller\n * thread.\n */\n static worker = Object.freeze({\n module: import.meta.url,\n exportName: \"CjsBlackFormat\",\n outputTypes: Object.freeze([ OUTPUT_JSON, OUTPUT_PAYLOAD ]),\n defaultOutput: OUTPUT_JSON\n });\n\n /**\n * Create a reusable format profile.\n *\n * @param {object} [options] Default format values.\n */\n constructor(options = {})\n {\n this.SetValues(options);\n }\n\n /**\n * Set format values for this reusable profile.\n *\n * @param {object} [options] Values to merge into the profile.\n * @returns {CjsBlackFormat} This format profile.\n */\n SetValues(options = {})\n {\n const values = normalizeValues(this.GetValues(), options, CLASS_KEYS, FORMAT_NAME);\n this.#emit = values.emit;\n this.#schema = values.schema;\n this.#classes = values.classes;\n this.#readerOptions = CjsBlackFormat.copyReaderOptions(values);\n return this;\n }\n\n /**\n * Get this profile's current values, optionally with per-call overrides.\n *\n * @param {object} [options] Optional values to merge into a copy.\n * @returns {object} A copy of the effective values.\n */\n GetValues(options = {})\n {\n return normalizeValues({\n emit: this.#emit,\n schema: this.#schema,\n ...this.#readerOptions,\n classes: this.#classes\n }, options, CLASS_KEYS, FORMAT_NAME);\n }\n\n /**\n * Set multiple runtime class constructors for this profile.\n *\n * @param {object} [classes] Map of Black class names to constructors.\n * @returns {CjsBlackFormat} This format profile.\n */\n SetClasses(classes = {})\n {\n return this.SetValues({ classes });\n }\n\n /**\n * Set one node-class constructor for this profile.\n *\n * @param {string} type Black class name.\n * @param {Function|null|undefined} Class Constructor to use, or nullish to delete.\n * @returns {CjsBlackFormat} This format profile.\n */\n SetClass(type, Class)\n {\n validateClassKey(CLASS_KEYS, type, FORMAT_NAME);\n if (Class === null || Class === undefined)\n {\n delete this.#classes[type];\n return this;\n }\n\n validateClass(CLASS_KEYS, type, Class, FORMAT_NAME);\n this.#classes = { ...this.#classes, [type]: Class };\n return this;\n }\n\n /**\n * Get a configured runtime class constructor.\n *\n * @param {string} type Black class name.\n * @returns {Function|undefined} The registered constructor, if any.\n */\n GetClass(type)\n {\n validateClassKey(CLASS_KEYS, type, FORMAT_NAME);\n return this.#classes[type];\n }\n\n /**\n * Whether this format profile has a constructor registered for a node key.\n *\n * @param {string} type Node class key.\n * @returns {boolean} True when a constructor is registered.\n */\n HasClass(type)\n {\n return !!this.GetClass(type);\n }\n\n /**\n * Read Black data with this profile's values.\n *\n * @param {unknown} input Black format input.\n * @param {object} [options] Per-call value overrides.\n * @returns {object} Public payload output by default.\n */\n Read(input, options = {})\n {\n return CjsBlackFormat.read(input, this.GetValues(options));\n }\n\n /**\n * Read Black data as a neutral document graph for diagnostics.\n *\n * @param {unknown} input Black format input.\n * @param {object} [options] Per-call value overrides.\n * @returns {object} CarbonEngineJS document graph.\n */\n ReadDocument(input, options = {})\n {\n return CjsBlackFormat.readDocument(input, this.GetValues(options));\n }\n\n /**\n * Read Black data as runtime objects or plain source-shaped objects.\n *\n * @param {unknown} input Black format input.\n * @param {object} [options] Per-call value overrides.\n * @returns {object} Runtime read result.\n */\n ReadRuntime(input, options = {})\n {\n return CjsBlackFormat.readRuntime(input, this.GetValues(options));\n }\n\n /**\n * Read Black data as compact public payload JSON.\n *\n * @param {unknown} input Black format input.\n * @param {object} [options] Per-call value overrides.\n * @returns {object} Public payload output.\n */\n ReadPayload(input, options = {})\n {\n return CjsBlackFormat.readPayload(input, this.GetValues(options));\n }\n\n /**\n * Inspect Black data with this profile's values.\n *\n * @param {unknown} input Black format input.\n * @param {object} [options] Per-call value overrides.\n * @returns {object} Plain summary data.\n */\n Inspect(input, options = {})\n {\n return CjsBlackFormat.inspect(input, this.GetValues(options));\n }\n\n /**\n * Convert format output to JSON-compatible data.\n *\n * @param {any} value Format output to convert.\n * @returns {any} Plain JSON-compatible data.\n */\n ToJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * Static one-shot read. Static methods use camelCase by convention.\n *\n * @param {unknown} input Black format input.\n * @param {object} [options] Format values.\n * @returns {object} Format output.\n */\n static read(input, options = {})\n {\n const values = normalizeValues(DEFAULT_VALUES, options, CLASS_KEYS, FORMAT_NAME);\n if (values.emit === OUTPUT_DOCUMENT || values.emit === OUTPUT_RAW) return CjsBlackFormat.readDocument(input, values);\n if (values.emit === OUTPUT_RUNTIME) return CjsBlackFormat.readRuntime(input, values);\n return CjsBlackFormat.readPayload(input, values);\n }\n\n /**\n * Static one-shot document read.\n *\n * @param {unknown} input Black format input.\n * @param {object} [options] Format values.\n * @returns {object} CarbonEngineJS document graph.\n */\n static readDocument(input, options = {})\n {\n return new CjsBlackReader(input, normalizeValues(DEFAULT_VALUES, options, CLASS_KEYS, FORMAT_NAME)).ReadDocument();\n }\n\n /**\n * Static one-shot runtime read.\n *\n * @param {unknown} input Black format input.\n * @param {object} [options] Format values.\n * @returns {object} Runtime read result.\n */\n static readRuntime(input, options = {})\n {\n return new CjsBlackReader(input, normalizeValues(DEFAULT_VALUES, options, CLASS_KEYS, FORMAT_NAME)).ReadRuntime();\n }\n\n /**\n * Static one-shot public payload read.\n *\n * @param {unknown} input Black format input.\n * @param {object} [options] Format values.\n * @returns {object} Public payload output.\n */\n static readPayload(input, options = {})\n {\n return new CjsBlackReader(input, normalizeValues(DEFAULT_VALUES, options, CLASS_KEYS, FORMAT_NAME)).ReadPayload();\n }\n\n /**\n * Static one-shot inspection.\n *\n * @param {unknown} input Black format input.\n * @param {object} [options] Format values.\n * @returns {object} Plain summary data.\n */\n static inspect(input, options = {})\n {\n return new CjsBlackReader(input, normalizeValues(DEFAULT_VALUES, options, CLASS_KEYS, FORMAT_NAME)).Inspect();\n }\n\n /**\n * Static JSON-compatible conversion.\n *\n * @param {any} value Format output to convert.\n * @returns {any} Plain JSON-compatible data.\n */\n static toJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * Emit targets for this format (canonical frozen enum).\n */\n static Output = Object.freeze({\n JSON: OUTPUT_JSON,\n RAW: OUTPUT_RAW,\n DOCUMENT: OUTPUT_DOCUMENT,\n PAYLOAD: OUTPUT_PAYLOAD,\n RUNTIME: OUTPUT_RUNTIME\n });\n static CLASS_KEYS = CLASS_KEYS;\n static id = CJS_BLACK_FORMAT_ID;\n static extensions = Object.freeze([CJS_BLACK_EXTENSION]);\n static fourCC = CJS_BLACK_FOURCC;\n static version = CJS_BLACK_VERSION;\n static type = Object.freeze([ \"data\" ]);\n static mediaTypes = Object.freeze([ \"data\" ]);\n static inputTypes = Object.freeze([ \"black\" ]);\n static outputTypes = Object.freeze([ OUTPUT_JSON, OUTPUT_DOCUMENT, OUTPUT_PAYLOAD, OUTPUT_RUNTIME ]);\n static debugOutputTypes = Object.freeze([ OUTPUT_RAW ]);\n\n /** Provides the one-shot Black copy reader options helper entry point. */\n static copyReaderOptions(values)\n {\n const {\n emit: _emit,\n schema: _schema,\n classes: _classes,\n ...readerOptions\n } = values;\n return readerOptions;\n }\n\n}\n\nexport default CjsBlackFormat;\n"],"names":["FORMAT_NAME","CjsBlackFormat","DEFAULT_VALUES","emit","schema","worker","Object","freeze","module","import","meta","url","exportName","outputTypes","OUTPUT_JSON","OUTPUT_PAYLOAD","defaultOutput","constructor","options","SetValues","values","normalizeValues","GetValues","CLASS_KEYS","classes","copyReaderOptions","SetClasses","SetClass","type","Class","validateClassKey","undefined","validateClass","GetClass","HasClass","Read","input","read","ReadDocument","readDocument","ReadRuntime","readRuntime","ReadPayload","readPayload","Inspect","inspect","ToJSON","value","toJsonValue","OUTPUT_DOCUMENT","OUTPUT_RAW","OUTPUT_RUNTIME","CjsBlackReader","toJSON","Output","JSON","RAW","DOCUMENT","PAYLOAD","RUNTIME","id","CJS_BLACK_FORMAT_ID","extensions","CJS_BLACK_EXTENSION","fourCC","CJS_BLACK_FOURCC","version","CJS_BLACK_VERSION","mediaTypes","inputTypes","debugOutputTypes","_emit","_schema","_classes","readerOptions"],"mappings":"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"}