@carbonenginejs/runtime-resource 0.9.2 → 0.10.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 (324) 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/payloadContract.js +20 -0
  20. package/dist/format/payloadContract.js.map +1 -1
  21. package/dist/formats/black/CjsBlackFormat.js +15 -1
  22. package/dist/formats/black/CjsBlackFormat.js.map +1 -1
  23. package/dist/formats/black/core/CjsBlackBinaryReader.js +103 -0
  24. package/dist/formats/black/core/CjsBlackBinaryReader.js.map +1 -1
  25. package/dist/formats/black/core/CjsBlackPropertyReaders.js +61 -0
  26. package/dist/formats/black/core/CjsBlackPropertyReaders.js.map +1 -1
  27. package/dist/formats/black/core/CjsBlackReader.js +125 -0
  28. package/dist/formats/black/core/CjsBlackReader.js.map +1 -1
  29. package/dist/formats/black/core/CjsBlackSchemaRegistry.js +103 -0
  30. package/dist/formats/black/core/CjsBlackSchemaRegistry.js.map +1 -1
  31. package/dist/formats/black/core/helpers.js +17 -0
  32. package/dist/formats/black/core/helpers.js.map +1 -1
  33. package/dist/formats/bnk/CjsBnkFormat.js +8 -0
  34. package/dist/formats/bnk/CjsBnkFormat.js.map +1 -1
  35. package/dist/formats/bnk/core/helpers.js +20 -0
  36. package/dist/formats/bnk/core/helpers.js.map +1 -1
  37. package/dist/formats/bnk/core/musicNodes.js +40 -3
  38. package/dist/formats/bnk/core/musicNodes.js.map +1 -1
  39. package/dist/formats/bnk/core/soundbanksInfo.js +2 -0
  40. package/dist/formats/bnk/core/soundbanksInfo.js.map +1 -1
  41. package/dist/formats/cmf/core/binary.js +71 -0
  42. package/dist/formats/cmf/core/binary.js.map +1 -1
  43. package/dist/formats/cmf/core/buffers.js +4 -0
  44. package/dist/formats/cmf/core/buffers.js.map +1 -1
  45. package/dist/formats/cmf/core/helpers.js +31 -0
  46. package/dist/formats/cmf/core/helpers.js.map +1 -1
  47. package/dist/formats/cmf/core/schema.js +10 -0
  48. package/dist/formats/cmf/core/schema.js.map +1 -1
  49. package/dist/formats/cmf/core/shared.js +9 -0
  50. package/dist/formats/cmf/core/shared.js.map +1 -1
  51. package/dist/formats/cmf/core/writer.js +54 -0
  52. package/dist/formats/cmf/core/writer.js.map +1 -1
  53. package/dist/formats/dds/core/bc6h.js +10 -0
  54. package/dist/formats/dds/core/bc6h.js.map +1 -1
  55. package/dist/formats/dds/core/bc7.js +16 -0
  56. package/dist/formats/dds/core/bc7.js.map +1 -1
  57. package/dist/formats/dds/core/helpers.js +47 -0
  58. package/dist/formats/dds/core/helpers.js.map +1 -1
  59. package/dist/formats/fbx/core/helpers.js +21 -0
  60. package/dist/formats/fbx/core/helpers.js.map +1 -1
  61. package/dist/formats/flac/CjsFlacFormat.js +49 -0
  62. package/dist/formats/flac/CjsFlacFormat.js.map +1 -1
  63. package/dist/formats/flac/core/helpers.js +20 -0
  64. package/dist/formats/flac/core/helpers.js.map +1 -1
  65. package/dist/formats/gif/CjsGifFormat.js +49 -0
  66. package/dist/formats/gif/CjsGifFormat.js.map +1 -1
  67. package/dist/formats/gif/core/helpers.js +20 -0
  68. package/dist/formats/gif/core/helpers.js.map +1 -1
  69. package/dist/formats/gltf/core/helpers.js +15 -0
  70. package/dist/formats/gltf/core/helpers.js.map +1 -1
  71. package/dist/formats/gltf/core/parser.js +13 -0
  72. package/dist/formats/gltf/core/parser.js.map +1 -1
  73. package/dist/formats/gltf/core/targets.js +10 -0
  74. package/dist/formats/gltf/core/targets.js.map +1 -1
  75. package/dist/formats/gr2/core/bitknit2.js +2 -0
  76. package/dist/formats/gr2/core/bitknit2.js.map +1 -1
  77. package/dist/formats/gr2/core/helpers.js +20 -0
  78. package/dist/formats/gr2/core/helpers.js.map +1 -1
  79. package/dist/formats/gr2/core/targets.js +10 -0
  80. package/dist/formats/gr2/core/targets.js.map +1 -1
  81. package/dist/formats/jpeg/core/helpers.js +52 -0
  82. package/dist/formats/jpeg/core/helpers.js.map +1 -1
  83. package/dist/formats/jpeg/core/jpeg.js +93 -0
  84. package/dist/formats/jpeg/core/jpeg.js.map +1 -1
  85. package/dist/formats/mp3/core/helpers.js +37 -0
  86. package/dist/formats/mp3/core/helpers.js.map +1 -1
  87. package/dist/formats/mp4/core/helpers.js +35 -0
  88. package/dist/formats/mp4/core/helpers.js.map +1 -1
  89. package/dist/formats/ogg/CjsOggFormat.js +49 -0
  90. package/dist/formats/ogg/CjsOggFormat.js.map +1 -1
  91. package/dist/formats/ogg/core/helpers.js +23 -0
  92. package/dist/formats/ogg/core/helpers.js.map +1 -1
  93. package/dist/formats/ogg/core/vorbis.js +13 -0
  94. package/dist/formats/ogg/core/vorbis.js.map +1 -1
  95. package/dist/formats/png/core/helpers.js +52 -0
  96. package/dist/formats/png/core/helpers.js.map +1 -1
  97. package/dist/formats/red/CjsRedFormat.js +2 -0
  98. package/dist/formats/red/CjsRedFormat.js.map +1 -1
  99. package/dist/formats/red/core/CjsRedReader.js +52 -0
  100. package/dist/formats/red/core/CjsRedReader.js.map +1 -1
  101. package/dist/formats/red/core/helpers.js +19 -0
  102. package/dist/formats/red/core/helpers.js.map +1 -1
  103. package/dist/formats/stl/core/stl.js +8 -0
  104. package/dist/formats/stl/core/stl.js.map +1 -1
  105. package/dist/formats/stl/core/targets.js +10 -0
  106. package/dist/formats/stl/core/targets.js.map +1 -1
  107. package/dist/formats/tga/core/helpers.js +47 -0
  108. package/dist/formats/tga/core/helpers.js.map +1 -1
  109. package/dist/formats/wav/core/helpers.js +37 -0
  110. package/dist/formats/wav/core/helpers.js.map +1 -1
  111. package/dist/formats/webm/core/helpers.js +35 -0
  112. package/dist/formats/webm/core/helpers.js.map +1 -1
  113. package/dist/formats/webp/CjsWebpFormat.js +49 -0
  114. package/dist/formats/webp/CjsWebpFormat.js.map +1 -1
  115. package/dist/formats/webp/core/helpers.js +23 -0
  116. package/dist/formats/webp/core/helpers.js.map +1 -1
  117. package/dist/formats/wem/CjsWemFormat.js +8 -0
  118. package/dist/formats/wem/CjsWemFormat.js.map +1 -1
  119. package/dist/formats/wem/core/bitStream.js +2 -0
  120. package/dist/formats/wem/core/bitStream.js.map +1 -1
  121. package/dist/formats/wem/core/helpers.js +20 -0
  122. package/dist/formats/wem/core/helpers.js.map +1 -1
  123. package/dist/formats/yaml/CjsYamlFormat.js +45 -0
  124. package/dist/formats/yaml/CjsYamlFormat.js.map +1 -1
  125. package/dist/formats/yaml/core/CjsYamlReader.js +91 -0
  126. package/dist/formats/yaml/core/CjsYamlReader.js.map +1 -1
  127. package/dist/formats/yaml/core/helpers.js +10 -0
  128. package/dist/formats/yaml/core/helpers.js.map +1 -1
  129. package/dist/index.js +56 -43
  130. package/dist/index.js.map +1 -1
  131. package/dist/{CjsResource.js → resource/CjsResource.js} +232 -17
  132. package/dist/resource/CjsResource.js.map +1 -0
  133. package/dist/{resources → resource}/Tr2LightProfileRes.js +4 -3
  134. package/dist/resource/Tr2LightProfileRes.js.map +1 -0
  135. package/dist/{resources → resource/audio}/AudioGeometryResData.js +1 -1
  136. package/dist/resource/audio/AudioGeometryResData.js.map +1 -0
  137. package/dist/resource/audio/CjsAudioBufferRes.js +86 -0
  138. package/dist/resource/audio/CjsAudioBufferRes.js.map +1 -0
  139. package/dist/resource/audio/CjsAudioRes.js +213 -0
  140. package/dist/resource/audio/CjsAudioRes.js.map +1 -0
  141. package/dist/resource/audio/index.js +4 -0
  142. package/dist/resource/audio/index.js.map +1 -0
  143. package/dist/{resources → resource/geometry}/MeshDecalData.js +1 -1
  144. package/dist/resource/geometry/MeshDecalData.js.map +1 -0
  145. package/dist/{resources → resource/geometry}/MeshDecalLodData.js +1 -1
  146. package/dist/resource/geometry/MeshDecalLodData.js.map +1 -0
  147. package/dist/resource/geometry/TriGeometryRes.js +656 -0
  148. package/dist/resource/geometry/TriGeometryRes.js.map +1 -0
  149. package/dist/{resources → resource/geometry}/TriGeometryResAreaData.js +1 -1
  150. package/dist/resource/geometry/TriGeometryResAreaData.js.map +1 -0
  151. package/dist/{resources → resource/geometry}/TriGeometryResJointData.js +1 -1
  152. package/dist/resource/geometry/TriGeometryResJointData.js.map +1 -0
  153. package/dist/{resources → resource/geometry}/TriGeometryResLodData.js +1 -1
  154. package/dist/resource/geometry/TriGeometryResLodData.js.map +1 -0
  155. package/dist/{resources → resource/geometry}/TriGeometryResMeshData.js +1 -1
  156. package/dist/resource/geometry/TriGeometryResMeshData.js.map +1 -0
  157. package/dist/{resources → resource/geometry}/TriGeometryResSkeletonData.js +1 -1
  158. package/dist/resource/geometry/TriGeometryResSkeletonData.js.map +1 -0
  159. package/dist/{resources → resource/geometry}/TriJointBinding.js +1 -1
  160. package/dist/resource/geometry/TriJointBinding.js.map +1 -0
  161. package/dist/{resources → resource/geometry}/TriMorphTargetGeometryConstants.js +1 -1
  162. package/dist/resource/geometry/TriMorphTargetGeometryConstants.js.map +1 -0
  163. package/dist/{resources → resource/geometry}/TriRtGeometryConstants.js +1 -1
  164. package/dist/resource/geometry/TriRtGeometryConstants.js.map +1 -0
  165. package/dist/{resources → resource/geometry/granny}/GStateBindingCallbackData.js +1 -1
  166. package/dist/resource/geometry/granny/GStateBindingCallbackData.js.map +1 -0
  167. package/dist/{resources → resource/geometry/granny}/Tr2GrannyIntersectionResult.js +1 -1
  168. package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js.map +1 -0
  169. package/dist/{resources → resource/geometry/granny}/Tr2GrannyStateRes.js +6 -5
  170. package/dist/resource/geometry/granny/Tr2GrannyStateRes.js.map +1 -0
  171. package/dist/{resources → resource/geometry/granny}/TriGrannyRes.js +6 -5
  172. package/dist/resource/geometry/granny/TriGrannyRes.js.map +1 -0
  173. package/dist/{resources → resource/geometry/granny}/enums.js +1 -9
  174. package/dist/resource/geometry/granny/enums.js.map +1 -0
  175. package/dist/resource/geometry/granny/index.js +6 -0
  176. package/dist/resource/geometry/granny/index.js.map +1 -0
  177. package/dist/resource/geometry/index.js +17 -0
  178. package/dist/resource/geometry/index.js.map +1 -0
  179. package/dist/resource/index.js +52 -0
  180. package/dist/resource/index.js.map +1 -0
  181. package/dist/resource/resourceBoundary.js +64 -0
  182. package/dist/resource/resourceBoundary.js.map +1 -0
  183. package/dist/resource/shader/Tr2EffectRes.js +420 -0
  184. package/dist/resource/shader/Tr2EffectRes.js.map +1 -0
  185. package/dist/{resources → resource/shader}/Tr2MaterialArea.js +9 -4
  186. package/dist/resource/shader/Tr2MaterialArea.js.map +1 -0
  187. package/dist/{resources → resource/shader}/Tr2MaterialMesh.js +8 -3
  188. package/dist/resource/shader/Tr2MaterialMesh.js.map +1 -0
  189. package/dist/{resources → resource/shader}/Tr2MaterialRes.js +10 -4
  190. package/dist/resource/shader/Tr2MaterialRes.js.map +1 -0
  191. package/dist/resource/shader/Tr2Shader.js +250 -0
  192. package/dist/resource/shader/Tr2Shader.js.map +1 -0
  193. package/dist/{resources → resource/shader}/Tr2ShaderPermutation.js +13 -7
  194. package/dist/resource/shader/Tr2ShaderPermutation.js.map +1 -0
  195. package/dist/resource/shader/index.js +17 -0
  196. package/dist/resource/shader/index.js.map +1 -0
  197. package/dist/resource/shader/portable.js +33 -0
  198. package/dist/resource/shader/portable.js.map +1 -0
  199. package/dist/resource/shader/portableValidation.js +461 -0
  200. package/dist/resource/shader/portableValidation.js.map +1 -0
  201. package/dist/resource/shader/reflection/Tr2EffectConstant.js +100 -0
  202. package/dist/resource/shader/reflection/Tr2EffectConstant.js.map +1 -0
  203. package/dist/resource/shader/reflection/Tr2EffectDefine.js +34 -0
  204. package/dist/resource/shader/reflection/Tr2EffectDefine.js.map +1 -0
  205. package/dist/resource/shader/reflection/Tr2EffectDescription.js +113 -0
  206. package/dist/resource/shader/reflection/Tr2EffectDescription.js.map +1 -0
  207. package/dist/resource/shader/reflection/Tr2EffectLibrary.js +141 -0
  208. package/dist/resource/shader/reflection/Tr2EffectLibrary.js.map +1 -0
  209. package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +107 -0
  210. package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js.map +1 -0
  211. package/dist/resource/shader/reflection/Tr2EffectResource.js +90 -0
  212. package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -0
  213. package/dist/resource/shader/reflection/Tr2EffectStageInput.js +235 -0
  214. package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -0
  215. package/dist/resource/shader/reflection/Tr2EffectTechnique.js +71 -0
  216. package/dist/resource/shader/reflection/Tr2EffectTechnique.js.map +1 -0
  217. package/dist/resource/shader/reflection/Tr2Pass.js +111 -0
  218. package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -0
  219. package/dist/resource/shader/sampler/Tr2SamplerSetup.js +80 -0
  220. package/dist/resource/shader/sampler/Tr2SamplerSetup.js.map +1 -0
  221. package/dist/{texture → resource/texture}/CjsTextureArrayRes.js +83 -6
  222. package/dist/resource/texture/CjsTextureArrayRes.js.map +1 -0
  223. package/dist/{texture/CjsTextureParameterProxy.js → resource/texture/CjsTextureArrayResParameterProxy.js} +56 -10
  224. package/dist/resource/texture/CjsTextureArrayResParameterProxy.js.map +1 -0
  225. package/dist/{resources → resource/texture}/Tr2ImageRes.js +6 -4
  226. package/dist/resource/texture/Tr2ImageRes.js.map +1 -0
  227. package/dist/{resources → resource/texture}/Tr2TextureLodManager.js +3 -1
  228. package/dist/resource/texture/Tr2TextureLodManager.js.map +1 -0
  229. package/dist/{resources → resource/texture}/Tr2TextureLodUpdateRequest.js +1 -1
  230. package/dist/resource/texture/Tr2TextureLodUpdateRequest.js.map +1 -0
  231. package/dist/{resources → resource/texture}/Tr2TexturePackChannel.js +1 -1
  232. package/dist/resource/texture/Tr2TexturePackChannel.js.map +1 -0
  233. package/dist/{resources → resource/texture}/Tr2TexturePipeline.js +6 -4
  234. package/dist/resource/texture/Tr2TexturePipeline.js.map +1 -0
  235. package/dist/{resources → resource/texture}/Tr2TexturePipelineParams.js +1 -1
  236. package/dist/resource/texture/Tr2TexturePipelineParams.js.map +1 -0
  237. package/dist/{resources → resource/texture}/Tr2TexturePipelineStepCompress.js +1 -1
  238. package/dist/resource/texture/Tr2TexturePipelineStepCompress.js.map +1 -0
  239. package/dist/{resources → resource/texture}/Tr2TexturePipelineStepGenerateMips.js +1 -1
  240. package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js.map +1 -0
  241. package/dist/{resources → resource/texture}/Tr2TexturePipelineStepLimitSize.js +1 -1
  242. package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js.map +1 -0
  243. package/dist/{resources → resource/texture}/Tr2TexturePipelineStepLoad.js +1 -1
  244. package/dist/resource/texture/Tr2TexturePipelineStepLoad.js.map +1 -0
  245. package/dist/{resources → resource/texture}/Tr2TexturePipelineStepPack.js +1 -1
  246. package/dist/resource/texture/Tr2TexturePipelineStepPack.js.map +1 -0
  247. package/dist/{resources → resource/texture}/TriTextureRes.js +42 -26
  248. package/dist/resource/texture/TriTextureRes.js.map +1 -0
  249. package/dist/resource/texture/index.js +15 -0
  250. package/dist/resource/texture/index.js.map +1 -0
  251. package/dist/{resources → resource/texture}/texturePipelineBehavior.js +59 -59
  252. package/dist/resource/texture/texturePipelineBehavior.js.map +1 -0
  253. package/dist/worker/CjsResManMainThreadLoader.js +87 -0
  254. package/dist/worker/CjsResManMainThreadLoader.js.map +1 -0
  255. package/dist/worker/CjsResManWorker.js +217 -0
  256. package/dist/worker/CjsResManWorker.js.map +1 -0
  257. package/dist/worker/CjsResManWorkerLoader.js +434 -0
  258. package/dist/worker/CjsResManWorkerLoader.js.map +1 -0
  259. package/dist/worker/protocol.js +12 -0
  260. package/dist/worker/protocol.js.map +1 -0
  261. package/docs/README.md +16 -3
  262. package/docs/architecture.md +39 -16
  263. package/docs/concepts/resource-lifecycle.md +2 -1
  264. package/docs/formats/README.md +4 -0
  265. package/docs/reference/classes/README.md +6 -4
  266. package/docs/reference/classes/audio.md +30 -0
  267. package/docs/reference/classes/core.md +31 -11
  268. package/docs/reference/classes/resources.md +151 -41
  269. package/docs/reference/classes/texture.md +7 -7
  270. package/docs/reference/motherlode-cache.md +17 -0
  271. package/docs/reference/queues.md +9 -1
  272. package/docs/reference/workers.md +135 -0
  273. package/docs/roadmap.md +27 -1
  274. package/package.json +8 -1
  275. package/dist/CjsResManQueue.js.map +0 -1
  276. package/dist/CjsResource.js.map +0 -1
  277. package/dist/CjsResourceSource.js +0 -68
  278. package/dist/CjsResourceSource.js.map +0 -1
  279. package/dist/resourcePath.js +0 -18
  280. package/dist/resourcePath.js.map +0 -1
  281. package/dist/resourceStates.js +0 -9
  282. package/dist/resourceStates.js.map +0 -1
  283. package/dist/resources/AudioGeometryResData.js.map +0 -1
  284. package/dist/resources/GStateBindingCallbackData.js.map +0 -1
  285. package/dist/resources/MeshDecalData.js.map +0 -1
  286. package/dist/resources/MeshDecalLodData.js.map +0 -1
  287. package/dist/resources/Tr2EffectRes.js +0 -71
  288. package/dist/resources/Tr2EffectRes.js.map +0 -1
  289. package/dist/resources/Tr2GrannyIntersectionResult.js.map +0 -1
  290. package/dist/resources/Tr2GrannyStateRes.js.map +0 -1
  291. package/dist/resources/Tr2ImageRes.js.map +0 -1
  292. package/dist/resources/Tr2LightProfileRes.js.map +0 -1
  293. package/dist/resources/Tr2MaterialArea.js.map +0 -1
  294. package/dist/resources/Tr2MaterialMesh.js.map +0 -1
  295. package/dist/resources/Tr2MaterialRes.js.map +0 -1
  296. package/dist/resources/Tr2ShaderPermutation.js.map +0 -1
  297. package/dist/resources/Tr2TextureLodManager.js.map +0 -1
  298. package/dist/resources/Tr2TextureLodUpdateRequest.js.map +0 -1
  299. package/dist/resources/Tr2TexturePackChannel.js.map +0 -1
  300. package/dist/resources/Tr2TexturePipeline.js.map +0 -1
  301. package/dist/resources/Tr2TexturePipelineParams.js.map +0 -1
  302. package/dist/resources/Tr2TexturePipelineStepCompress.js.map +0 -1
  303. package/dist/resources/Tr2TexturePipelineStepGenerateMips.js.map +0 -1
  304. package/dist/resources/Tr2TexturePipelineStepLimitSize.js.map +0 -1
  305. package/dist/resources/Tr2TexturePipelineStepLoad.js.map +0 -1
  306. package/dist/resources/Tr2TexturePipelineStepPack.js.map +0 -1
  307. package/dist/resources/TriGeometryRes.js +0 -239
  308. package/dist/resources/TriGeometryRes.js.map +0 -1
  309. package/dist/resources/TriGeometryResAreaData.js.map +0 -1
  310. package/dist/resources/TriGeometryResJointData.js.map +0 -1
  311. package/dist/resources/TriGeometryResLodData.js.map +0 -1
  312. package/dist/resources/TriGeometryResMeshData.js.map +0 -1
  313. package/dist/resources/TriGeometryResSkeletonData.js.map +0 -1
  314. package/dist/resources/TriGrannyRes.js.map +0 -1
  315. package/dist/resources/TriJointBinding.js.map +0 -1
  316. package/dist/resources/TriMorphTargetGeometryConstants.js.map +0 -1
  317. package/dist/resources/TriRtGeometryConstants.js.map +0 -1
  318. package/dist/resources/TriTextureRes.js.map +0 -1
  319. package/dist/resources/enums.js.map +0 -1
  320. package/dist/resources/resourceBoundary.js +0 -47
  321. package/dist/resources/resourceBoundary.js.map +0 -1
  322. package/dist/resources/texturePipelineBehavior.js.map +0 -1
  323. package/dist/texture/CjsTextureArrayRes.js.map +0 -1
  324. package/dist/texture/CjsTextureParameterProxy.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"CjsBlueReader.js","sources":["../../../src/format/CjsBlueReader.js"],"sourcesContent":["import { resolveHydrationAdapter } from \"@carbonenginejs/runtime-utils/hydration\";\nimport {\n CARBON_TYPE,\n normalizeCarbonTypeDescriptor,\n normalizeCarbonValue\n} from \"@carbonenginejs/runtime-utils/types\";\n\nimport { CjsReader } from \"./CjsReader.js\";\n\n/**\n * Shared output and hydration backend for Blue persistence readers.\n *\n * Transports retain framing, source buffers, reference-token parsing, member\n * decoding, skip/recovery behavior, and format-specific metadata. This backend\n * owns common payload/runtime targets, reference emission, hydration adapter\n * phases, reports, and finalization. It also provides reusable class/shape,\n * descriptor assignment, and normalization helpers for transports that resolve\n * persisted fields through a schema. Red does not opt into that descriptor\n * path yet and retains its lenient named-field behavior.\n */\nexport class CjsBlueReader extends CjsReader\n{\n constructor(options = {}, config = {})\n {\n super({ ...options });\n\n this.schemaRegistry = config.schemaRegistry || null;\n this.schemaShapes = this.schemaRegistry\n ? this.schemaRegistry.createShapeMap(options.schema)\n : new Map();\n this.defaultRegistry = config.defaultRegistry || null;\n this.includeShapeContext = Boolean(config.includeShapeContext);\n this.includeSourceShape = Boolean(config.includeSourceShape);\n this.includeEmptyPayloadType = Boolean(config.includeEmptyPayloadType);\n this.requirePayloadReferenceTarget = Boolean(config.requirePayloadReferenceTarget);\n this.includePayloadValuesField = Boolean(config.includePayloadValuesField);\n this.validatePayloadReservedFields = Boolean(config.validatePayloadReservedFields);\n this.payloadReservedFields = null;\n this.adapter = resolveHydrationAdapter(options);\n this.hydrationOptions = {\n ...options,\n markDirty: false,\n skipUpdate: true,\n skipEvents: true\n };\n this.ResetBlueReadState();\n }\n\n ResetBlueReadState()\n {\n this.reports = [];\n this.runtimeInstances = [];\n }\n\n FinalizeRuntimeInstances()\n {\n for (const record of this.runtimeInstances)\n {\n this.adapter.finalize(\n record.instance,\n this.CreateRuntimeContext(record.kind, record.shape, false)\n );\n }\n }\n\n CreateRuntimeTarget(kind, shape = null)\n {\n const built = this.adapter.construct(\n kind,\n this.CreateRuntimeContext(kind, shape, true, this.options)\n );\n if (built !== undefined) return built;\n\n const ClassConstructor = this.ResolveClass(kind);\n if (ClassConstructor) return new ClassConstructor();\n\n return this.CreateRuntimeFallback(kind, shape);\n }\n\n CreateRuntimeFallback(kind, shape = null)\n {\n const target = { _sourceClassName: this.includeSourceShape ? kind : (kind || null) };\n if (this.includeSourceShape) target._sourceShape = shape || null;\n return target;\n }\n\n ApplyRuntimeValues(target, values, kind, shape = null)\n {\n this.adapter.applyValues(\n target,\n values,\n this.CreateRuntimeContext(kind, shape, true, this.hydrationOptions)\n );\n this.runtimeInstances.push({ instance: target, kind, shape });\n }\n\n CreateRuntimeContext(kind, shape, includeOptions, options = null)\n {\n const context = { kind };\n if (this.includeShapeContext) context.shape = shape;\n if (includeOptions) context.options = options;\n return context;\n }\n\n CreatePayloadTarget(kind)\n {\n const typeField = this.GetPayloadTypeField();\n return typeField && (kind || this.includeEmptyPayloadType) ? { [typeField]: kind } : {};\n }\n\n CreatePayloadReference(targetObject, referenceId)\n {\n const idField = this.GetPayloadIdField();\n const referenceField = this.GetPayloadReferenceField();\n\n if (idField && this.requirePayloadReferenceTarget)\n {\n this.AssignPayloadReferenceId(targetObject, idField, referenceId);\n }\n else if (idField && targetObject && typeof targetObject === \"object\")\n {\n this.AssignPayloadReferenceId(targetObject, idField, referenceId);\n }\n\n return referenceField ? { [referenceField]: referenceId } : targetObject;\n }\n\n GetPayloadTypeField()\n {\n return this.GetPayloadField(\"payloadTypeField\", \"_type\");\n }\n\n GetPayloadIdField()\n {\n return this.GetPayloadField(\"payloadIdField\", \"_id\");\n }\n\n GetPayloadReferenceField()\n {\n return this.GetPayloadField(\"payloadReferenceField\", \"_reference\");\n }\n\n GetPayloadValuesField()\n {\n return this.GetPayloadField(\"payloadValuesField\", \"_values\");\n }\n\n GetPayloadField(name, fallback)\n {\n const value = this.options[name];\n if (!this.validatePayloadReservedFields)\n {\n return value === false ? null : (value || fallback);\n }\n if (value === false) return null;\n if (value === undefined) return fallback;\n if (typeof value === \"string\" && value) return value;\n throw this.PayloadError(\n \"PAYLOAD_MARKER_CONFIGURATION\",\n `${name} must be a non-empty string or false`\n );\n }\n\n ValidatePayloadConfiguration()\n {\n if (!this.validatePayloadReservedFields)\n {\n this.payloadReservedFields = null;\n return;\n }\n\n const fields = [\n [ \"type\", this.GetPayloadTypeField() ],\n [ \"id\", this.GetPayloadIdField() ],\n [ \"reference\", this.GetPayloadReferenceField() ]\n ];\n const idField = this.GetPayloadIdField();\n const referenceField = this.GetPayloadReferenceField();\n const valuesField = this.includePayloadValuesField && idField\n ? this.GetPayloadValuesField()\n : null;\n if (valuesField) fields.push([ \"values\", valuesField ]);\n if (referenceField && !idField)\n {\n throw this.PayloadError(\n \"PAYLOAD_MARKER_CONFIGURATION\",\n \"payloadReferenceField requires payloadIdField\"\n );\n }\n if (idField && this.includePayloadValuesField && !valuesField)\n {\n throw this.PayloadError(\n \"PAYLOAD_MARKER_CONFIGURATION\",\n \"payloadIdField requires payloadValuesField for sequence identity\"\n );\n }\n\n const reserved = new Map();\n for (const [ role, field ] of fields)\n {\n if (!field) continue;\n if (reserved.has(field))\n {\n throw this.PayloadError(\n \"PAYLOAD_MARKER_CONFIGURATION\",\n `payload ${role} field \"${field}\" duplicates the ${reserved.get(field)} field`\n );\n }\n reserved.set(field, role);\n }\n this.payloadReservedFields = reserved;\n }\n\n AssertPayloadFieldAvailable(field)\n {\n if (!this.validatePayloadReservedFields) return;\n if (!this.payloadReservedFields) this.ValidatePayloadConfiguration();\n const role = this.payloadReservedFields.get(field);\n if (!role) return;\n throw this.PayloadError(\n \"PAYLOAD_RESERVED_FIELD_COLLISION\",\n `payload field \"${field}\" is reserved for the ${role} marker`\n );\n }\n\n AssignPayloadValues(targetObject, values)\n {\n for (const [ field, value ] of Object.entries(values))\n {\n this.AssertPayloadFieldAvailable(field);\n this.DefinePayloadProperty(targetObject, field, value);\n }\n }\n\n AssignPayloadReferenceId(targetObject, idField, referenceId)\n {\n if (!Object.hasOwn(targetObject, idField))\n {\n this.DefinePayloadProperty(targetObject, idField, referenceId);\n return;\n }\n if (!this.validatePayloadReservedFields) return;\n if (targetObject[idField] === referenceId) return;\n throw this.PayloadError(\n \"PAYLOAD_RESERVED_FIELD_COLLISION\",\n `payload ID field \"${idField}\" conflicts with reference ${referenceId}`\n );\n }\n\n PayloadError(code, message)\n {\n const error = new TypeError(`${code}: ${message}`);\n error.code = code;\n return error;\n }\n\n DefinePayloadProperty(targetObject, field, value)\n {\n Object.defineProperty(targetObject, field, {\n value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n }\n\n AssignRuntimeFieldValue(targetObject, target, value)\n {\n if (target.unknown)\n {\n targetObject[target.wireName] = value;\n return;\n }\n\n if (target.indexed)\n {\n let current = targetObject[target.field.name];\n if (!current || typeof current !== \"object\")\n {\n current = Number.isInteger(target.index) ? [] : {};\n targetObject[target.field.name] = current;\n }\n\n current[target.key] = this.NormalizeRuntimeFieldValue(value, target.field);\n return;\n }\n\n targetObject[target.field.name] = this.NormalizeRuntimeFieldValue(value, target.field);\n }\n\n AssignPayloadFieldValue(targetObject, target, value)\n {\n this.AssertPayloadFieldAvailable(target.unknown ? target.wireName : target.field.name);\n if (target.unknown)\n {\n if (this.validatePayloadReservedFields)\n {\n this.DefinePayloadProperty(targetObject, target.wireName, value);\n }\n else\n {\n targetObject[target.wireName] = value;\n }\n return;\n }\n\n if (target.indexed)\n {\n let current = this.validatePayloadReservedFields\n ? (Object.hasOwn(targetObject, target.field.name) ? targetObject[target.field.name] : null)\n : targetObject[target.field.name];\n if (!current || typeof current !== \"object\")\n {\n current = Number.isInteger(target.index) ? [] : {};\n if (this.validatePayloadReservedFields)\n {\n this.DefinePayloadProperty(targetObject, target.field.name, current);\n }\n else\n {\n targetObject[target.field.name] = current;\n }\n }\n\n current[target.key] = value;\n return;\n }\n\n if (this.validatePayloadReservedFields)\n {\n this.DefinePayloadProperty(targetObject, target.field.name, value);\n }\n else\n {\n targetObject[target.field.name] = value;\n }\n }\n\n NormalizeRuntimeFieldValue(value, field)\n {\n if (!field) return value;\n\n // Object-graph fields already contain constructed instances. Preserve\n // those identities and normalize only scalar/math leaf values.\n const descriptor = normalizeCarbonTypeDescriptor(field);\n const kind = descriptor.kind;\n\n if (kind === CARBON_TYPE.ARRAY && Array.isArray(value)) return value;\n if ((kind === CARBON_TYPE.OBJECT_REF\n || kind === CARBON_TYPE.STRUCT\n || kind === CARBON_TYPE.RAW_STRUCT\n || kind === CARBON_TYPE.UNKNOWN)\n && value && typeof value === \"object\")\n {\n return value;\n }\n if (CjsBlueReader.isShapeIncompatibleMathArray(value, descriptor)) return value;\n\n return normalizeCarbonValue(value, field);\n }\n\n ResolveSourceShape(kind)\n {\n const registry = this.options.registry || null;\n if (registry?.GetSourceShape) return registry.GetSourceShape(kind);\n\n const sourceShapes = this.options.sourceShapes || null;\n if (sourceShapes?.GetSourceShape) return sourceShapes.GetSourceShape(kind);\n if (sourceShapes)\n {\n const shape = sourceShapes instanceof Map ? sourceShapes.get(kind) : sourceShapes[kind];\n if (shape)\n {\n return this.schemaRegistry?.normalizeShape\n ? this.schemaRegistry.normalizeShape(shape)\n : shape;\n }\n }\n\n return this.schemaShapes.get(kind) || null;\n }\n\n ResolveClass(kind)\n {\n if (!kind) return null;\n\n const classes = this.options.classes || {};\n const Registry = this.options.registry || this.defaultRegistry;\n return classes[kind] || (Registry ? Registry.GetConstructor(kind) : null);\n }\n\n TransformPath(value)\n {\n const handler = this.options.pathHandler;\n return typeof handler === \"function\" ? handler(value) : value;\n }\n\n static isShapeIncompatibleMathArray(value, descriptor)\n {\n const expectedLength = descriptor?.length;\n return Array.isArray(value)\n && Number.isInteger(expectedLength)\n && value.length !== expectedLength;\n }\n}\n\nexport default CjsBlueReader;\n"],"names":["CjsBlueReader","CjsReader","constructor","options","config","schemaRegistry","schemaShapes","createShapeMap","schema","Map","defaultRegistry","includeShapeContext","Boolean","includeSourceShape","includeEmptyPayloadType","requirePayloadReferenceTarget","includePayloadValuesField","validatePayloadReservedFields","payloadReservedFields","adapter","resolveHydrationAdapter","hydrationOptions","markDirty","skipUpdate","skipEvents","ResetBlueReadState","reports","runtimeInstances","FinalizeRuntimeInstances","record","finalize","instance","CreateRuntimeContext","kind","shape","CreateRuntimeTarget","built","construct","undefined","ClassConstructor","ResolveClass","CreateRuntimeFallback","target","_sourceClassName","_sourceShape","ApplyRuntimeValues","values","applyValues","push","includeOptions","context","CreatePayloadTarget","typeField","GetPayloadTypeField","CreatePayloadReference","targetObject","referenceId","idField","GetPayloadIdField","referenceField","GetPayloadReferenceField","AssignPayloadReferenceId","GetPayloadField","GetPayloadValuesField","name","fallback","value","PayloadError","ValidatePayloadConfiguration","fields","valuesField","reserved","role","field","has","get","set","AssertPayloadFieldAvailable","AssignPayloadValues","Object","entries","DefinePayloadProperty","hasOwn","code","message","error","TypeError","defineProperty","enumerable","configurable","writable","AssignRuntimeFieldValue","unknown","wireName","indexed","current","Number","isInteger","index","key","NormalizeRuntimeFieldValue","AssignPayloadFieldValue","descriptor","normalizeCarbonTypeDescriptor","CARBON_TYPE","ARRAY","Array","isArray","OBJECT_REF","STRUCT","RAW_STRUCT","UNKNOWN","isShapeIncompatibleMathArray","normalizeCarbonValue","ResolveSourceShape","registry","GetSourceShape","sourceShapes","normalizeShape","classes","Registry","GetConstructor","TransformPath","handler","pathHandler","expectedLength","length"],"mappings":"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"}
1
+ {"version":3,"file":"CjsBlueReader.js","sources":["../../../src/format/CjsBlueReader.js"],"sourcesContent":["import { resolveHydrationAdapter } from \"@carbonenginejs/runtime-utils/hydration\";\nimport {\n CARBON_TYPE,\n normalizeCarbonTypeDescriptor,\n normalizeCarbonValue\n} from \"@carbonenginejs/runtime-utils/types\";\n\nimport { CjsReader } from \"./CjsReader.js\";\n\n/**\n * Shared output and hydration backend for Blue persistence readers.\n *\n * Transports retain framing, source buffers, reference-token parsing, member\n * decoding, skip/recovery behavior, and format-specific metadata. This backend\n * owns common payload/runtime targets, reference emission, hydration adapter\n * phases, reports, and finalization. It also provides reusable class/shape,\n * descriptor assignment, and normalization helpers for transports that resolve\n * persisted fields through a schema. Red does not opt into that descriptor\n * path yet and retains its lenient named-field behavior.\n */\nexport class CjsBlueReader extends CjsReader\n{\n /**\n * Creates a CjsBlueReader over caller-provided resource bytes and reader\n * options.\n */\n constructor(options = {}, config = {})\n {\n super({ ...options });\n\n this.schemaRegistry = config.schemaRegistry || null;\n this.schemaShapes = this.schemaRegistry\n ? this.schemaRegistry.createShapeMap(options.schema)\n : new Map();\n this.defaultRegistry = config.defaultRegistry || null;\n this.includeShapeContext = Boolean(config.includeShapeContext);\n this.includeSourceShape = Boolean(config.includeSourceShape);\n this.includeEmptyPayloadType = Boolean(config.includeEmptyPayloadType);\n this.requirePayloadReferenceTarget = Boolean(config.requirePayloadReferenceTarget);\n this.includePayloadValuesField = Boolean(config.includePayloadValuesField);\n this.validatePayloadReservedFields = Boolean(config.validatePayloadReservedFields);\n this.payloadReservedFields = null;\n this.adapter = resolveHydrationAdapter(options);\n this.hydrationOptions = {\n ...options,\n markDirty: false,\n skipUpdate: true,\n skipEvents: true\n };\n this.ResetBlueReadState();\n }\n\n /** Clears blue read state before reusing the current Blue graph reader. */\n ResetBlueReadState()\n {\n this.reports = [];\n this.runtimeInstances = [];\n }\n\n /**\n * Finalizes runtime instances after the current Blue graph reader has been\n * read.\n */\n FinalizeRuntimeInstances()\n {\n for (const record of this.runtimeInstances)\n {\n this.adapter.finalize(\n record.instance,\n this.CreateRuntimeContext(record.kind, record.shape, false)\n );\n }\n }\n\n /** Creates runtime target for the current Blue graph reader. */\n CreateRuntimeTarget(kind, shape = null)\n {\n const built = this.adapter.construct(\n kind,\n this.CreateRuntimeContext(kind, shape, true, this.options)\n );\n if (built !== undefined) return built;\n\n const ClassConstructor = this.ResolveClass(kind);\n if (ClassConstructor) return new ClassConstructor();\n\n return this.CreateRuntimeFallback(kind, shape);\n }\n\n /** Creates runtime fallback for the current Blue graph reader. */\n CreateRuntimeFallback(kind, shape = null)\n {\n const target = { _sourceClassName: this.includeSourceShape ? kind : (kind || null) };\n if (this.includeSourceShape) target._sourceShape = shape || null;\n return target;\n }\n\n /** Applies runtime values to the current Blue graph reader. */\n ApplyRuntimeValues(target, values, kind, shape = null)\n {\n this.adapter.applyValues(\n target,\n values,\n this.CreateRuntimeContext(kind, shape, true, this.hydrationOptions)\n );\n this.runtimeInstances.push({ instance: target, kind, shape });\n }\n\n /** Creates runtime context for the current Blue graph reader. */\n CreateRuntimeContext(kind, shape, includeOptions, options = null)\n {\n const context = { kind };\n if (this.includeShapeContext) context.shape = shape;\n if (includeOptions) context.options = options;\n return context;\n }\n\n /** Creates payload target for the current Blue graph reader. */\n CreatePayloadTarget(kind)\n {\n const typeField = this.GetPayloadTypeField();\n return typeField && (kind || this.includeEmptyPayloadType) ? { [typeField]: kind } : {};\n }\n\n /** Creates payload reference for the current Blue graph reader. */\n CreatePayloadReference(targetObject, referenceId)\n {\n const idField = this.GetPayloadIdField();\n const referenceField = this.GetPayloadReferenceField();\n\n if (idField && this.requirePayloadReferenceTarget)\n {\n this.AssignPayloadReferenceId(targetObject, idField, referenceId);\n }\n else if (idField && targetObject && typeof targetObject === \"object\")\n {\n this.AssignPayloadReferenceId(targetObject, idField, referenceId);\n }\n\n return referenceField ? { [referenceField]: referenceId } : targetObject;\n }\n\n /** Returns payload type field from the current Blue graph reader. */\n GetPayloadTypeField()\n {\n return this.GetPayloadField(\"payloadTypeField\", \"_type\");\n }\n\n /** Returns payload ID field from the current Blue graph reader. */\n GetPayloadIdField()\n {\n return this.GetPayloadField(\"payloadIdField\", \"_id\");\n }\n\n /** Returns payload reference field from the current Blue graph reader. */\n GetPayloadReferenceField()\n {\n return this.GetPayloadField(\"payloadReferenceField\", \"_reference\");\n }\n\n /** Returns payload values field from the current Blue graph reader. */\n GetPayloadValuesField()\n {\n return this.GetPayloadField(\"payloadValuesField\", \"_values\");\n }\n\n /** Returns payload field from the current Blue graph reader. */\n GetPayloadField(name, fallback)\n {\n const value = this.options[name];\n if (!this.validatePayloadReservedFields)\n {\n return value === false ? null : (value || fallback);\n }\n if (value === false) return null;\n if (value === undefined) return fallback;\n if (typeof value === \"string\" && value) return value;\n throw this.PayloadError(\n \"PAYLOAD_MARKER_CONFIGURATION\",\n `${name} must be a non-empty string or false`\n );\n }\n\n /**\n * Validates payload configuration against Blue graph reader constraints and\n * throws on failure.\n */\n ValidatePayloadConfiguration()\n {\n if (!this.validatePayloadReservedFields)\n {\n this.payloadReservedFields = null;\n return;\n }\n\n const fields = [\n [ \"type\", this.GetPayloadTypeField() ],\n [ \"id\", this.GetPayloadIdField() ],\n [ \"reference\", this.GetPayloadReferenceField() ]\n ];\n const idField = this.GetPayloadIdField();\n const referenceField = this.GetPayloadReferenceField();\n const valuesField = this.includePayloadValuesField && idField\n ? this.GetPayloadValuesField()\n : null;\n if (valuesField) fields.push([ \"values\", valuesField ]);\n if (referenceField && !idField)\n {\n throw this.PayloadError(\n \"PAYLOAD_MARKER_CONFIGURATION\",\n \"payloadReferenceField requires payloadIdField\"\n );\n }\n if (idField && this.includePayloadValuesField && !valuesField)\n {\n throw this.PayloadError(\n \"PAYLOAD_MARKER_CONFIGURATION\",\n \"payloadIdField requires payloadValuesField for sequence identity\"\n );\n }\n\n const reserved = new Map();\n for (const [ role, field ] of fields)\n {\n if (!field) continue;\n if (reserved.has(field))\n {\n throw this.PayloadError(\n \"PAYLOAD_MARKER_CONFIGURATION\",\n `payload ${role} field \"${field}\" duplicates the ${reserved.get(field)} field`\n );\n }\n reserved.set(field, role);\n }\n this.payloadReservedFields = reserved;\n }\n\n /**\n * Validates payload field available against Blue graph reader constraints\n * and throws on failure.\n */\n AssertPayloadFieldAvailable(field)\n {\n if (!this.validatePayloadReservedFields) return;\n if (!this.payloadReservedFields) this.ValidatePayloadConfiguration();\n const role = this.payloadReservedFields.get(field);\n if (!role) return;\n throw this.PayloadError(\n \"PAYLOAD_RESERVED_FIELD_COLLISION\",\n `payload field \"${field}\" is reserved for the ${role} marker`\n );\n }\n\n /**\n * Assigns payload values while preserving the current Blue graph reader\n * contract.\n */\n AssignPayloadValues(targetObject, values)\n {\n for (const [ field, value ] of Object.entries(values))\n {\n this.AssertPayloadFieldAvailable(field);\n this.DefinePayloadProperty(targetObject, field, value);\n }\n }\n\n /**\n * Assigns payload reference ID while preserving the current Blue graph\n * reader contract.\n */\n AssignPayloadReferenceId(targetObject, idField, referenceId)\n {\n if (!Object.hasOwn(targetObject, idField))\n {\n this.DefinePayloadProperty(targetObject, idField, referenceId);\n return;\n }\n if (!this.validatePayloadReservedFields) return;\n if (targetObject[idField] === referenceId) return;\n throw this.PayloadError(\n \"PAYLOAD_RESERVED_FIELD_COLLISION\",\n `payload ID field \"${idField}\" conflicts with reference ${referenceId}`\n );\n }\n\n /**\n * Creates a payload error annotated with the current graph context for the\n * Blue graph reader.\n */\n PayloadError(code, message)\n {\n const error = new TypeError(`${code}: ${message}`);\n error.code = code;\n return error;\n }\n\n /** Defines payload property on the current Blue graph reader result. */\n DefinePayloadProperty(targetObject, field, value)\n {\n Object.defineProperty(targetObject, field, {\n value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n }\n\n /**\n * Assigns runtime field value while preserving the current Blue graph reader\n * contract.\n */\n AssignRuntimeFieldValue(targetObject, target, value)\n {\n if (target.unknown)\n {\n targetObject[target.wireName] = value;\n return;\n }\n\n if (target.indexed)\n {\n let current = targetObject[target.field.name];\n if (!current || typeof current !== \"object\")\n {\n current = Number.isInteger(target.index) ? [] : {};\n targetObject[target.field.name] = current;\n }\n\n current[target.key] = this.NormalizeRuntimeFieldValue(value, target.field);\n return;\n }\n\n targetObject[target.field.name] = this.NormalizeRuntimeFieldValue(value, target.field);\n }\n\n /**\n * Assigns payload field value while preserving the current Blue graph reader\n * contract.\n */\n AssignPayloadFieldValue(targetObject, target, value)\n {\n this.AssertPayloadFieldAvailable(target.unknown ? target.wireName : target.field.name);\n if (target.unknown)\n {\n if (this.validatePayloadReservedFields)\n {\n this.DefinePayloadProperty(targetObject, target.wireName, value);\n }\n else\n {\n targetObject[target.wireName] = value;\n }\n return;\n }\n\n if (target.indexed)\n {\n let current = this.validatePayloadReservedFields\n ? (Object.hasOwn(targetObject, target.field.name) ? targetObject[target.field.name] : null)\n : targetObject[target.field.name];\n if (!current || typeof current !== \"object\")\n {\n current = Number.isInteger(target.index) ? [] : {};\n if (this.validatePayloadReservedFields)\n {\n this.DefinePayloadProperty(targetObject, target.field.name, current);\n }\n else\n {\n targetObject[target.field.name] = current;\n }\n }\n\n current[target.key] = value;\n return;\n }\n\n if (this.validatePayloadReservedFields)\n {\n this.DefinePayloadProperty(targetObject, target.field.name, value);\n }\n else\n {\n targetObject[target.field.name] = value;\n }\n }\n\n /**\n * Converts runtime field value into the canonical Blue graph reader\n * representation.\n */\n NormalizeRuntimeFieldValue(value, field)\n {\n if (!field) return value;\n\n // Object-graph fields already contain constructed instances. Preserve\n // those identities and normalize only scalar/math leaf values.\n const descriptor = normalizeCarbonTypeDescriptor(field);\n const kind = descriptor.kind;\n\n if (kind === CARBON_TYPE.ARRAY && Array.isArray(value)) return value;\n if ((kind === CARBON_TYPE.OBJECT_REF\n || kind === CARBON_TYPE.STRUCT\n || kind === CARBON_TYPE.RAW_STRUCT\n || kind === CARBON_TYPE.UNKNOWN)\n && value && typeof value === \"object\")\n {\n return value;\n }\n if (CjsBlueReader.isShapeIncompatibleMathArray(value, descriptor)) return value;\n\n return normalizeCarbonValue(value, field);\n }\n\n /** Resolves source shape against the current Blue graph reader. */\n ResolveSourceShape(kind)\n {\n const registry = this.options.registry || null;\n if (registry?.GetSourceShape) return registry.GetSourceShape(kind);\n\n const sourceShapes = this.options.sourceShapes || null;\n if (sourceShapes?.GetSourceShape) return sourceShapes.GetSourceShape(kind);\n if (sourceShapes)\n {\n const shape = sourceShapes instanceof Map ? sourceShapes.get(kind) : sourceShapes[kind];\n if (shape)\n {\n return this.schemaRegistry?.normalizeShape\n ? this.schemaRegistry.normalizeShape(shape)\n : shape;\n }\n }\n\n return this.schemaShapes.get(kind) || null;\n }\n\n /** Resolves class against the current Blue graph reader. */\n ResolveClass(kind)\n {\n if (!kind) return null;\n\n const classes = this.options.classes || {};\n const Registry = this.options.registry || this.defaultRegistry;\n return classes[kind] || (Registry ? Registry.GetConstructor(kind) : null);\n }\n\n /**\n * Applies the configured resource-path transform to a decoded field value\n * for the Blue graph reader.\n */\n TransformPath(value)\n {\n const handler = this.options.pathHandler;\n return typeof handler === \"function\" ? handler(value) : value;\n }\n\n /**\n * Reports whether the current Blue graph reader satisfies shape incompatible\n * math array.\n */\n static isShapeIncompatibleMathArray(value, descriptor)\n {\n const expectedLength = descriptor?.length;\n return Array.isArray(value)\n && Number.isInteger(expectedLength)\n && value.length !== expectedLength;\n }\n}\n\nexport default CjsBlueReader;\n"],"names":["CjsBlueReader","CjsReader","constructor","options","config","schemaRegistry","schemaShapes","createShapeMap","schema","Map","defaultRegistry","includeShapeContext","Boolean","includeSourceShape","includeEmptyPayloadType","requirePayloadReferenceTarget","includePayloadValuesField","validatePayloadReservedFields","payloadReservedFields","adapter","resolveHydrationAdapter","hydrationOptions","markDirty","skipUpdate","skipEvents","ResetBlueReadState","reports","runtimeInstances","FinalizeRuntimeInstances","record","finalize","instance","CreateRuntimeContext","kind","shape","CreateRuntimeTarget","built","construct","undefined","ClassConstructor","ResolveClass","CreateRuntimeFallback","target","_sourceClassName","_sourceShape","ApplyRuntimeValues","values","applyValues","push","includeOptions","context","CreatePayloadTarget","typeField","GetPayloadTypeField","CreatePayloadReference","targetObject","referenceId","idField","GetPayloadIdField","referenceField","GetPayloadReferenceField","AssignPayloadReferenceId","GetPayloadField","GetPayloadValuesField","name","fallback","value","PayloadError","ValidatePayloadConfiguration","fields","valuesField","reserved","role","field","has","get","set","AssertPayloadFieldAvailable","AssignPayloadValues","Object","entries","DefinePayloadProperty","hasOwn","code","message","error","TypeError","defineProperty","enumerable","configurable","writable","AssignRuntimeFieldValue","unknown","wireName","indexed","current","Number","isInteger","index","key","NormalizeRuntimeFieldValue","AssignPayloadFieldValue","descriptor","normalizeCarbonTypeDescriptor","CARBON_TYPE","ARRAY","Array","isArray","OBJECT_REF","STRUCT","RAW_STRUCT","UNKNOWN","isShapeIncompatibleMathArray","normalizeCarbonValue","ResolveSourceShape","registry","GetSourceShape","sourceShapes","normalizeShape","classes","Registry","GetConstructor","TransformPath","handler","pathHandler","expectedLength","length"],"mappings":";;;;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,aAAa,SAASC,SAAS,CAC5C;AACI;AACJ;AACA;AACA;EACIC,WAAWA,CAACC,OAAO,GAAG,EAAE,EAAEC,MAAM,GAAG,EAAE,EACrC;AACI,IAAA,KAAK,CAAC;MAAE,GAAGD;AAAQ,KAAC,CAAC;AAErB,IAAA,IAAI,CAACE,cAAc,GAAGD,MAAM,CAACC,cAAc,IAAI,IAAI;IACnD,IAAI,CAACC,YAAY,GAAG,IAAI,CAACD,cAAc,GACjC,IAAI,CAACA,cAAc,CAACE,cAAc,CAACJ,OAAO,CAACK,MAAM,CAAC,GAClD,IAAIC,GAAG,EAAE;AACf,IAAA,IAAI,CAACC,eAAe,GAAGN,MAAM,CAACM,eAAe,IAAI,IAAI;IACrD,IAAI,CAACC,mBAAmB,GAAGC,OAAO,CAACR,MAAM,CAACO,mBAAmB,CAAC;IAC9D,IAAI,CAACE,kBAAkB,GAAGD,OAAO,CAACR,MAAM,CAACS,kBAAkB,CAAC;IAC5D,IAAI,CAACC,uBAAuB,GAAGF,OAAO,CAACR,MAAM,CAACU,uBAAuB,CAAC;IACtE,IAAI,CAACC,6BAA6B,GAAGH,OAAO,CAACR,MAAM,CAACW,6BAA6B,CAAC;IAClF,IAAI,CAACC,yBAAyB,GAAGJ,OAAO,CAACR,MAAM,CAACY,yBAAyB,CAAC;IAC1E,IAAI,CAACC,6BAA6B,GAAGL,OAAO,CAACR,MAAM,CAACa,6BAA6B,CAAC;IAClF,IAAI,CAACC,qBAAqB,GAAG,IAAI;AACjC,IAAA,IAAI,CAACC,OAAO,GAAGC,uBAAuB,CAACjB,OAAO,CAAC;IAC/C,IAAI,CAACkB,gBAAgB,GAAG;AACpB,MAAA,GAAGlB,OAAO;AACVmB,MAAAA,SAAS,EAAE,KAAK;AAChBC,MAAAA,UAAU,EAAE,IAAI;AAChBC,MAAAA,UAAU,EAAE;KACf;IACD,IAAI,CAACC,kBAAkB,EAAE;AAC7B,EAAA;;AAEA;AACAA,EAAAA,kBAAkBA,GAClB;IACI,IAAI,CAACC,OAAO,GAAG,EAAE;IACjB,IAAI,CAACC,gBAAgB,GAAG,EAAE;AAC9B,EAAA;;AAEA;AACJ;AACA;AACA;AACIC,EAAAA,wBAAwBA,GACxB;AACI,IAAA,KAAK,MAAMC,MAAM,IAAI,IAAI,CAACF,gBAAgB,EAC1C;MACI,IAAI,CAACR,OAAO,CAACW,QAAQ,CACjBD,MAAM,CAACE,QAAQ,EACf,IAAI,CAACC,oBAAoB,CAACH,MAAM,CAACI,IAAI,EAAEJ,MAAM,CAACK,KAAK,EAAE,KAAK,CAC9D,CAAC;AACL,IAAA;AACJ,EAAA;;AAEA;AACAC,EAAAA,mBAAmBA,CAACF,IAAI,EAAEC,KAAK,GAAG,IAAI,EACtC;IACI,MAAME,KAAK,GAAG,IAAI,CAACjB,OAAO,CAACkB,SAAS,CAChCJ,IAAI,EACJ,IAAI,CAACD,oBAAoB,CAACC,IAAI,EAAEC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC/B,OAAO,CAC7D,CAAC;AACD,IAAA,IAAIiC,KAAK,KAAKE,SAAS,EAAE,OAAOF,KAAK;AAErC,IAAA,MAAMG,gBAAgB,GAAG,IAAI,CAACC,YAAY,CAACP,IAAI,CAAC;AAChD,IAAA,IAAIM,gBAAgB,EAAE,OAAO,IAAIA,gBAAgB,EAAE;AAEnD,IAAA,OAAO,IAAI,CAACE,qBAAqB,CAACR,IAAI,EAAEC,KAAK,CAAC;AAClD,EAAA;;AAEA;AACAO,EAAAA,qBAAqBA,CAACR,IAAI,EAAEC,KAAK,GAAG,IAAI,EACxC;AACI,IAAA,MAAMQ,MAAM,GAAG;MAAEC,gBAAgB,EAAE,IAAI,CAAC9B,kBAAkB,GAAGoB,IAAI,GAAIA,IAAI,IAAI;KAAO;IACpF,IAAI,IAAI,CAACpB,kBAAkB,EAAE6B,MAAM,CAACE,YAAY,GAAGV,KAAK,IAAI,IAAI;AAChE,IAAA,OAAOQ,MAAM;AACjB,EAAA;;AAEA;EACAG,kBAAkBA,CAACH,MAAM,EAAEI,MAAM,EAAEb,IAAI,EAAEC,KAAK,GAAG,IAAI,EACrD;IACI,IAAI,CAACf,OAAO,CAAC4B,WAAW,CACpBL,MAAM,EACNI,MAAM,EACN,IAAI,CAACd,oBAAoB,CAACC,IAAI,EAAEC,KAAK,EAAE,IAAI,EAAE,IAAI,CAACb,gBAAgB,CACtE,CAAC;AACD,IAAA,IAAI,CAACM,gBAAgB,CAACqB,IAAI,CAAC;AAAEjB,MAAAA,QAAQ,EAAEW,MAAM;MAAET,IAAI;AAAEC,MAAAA;AAAM,KAAC,CAAC;AACjE,EAAA;;AAEA;EACAF,oBAAoBA,CAACC,IAAI,EAAEC,KAAK,EAAEe,cAAc,EAAE9C,OAAO,GAAG,IAAI,EAChE;AACI,IAAA,MAAM+C,OAAO,GAAG;AAAEjB,MAAAA;KAAM;IACxB,IAAI,IAAI,CAACtB,mBAAmB,EAAEuC,OAAO,CAAChB,KAAK,GAAGA,KAAK;AACnD,IAAA,IAAIe,cAAc,EAAEC,OAAO,CAAC/C,OAAO,GAAGA,OAAO;AAC7C,IAAA,OAAO+C,OAAO;AAClB,EAAA;;AAEA;EACAC,mBAAmBA,CAAClB,IAAI,EACxB;AACI,IAAA,MAAMmB,SAAS,GAAG,IAAI,CAACC,mBAAmB,EAAE;IAC5C,OAAOD,SAAS,KAAKnB,IAAI,IAAI,IAAI,CAACnB,uBAAuB,CAAC,GAAG;AAAE,MAAA,CAACsC,SAAS,GAAGnB;KAAM,GAAG,EAAE;AAC3F,EAAA;;AAEA;AACAqB,EAAAA,sBAAsBA,CAACC,YAAY,EAAEC,WAAW,EAChD;AACI,IAAA,MAAMC,OAAO,GAAG,IAAI,CAACC,iBAAiB,EAAE;AACxC,IAAA,MAAMC,cAAc,GAAG,IAAI,CAACC,wBAAwB,EAAE;AAEtD,IAAA,IAAIH,OAAO,IAAI,IAAI,CAAC1C,6BAA6B,EACjD;MACI,IAAI,CAAC8C,wBAAwB,CAACN,YAAY,EAAEE,OAAO,EAAED,WAAW,CAAC;IACrE,CAAC,MACI,IAAIC,OAAO,IAAIF,YAAY,IAAI,OAAOA,YAAY,KAAK,QAAQ,EACpE;MACI,IAAI,CAACM,wBAAwB,CAACN,YAAY,EAAEE,OAAO,EAAED,WAAW,CAAC;AACrE,IAAA;AAEA,IAAA,OAAOG,cAAc,GAAG;AAAE,MAAA,CAACA,cAAc,GAAGH;AAAY,KAAC,GAAGD,YAAY;AAC5E,EAAA;;AAEA;AACAF,EAAAA,mBAAmBA,GACnB;AACI,IAAA,OAAO,IAAI,CAACS,eAAe,CAAC,kBAAkB,EAAE,OAAO,CAAC;AAC5D,EAAA;;AAEA;AACAJ,EAAAA,iBAAiBA,GACjB;AACI,IAAA,OAAO,IAAI,CAACI,eAAe,CAAC,gBAAgB,EAAE,KAAK,CAAC;AACxD,EAAA;;AAEA;AACAF,EAAAA,wBAAwBA,GACxB;AACI,IAAA,OAAO,IAAI,CAACE,eAAe,CAAC,uBAAuB,EAAE,YAAY,CAAC;AACtE,EAAA;;AAEA;AACAC,EAAAA,qBAAqBA,GACrB;AACI,IAAA,OAAO,IAAI,CAACD,eAAe,CAAC,oBAAoB,EAAE,SAAS,CAAC;AAChE,EAAA;;AAEA;AACAA,EAAAA,eAAeA,CAACE,IAAI,EAAEC,QAAQ,EAC9B;AACI,IAAA,MAAMC,KAAK,GAAG,IAAI,CAAC/D,OAAO,CAAC6D,IAAI,CAAC;AAChC,IAAA,IAAI,CAAC,IAAI,CAAC/C,6BAA6B,EACvC;MACI,OAAOiD,KAAK,KAAK,KAAK,GAAG,IAAI,GAAIA,KAAK,IAAID,QAAS;AACvD,IAAA;AACA,IAAA,IAAIC,KAAK,KAAK,KAAK,EAAE,OAAO,IAAI;AAChC,IAAA,IAAIA,KAAK,KAAK5B,SAAS,EAAE,OAAO2B,QAAQ;IACxC,IAAI,OAAOC,KAAK,KAAK,QAAQ,IAAIA,KAAK,EAAE,OAAOA,KAAK;IACpD,MAAM,IAAI,CAACC,YAAY,CACnB,8BAA8B,EAC9B,CAAA,EAAGH,IAAI,CAAA,oCAAA,CACX,CAAC;AACL,EAAA;;AAEA;AACJ;AACA;AACA;AACII,EAAAA,4BAA4BA,GAC5B;AACI,IAAA,IAAI,CAAC,IAAI,CAACnD,6BAA6B,EACvC;MACI,IAAI,CAACC,qBAAqB,GAAG,IAAI;AACjC,MAAA;AACJ,IAAA;AAEA,IAAA,MAAMmD,MAAM,GAAG,CACX,CAAE,MAAM,EAAE,IAAI,CAAChB,mBAAmB,EAAE,CAAE,EACtC,CAAE,IAAI,EAAE,IAAI,CAACK,iBAAiB,EAAE,CAAE,EAClC,CAAE,WAAW,EAAE,IAAI,CAACE,wBAAwB,EAAE,CAAE,CACnD;AACD,IAAA,MAAMH,OAAO,GAAG,IAAI,CAACC,iBAAiB,EAAE;AACxC,IAAA,MAAMC,cAAc,GAAG,IAAI,CAACC,wBAAwB,EAAE;AACtD,IAAA,MAAMU,WAAW,GAAG,IAAI,CAACtD,yBAAyB,IAAIyC,OAAO,GACvD,IAAI,CAACM,qBAAqB,EAAE,GAC5B,IAAI;IACV,IAAIO,WAAW,EAAED,MAAM,CAACrB,IAAI,CAAC,CAAE,QAAQ,EAAEsB,WAAW,CAAE,CAAC;AACvD,IAAA,IAAIX,cAAc,IAAI,CAACF,OAAO,EAC9B;AACI,MAAA,MAAM,IAAI,CAACU,YAAY,CACnB,8BAA8B,EAC9B,+CACJ,CAAC;AACL,IAAA;IACA,IAAIV,OAAO,IAAI,IAAI,CAACzC,yBAAyB,IAAI,CAACsD,WAAW,EAC7D;AACI,MAAA,MAAM,IAAI,CAACH,YAAY,CACnB,8BAA8B,EAC9B,kEACJ,CAAC;AACL,IAAA;AAEA,IAAA,MAAMI,QAAQ,GAAG,IAAI9D,GAAG,EAAE;IAC1B,KAAK,MAAM,CAAE+D,IAAI,EAAEC,KAAK,CAAE,IAAIJ,MAAM,EACpC;MACI,IAAI,CAACI,KAAK,EAAE;AACZ,MAAA,IAAIF,QAAQ,CAACG,GAAG,CAACD,KAAK,CAAC,EACvB;AACI,QAAA,MAAM,IAAI,CAACN,YAAY,CACnB,8BAA8B,EAC9B,WAAWK,IAAI,CAAA,QAAA,EAAWC,KAAK,CAAA,iBAAA,EAAoBF,QAAQ,CAACI,GAAG,CAACF,KAAK,CAAC,QAC1E,CAAC;AACL,MAAA;AACAF,MAAAA,QAAQ,CAACK,GAAG,CAACH,KAAK,EAAED,IAAI,CAAC;AAC7B,IAAA;IACA,IAAI,CAACtD,qBAAqB,GAAGqD,QAAQ;AACzC,EAAA;;AAEA;AACJ;AACA;AACA;EACIM,2BAA2BA,CAACJ,KAAK,EACjC;AACI,IAAA,IAAI,CAAC,IAAI,CAACxD,6BAA6B,EAAE;IACzC,IAAI,CAAC,IAAI,CAACC,qBAAqB,EAAE,IAAI,CAACkD,4BAA4B,EAAE;IACpE,MAAMI,IAAI,GAAG,IAAI,CAACtD,qBAAqB,CAACyD,GAAG,CAACF,KAAK,CAAC;IAClD,IAAI,CAACD,IAAI,EAAE;IACX,MAAM,IAAI,CAACL,YAAY,CACnB,kCAAkC,EAClC,CAAA,eAAA,EAAkBM,KAAK,CAAA,sBAAA,EAAyBD,IAAI,CAAA,OAAA,CACxD,CAAC;AACL,EAAA;;AAEA;AACJ;AACA;AACA;AACIM,EAAAA,mBAAmBA,CAACvB,YAAY,EAAET,MAAM,EACxC;AACI,IAAA,KAAK,MAAM,CAAE2B,KAAK,EAAEP,KAAK,CAAE,IAAIa,MAAM,CAACC,OAAO,CAAClC,MAAM,CAAC,EACrD;AACI,MAAA,IAAI,CAAC+B,2BAA2B,CAACJ,KAAK,CAAC;MACvC,IAAI,CAACQ,qBAAqB,CAAC1B,YAAY,EAAEkB,KAAK,EAAEP,KAAK,CAAC;AAC1D,IAAA;AACJ,EAAA;;AAEA;AACJ;AACA;AACA;AACIL,EAAAA,wBAAwBA,CAACN,YAAY,EAAEE,OAAO,EAAED,WAAW,EAC3D;IACI,IAAI,CAACuB,MAAM,CAACG,MAAM,CAAC3B,YAAY,EAAEE,OAAO,CAAC,EACzC;MACI,IAAI,CAACwB,qBAAqB,CAAC1B,YAAY,EAAEE,OAAO,EAAED,WAAW,CAAC;AAC9D,MAAA;AACJ,IAAA;AACA,IAAA,IAAI,CAAC,IAAI,CAACvC,6BAA6B,EAAE;AACzC,IAAA,IAAIsC,YAAY,CAACE,OAAO,CAAC,KAAKD,WAAW,EAAE;IAC3C,MAAM,IAAI,CAACW,YAAY,CACnB,kCAAkC,EAClC,CAAA,kBAAA,EAAqBV,OAAO,CAAA,2BAAA,EAA8BD,WAAW,CAAA,CACzE,CAAC;AACL,EAAA;;AAEA;AACJ;AACA;AACA;AACIW,EAAAA,YAAYA,CAACgB,IAAI,EAAEC,OAAO,EAC1B;IACI,MAAMC,KAAK,GAAG,IAAIC,SAAS,CAAC,GAAGH,IAAI,CAAA,EAAA,EAAKC,OAAO,CAAA,CAAE,CAAC;IAClDC,KAAK,CAACF,IAAI,GAAGA,IAAI;AACjB,IAAA,OAAOE,KAAK;AAChB,EAAA;;AAEA;AACAJ,EAAAA,qBAAqBA,CAAC1B,YAAY,EAAEkB,KAAK,EAAEP,KAAK,EAChD;AACIa,IAAAA,MAAM,CAACQ,cAAc,CAAChC,YAAY,EAAEkB,KAAK,EAAE;MACvCP,KAAK;AACLsB,MAAAA,UAAU,EAAE,IAAI;AAChBC,MAAAA,YAAY,EAAE,IAAI;AAClBC,MAAAA,QAAQ,EAAE;AACd,KAAC,CAAC;AACN,EAAA;;AAEA;AACJ;AACA;AACA;AACIC,EAAAA,uBAAuBA,CAACpC,YAAY,EAAEb,MAAM,EAAEwB,KAAK,EACnD;IACI,IAAIxB,MAAM,CAACkD,OAAO,EAClB;AACIrC,MAAAA,YAAY,CAACb,MAAM,CAACmD,QAAQ,CAAC,GAAG3B,KAAK;AACrC,MAAA;AACJ,IAAA;IAEA,IAAIxB,MAAM,CAACoD,OAAO,EAClB;MACI,IAAIC,OAAO,GAAGxC,YAAY,CAACb,MAAM,CAAC+B,KAAK,CAACT,IAAI,CAAC;AAC7C,MAAA,IAAI,CAAC+B,OAAO,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAC3C;AACIA,QAAAA,OAAO,GAAGC,MAAM,CAACC,SAAS,CAACvD,MAAM,CAACwD,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;QAClD3C,YAAY,CAACb,MAAM,CAAC+B,KAAK,CAACT,IAAI,CAAC,GAAG+B,OAAO;AAC7C,MAAA;AAEAA,MAAAA,OAAO,CAACrD,MAAM,CAACyD,GAAG,CAAC,GAAG,IAAI,CAACC,0BAA0B,CAAClC,KAAK,EAAExB,MAAM,CAAC+B,KAAK,CAAC;AAC1E,MAAA;AACJ,IAAA;AAEAlB,IAAAA,YAAY,CAACb,MAAM,CAAC+B,KAAK,CAACT,IAAI,CAAC,GAAG,IAAI,CAACoC,0BAA0B,CAAClC,KAAK,EAAExB,MAAM,CAAC+B,KAAK,CAAC;AAC1F,EAAA;;AAEA;AACJ;AACA;AACA;AACI4B,EAAAA,uBAAuBA,CAAC9C,YAAY,EAAEb,MAAM,EAAEwB,KAAK,EACnD;AACI,IAAA,IAAI,CAACW,2BAA2B,CAACnC,MAAM,CAACkD,OAAO,GAAGlD,MAAM,CAACmD,QAAQ,GAAGnD,MAAM,CAAC+B,KAAK,CAACT,IAAI,CAAC;IACtF,IAAItB,MAAM,CAACkD,OAAO,EAClB;MACI,IAAI,IAAI,CAAC3E,6BAA6B,EACtC;QACI,IAAI,CAACgE,qBAAqB,CAAC1B,YAAY,EAAEb,MAAM,CAACmD,QAAQ,EAAE3B,KAAK,CAAC;AACpE,MAAA,CAAC,MAED;AACIX,QAAAA,YAAY,CAACb,MAAM,CAACmD,QAAQ,CAAC,GAAG3B,KAAK;AACzC,MAAA;AACA,MAAA;AACJ,IAAA;IAEA,IAAIxB,MAAM,CAACoD,OAAO,EAClB;AACI,MAAA,IAAIC,OAAO,GAAG,IAAI,CAAC9E,6BAA6B,GACzC8D,MAAM,CAACG,MAAM,CAAC3B,YAAY,EAAEb,MAAM,CAAC+B,KAAK,CAACT,IAAI,CAAC,GAAGT,YAAY,CAACb,MAAM,CAAC+B,KAAK,CAACT,IAAI,CAAC,GAAG,IAAI,GACxFT,YAAY,CAACb,MAAM,CAAC+B,KAAK,CAACT,IAAI,CAAC;AACrC,MAAA,IAAI,CAAC+B,OAAO,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAC3C;AACIA,QAAAA,OAAO,GAAGC,MAAM,CAACC,SAAS,CAACvD,MAAM,CAACwD,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;QAClD,IAAI,IAAI,CAACjF,6BAA6B,EACtC;AACI,UAAA,IAAI,CAACgE,qBAAqB,CAAC1B,YAAY,EAAEb,MAAM,CAAC+B,KAAK,CAACT,IAAI,EAAE+B,OAAO,CAAC;AACxE,QAAA,CAAC,MAED;UACIxC,YAAY,CAACb,MAAM,CAAC+B,KAAK,CAACT,IAAI,CAAC,GAAG+B,OAAO;AAC7C,QAAA;AACJ,MAAA;AAEAA,MAAAA,OAAO,CAACrD,MAAM,CAACyD,GAAG,CAAC,GAAGjC,KAAK;AAC3B,MAAA;AACJ,IAAA;IAEA,IAAI,IAAI,CAACjD,6BAA6B,EACtC;AACI,MAAA,IAAI,CAACgE,qBAAqB,CAAC1B,YAAY,EAAEb,MAAM,CAAC+B,KAAK,CAACT,IAAI,EAAEE,KAAK,CAAC;AACtE,IAAA,CAAC,MAED;MACIX,YAAY,CAACb,MAAM,CAAC+B,KAAK,CAACT,IAAI,CAAC,GAAGE,KAAK;AAC3C,IAAA;AACJ,EAAA;;AAEA;AACJ;AACA;AACA;AACIkC,EAAAA,0BAA0BA,CAAClC,KAAK,EAAEO,KAAK,EACvC;AACI,IAAA,IAAI,CAACA,KAAK,EAAE,OAAOP,KAAK;;AAExB;AACA;AACA,IAAA,MAAMoC,UAAU,GAAGC,6BAA6B,CAAC9B,KAAK,CAAC;AACvD,IAAA,MAAMxC,IAAI,GAAGqE,UAAU,CAACrE,IAAI;AAE5B,IAAA,IAAIA,IAAI,KAAKuE,WAAW,CAACC,KAAK,IAAIC,KAAK,CAACC,OAAO,CAACzC,KAAK,CAAC,EAAE,OAAOA,KAAK;AACpE,IAAA,IAAI,CAACjC,IAAI,KAAKuE,WAAW,CAACI,UAAU,IAC7B3E,IAAI,KAAKuE,WAAW,CAACK,MAAM,IAC3B5E,IAAI,KAAKuE,WAAW,CAACM,UAAU,IAC/B7E,IAAI,KAAKuE,WAAW,CAACO,OAAO,KAC5B7C,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,EACzC;AACI,MAAA,OAAOA,KAAK;AAChB,IAAA;IACA,IAAIlE,aAAa,CAACgH,4BAA4B,CAAC9C,KAAK,EAAEoC,UAAU,CAAC,EAAE,OAAOpC,KAAK;AAE/E,IAAA,OAAO+C,oBAAoB,CAAC/C,KAAK,EAAEO,KAAK,CAAC;AAC7C,EAAA;;AAEA;EACAyC,kBAAkBA,CAACjF,IAAI,EACvB;IACI,MAAMkF,QAAQ,GAAG,IAAI,CAAChH,OAAO,CAACgH,QAAQ,IAAI,IAAI;IAC9C,IAAIA,QAAQ,EAAEC,cAAc,EAAE,OAAOD,QAAQ,CAACC,cAAc,CAACnF,IAAI,CAAC;IAElE,MAAMoF,YAAY,GAAG,IAAI,CAAClH,OAAO,CAACkH,YAAY,IAAI,IAAI;IACtD,IAAIA,YAAY,EAAED,cAAc,EAAE,OAAOC,YAAY,CAACD,cAAc,CAACnF,IAAI,CAAC;AAC1E,IAAA,IAAIoF,YAAY,EAChB;AACI,MAAA,MAAMnF,KAAK,GAAGmF,YAAY,YAAY5G,GAAG,GAAG4G,YAAY,CAAC1C,GAAG,CAAC1C,IAAI,CAAC,GAAGoF,YAAY,CAACpF,IAAI,CAAC;AACvF,MAAA,IAAIC,KAAK,EACT;AACI,QAAA,OAAO,IAAI,CAAC7B,cAAc,EAAEiH,cAAc,GACpC,IAAI,CAACjH,cAAc,CAACiH,cAAc,CAACpF,KAAK,CAAC,GACzCA,KAAK;AACf,MAAA;AACJ,IAAA;IAEA,OAAO,IAAI,CAAC5B,YAAY,CAACqE,GAAG,CAAC1C,IAAI,CAAC,IAAI,IAAI;AAC9C,EAAA;;AAEA;EACAO,YAAYA,CAACP,IAAI,EACjB;AACI,IAAA,IAAI,CAACA,IAAI,EAAE,OAAO,IAAI;IAEtB,MAAMsF,OAAO,GAAG,IAAI,CAACpH,OAAO,CAACoH,OAAO,IAAI,EAAE;IAC1C,MAAMC,QAAQ,GAAG,IAAI,CAACrH,OAAO,CAACgH,QAAQ,IAAI,IAAI,CAACzG,eAAe;AAC9D,IAAA,OAAO6G,OAAO,CAACtF,IAAI,CAAC,KAAKuF,QAAQ,GAAGA,QAAQ,CAACC,cAAc,CAACxF,IAAI,CAAC,GAAG,IAAI,CAAC;AAC7E,EAAA;;AAEA;AACJ;AACA;AACA;EACIyF,aAAaA,CAACxD,KAAK,EACnB;AACI,IAAA,MAAMyD,OAAO,GAAG,IAAI,CAACxH,OAAO,CAACyH,WAAW;IACxC,OAAO,OAAOD,OAAO,KAAK,UAAU,GAAGA,OAAO,CAACzD,KAAK,CAAC,GAAGA,KAAK;AACjE,EAAA;;AAEA;AACJ;AACA;AACA;AACI,EAAA,OAAO8C,4BAA4BA,CAAC9C,KAAK,EAAEoC,UAAU,EACrD;AACI,IAAA,MAAMuB,cAAc,GAAGvB,UAAU,EAAEwB,MAAM;AACzC,IAAA,OAAOpB,KAAK,CAACC,OAAO,CAACzC,KAAK,CAAC,IACpB8B,MAAM,CAACC,SAAS,CAAC4B,cAAc,CAAC,IAChC3D,KAAK,CAAC4D,MAAM,KAAKD,cAAc;AAC1C,EAAA;AACJ;;;;"}
@@ -85,11 +85,15 @@ class CjsFormat {
85
85
  report.verified = false;
86
86
  return report;
87
87
  }
88
+
89
+ /** Creates a CjsFormat with caller-provided reader configuration. */
88
90
  constructor(options = null) {
89
91
  this.options = {
90
92
  ...(options || {})
91
93
  };
92
94
  }
95
+
96
+ /** Applies supported format options for the resource format configuration. */
93
97
  SetValues(values = null) {
94
98
  if (!values || typeof values !== "object") {
95
99
  return this;
@@ -106,6 +110,11 @@ class CjsFormat {
106
110
  }
107
111
  return this;
108
112
  }
113
+
114
+ /**
115
+ * Returns a copy of the current format options for the resource format
116
+ * configuration.
117
+ */
109
118
  GetValues() {
110
119
  return {
111
120
  options: {
@@ -113,6 +122,11 @@ class CjsFormat {
113
122
  }
114
123
  };
115
124
  }
125
+
126
+ /**
127
+ * Initializes the format with the supplied values and context for the resource
128
+ * format configuration.
129
+ */
116
130
  Initialize(values = null) {
117
131
  return this.SetValues(values || {});
118
132
  }
@@ -174,24 +188,36 @@ class CjsFormat {
174
188
  static inputTypes = Object.freeze([]);
175
189
  static outputTypes = Object.freeze([]);
176
190
  static debugOutputTypes = Object.freeze(["json", "raw"]);
177
- }
178
191
 
179
- /**
180
- * Shared utility for asserting required format metadata exists.
181
- */
182
- function ValidateFormatContract(Constructor) {
183
- if (!Constructor) {
184
- throw new TypeError("ValidateFormatContract requires a format class.");
185
- }
186
- const hasOutput = Array.isArray(Constructor.outputTypes) && Constructor.outputTypes.length > 0;
187
- const hasInput = Array.isArray(Constructor.inputTypes) && Constructor.inputTypes.length > 0;
188
- const hasMedia = Array.isArray(Constructor.mediaTypes) && Constructor.mediaTypes.length > 0;
189
- const hasType = Array.isArray(Constructor.type) && Constructor.type.length > 0;
190
- const hasDebug = Array.isArray(Constructor.debugOutputTypes) && Constructor.debugOutputTypes.length > 0;
191
- if (!hasType || !hasMedia || !hasInput || !hasOutput || !hasDebug) {
192
- throw new TypeError(`Format contract missing metadata: type:${hasType} mediaTypes:${hasMedia} inputTypes:${hasInput} outputTypes:${hasOutput} debugOutputTypes:${hasDebug}`);
192
+ /**
193
+ * Optional browser-worker module declaration.
194
+ *
195
+ * Concrete formats opt in with their exact `import.meta.url`, export name,
196
+ * and optional clone-safe output restrictions.
197
+ */
198
+ static worker = null;
199
+
200
+ /**
201
+ * Asserts that a format class declares the metadata required for
202
+ * registration and routing.
203
+ *
204
+ * @param {typeof CjsFormat} Constructor
205
+ * @returns {void}
206
+ */
207
+ static validateContract(Constructor) {
208
+ if (!Constructor) {
209
+ throw new TypeError("CjsFormat.validateContract requires a format class.");
210
+ }
211
+ const hasOutput = Array.isArray(Constructor.outputTypes) && Constructor.outputTypes.length > 0;
212
+ const hasInput = Array.isArray(Constructor.inputTypes) && Constructor.inputTypes.length > 0;
213
+ const hasMedia = Array.isArray(Constructor.mediaTypes) && Constructor.mediaTypes.length > 0;
214
+ const hasType = Array.isArray(Constructor.type) && Constructor.type.length > 0;
215
+ const hasDebug = Array.isArray(Constructor.debugOutputTypes) && Constructor.debugOutputTypes.length > 0;
216
+ if (!hasType || !hasMedia || !hasInput || !hasOutput || !hasDebug) {
217
+ throw new TypeError(`Format contract missing metadata: type:${hasType} mediaTypes:${hasMedia} inputTypes:${hasInput} outputTypes:${hasOutput} debugOutputTypes:${hasDebug}`);
218
+ }
193
219
  }
194
220
  }
195
221
 
196
- export { CjsFormat, ValidateFormatContract };
222
+ export { CjsFormat };
197
223
  //# sourceMappingURL=CjsFormat.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CjsFormat.js","sources":["../../../src/format/CjsFormat.js"],"sourcesContent":["import { MediaType, PayloadType } from \"@carbonenginejs/runtime-utils/media\";\nimport { CjsResourceProbe } from \"./CjsResourceProbe.js\";\n\n/**\n * Base class for format readers that defines the static\n * `read`/`readAsync`/`isSupported`/`resolveType` contract and instance\n * option handling that concrete format packages implement.\n */\nexport class CjsFormat\n{\n options = {};\n\n /**\n * Convenience factory for simple format helpers.\n * Keep this lightweight so format classes can stay pure-reader implementations.\n *\n * @param {*} input\n * @param {object} options\n * @returns {Promise<*>|*}\n */\n static read(input, options = null) {\n const reader = new this(options || {});\n return reader.Read(input, options || {});\n }\n\n /**\n * Async convenience factory for format readers.\n *\n * @param {*} input\n * @param {object} options\n * @returns {Promise<*>}\n */\n static async readAsync(input, options = null) {\n const reader = new this(options || {});\n return reader.ReadAsync(input, options || {});\n }\n\n /**\n * Canonical support probe entrypoint.\n * Returns a probe report including compressed/raw capability variants when implemented.\n *\n * @param {*} input\n * @param {object} options\n * @returns {CjsResourceProbe}\n */\n static isSupported(input, options = null) {\n const source = typeof input === \"string\" ? \"path\" : \"buffer\";\n const formatName = this.name\n ? this.name.replace(/^Cjs/u, \"\").replace(/Format$/u, \"\").toLowerCase()\n : \"format\";\n return CjsResourceProbe.createUnsupported(formatName, \"No probe implementation.\", { source, ...options });\n }\n\n /**\n * Alias for canonical naming.\n *\n * @param {*} input\n * @param {object} options\n * @returns {CjsResourceProbe}\n */\n static inspect(input, options = null) {\n return this.isSupported(input, options);\n }\n\n /**\n * Content-verified type/route resolution (kb §5, optional per format).\n *\n * Where inspect()/isSupported() report what the container CLAIMS,\n * resolveType() performs one bounded asynchronous content check (magic, a\n * first frame/block, a setup header) and reports what the reader has\n * evidence it can actually decode. Overrides return a CjsResourceProbe\n * with `verified: true` and declared/resolved/mismatch evidence in\n * `metadata`; `preferred` names the resolved decode route. A caller-forced\n * emit always wins over a resolution, and this base implementation - the\n * zero-extra-work path for formats without an override - delegates to\n * isSupported() with `verified` false so an unverified result never\n * changes a route.\n *\n * @param {*} input Bytes (or path where the format supports it).\n * @param {object|null} options Format options.\n * @returns {Promise<CjsResourceProbe>} Probe report; content-verified only when overridden.\n */\n static async resolveType(input, options = null) {\n const report = CjsResourceProbe.from(this.isSupported(input, options));\n report.verified = false;\n return report;\n }\n\n constructor(options = null) {\n this.options = { ...(options || {}) };\n }\n\n SetValues(values = null) {\n if (!values || typeof values !== \"object\") {\n return this;\n }\n if (Object.prototype.hasOwnProperty.call(values, \"options\")) {\n this.options = { ...(values.options || {}) };\n } else {\n this.options = { ...this.options, ...values };\n }\n return this;\n }\n\n GetValues() {\n return { options: { ...this.options } };\n }\n\n Initialize(values = null) {\n return this.SetValues(values || {});\n }\n\n /**\n * Primary instance read entrypoint for synchronous readers.\n * Implementations may override with async handling in readAsync only if needed.\n */\n Read(input, options = null) {\n throw new Error(`${this.constructor.name}.Read must be implemented by a format package.`);\n }\n\n /**\n * Primary async read entrypoint for asynchronous readers.\n * Defaults to sync Read for compatibility.\n */\n async ReadAsync(input, options = null) {\n return this.Read(input, options);\n }\n\n /**\n * Canonical package-family group names - the shared vocabulary object from\n * runtime-utils (kb: runtime-utils owns cross-package media vocabulary).\n * Same object identity as `@carbonenginejs/runtime-utils/media` MediaType,\n * so tokens can never drift between packages.\n */\n static Type = MediaType;\n\n /**\n * Canonical media-type groups used by format registration - the shared\n * runtime-utils MediaType object (see Type above).\n */\n static MediaType = MediaType;\n\n /**\n * Canonical output-type tokens used by format emit contracts. Shared\n * payload ROLES come from runtime-utils PayloadType; the remaining tokens\n * (cmf/gr2/json/pcm/rgba/shared/objJson) are format-emit names owned by\n * their formats and enumerated here for discoverability only.\n */\n static OutputType = Object.freeze({\n AUDIO: PayloadType.AUDIO,\n CMF: \"cmf\",\n GR2: \"gr2\",\n IMAGE: PayloadType.IMAGE,\n JSON: \"json\",\n PCM: \"pcm\",\n RAW: PayloadType.RAW,\n RGBA: \"rgba\",\n SCHEMA: PayloadType.SCHEMA,\n SHADER: PayloadType.SHADER,\n SHARED: \"shared\",\n TEXTURE: PayloadType.TEXTURE,\n VIDEO: PayloadType.VIDEO,\n OBJ_JSON: \"objJson\"\n });\n\n static type = Object.freeze([]);\n static mediaTypes = Object.freeze([]);\n static inputTypes = Object.freeze([]);\n static outputTypes = Object.freeze([]);\n static debugOutputTypes = Object.freeze([\"json\", \"raw\"]);\n}\n\n/**\n * Shared utility for asserting required format metadata exists.\n */\nexport function ValidateFormatContract(Constructor) {\n if (!Constructor) {\n throw new TypeError(\"ValidateFormatContract requires a format class.\");\n }\n const hasOutput = Array.isArray(Constructor.outputTypes) && Constructor.outputTypes.length > 0;\n const hasInput = Array.isArray(Constructor.inputTypes) && Constructor.inputTypes.length > 0;\n const hasMedia = Array.isArray(Constructor.mediaTypes) && Constructor.mediaTypes.length > 0;\n const hasType = Array.isArray(Constructor.type) && Constructor.type.length > 0;\n const hasDebug = Array.isArray(Constructor.debugOutputTypes) && Constructor.debugOutputTypes.length > 0;\n if (!hasType || !hasMedia || !hasInput || !hasOutput || !hasDebug) {\n throw new TypeError(`Format contract missing metadata: type:${hasType} mediaTypes:${hasMedia} inputTypes:${hasInput} outputTypes:${hasOutput} debugOutputTypes:${hasDebug}`);\n }\n}\n"],"names":["CjsFormat","options","read","input","reader","Read","readAsync","ReadAsync","isSupported","source","formatName","name","replace","toLowerCase","CjsResourceProbe","createUnsupported","inspect","resolveType","report","from","verified","constructor","SetValues","values","Object","prototype","hasOwnProperty","call","GetValues","Initialize","Error","Type","MediaType","OutputType","freeze","AUDIO","PayloadType","CMF","GR2","IMAGE","JSON","PCM","RAW","RGBA","SCHEMA","SHADER","SHARED","TEXTURE","VIDEO","OBJ_JSON","type","mediaTypes","inputTypes","outputTypes","debugOutputTypes","ValidateFormatContract","Constructor","TypeError","hasOutput","Array","isArray","length","hasInput","hasMedia","hasType","hasDebug"],"mappings":"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"}
1
+ {"version":3,"file":"CjsFormat.js","sources":["../../../src/format/CjsFormat.js"],"sourcesContent":["import { MediaType, PayloadType } from \"@carbonenginejs/runtime-utils/media\";\nimport { CjsResourceProbe } from \"./CjsResourceProbe.js\";\n\n/**\n * Base class for format readers that defines the static\n * `read`/`readAsync`/`isSupported`/`resolveType` contract and instance\n * option handling that concrete format packages implement.\n */\nexport class CjsFormat\n{\n options = {};\n\n /**\n * Convenience factory for simple format helpers.\n * Keep this lightweight so format classes can stay pure-reader implementations.\n *\n * @param {*} input\n * @param {object} options\n * @returns {Promise<*>|*}\n */\n static read(input, options = null) {\n const reader = new this(options || {});\n return reader.Read(input, options || {});\n }\n\n /**\n * Async convenience factory for format readers.\n *\n * @param {*} input\n * @param {object} options\n * @returns {Promise<*>}\n */\n static async readAsync(input, options = null) {\n const reader = new this(options || {});\n return reader.ReadAsync(input, options || {});\n }\n\n /**\n * Canonical support probe entrypoint.\n * Returns a probe report including compressed/raw capability variants when implemented.\n *\n * @param {*} input\n * @param {object} options\n * @returns {CjsResourceProbe}\n */\n static isSupported(input, options = null) {\n const source = typeof input === \"string\" ? \"path\" : \"buffer\";\n const formatName = this.name\n ? this.name.replace(/^Cjs/u, \"\").replace(/Format$/u, \"\").toLowerCase()\n : \"format\";\n return CjsResourceProbe.createUnsupported(formatName, \"No probe implementation.\", { source, ...options });\n }\n\n /**\n * Alias for canonical naming.\n *\n * @param {*} input\n * @param {object} options\n * @returns {CjsResourceProbe}\n */\n static inspect(input, options = null) {\n return this.isSupported(input, options);\n }\n\n /**\n * Content-verified type/route resolution (kb §5, optional per format).\n *\n * Where inspect()/isSupported() report what the container CLAIMS,\n * resolveType() performs one bounded asynchronous content check (magic, a\n * first frame/block, a setup header) and reports what the reader has\n * evidence it can actually decode. Overrides return a CjsResourceProbe\n * with `verified: true` and declared/resolved/mismatch evidence in\n * `metadata`; `preferred` names the resolved decode route. A caller-forced\n * emit always wins over a resolution, and this base implementation - the\n * zero-extra-work path for formats without an override - delegates to\n * isSupported() with `verified` false so an unverified result never\n * changes a route.\n *\n * @param {*} input Bytes (or path where the format supports it).\n * @param {object|null} options Format options.\n * @returns {Promise<CjsResourceProbe>} Probe report; content-verified only when overridden.\n */\n static async resolveType(input, options = null) {\n const report = CjsResourceProbe.from(this.isSupported(input, options));\n report.verified = false;\n return report;\n }\n\n /** Creates a CjsFormat with caller-provided reader configuration. */\n constructor(options = null) {\n this.options = { ...(options || {}) };\n }\n\n /** Applies supported format options for the resource format configuration. */\n SetValues(values = null) {\n if (!values || typeof values !== \"object\") {\n return this;\n }\n if (Object.prototype.hasOwnProperty.call(values, \"options\")) {\n this.options = { ...(values.options || {}) };\n } else {\n this.options = { ...this.options, ...values };\n }\n return this;\n }\n\n /**\n * Returns a copy of the current format options for the resource format\n * configuration.\n */\n GetValues() {\n return { options: { ...this.options } };\n }\n\n /**\n * Initializes the format with the supplied values and context for the resource\n * format configuration.\n */\n Initialize(values = null) {\n return this.SetValues(values || {});\n }\n\n /**\n * Primary instance read entrypoint for synchronous readers.\n * Implementations may override with async handling in readAsync only if needed.\n */\n Read(input, options = null) {\n throw new Error(`${this.constructor.name}.Read must be implemented by a format package.`);\n }\n\n /**\n * Primary async read entrypoint for asynchronous readers.\n * Defaults to sync Read for compatibility.\n */\n async ReadAsync(input, options = null) {\n return this.Read(input, options);\n }\n\n /**\n * Canonical package-family group names - the shared vocabulary object from\n * runtime-utils (kb: runtime-utils owns cross-package media vocabulary).\n * Same object identity as `@carbonenginejs/runtime-utils/media` MediaType,\n * so tokens can never drift between packages.\n */\n static Type = MediaType;\n\n /**\n * Canonical media-type groups used by format registration - the shared\n * runtime-utils MediaType object (see Type above).\n */\n static MediaType = MediaType;\n\n /**\n * Canonical output-type tokens used by format emit contracts. Shared\n * payload ROLES come from runtime-utils PayloadType; the remaining tokens\n * (cmf/gr2/json/pcm/rgba/shared/objJson) are format-emit names owned by\n * their formats and enumerated here for discoverability only.\n */\n static OutputType = Object.freeze({\n AUDIO: PayloadType.AUDIO,\n CMF: \"cmf\",\n GR2: \"gr2\",\n IMAGE: PayloadType.IMAGE,\n JSON: \"json\",\n PCM: \"pcm\",\n RAW: PayloadType.RAW,\n RGBA: \"rgba\",\n SCHEMA: PayloadType.SCHEMA,\n SHADER: PayloadType.SHADER,\n SHARED: \"shared\",\n TEXTURE: PayloadType.TEXTURE,\n VIDEO: PayloadType.VIDEO,\n OBJ_JSON: \"objJson\"\n });\n\n static type = Object.freeze([]);\n static mediaTypes = Object.freeze([]);\n static inputTypes = Object.freeze([]);\n static outputTypes = Object.freeze([]);\n static debugOutputTypes = Object.freeze([\"json\", \"raw\"]);\n\n /**\n * Optional browser-worker module declaration.\n *\n * Concrete formats opt in with their exact `import.meta.url`, export name,\n * and optional clone-safe output restrictions.\n */\n static worker = null;\n\n /**\n * Asserts that a format class declares the metadata required for\n * registration and routing.\n *\n * @param {typeof CjsFormat} Constructor\n * @returns {void}\n */\n static validateContract(Constructor)\n {\n if (!Constructor) {\n throw new TypeError(\"CjsFormat.validateContract requires a format class.\");\n }\n const hasOutput = Array.isArray(Constructor.outputTypes) && Constructor.outputTypes.length > 0;\n const hasInput = Array.isArray(Constructor.inputTypes) && Constructor.inputTypes.length > 0;\n const hasMedia = Array.isArray(Constructor.mediaTypes) && Constructor.mediaTypes.length > 0;\n const hasType = Array.isArray(Constructor.type) && Constructor.type.length > 0;\n const hasDebug = Array.isArray(Constructor.debugOutputTypes) && Constructor.debugOutputTypes.length > 0;\n if (!hasType || !hasMedia || !hasInput || !hasOutput || !hasDebug) {\n throw new TypeError(`Format contract missing metadata: type:${hasType} mediaTypes:${hasMedia} inputTypes:${hasInput} outputTypes:${hasOutput} debugOutputTypes:${hasDebug}`);\n }\n }\n}\n"],"names":["CjsFormat","options","read","input","reader","Read","readAsync","ReadAsync","isSupported","source","formatName","name","replace","toLowerCase","CjsResourceProbe","createUnsupported","inspect","resolveType","report","from","verified","constructor","SetValues","values","Object","prototype","hasOwnProperty","call","GetValues","Initialize","Error","Type","MediaType","OutputType","freeze","AUDIO","PayloadType","CMF","GR2","IMAGE","JSON","PCM","RAW","RGBA","SCHEMA","SHADER","SHARED","TEXTURE","VIDEO","OBJ_JSON","type","mediaTypes","inputTypes","outputTypes","debugOutputTypes","worker","validateContract","Constructor","TypeError","hasOutput","Array","isArray","length","hasInput","hasMedia","hasType","hasDebug"],"mappings":"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"}
@@ -9,6 +9,10 @@
9
9
  * source-specific state and reset behavior.
10
10
  */
11
11
  class CjsReader {
12
+ /**
13
+ * Creates a CjsReader over caller-provided resource bytes and reader
14
+ * options.
15
+ */
12
16
  constructor(options = {}) {
13
17
  this.options = options;
14
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CjsReader.js","sources":["../../../src/format/CjsReader.js"],"sourcesContent":["/**\n * Internal base for construction-bound readers.\n *\n * A reader instance is created for one source and normally used and dropped.\n * JavaScript garbage collection reclaims its parser and graph state, so readers\n * do not require `dispose()` or `clear()` for correctness. This differs from\n * native Blue readers such as `BlackReader`, whose cleanup releases manually\n * allocated buffers and refcounted maps. Subclasses retain ownership of their\n * source-specific state and reset behavior.\n */\nexport class CjsReader\n{\n constructor(options = {})\n {\n this.options = options;\n }\n}\n\nexport default CjsReader;\n"],"names":["CjsReader","constructor","options"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,SAAS,CACtB;AACIC,EAAAA,WAAWA,CAACC,OAAO,GAAG,EAAE,EACxB;IACI,IAAI,CAACA,OAAO,GAAGA,OAAO;AAC1B,EAAA;AACJ;;;;"}
1
+ {"version":3,"file":"CjsReader.js","sources":["../../../src/format/CjsReader.js"],"sourcesContent":["/**\n * Internal base for construction-bound readers.\n *\n * A reader instance is created for one source and normally used and dropped.\n * JavaScript garbage collection reclaims its parser and graph state, so readers\n * do not require `dispose()` or `clear()` for correctness. This differs from\n * native Blue readers such as `BlackReader`, whose cleanup releases manually\n * allocated buffers and refcounted maps. Subclasses retain ownership of their\n * source-specific state and reset behavior.\n */\nexport class CjsReader\n{\n /**\n * Creates a CjsReader over caller-provided resource bytes and reader\n * options.\n */\n constructor(options = {})\n {\n this.options = options;\n }\n}\n\nexport default CjsReader;\n"],"names":["CjsReader","constructor","options"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,SAAS,CACtB;AACI;AACJ;AACA;AACA;AACIC,EAAAA,WAAWA,CAACC,OAAO,GAAG,EAAE,EACxB;IACI,IAAI,CAACA,OAAO,GAAGA,OAAO;AAC1B,EAAA;AACJ;;;;"}
@@ -45,6 +45,8 @@ class CjsResourceProbe extends CjsModel {
45
45
  variants = (_init_extra_variant(this), _init_variants(this, []));
46
46
  warnings = (_init_extra_variants(this), _init_warnings(this, []));
47
47
  errors = (_init_extra_warnings(this), _init_errors(this, []));
48
+
49
+ /** Creates a CjsResourceProbe with caller-provided initial state. */
48
50
  constructor(values = null) {
49
51
  super(), _init_extra_errors(this);
50
52
  this.SetValues(values || {}, {
@@ -1 +1 @@
1
- {"version":3,"file":"CjsResourceProbe.js","sources":["../../../src/format/CjsResourceProbe.js"],"sourcesContent":["import { CjsModel } from \"@carbonenginejs/runtime-utils/model\";\nimport { io, type } from \"@carbonenginejs/runtime-utils/schema\";\n\n/**\n * Standard probe report for resource formats and a reusable base for format-specific probes.\n *\n * Instances can be built by:\n * - returning plain object JSON payloads from format packages, then converted with CjsResourceProbe.from(...)\n * - returning CjsResourceProbe instances directly\n *\n * A format can report multiple usable variants in one payload, such as a\n * native compressed texture and a decoded RGBA fallback, without deciding\n * which engine-gpu or media backend should use.\n */\n@type.define({ className: \"CjsResourceProbe\", family: \"resource\" })\nexport class CjsResourceProbe extends CjsModel\n{\n @io.persist\n @type.string\n format = \"\";\n\n @io.persist\n @type.string\n source = \"\";\n\n @io.persist\n @type.string\n supported = \"none\";\n\n /**\n * True when the report's variant flags are CONTENT-verified (a bounded\n * resolveType() check ran), false when they are declaration-derived\n * (inspect/isSupported). Declared/resolved/mismatch evidence rides in\n * `metadata` per the kb §5 content-verified type resolution contract.\n */\n @io.persist\n @type.boolean\n verified = false;\n\n @io.persist\n @type.float64\n confidence = 0;\n\n @io.persist\n @type.string\n preferred = \"\";\n\n @io.persist\n @type.string\n reason = \"\";\n\n @io.persist\n @type.unknown\n metadata = null;\n\n @io.persist\n @type.unknown\n variant = {};\n\n @io.persist\n @type.list(\"unknown\")\n variants = [];\n\n @io.persist\n @type.list(\"string\")\n warnings = [];\n\n @io.persist\n @type.list(\"string\")\n errors = [];\n\n constructor(values = null) {\n super();\n this.SetValues(values || {}, {\n markDirty: false,\n skipUpdate: true,\n skipEvents: true\n });\n }\n\n /**\n * Initialize probe fields from a plain object payload.\n *\n * @param {object|null} values\n * @returns {CjsResourceProbe}\n */\n Initialize(values = null) {\n this.SetValues(values || {}, { skipEvents: true });\n return this;\n }\n\n /**\n * Lightweight probe entrypoint.\n * Format packages should override this or provide their own probe implementation.\n *\n * @param {*} src\n * Raw source path or source payload passed by caller.\n * @param {object|null} options\n * Optional metadata/control overrides.\n * @returns {CjsResourceProbe}\n */\n static isSupported(src, options = null) {\n return new CjsResourceProbe({\n format: \"\",\n source: typeof src === \"string\" ? src : \"buffer\",\n supported: \"none\",\n confidence: 0,\n preferred: \"\",\n reason: \"No probe provided.\",\n metadata: null,\n variant: {},\n variants: [],\n warnings: [],\n errors: [\"CjsResourceProbe has no built-in format detection.\"],\n ...options\n });\n }\n\n /**\n * Detailed probe with report-style metadata. Aliases isSupported() in this minimal base.\n *\n * @param {*} src\n * @param {object|null} options\n * @returns {CjsResourceProbe}\n */\n static inspect(src, options = null) {\n return CjsResourceProbe.isSupported(src, options);\n }\n\n /**\n * Build a probe report representing explicit failure.\n *\n * @param {string} format\n * @param {string} reason\n * @param {object|null} options\n * @returns {CjsResourceProbe}\n */\n static createUnsupported(format, reason, options = null) {\n return new CjsResourceProbe({\n format,\n supported: \"none\",\n confidence: 0,\n preferred: \"\",\n reason: reason || \"Unsupported format.\",\n variant: {},\n variants: [],\n warnings: [],\n errors: [reason],\n ...(options || {})\n });\n }\n\n /**\n * Build a probe report representing one or more variants.\n *\n * @param {string} format\n * @param {Array<Object>} variants\n * @param {object|null} options\n * @returns {CjsResourceProbe}\n */\n static createSupported(format, variants, options = null) {\n const normalizedVariants = Array.isArray(variants) ? variants : [];\n const anySupported = normalizedVariants.some((entry) => entry && entry.supported === true);\n const normalized = normalizedVariants.map((entry) => CjsResourceProbe.normalizeVariant(entry));\n const preferred = options && options.preferred ? options.preferred : CjsResourceProbe.selectPreferred(normalized);\n\n return new CjsResourceProbe({\n format,\n source: options?.source || \"\",\n supported: anySupported ? \"full\" : normalizedVariants.length > 0 ? \"partial\" : \"none\",\n confidence: normalized.length > 0 && anySupported ? 1 : (normalized.length > 0 ? 0.5 : 0),\n preferred,\n reason: options?.reason || (anySupported ? \"Supported variant found.\" : \"No variant supported.\"),\n metadata: options?.metadata || null,\n variant: normalized[0] || {},\n variants: normalized,\n warnings: Array.isArray(options?.warnings) ? options.warnings : [],\n errors: Array.isArray(options?.errors) ? options.errors : [],\n ...(options || {})\n });\n }\n\n /**\n * Normalize incoming report payloads into a standard CjsResourceProbe instance.\n *\n * @param {CjsResourceProbe|object|null} input\n * @returns {CjsResourceProbe}\n */\n static from(input) {\n if (input instanceof CjsResourceProbe) return input;\n if (!input) return CjsResourceProbe.createUnsupported(\"\", \"No probe input.\");\n if (typeof input === \"object\" && typeof input.toJSON === \"function\") {\n return new CjsResourceProbe(CjsResourceProbe.normalizeReport(input.toJSON()));\n }\n if (typeof input === \"object\") return new CjsResourceProbe(CjsResourceProbe.normalizeReport(input));\n return CjsResourceProbe.createUnsupported(\"\", \"Invalid probe payload.\");\n }\n\n /**\n * Normalize a plain probe report while preserving format-specific metadata.\n *\n * @param {object} input\n * @returns {object}\n */\n static normalizeReport(input) {\n const variants = Array.isArray(input.variants)\n ? input.variants.map((entry) => CjsResourceProbe.normalizeVariant(entry))\n : [];\n return {\n ...input,\n variant: input.variant ? CjsResourceProbe.normalizeVariant(input.variant) : variants[0] || {},\n variants\n };\n }\n\n /**\n * Normalize variant objects so runtimes can evaluate capability uniformly.\n *\n * @param {object|any} input\n * @returns {{kind: string, payloadType: string, codec: string, format: string, supported: boolean, reason: string, meta: *}}\n */\n static normalizeVariant(input) {\n if (!input || typeof input !== \"object\") {\n return {\n kind: \"raw\",\n payloadType: \"raw\",\n codec: \"\",\n format: \"\",\n supported: false,\n reason: \"Invalid variant payload.\",\n meta: null\n };\n }\n\n const kind = input.kind || input.payloadType || \"raw\";\n return {\n ...input,\n kind,\n payloadType: input.payloadType || kind,\n codec: input.codec || \"\",\n format: input.format || \"\",\n supported: !!input.supported,\n reason: input.reason || \"\",\n meta: input.meta || null\n };\n }\n\n /**\n * Select best preferred variant from normalized variant list.\n *\n * @param {Array<Object>} variants\n * @returns {string}\n */\n static selectPreferred(variants) {\n if (!Array.isArray(variants) || variants.length < 1) return \"\";\n const priority = [ \"compressed\", \"texture\", \"rgba\", \"pcm\", \"raw\", \"container\", \"video\", \"audio\" ];\n const preferred = priority\n .map((kind) => variants.find((variant) => variant.kind === kind && variant.supported))\n .find(Boolean) || variants.find((variant) => variant.supported);\n return preferred ? preferred.codec || preferred.payloadType || preferred.kind || \"\" : \"\";\n }\n\n /**\n * Returns true if any supported variant is available.\n *\n * @returns {boolean}\n */\n isSupported() {\n return this.supported === \"full\" || this.supported === \"partial\";\n }\n\n /**\n * Returns true if raw fallback variant is supported.\n *\n * @returns {boolean}\n */\n canUseRaw() {\n return this.variants.some((entry) => entry && [ \"raw\", \"rgba\" ].includes(entry.kind) && entry.supported);\n }\n\n /**\n * Returns true if compressed variant is supported.\n *\n * @returns {boolean}\n */\n canUseCompressed() {\n return this.variants.some((entry) => entry && entry.kind === \"compressed\" && entry.supported);\n }\n\n /**\n * Return true when a supported variant of the requested kind exists.\n *\n * @param {string} kind\n * @returns {boolean}\n */\n canUse(kind) {\n return this.variants.some((entry) => entry && entry.kind === kind && entry.supported);\n }\n}\n"],"names":["_CjsResourceProbe","CjsResourceProbe","CjsModel","e","_init_format","_init_extra_format","_init_source","_init_extra_source","_init_supported","_init_extra_supported","_init_verified","_init_extra_verified","_init_confidence","_init_extra_confidence","_init_preferred","_init_extra_preferred","_init_reason","_init_extra_reason","_init_metadata","_init_extra_metadata","_init_variant","_init_extra_variant","_init_variants","_init_extra_variants","_init_warnings","_init_extra_warnings","_init_errors","_init_extra_errors","c","_initClass","_applyDecs","type","define","className","family","io","persist","string","boolean","float64","unknown","list","format","source","supported","verified","confidence","preferred","reason","metadata","variant","variants","warnings","errors","constructor","values","SetValues","markDirty","skipUpdate","skipEvents","Initialize","isSupported","src","options","inspect","createUnsupported","createSupported","normalizedVariants","Array","isArray","anySupported","some","entry","normalized","map","normalizeVariant","selectPreferred","length","from","input","toJSON","normalizeReport","kind","payloadType","codec","meta","priority","find","Boolean","canUseRaw","includes","canUseCompressed","canUse"],"mappings":"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"}
1
+ {"version":3,"file":"CjsResourceProbe.js","sources":["../../../src/format/CjsResourceProbe.js"],"sourcesContent":["import { CjsModel } from \"@carbonenginejs/runtime-utils/model\";\nimport { io, type } from \"@carbonenginejs/runtime-utils/schema\";\n\n/**\n * Standard probe report for resource formats and a reusable base for format-specific probes.\n *\n * Instances can be built by:\n * - returning plain object JSON payloads from format packages, then converted with CjsResourceProbe.from(...)\n * - returning CjsResourceProbe instances directly\n *\n * A format can report multiple usable variants in one payload, such as a\n * native compressed texture and a decoded RGBA fallback, without deciding\n * which engine-gpu or media backend should use.\n */\n@type.define({ className: \"CjsResourceProbe\", family: \"resource\" })\nexport class CjsResourceProbe extends CjsModel\n{\n @io.persist\n @type.string\n format = \"\";\n\n @io.persist\n @type.string\n source = \"\";\n\n @io.persist\n @type.string\n supported = \"none\";\n\n /**\n * True when the report's variant flags are CONTENT-verified (a bounded\n * resolveType() check ran), false when they are declaration-derived\n * (inspect/isSupported). Declared/resolved/mismatch evidence rides in\n * `metadata` per the kb §5 content-verified type resolution contract.\n */\n @io.persist\n @type.boolean\n verified = false;\n\n @io.persist\n @type.float64\n confidence = 0;\n\n @io.persist\n @type.string\n preferred = \"\";\n\n @io.persist\n @type.string\n reason = \"\";\n\n @io.persist\n @type.unknown\n metadata = null;\n\n @io.persist\n @type.unknown\n variant = {};\n\n @io.persist\n @type.list(\"unknown\")\n variants = [];\n\n @io.persist\n @type.list(\"string\")\n warnings = [];\n\n @io.persist\n @type.list(\"string\")\n errors = [];\n\n /** Creates a CjsResourceProbe with caller-provided initial state. */\n constructor(values = null) {\n super();\n this.SetValues(values || {}, {\n markDirty: false,\n skipUpdate: true,\n skipEvents: true\n });\n }\n\n /**\n * Initialize probe fields from a plain object payload.\n *\n * @param {object|null} values\n * @returns {CjsResourceProbe}\n */\n Initialize(values = null) {\n this.SetValues(values || {}, { skipEvents: true });\n return this;\n }\n\n /**\n * Lightweight probe entrypoint.\n * Format packages should override this or provide their own probe implementation.\n *\n * @param {*} src\n * Raw source path or source payload passed by caller.\n * @param {object|null} options\n * Optional metadata/control overrides.\n * @returns {CjsResourceProbe}\n */\n static isSupported(src, options = null) {\n return new CjsResourceProbe({\n format: \"\",\n source: typeof src === \"string\" ? src : \"buffer\",\n supported: \"none\",\n confidence: 0,\n preferred: \"\",\n reason: \"No probe provided.\",\n metadata: null,\n variant: {},\n variants: [],\n warnings: [],\n errors: [\"CjsResourceProbe has no built-in format detection.\"],\n ...options\n });\n }\n\n /**\n * Detailed probe with report-style metadata. Aliases isSupported() in this minimal base.\n *\n * @param {*} src\n * @param {object|null} options\n * @returns {CjsResourceProbe}\n */\n static inspect(src, options = null) {\n return CjsResourceProbe.isSupported(src, options);\n }\n\n /**\n * Build a probe report representing explicit failure.\n *\n * @param {string} format\n * @param {string} reason\n * @param {object|null} options\n * @returns {CjsResourceProbe}\n */\n static createUnsupported(format, reason, options = null) {\n return new CjsResourceProbe({\n format,\n supported: \"none\",\n confidence: 0,\n preferred: \"\",\n reason: reason || \"Unsupported format.\",\n variant: {},\n variants: [],\n warnings: [],\n errors: [reason],\n ...(options || {})\n });\n }\n\n /**\n * Build a probe report representing one or more variants.\n *\n * @param {string} format\n * @param {Array<Object>} variants\n * @param {object|null} options\n * @returns {CjsResourceProbe}\n */\n static createSupported(format, variants, options = null) {\n const normalizedVariants = Array.isArray(variants) ? variants : [];\n const anySupported = normalizedVariants.some((entry) => entry && entry.supported === true);\n const normalized = normalizedVariants.map((entry) => CjsResourceProbe.normalizeVariant(entry));\n const preferred = options && options.preferred ? options.preferred : CjsResourceProbe.selectPreferred(normalized);\n\n return new CjsResourceProbe({\n format,\n source: options?.source || \"\",\n supported: anySupported ? \"full\" : normalizedVariants.length > 0 ? \"partial\" : \"none\",\n confidence: normalized.length > 0 && anySupported ? 1 : (normalized.length > 0 ? 0.5 : 0),\n preferred,\n reason: options?.reason || (anySupported ? \"Supported variant found.\" : \"No variant supported.\"),\n metadata: options?.metadata || null,\n variant: normalized[0] || {},\n variants: normalized,\n warnings: Array.isArray(options?.warnings) ? options.warnings : [],\n errors: Array.isArray(options?.errors) ? options.errors : [],\n ...(options || {})\n });\n }\n\n /**\n * Normalize incoming report payloads into a standard CjsResourceProbe instance.\n *\n * @param {CjsResourceProbe|object|null} input\n * @returns {CjsResourceProbe}\n */\n static from(input) {\n if (input instanceof CjsResourceProbe) return input;\n if (!input) return CjsResourceProbe.createUnsupported(\"\", \"No probe input.\");\n if (typeof input === \"object\" && typeof input.toJSON === \"function\") {\n return new CjsResourceProbe(CjsResourceProbe.normalizeReport(input.toJSON()));\n }\n if (typeof input === \"object\") return new CjsResourceProbe(CjsResourceProbe.normalizeReport(input));\n return CjsResourceProbe.createUnsupported(\"\", \"Invalid probe payload.\");\n }\n\n /**\n * Normalize a plain probe report while preserving format-specific metadata.\n *\n * @param {object} input\n * @returns {object}\n */\n static normalizeReport(input) {\n const variants = Array.isArray(input.variants)\n ? input.variants.map((entry) => CjsResourceProbe.normalizeVariant(entry))\n : [];\n return {\n ...input,\n variant: input.variant ? CjsResourceProbe.normalizeVariant(input.variant) : variants[0] || {},\n variants\n };\n }\n\n /**\n * Normalize variant objects so runtimes can evaluate capability uniformly.\n *\n * @param {object|any} input\n * @returns {{kind: string, payloadType: string, codec: string, format: string, supported: boolean, reason: string, meta: *}}\n */\n static normalizeVariant(input) {\n if (!input || typeof input !== \"object\") {\n return {\n kind: \"raw\",\n payloadType: \"raw\",\n codec: \"\",\n format: \"\",\n supported: false,\n reason: \"Invalid variant payload.\",\n meta: null\n };\n }\n\n const kind = input.kind || input.payloadType || \"raw\";\n return {\n ...input,\n kind,\n payloadType: input.payloadType || kind,\n codec: input.codec || \"\",\n format: input.format || \"\",\n supported: !!input.supported,\n reason: input.reason || \"\",\n meta: input.meta || null\n };\n }\n\n /**\n * Select best preferred variant from normalized variant list.\n *\n * @param {Array<Object>} variants\n * @returns {string}\n */\n static selectPreferred(variants) {\n if (!Array.isArray(variants) || variants.length < 1) return \"\";\n const priority = [ \"compressed\", \"texture\", \"rgba\", \"pcm\", \"raw\", \"container\", \"video\", \"audio\" ];\n const preferred = priority\n .map((kind) => variants.find((variant) => variant.kind === kind && variant.supported))\n .find(Boolean) || variants.find((variant) => variant.supported);\n return preferred ? preferred.codec || preferred.payloadType || preferred.kind || \"\" : \"\";\n }\n\n /**\n * Returns true if any supported variant is available.\n *\n * @returns {boolean}\n */\n isSupported() {\n return this.supported === \"full\" || this.supported === \"partial\";\n }\n\n /**\n * Returns true if raw fallback variant is supported.\n *\n * @returns {boolean}\n */\n canUseRaw() {\n return this.variants.some((entry) => entry && [ \"raw\", \"rgba\" ].includes(entry.kind) && entry.supported);\n }\n\n /**\n * Returns true if compressed variant is supported.\n *\n * @returns {boolean}\n */\n canUseCompressed() {\n return this.variants.some((entry) => entry && entry.kind === \"compressed\" && entry.supported);\n }\n\n /**\n * Return true when a supported variant of the requested kind exists.\n *\n * @param {string} kind\n * @returns {boolean}\n */\n canUse(kind) {\n return this.variants.some((entry) => entry && entry.kind === kind && entry.supported);\n }\n}\n"],"names":["_CjsResourceProbe","CjsResourceProbe","CjsModel","e","_init_format","_init_extra_format","_init_source","_init_extra_source","_init_supported","_init_extra_supported","_init_verified","_init_extra_verified","_init_confidence","_init_extra_confidence","_init_preferred","_init_extra_preferred","_init_reason","_init_extra_reason","_init_metadata","_init_extra_metadata","_init_variant","_init_extra_variant","_init_variants","_init_extra_variants","_init_warnings","_init_extra_warnings","_init_errors","_init_extra_errors","c","_initClass","_applyDecs","type","define","className","family","io","persist","string","boolean","float64","unknown","list","format","source","supported","verified","confidence","preferred","reason","metadata","variant","variants","warnings","errors","constructor","values","SetValues","markDirty","skipUpdate","skipEvents","Initialize","isSupported","src","options","inspect","createUnsupported","createSupported","normalizedVariants","Array","isArray","anySupported","some","entry","normalized","map","normalizeVariant","selectPreferred","length","from","input","toJSON","normalizeReport","kind","payloadType","codec","meta","priority","find","Boolean","canUseRaw","includes","canUseCompressed","canUse"],"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,