@carbonenginejs/runtime-resource 0.12.1 → 0.13.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 (541) hide show
  1. package/LICENSE +21 -21
  2. package/NOTICE +32 -32
  3. package/README.md +129 -108
  4. package/dist/CjsMotherLode.js +1271 -1271
  5. package/dist/CjsResMan.js +3858 -3494
  6. package/dist/CjsResMan.js.map +1 -1
  7. package/dist/CjsResManFetchProvider.js +94 -94
  8. package/dist/CjsResManWorkQueue.js +301 -301
  9. package/dist/_virtual/_rollupPluginBabelHelpers.js +150 -150
  10. package/dist/format/CjsBlueReader.js +358 -358
  11. package/dist/format/CjsByteReader.js +310 -310
  12. package/dist/format/CjsByteWriter.js +242 -242
  13. package/dist/format/CjsFormat.js +223 -223
  14. package/dist/format/CjsFormatError.js +41 -41
  15. package/dist/format/CjsReader.js +22 -22
  16. package/dist/format/CjsResourceProbe.js +279 -279
  17. package/dist/format/CjsStringTable.js +268 -268
  18. package/dist/format/carbonEffect/CjsCarbonEffectReader.js +408 -361
  19. package/dist/format/carbonEffect/CjsCarbonEffectReader.js.map +1 -1
  20. package/dist/format/carbonEffect/CjsCarbonEffectWriter.js +373 -373
  21. package/dist/format/carbonEffect/buildCarbonEffectContainer.js +182 -0
  22. package/dist/format/carbonEffect/buildCarbonEffectContainer.js.map +1 -0
  23. package/dist/format/carbonEffect/carbonEffectBackendBlock.js +321 -427
  24. package/dist/format/carbonEffect/carbonEffectBackendBlock.js.map +1 -1
  25. package/dist/format/carbonEffect/carbonEffectRecords.js +1147 -955
  26. package/dist/format/carbonEffect/carbonEffectRecords.js.map +1 -1
  27. package/dist/format/carbonEffect/carbonEffectResourceTransform.js +197 -0
  28. package/dist/format/carbonEffect/carbonEffectResourceTransform.js.map +1 -0
  29. package/dist/format/compareUtf8.js +36 -36
  30. package/dist/format/effect/effectBodyInventory.js +146 -0
  31. package/dist/format/effect/effectBodyInventory.js.map +1 -0
  32. package/dist/format/effect/effectPermutationGraph.js +257 -257
  33. package/dist/format/effect/effectPermutationGraph.js.map +1 -1
  34. package/dist/format/effect/sha256.js +114 -114
  35. package/dist/format/index.js +11 -11
  36. package/dist/format/payloadContract.js +193 -193
  37. package/dist/formats/black/CjsBlackFormat.js +310 -292
  38. package/dist/formats/black/CjsBlackFormat.js.map +1 -1
  39. package/dist/formats/black/core/CjsBlackBinaryReader.js +260 -260
  40. package/dist/formats/black/core/CjsBlackPropertyReaders.js +448 -448
  41. package/dist/formats/black/core/CjsBlackReader.js +764 -764
  42. package/dist/formats/black/core/CjsBlackSchemaRegistry.js +540 -540
  43. package/dist/formats/black/core/black-schema-v1-2026-07-23.json.js +4 -4
  44. package/dist/formats/black/core/blackConstants.js +7 -7
  45. package/dist/formats/black/core/blackDefinitions.js +10 -10
  46. package/dist/formats/black/core/blackEnums.js +6 -6
  47. package/dist/formats/black/core/blackSchema.js +3 -3
  48. package/dist/formats/black/core/blackVersion.js +22 -22
  49. package/dist/formats/black/core/helpers.js +199 -199
  50. package/dist/formats/black/core/schema.js +4 -4
  51. package/dist/formats/black/index.js +2 -2
  52. package/dist/formats/bnk/CjsBnkFormat.js +175 -156
  53. package/dist/formats/bnk/CjsBnkFormat.js.map +1 -1
  54. package/dist/formats/bnk/core/busNodes.js +252 -0
  55. package/dist/formats/bnk/core/busNodes.js.map +1 -0
  56. package/dist/formats/bnk/core/effectNodes.js +147 -0
  57. package/dist/formats/bnk/core/effectNodes.js.map +1 -0
  58. package/dist/formats/bnk/core/eventAction.js +416 -305
  59. package/dist/formats/bnk/core/eventAction.js.map +1 -1
  60. package/dist/formats/bnk/core/globalSettings.js +215 -0
  61. package/dist/formats/bnk/core/globalSettings.js.map +1 -0
  62. package/dist/formats/bnk/core/graph.js +137 -137
  63. package/dist/formats/bnk/core/helpers.js +512 -480
  64. package/dist/formats/bnk/core/helpers.js.map +1 -1
  65. package/dist/formats/bnk/core/musicNodes.js +533 -509
  66. package/dist/formats/bnk/core/musicNodes.js.map +1 -1
  67. package/dist/formats/bnk/core/nodeBase.js +553 -532
  68. package/dist/formats/bnk/core/nodeBase.js.map +1 -1
  69. package/dist/formats/bnk/core/sfxNodes.js +632 -632
  70. package/dist/formats/bnk/core/soundbanksInfo.js +209 -209
  71. package/dist/formats/bnk/index.js +2 -2
  72. package/dist/formats/cmf/CjsCmfFormat.js +497 -497
  73. package/dist/formats/cmf/core/binary.js +194 -194
  74. package/dist/formats/cmf/core/buffers.js +237 -237
  75. package/dist/formats/cmf/core/constants.js +47 -47
  76. package/dist/formats/cmf/core/gr2Anim.js +453 -453
  77. package/dist/formats/cmf/core/helpers.js +318 -318
  78. package/dist/formats/cmf/core/pack.js +276 -276
  79. package/dist/formats/cmf/core/schema.js +374 -374
  80. package/dist/formats/cmf/core/shared.js +277 -277
  81. package/dist/formats/cmf/core/writer.js +571 -571
  82. package/dist/formats/cmf/index.js +2 -2
  83. package/dist/formats/dds/CjsDdsFormat.js +200 -200
  84. package/dist/formats/dds/core/bc6h.js +298 -298
  85. package/dist/formats/dds/core/bc7.js +272 -272
  86. package/dist/formats/dds/core/helpers.js +862 -862
  87. package/dist/formats/dds/index.js +2 -2
  88. package/dist/formats/dxbc/CjsDxbcFormat.js +142 -142
  89. package/dist/formats/dxbc/core/DxbcReader.js +266 -266
  90. package/dist/formats/dxbc/core/container.js +169 -169
  91. package/dist/formats/dxbc/core/decoder.js +789 -789
  92. package/dist/formats/dxbc/core/errors.js +19 -19
  93. package/dist/formats/dxbc/core/helpers.js +220 -220
  94. package/dist/formats/dxbc/core/opcodes.js +45 -45
  95. package/dist/formats/dxbc/core/program.js +91 -91
  96. package/dist/formats/dxbc/core/signature.js +172 -172
  97. package/dist/formats/dxbc/index.js +2 -2
  98. package/dist/formats/fbx/CjsFbxFormat.js +266 -266
  99. package/dist/formats/fbx/core/helpers.js +3932 -3932
  100. package/dist/formats/fbx/index.js +2 -2
  101. package/dist/formats/flac/CjsFlacFormat.js +142 -142
  102. package/dist/formats/flac/core/helpers.js +315 -315
  103. package/dist/formats/flac/index.js +2 -2
  104. package/dist/formats/gif/CjsGifFormat.js +141 -141
  105. package/dist/formats/gif/core/helpers.js +380 -380
  106. package/dist/formats/gif/index.js +2 -2
  107. package/dist/formats/gltf/CjsGltfFormat.js +290 -290
  108. package/dist/formats/gltf/core/helpers.js +307 -307
  109. package/dist/formats/gltf/core/json.js +79 -79
  110. package/dist/formats/gltf/core/parser.js +679 -679
  111. package/dist/formats/gltf/core/targets.js +173 -173
  112. package/dist/formats/gltf/index.js +2 -2
  113. package/dist/formats/gr2/CjsGr2Format.js +289 -289
  114. package/dist/formats/gr2/core/bitknit2.js +282 -282
  115. package/dist/formats/gr2/core/curves.js +1047 -1047
  116. package/dist/formats/gr2/core/gsf.js +72 -72
  117. package/dist/formats/gr2/core/helpers.js +352 -352
  118. package/dist/formats/gr2/core/json.js +622 -622
  119. package/dist/formats/gr2/core/oodle1.js +388 -388
  120. package/dist/formats/gr2/core/tangents.js +48 -48
  121. package/dist/formats/gr2/core/targets.js +361 -361
  122. package/dist/formats/gr2/index.js +2 -2
  123. package/dist/formats/hlsl/CjsHlslFormat.js +254 -254
  124. package/dist/formats/hlsl/core/HlslBinaryUtils.js +15 -15
  125. package/dist/formats/hlsl/core/HlslEffectReadError.js +19 -19
  126. package/dist/formats/hlsl/core/HlslEffectStateManager.js +130 -130
  127. package/dist/formats/hlsl/core/HlslRenderStateSetup.js +37 -37
  128. package/dist/formats/hlsl/core/HlslResourceSetDescription.js +94 -94
  129. package/dist/formats/hlsl/core/HlslShaderBytecode.js +44 -44
  130. package/dist/formats/hlsl/core/analysis.js +51 -51
  131. package/dist/formats/hlsl/core/carbonDescriptionToRuntime.js +850 -781
  132. package/dist/formats/hlsl/core/carbonDescriptionToRuntime.js.map +1 -1
  133. package/dist/formats/hlsl/core/detailMapFamily.js +128 -0
  134. package/dist/formats/hlsl/core/detailMapFamily.js.map +1 -0
  135. package/dist/formats/hlsl/core/helpers.js +270 -270
  136. package/dist/formats/hlsl/core/json.js +284 -284
  137. package/dist/formats/hlsl/core/localLightFamily.js +133 -0
  138. package/dist/formats/hlsl/core/localLightFamily.js.map +1 -0
  139. package/dist/formats/hlsl/core/metadata.js +327 -327
  140. package/dist/formats/hlsl/core/render-states.js +280 -280
  141. package/dist/formats/hlsl/core/tr2/HlslRenderContextEnum.js +43 -43
  142. package/dist/formats/hlsl/core/tr2/resources/HlslEffectRes.js +320 -314
  143. package/dist/formats/hlsl/core/tr2/resources/HlslEffectRes.js.map +1 -1
  144. package/dist/formats/hlsl/core/tr2/resources/HlslShaderPermutation.js +33 -33
  145. package/dist/formats/hlsl/core/tr2/shader/HlslEffectBindingManifest.js +416 -416
  146. package/dist/formats/hlsl/core/tr2/shader/HlslEffectConstant.js +40 -40
  147. package/dist/formats/hlsl/core/tr2/shader/HlslEffectDescription.js +62 -742
  148. package/dist/formats/hlsl/core/tr2/shader/HlslEffectDescription.js.map +1 -1
  149. package/dist/formats/hlsl/core/tr2/shader/HlslEffectLibrary.js +52 -52
  150. package/dist/formats/hlsl/core/tr2/shader/HlslEffectParameterAnnotation.js +38 -38
  151. package/dist/formats/hlsl/core/tr2/shader/HlslEffectResource.js +50 -50
  152. package/dist/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js +86 -86
  153. package/dist/formats/hlsl/core/tr2/shader/HlslEffectTechnique.js +31 -31
  154. package/dist/formats/hlsl/core/tr2/shader/HlslPass.js +42 -42
  155. package/dist/formats/hlsl/core/tr2/shader/HlslSamplerDescription.js +55 -55
  156. package/dist/formats/hlsl/core/tr2/shader/HlslSamplerSetup.js +29 -29
  157. package/dist/formats/hlsl/core/tr2/shader/HlslShader.js +220 -220
  158. package/dist/formats/hlsl/core/tr2/shader/HlslShaderOption.js +30 -30
  159. package/dist/formats/hlsl/index.js +3 -3
  160. package/dist/formats/index.js +33 -31
  161. package/dist/formats/index.js.map +1 -1
  162. package/dist/formats/jpeg/CjsJpegFormat.js +212 -212
  163. package/dist/formats/jpeg/core/helpers.js +402 -402
  164. package/dist/formats/jpeg/core/jpeg.js +480 -480
  165. package/dist/formats/jpeg/index.js +2 -2
  166. package/dist/formats/mp3/CjsMp3Format.js +197 -197
  167. package/dist/formats/mp3/core/helpers.js +375 -375
  168. package/dist/formats/mp3/index.js +2 -2
  169. package/dist/formats/mp4/CjsMp4Format.js +197 -197
  170. package/dist/formats/mp4/core/helpers.js +484 -484
  171. package/dist/formats/mp4/index.js +2 -2
  172. package/dist/formats/obj/CjsObjFormat.js +253 -253
  173. package/dist/formats/obj/core/helpers.js +573 -573
  174. package/dist/formats/obj/core/json.js +64 -64
  175. package/dist/formats/obj/core/parser.js +321 -321
  176. package/dist/formats/obj/index.js +2 -2
  177. package/dist/formats/ogg/CjsOggFormat.js +143 -143
  178. package/dist/formats/ogg/core/helpers.js +410 -410
  179. package/dist/formats/ogg/core/imdct.js +178 -178
  180. package/dist/formats/ogg/core/vorbis.js +1017 -1017
  181. package/dist/formats/ogg/index.js +2 -2
  182. package/dist/formats/pickle/CjsPickleFormat.js +214 -0
  183. package/dist/formats/pickle/CjsPickleFormat.js.map +1 -0
  184. package/dist/formats/pickle/core/CjsPickleProtocol0Reader.js +551 -0
  185. package/dist/formats/pickle/core/CjsPickleProtocol0Reader.js.map +1 -0
  186. package/dist/formats/pickle/index.js +2 -0
  187. package/dist/formats/pickle/index.js.map +1 -0
  188. package/dist/formats/png/CjsPngFormat.js +201 -201
  189. package/dist/formats/png/core/helpers.js +635 -635
  190. package/dist/formats/png/index.js +2 -2
  191. package/dist/formats/red/CjsRedFormat.js +263 -263
  192. package/dist/formats/red/core/CjsRedReader.js +246 -246
  193. package/dist/formats/red/core/blackDefinitions.js +3 -3
  194. package/dist/formats/red/core/helpers.js +158 -158
  195. package/dist/formats/red/core/redGraph.js +71 -68
  196. package/dist/formats/red/core/redGraph.js.map +1 -1
  197. package/dist/formats/red/core/schema.js +4 -4
  198. package/dist/formats/red/index.js +2 -2
  199. package/dist/formats/stl/CjsStlFormat.js +365 -365
  200. package/dist/formats/stl/core/helpers.js +261 -261
  201. package/dist/formats/stl/core/json.js +51 -51
  202. package/dist/formats/stl/core/stl.js +642 -642
  203. package/dist/formats/stl/core/targets.js +173 -173
  204. package/dist/formats/stl/index.js +2 -2
  205. package/dist/formats/tga/CjsTgaFormat.js +197 -197
  206. package/dist/formats/tga/core/helpers.js +493 -493
  207. package/dist/formats/tga/index.js +2 -2
  208. package/dist/formats/wav/CjsWavFormat.js +198 -198
  209. package/dist/formats/wav/core/helpers.js +365 -365
  210. package/dist/formats/wav/index.js +2 -2
  211. package/dist/formats/webgl/CjsWebglFormat.js +199 -221
  212. package/dist/formats/webgl/CjsWebglFormat.js.map +1 -1
  213. package/dist/formats/webgl/core/buildGlslEffectContainer.js +70 -0
  214. package/dist/formats/webgl/core/buildGlslEffectContainer.js.map +1 -0
  215. package/dist/formats/webgl/core/effectPackage.js +900 -792
  216. package/dist/formats/webgl/core/effectPackage.js.map +1 -1
  217. package/dist/formats/webgl/core/errors.js +27 -27
  218. package/dist/formats/webgl/core/errors.js.map +1 -1
  219. package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js +2820 -2678
  220. package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
  221. package/dist/formats/webgl/core/glsl/DxbcGlslHelpers.js +89 -89
  222. package/dist/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js +486 -428
  223. package/dist/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js.map +1 -1
  224. package/dist/formats/webgl/core/glsl/packedLightFixups.js +98 -0
  225. package/dist/formats/webgl/core/glsl/packedLightFixups.js.map +1 -0
  226. package/dist/formats/webgl/core/glslBackendBlock.js +552 -0
  227. package/dist/formats/webgl/core/glslBackendBlock.js.map +1 -0
  228. package/dist/formats/webgl/core/glslBackendBodySet.js +243 -0
  229. package/dist/formats/webgl/core/glslBackendBodySet.js.map +1 -0
  230. package/dist/formats/webgl/core/{cewgCompleteness.js → glslEffectCompleteness.js} +85 -81
  231. package/dist/formats/webgl/core/glslEffectCompleteness.js.map +1 -0
  232. package/dist/formats/webgl/core/helpers.js +167 -306
  233. package/dist/formats/webgl/core/helpers.js.map +1 -1
  234. package/dist/formats/webgl/core/inspectGlslEffectContainer.js +122 -0
  235. package/dist/formats/webgl/core/inspectGlslEffectContainer.js.map +1 -0
  236. package/dist/formats/webgl/core/readGlslEffectContainer.js +303 -0
  237. package/dist/formats/webgl/core/readGlslEffectContainer.js.map +1 -0
  238. package/dist/formats/webgl/index.js +2 -2
  239. package/dist/formats/webgpu/CjsWebgpuFormat.js +357 -357
  240. package/dist/formats/webgpu/CjsWebgpuFormat.js.map +1 -1
  241. package/dist/formats/webgpu/core/buildCarbonEffectContainer.js +89 -197
  242. package/dist/formats/webgpu/core/buildCarbonEffectContainer.js.map +1 -1
  243. package/dist/formats/webgpu/core/{cewgpu/CewgpuContainer.js → carbonWebgpu/CarbonWebgpuContainer.js} +354 -368
  244. package/dist/formats/webgpu/core/carbonWebgpu/CarbonWebgpuContainer.js.map +1 -0
  245. package/dist/formats/webgpu/core/{cewgpu → carbonWebgpu}/containerViews.js +355 -355
  246. package/dist/formats/webgpu/core/carbonWebgpu/containerViews.js.map +1 -0
  247. package/dist/formats/webgpu/core/{cewgpu → carbonWebgpu}/validateContainer.js +90 -90
  248. package/dist/formats/webgpu/core/carbonWebgpu/validateContainer.js.map +1 -0
  249. package/dist/formats/webgpu/core/effectAnalysis.js +82 -82
  250. package/dist/formats/webgpu/core/effectBackendBodySet.js +289 -289
  251. package/dist/formats/webgpu/core/effectBackendBodySet.js.map +1 -1
  252. package/dist/formats/webgpu/core/errors.js +20 -20
  253. package/dist/formats/webgpu/core/errors.js.map +1 -1
  254. package/dist/formats/webgpu/core/helpers.js +443 -443
  255. package/dist/formats/webgpu/core/helpers.js.map +1 -1
  256. package/dist/formats/webgpu/core/ir/analyzeRegisterValues.js +212 -212
  257. package/dist/formats/webgpu/core/ir/buildControlFlow.js +220 -220
  258. package/dist/formats/webgpu/core/ir/indexableTemps.js +137 -137
  259. package/dist/formats/webgpu/core/ir/inferValueTypes.js +449 -449
  260. package/dist/formats/webgpu/core/ir/lowerDxbcToIr.js +494 -494
  261. package/dist/formats/webgpu/core/ir/resolveRegisterFlow.js +177 -177
  262. package/dist/formats/webgpu/core/ir/sourceLanes.js +61 -61
  263. package/dist/formats/webgpu/core/packageEffect.js +381 -385
  264. package/dist/formats/webgpu/core/packageEffect.js.map +1 -1
  265. package/dist/formats/webgpu/core/packageEffectSelection.js +164 -164
  266. package/dist/formats/webgpu/core/packageEffectSelection.js.map +1 -1
  267. package/dist/formats/webgpu/core/packageMetadata.js +17 -17
  268. package/dist/formats/webgpu/core/schema.js +4 -4
  269. package/dist/formats/webgpu/core/wgsl/buildResourceTransformPlan.js +263 -263
  270. package/dist/formats/webgpu/core/wgsl/buildResourceTransformPlan.js.map +1 -1
  271. package/dist/formats/webgpu/core/wgsl/buildWgslBindingPlan.js +172 -172
  272. package/dist/formats/webgpu/core/wgsl/buildWgslSet.js +320 -320
  273. package/dist/formats/webgpu/core/wgsl/buildWgslSet.js.map +1 -1
  274. package/dist/formats/webgpu/core/wgsl/emitWgsl.js +356 -356
  275. package/dist/formats/webgpu/core/wgsl/hoistEscapingValues.js +77 -77
  276. package/dist/formats/webgpu/core/wgsl/lowerBindingLayout.js +451 -451
  277. package/dist/formats/webgpu/core/wgsl/lowerComputeProgram.js +735 -735
  278. package/dist/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js +457 -457
  279. package/dist/formats/webgpu/core/wgsl/lowerFragmentProgram.js +1572 -1572
  280. package/dist/formats/webgpu/core/wgsl/lowerMergeHistogramsComputeProgram.js +659 -659
  281. package/dist/formats/webgpu/core/wgsl/lowerParticleClearComputePrograms.js +734 -734
  282. package/dist/formats/webgpu/core/wgsl/lowerParticleEmitComputeProgram.js +583 -583
  283. package/dist/formats/webgpu/core/wgsl/lowerSkinVerticesComputeProgram.js +621 -621
  284. package/dist/formats/webgpu/core/wgsl/lowerSortComputeProgram.js +824 -824
  285. package/dist/formats/webgpu/core/wgsl/lowerSortInnerComputeProgram.js +697 -697
  286. package/dist/formats/webgpu/core/wgsl/lowerSortStepComputeProgram.js +559 -559
  287. package/dist/formats/webgpu/core/wgsl/lowerVertexProgram.js +1328 -1328
  288. package/dist/formats/webgpu/core/wgsl/particleEmitSemanticDigest.js +110 -110
  289. package/dist/formats/webgpu/core/wgsl/precisionControls.js +55 -55
  290. package/dist/formats/webgpu/core/wgsl/selectionPlans.js +717 -717
  291. package/dist/formats/webgpu/core/wgsl/uniformity.js +78 -78
  292. package/dist/formats/webgpu/core/wgsl/validateExactComputeIr.js +196 -196
  293. package/dist/formats/webgpu/core/wgsl/validateHandleOperand.js +37 -37
  294. package/dist/formats/webgpu/index.js +2 -2
  295. package/dist/formats/webm/CjsWebmFormat.js +197 -197
  296. package/dist/formats/webm/core/helpers.js +572 -572
  297. package/dist/formats/webm/index.js +2 -2
  298. package/dist/formats/webp/CjsWebpFormat.js +140 -140
  299. package/dist/formats/webp/core/helpers.js +237 -237
  300. package/dist/formats/webp/index.js +2 -2
  301. package/dist/formats/wem/CjsWemFormat.js +250 -250
  302. package/dist/formats/wem/core/bitStream.js +261 -261
  303. package/dist/formats/wem/core/codebookLibrary.js +164 -164
  304. package/dist/formats/wem/core/helpers.js +437 -437
  305. package/dist/formats/wem/core/packedCodebooksAotuv603.js +30 -30
  306. package/dist/formats/wem/core/ptadpcm.js +77 -77
  307. package/dist/formats/wem/core/resolve.js +121 -121
  308. package/dist/formats/wem/core/wemToOgg.js +485 -485
  309. package/dist/formats/wem/index.js +2 -2
  310. package/dist/formats/yaml/CjsYamlFormat.js +134 -134
  311. package/dist/formats/yaml/CjsYamlFormat.js.map +1 -1
  312. package/dist/formats/yaml/core/CjsYamlReader.js +400 -402
  313. package/dist/formats/yaml/core/CjsYamlReader.js.map +1 -1
  314. package/dist/formats/yaml/core/helpers.js +196 -170
  315. package/dist/formats/yaml/core/helpers.js.map +1 -1
  316. package/dist/formats/yaml/index.js +2 -2
  317. package/dist/index.js +64 -62
  318. package/dist/index.js.map +1 -1
  319. package/dist/resource/CjsLoadingObject.js +19 -0
  320. package/dist/resource/CjsLoadingObject.js.map +1 -0
  321. package/dist/resource/CjsResource.js +801 -797
  322. package/dist/resource/CjsResource.js.map +1 -1
  323. package/dist/resource/ResourceHandlerMode.js +14 -0
  324. package/dist/resource/ResourceHandlerMode.js.map +1 -0
  325. package/dist/resource/Tr2LightProfileRes.js +32 -32
  326. package/dist/resource/audio/AudioGeometryResData.js +47 -47
  327. package/dist/resource/audio/CjsAudioBufferRes.js +86 -86
  328. package/dist/resource/audio/CjsAudioRes.js +213 -213
  329. package/dist/resource/audio/index.js +4 -4
  330. package/dist/resource/geometry/MeshDecalData.js +37 -37
  331. package/dist/resource/geometry/MeshDecalLodData.js +34 -34
  332. package/dist/resource/geometry/TriGeometryRes.js +675 -675
  333. package/dist/resource/geometry/TriGeometryResAreaData.js +59 -59
  334. package/dist/resource/geometry/TriGeometryResJointData.js +38 -38
  335. package/dist/resource/geometry/TriGeometryResLodData.js +88 -88
  336. package/dist/resource/geometry/TriGeometryResMeshData.js +63 -63
  337. package/dist/resource/geometry/TriGeometryResSkeletonData.js +34 -34
  338. package/dist/resource/geometry/TriJointBinding.js +38 -38
  339. package/dist/resource/geometry/TriMorphTargetGeometryConstants.js +46 -46
  340. package/dist/resource/geometry/TriRtGeometryConstants.js +88 -88
  341. package/dist/resource/geometry/granny/GStateBindingCallbackData.js +31 -31
  342. package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js +60 -60
  343. package/dist/resource/geometry/granny/Tr2GrannyStateRes.js +36 -36
  344. package/dist/resource/geometry/granny/TriGrannyRes.js +35 -35
  345. package/dist/resource/geometry/granny/enums.js +10 -10
  346. package/dist/resource/geometry/granny/index.js +6 -6
  347. package/dist/resource/geometry/index.js +17 -17
  348. package/dist/resource/index.js +54 -52
  349. package/dist/resource/index.js.map +1 -1
  350. package/dist/resource/resourceBoundary.js +64 -64
  351. package/dist/resource/shader/Tr2EffectRes.js +336 -431
  352. package/dist/resource/shader/Tr2EffectRes.js.map +1 -1
  353. package/dist/resource/shader/Tr2MaterialArea.js +31 -31
  354. package/dist/resource/shader/Tr2MaterialMesh.js +27 -27
  355. package/dist/resource/shader/Tr2MaterialRes.js +31 -31
  356. package/dist/resource/shader/Tr2Shader.js +283 -261
  357. package/dist/resource/shader/Tr2Shader.js.map +1 -1
  358. package/dist/resource/shader/Tr2ShaderPermutation.js +43 -43
  359. package/dist/resource/shader/index.js +17 -17
  360. package/dist/resource/shader/reflection/Tr2EffectConstant.js +143 -135
  361. package/dist/resource/shader/reflection/Tr2EffectConstant.js.map +1 -1
  362. package/dist/resource/shader/reflection/Tr2EffectDefine.js +30 -30
  363. package/dist/resource/shader/reflection/Tr2EffectDescription.js +114 -109
  364. package/dist/resource/shader/reflection/Tr2EffectDescription.js.map +1 -1
  365. package/dist/resource/shader/reflection/Tr2EffectLibrary.js +168 -147
  366. package/dist/resource/shader/reflection/Tr2EffectLibrary.js.map +1 -1
  367. package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +125 -105
  368. package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js.map +1 -1
  369. package/dist/resource/shader/reflection/Tr2EffectResource.js +120 -86
  370. package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -1
  371. package/dist/resource/shader/reflection/Tr2EffectStageInput.js +372 -241
  372. package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -1
  373. package/dist/resource/shader/reflection/Tr2EffectTechnique.js +78 -68
  374. package/dist/resource/shader/reflection/Tr2EffectTechnique.js.map +1 -1
  375. package/dist/resource/shader/reflection/Tr2Pass.js +168 -111
  376. package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -1
  377. package/dist/resource/shader/reflection/carbonRecordFields.js +159 -0
  378. package/dist/resource/shader/reflection/carbonRecordFields.js.map +1 -0
  379. package/dist/resource/shader/reflection/shaderStage.js +22 -0
  380. package/dist/resource/shader/reflection/shaderStage.js.map +1 -0
  381. package/dist/resource/shader/sampler/Tr2SamplerSetup.js +135 -77
  382. package/dist/resource/shader/sampler/Tr2SamplerSetup.js.map +1 -1
  383. package/dist/resource/texture/CjsTextureArrayRes.js +472 -472
  384. package/dist/resource/texture/CjsTextureArrayResParameterProxy.js +179 -179
  385. package/dist/resource/texture/Tr2ImageRes.js +120 -120
  386. package/dist/resource/texture/Tr2TextureLodManager.js +82 -82
  387. package/dist/resource/texture/Tr2TextureLodUpdateRequest.js +37 -37
  388. package/dist/resource/texture/Tr2TexturePackChannel.js +37 -37
  389. package/dist/resource/texture/Tr2TexturePipeline.js +54 -54
  390. package/dist/resource/texture/Tr2TexturePipelineParams.js +34 -34
  391. package/dist/resource/texture/Tr2TexturePipelineStepCompress.js +40 -40
  392. package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js +22 -22
  393. package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js +34 -34
  394. package/dist/resource/texture/Tr2TexturePipelineStepLoad.js +31 -31
  395. package/dist/resource/texture/Tr2TexturePipelineStepPack.js +43 -43
  396. package/dist/resource/texture/TriTextureRes.js +359 -359
  397. package/dist/resource/texture/index.js +15 -15
  398. package/dist/resource/texture/texturePipelineBehavior.js +308 -308
  399. package/dist/worker/CjsResManMainThreadLoader.js +89 -87
  400. package/dist/worker/CjsResManMainThreadLoader.js.map +1 -1
  401. package/dist/worker/CjsResManWorker.js +218 -217
  402. package/dist/worker/CjsResManWorker.js.map +1 -1
  403. package/dist/worker/CjsResManWorkerLoader.js +437 -434
  404. package/dist/worker/CjsResManWorkerLoader.js.map +1 -1
  405. package/dist/worker/protocol.js +12 -12
  406. package/docs/README.md +98 -98
  407. package/docs/architecture.md +118 -109
  408. package/docs/concepts/resource-lifecycle.md +226 -225
  409. package/docs/concepts/shader-resource-model.md +111 -114
  410. package/docs/concepts/writing-an-engine-adapter.md +115 -115
  411. package/docs/formats/README.md +138 -136
  412. package/docs/formats/carbon-effect-container.md +553 -452
  413. package/docs/formats/dxbc/README.md +68 -68
  414. package/docs/formats/dxbc/architecture.md +80 -80
  415. package/docs/formats/dxbc/reference/api.md +77 -77
  416. package/docs/formats/dxbc/reference/classes/README.md +9 -9
  417. package/docs/formats/dxbc/reference/decoded-output.md +122 -122
  418. package/docs/formats/gr2.md +160 -160
  419. package/docs/formats/hlsl/README.md +54 -54
  420. package/docs/formats/hlsl/architecture.md +65 -67
  421. package/docs/formats/hlsl/guides/hydrating-json-output.md +60 -62
  422. package/docs/formats/hlsl/guides/reading-effects.md +64 -64
  423. package/docs/formats/hlsl/reference/advanced-analysis.md +61 -66
  424. package/docs/formats/hlsl/reference/api.md +92 -98
  425. package/docs/formats/hlsl/reference/classes/README.md +11 -11
  426. package/docs/formats/hlsl/reference/json-graph.md +97 -100
  427. package/docs/formats/pickle.md +82 -0
  428. package/docs/formats/provenance.md +196 -196
  429. package/docs/formats/stl.md +37 -37
  430. package/docs/formats/webgl/README.md +115 -57
  431. package/docs/formats/webgl/architecture.md +69 -70
  432. package/docs/formats/webgl/carbon-constant-layouts.md +326 -326
  433. package/docs/formats/webgl/decl-io.md +1234 -1234
  434. package/docs/formats/webgl/memory-structured.md +890 -871
  435. package/docs/formats/webgl/reference/classes/README.md +9 -9
  436. package/docs/formats/webgl/texture-sample.md +964 -964
  437. package/docs/formats/webgpu/README.md +84 -84
  438. package/docs/formats/webgpu/architecture.md +95 -96
  439. package/docs/formats/webgpu/formats/{cewgpu.md → carbon-webgpu.md} +215 -216
  440. package/docs/formats/webgpu/guides/effect-packaging.md +189 -191
  441. package/docs/formats/webgpu/reference/api.md +196 -197
  442. package/docs/formats/webgpu/reference/classes/README.md +9 -9
  443. package/docs/formats/webgpu/reference/wgsl-compatibility.md +1546 -1543
  444. package/docs/formats/wwise.md +146 -85
  445. package/docs/reference/classes/README.md +35 -35
  446. package/docs/reference/classes/audio.md +30 -30
  447. package/docs/reference/classes/core.md +216 -206
  448. package/docs/reference/classes/dropped.md +46 -46
  449. package/docs/reference/classes/formats.md +944 -952
  450. package/docs/reference/classes/resources.md +456 -456
  451. package/docs/reference/classes/texture.md +26 -26
  452. package/docs/reference/events.md +117 -117
  453. package/docs/reference/motherlode-cache.md +275 -275
  454. package/docs/reference/queues.md +194 -110
  455. package/docs/reference/reload.md +107 -107
  456. package/docs/reference/texture-arrays.md +113 -113
  457. package/docs/reference/texture-pipeline.md +53 -53
  458. package/docs/reference/workers.md +142 -135
  459. package/docs/roadmap.md +150 -150
  460. package/format-notices/black/LICENSE +21 -21
  461. package/format-notices/black/NOTICE +47 -47
  462. package/format-notices/bnk/LICENSE +21 -21
  463. package/format-notices/bnk/NOTICE +21 -21
  464. package/format-notices/cmf/LICENSE +21 -21
  465. package/format-notices/cmf/NOTICE +36 -36
  466. package/format-notices/dds/LICENSE +21 -21
  467. package/format-notices/dds/NOTICE +14 -14
  468. package/format-notices/dxbc/LICENSE +21 -21
  469. package/format-notices/dxbc/NOTICE +20 -20
  470. package/format-notices/fbx/LICENSE +21 -21
  471. package/format-notices/fbx/NOTICE +14 -14
  472. package/format-notices/flac/LICENSE +21 -21
  473. package/format-notices/flac/NOTICE +14 -14
  474. package/format-notices/gif/LICENSE +21 -21
  475. package/format-notices/gif/NOTICE +14 -14
  476. package/format-notices/gltf/LICENSE +21 -21
  477. package/format-notices/gltf/NOTICE +27 -27
  478. package/format-notices/gr2/LICENSE +21 -21
  479. package/format-notices/gr2/NOTICE +60 -60
  480. package/format-notices/gr2/THIRD-PARTY-NOTICES.md +93 -93
  481. package/format-notices/hlsl/LICENSE +21 -21
  482. package/format-notices/hlsl/NOTICE +25 -25
  483. package/format-notices/jpeg/LICENSE +21 -21
  484. package/format-notices/jpeg/NOTICE +14 -14
  485. package/format-notices/mp3/LICENSE +21 -21
  486. package/format-notices/mp3/NOTICE +14 -14
  487. package/format-notices/mp4/LICENSE +21 -21
  488. package/format-notices/mp4/NOTICE +14 -14
  489. package/format-notices/obj/LICENSE +21 -21
  490. package/format-notices/obj/NOTICE +26 -26
  491. package/format-notices/ogg/LICENSE +21 -21
  492. package/format-notices/ogg/NOTICE +28 -28
  493. package/format-notices/png/LICENSE +21 -21
  494. package/format-notices/png/NOTICE +14 -14
  495. package/format-notices/red/LICENSE +21 -21
  496. package/format-notices/red/NOTICE +31 -31
  497. package/format-notices/stl/LICENSE +21 -21
  498. package/format-notices/stl/NOTICE +21 -21
  499. package/format-notices/tga/LICENSE +21 -21
  500. package/format-notices/tga/NOTICE +14 -14
  501. package/format-notices/wav/LICENSE +21 -21
  502. package/format-notices/wav/NOTICE +14 -14
  503. package/format-notices/webgl/LICENSE +21 -21
  504. package/format-notices/webgl/NOTICE +35 -35
  505. package/format-notices/webgpu/LICENSE +21 -21
  506. package/format-notices/webgpu/NOTICE +31 -31
  507. package/format-notices/webm/LICENSE +21 -21
  508. package/format-notices/webm/NOTICE +14 -14
  509. package/format-notices/webp/LICENSE +21 -21
  510. package/format-notices/webp/NOTICE +14 -14
  511. package/format-notices/wem/LICENSE +57 -57
  512. package/format-notices/wem/NOTICE +33 -33
  513. package/format-notices/yaml/LICENSE +21 -21
  514. package/format-notices/yaml/NOTICE +44 -44
  515. package/package.json +63 -63
  516. package/dist/format/carbonEffect/carbonDescriptionFromPortable.js +0 -372
  517. package/dist/format/carbonEffect/carbonDescriptionFromPortable.js.map +0 -1
  518. package/dist/format/effect/effectReflectionPackage.js +0 -636
  519. package/dist/format/effect/effectReflectionPackage.js.map +0 -1
  520. package/dist/formats/hlsl/core/HlslReader.js +0 -16
  521. package/dist/formats/hlsl/core/HlslReader.js.map +0 -1
  522. package/dist/formats/hlsl/core/portableReflection.js +0 -848
  523. package/dist/formats/hlsl/core/portableReflection.js.map +0 -1
  524. package/dist/formats/hlsl/portable.js +0 -2
  525. package/dist/formats/hlsl/portable.js.map +0 -1
  526. package/dist/formats/webgl/core/cewg/CewgPackage.js +0 -340
  527. package/dist/formats/webgl/core/cewg/CewgPackage.js.map +0 -1
  528. package/dist/formats/webgl/core/cewg/CewgPackageBuilder.js +0 -104
  529. package/dist/formats/webgl/core/cewg/CewgPackageBuilder.js.map +0 -1
  530. package/dist/formats/webgl/core/cewg/binary.js +0 -19
  531. package/dist/formats/webgl/core/cewg/binary.js.map +0 -1
  532. package/dist/formats/webgl/core/cewgCompleteness.js.map +0 -1
  533. package/dist/formats/webgl/core/effectPackageValidation.js +0 -331
  534. package/dist/formats/webgl/core/effectPackageValidation.js.map +0 -1
  535. package/dist/formats/webgpu/core/cewgpu/CewgpuContainer.js.map +0 -1
  536. package/dist/formats/webgpu/core/cewgpu/containerViews.js.map +0 -1
  537. package/dist/formats/webgpu/core/cewgpu/validateContainer.js.map +0 -1
  538. package/dist/resource/shader/portable.js +0 -33
  539. package/dist/resource/shader/portable.js.map +0 -1
  540. package/docs/formats/hlsl/reference/portable-reflection.md +0 -141
  541. package/docs/formats/webgl/effect-reflection.md +0 -127
@@ -1 +1 @@
1
- {"version":3,"file":"CjsResManWorkerLoader.js","sources":["../../../src/worker/CjsResManWorkerLoader.js"],"sourcesContent":["import { Message, Operation } from \"./protocol.js\";\nimport { CjsResManMainThreadLoader } from \"./CjsResManMainThreadLoader.js\";\n\nconst DEFAULT_WORKER_OPTIONS = Object.freeze({\n type: \"module\",\n name: \"CjsResManWorker\"\n});\n\n/**\n * Browser module-worker strategy that correlates source/format requests, transfers owned buffers, propagates cancellation and fatal failure, and delegates unsupported operations to a main-thread loader.\n *\n * One module worker can overlap fetch requests and serializes synchronous\n * reader work on its own event loop. Sources opt in through\n * `CreateWorkerRequest(path, options)`. Formats opt in through a static\n * `worker` declaration containing their module URL and export name.\n */\nexport class CjsResManWorkerLoader\n{\n #boundError;\n #boundMessage;\n #nextId = 1;\n #pending = new Map();\n\n /**\n * @param {object} [options={}] Worker construction and fallback options.\n * @param {CjsResManMainThreadLoader|object} [options.fallback] Unsupported-operation fallback.\n * @param {Worker|object} [options.worker] Existing Worker-compatible instance.\n * @param {(url: string|URL, options: object) => Worker|object} [options.workerFactory] Worker factory.\n * @param {string|URL} [options.workerUrl] Module worker entry URL.\n * @param {object} [options.workerOptions] Options passed to the Worker constructor.\n * @param {boolean} [options.enabled=true] Whether worker execution may be used.\n */\n constructor(options = {}) {\n if (!options || typeof options !== \"object\" || Array.isArray(options)) {\n throw new TypeError(\"CjsResManWorkerLoader options must be an object.\");\n }\n\n this.fallback = options.fallback || new CjsResManMainThreadLoader();\n assertResourceLoader(this.fallback, \"fallback\");\n this.workerFactory = options.workerFactory || defaultWorkerFactory;\n if (typeof this.workerFactory !== \"function\") {\n throw new TypeError(\"CjsResManWorkerLoader workerFactory must be a function.\");\n }\n this.workerUrl = options.workerUrl\n || new URL(\"./CjsResManWorker.js\", import.meta.url);\n this.workerOptions = Object.freeze({\n ...DEFAULT_WORKER_OPTIONS,\n ...(options.workerOptions || {})\n });\n this.enabled = options.enabled !== false;\n this.failed = false;\n this.worker = options.worker || null;\n this.#boundMessage = event => this.#OnMessage(event);\n this.#boundError = event => this.#OnError(event);\n if (this.worker) this.#Attach(this.worker);\n }\n\n /**\n * Enable and lazily create the configured worker.\n *\n * @param {string|URL} [workerUrl] Optional replacement worker URL.\n * @returns {boolean} Whether a worker is ready.\n */\n Enable(workerUrl = this.workerUrl) {\n this.enabled = true;\n if (workerUrl !== undefined && workerUrl !== null) this.workerUrl = workerUrl;\n if (this.worker) return true;\n if (this.failed) return false;\n\n try {\n const worker = this.workerFactory(this.workerUrl, this.workerOptions);\n if (!worker || typeof worker.postMessage !== \"function\") {\n throw new TypeError(\"Worker factory did not return a Worker-compatible object.\");\n }\n this.worker = worker;\n this.#Attach(worker);\n return true;\n } catch {\n this.worker = null;\n this.failed = true;\n return false;\n }\n }\n\n /**\n * Stop worker use and reject every pending request.\n *\n * @param {*} [reason] Optional failure reason.\n * @returns {CjsResManWorkerLoader} This loader.\n */\n Disable(reason = null) {\n const worker = this.worker;\n if (worker) {\n this.#Detach(worker);\n worker.terminate?.();\n }\n this.worker = null;\n this.enabled = false;\n this.failed = reason !== null && reason !== undefined;\n\n if (this.#pending.size) {\n const error = normalizeWorkerError(\n reason || createWorkerUnavailableError(\"Resource worker was disabled.\")\n );\n for (const request of this.#pending.values()) {\n cleanupPendingRequest(request);\n request.reject(error);\n }\n this.#pending.clear();\n }\n return this;\n }\n\n /**\n * Clear a previous creation/fatal failure so a later enable can retry.\n *\n * @returns {CjsResManWorkerLoader} This loader.\n */\n Reset() {\n this.failed = false;\n this.enabled = true;\n return this;\n }\n\n /**\n * Replace the unsupported-operation fallback.\n *\n * @param {CjsResManMainThreadLoader|object} fallback Loader exposing Read and ReadFormat.\n * @returns {CjsResManWorkerLoader} This loader.\n */\n SetFallback(fallback) {\n assertResourceLoader(fallback, \"fallback\");\n this.fallback = fallback;\n return this;\n }\n\n /**\n * Report whether worker execution is configured and constructible.\n *\n * @returns {boolean}\n */\n IsAvailable() {\n return this.enabled && (Boolean(this.worker) || this.Enable());\n }\n\n /**\n * Read a source through its declared worker request, falling back when the\n * source is not worker-aware or a worker cannot be created.\n *\n * @param {object|Function} source Source implementation.\n * @param {string} path Normalized resource path.\n * @param {object} [options={}] Source options.\n * @returns {Promise<*>|*} Source result.\n */\n Read(source, path, options = {}) {\n assertResourceSource(source);\n if (typeof source.CreateWorkerRequest !== \"function\") {\n return this.fallback.Read(source, path, options);\n }\n\n const request = normalizeWorkerRequest(source.CreateWorkerRequest(path, options));\n if (!request || !this.IsAvailable()) {\n return this.fallback.Read(source, path, options);\n }\n return this.Execute(request.operation, request.payload, {\n signal: request.signal || options.signal,\n transfer: request.transfer\n });\n }\n\n /**\n * Test whether a registered format can be safely dispatched to this worker.\n *\n * @param {object} descriptor Registered format descriptor.\n * @param {object} [formatOptions={}] Normalized format options.\n * @returns {boolean}\n */\n CanReadFormat(descriptor, formatOptions = {}) {\n const declaration = normalizeFormatWorkerDeclaration(descriptor);\n return Boolean(\n declaration\n && isWorkerFormatOutputSupported(declaration, formatOptions)\n && canCloneWorkerValue(formatOptions)\n && this.IsAvailable()\n );\n }\n\n /**\n * Execute a worker-safe format reader or use the main-thread fallback.\n *\n * Inputs are cloned by default so shared source-cache ownership is not\n * detached. A format may explicitly declare `transferInput: true` when its\n * caller guarantees exclusive ownership.\n *\n * @param {object} descriptor Registered format descriptor.\n * @param {*} input Reader input.\n * @param {object} [formatOptions={}] Normalized format options.\n * @returns {Promise<*>} Format result.\n */\n ReadFormat(descriptor, input, formatOptions = {}) {\n const declaration = normalizeFormatWorkerDeclaration(descriptor);\n if (!declaration\n || !isWorkerFormatOutputSupported(declaration, formatOptions)\n || !canCloneWorkerValue(formatOptions)\n || !this.IsAvailable()) {\n return this.fallback.ReadFormat(descriptor, input, formatOptions);\n }\n\n const transfer = declaration.transferInput\n ? getExclusiveInputTransferables(input)\n : [];\n return this.Execute(Operation.FORMAT_READ, {\n module: declaration.module,\n exportName: declaration.exportName,\n input,\n options: formatOptions\n }, { transfer });\n }\n\n /**\n * Dispatch one operation using the stable worker message protocol.\n *\n * @param {string} operation Operation name.\n * @param {*} payload Structured-cloneable operation payload.\n * @param {object} [options={}] Transfer and cancellation options.\n * @returns {Promise<*>} Worker result.\n */\n Execute(operation, payload, options = {}) {\n if (typeof operation !== \"string\" || operation.trim() === \"\") {\n return Promise.reject(new TypeError(\"Worker operation must be a non-empty string.\"));\n }\n if (!this.IsAvailable()) {\n return Promise.reject(createWorkerUnavailableError());\n }\n const signal = options.signal || null;\n if (signal?.aborted) return Promise.reject(createAbortError(signal.reason));\n\n const id = this.#nextId++;\n let resolve;\n let reject;\n const promise = new Promise((onResolve, onReject) => {\n resolve = onResolve;\n reject = onReject;\n });\n const request = {\n id,\n resolve,\n reject,\n signal,\n onAbort: null\n };\n if (signal && typeof signal.addEventListener === \"function\") {\n request.onAbort = () => {\n if (!this.#pending.delete(id)) return;\n cleanupPendingRequest(request);\n try {\n this.worker?.postMessage({\n type: Message.CANCEL,\n id\n });\n } catch {\n // The local abort remains authoritative if the worker is already gone.\n }\n reject(createAbortError(signal.reason));\n };\n signal.addEventListener(\"abort\", request.onAbort, { once: true });\n }\n this.#pending.set(id, request);\n\n try {\n this.worker.postMessage({\n type: Message.EXECUTE,\n id,\n operation,\n payload\n }, normalizeTransferList(options.transfer));\n } catch (error) {\n this.#pending.delete(id);\n cleanupPendingRequest(request);\n reject(error);\n }\n return promise;\n }\n\n /**\n * Return the number of unresolved worker requests.\n *\n * @returns {number}\n */\n GetPendingCount() {\n return this.#pending.size;\n }\n\n /** Attach this loader's result and failure listeners to a worker. */\n #Attach(worker) {\n if (typeof worker.addEventListener === \"function\") {\n worker.addEventListener(\"message\", this.#boundMessage);\n worker.addEventListener(\"error\", this.#boundError);\n worker.addEventListener(\"messageerror\", this.#boundError);\n } else {\n worker.onmessage = this.#boundMessage;\n worker.onerror = this.#boundError;\n worker.onmessageerror = this.#boundError;\n }\n }\n\n /** Detach this loader's result and failure listeners from a worker. */\n #Detach(worker) {\n if (typeof worker.removeEventListener === \"function\") {\n worker.removeEventListener(\"message\", this.#boundMessage);\n worker.removeEventListener(\"error\", this.#boundError);\n worker.removeEventListener(\"messageerror\", this.#boundError);\n } else {\n if (worker.onmessage === this.#boundMessage) worker.onmessage = null;\n if (worker.onerror === this.#boundError) worker.onerror = null;\n if (worker.onmessageerror === this.#boundError) worker.onmessageerror = null;\n }\n }\n\n /** Settle the pending request identified by one worker result message. */\n #OnMessage(event) {\n const data = event?.data;\n if (!data || data.type !== Message.RESULT) return;\n const request = this.#pending.get(data.id);\n if (!request) return;\n this.#pending.delete(data.id);\n cleanupPendingRequest(request);\n if (data.ok) request.resolve(data.result);\n else request.reject(normalizeWorkerError(data.error));\n }\n\n /** Disable worker execution after a fatal worker or message failure. */\n #OnError(event) {\n const reason = event?.error || event || new Error(\"Resource worker failed.\");\n this.Disable(reason);\n }\n}\n\nfunction assertResourceSource(source) {\n if (!source || (typeof source !== \"object\" && typeof source !== \"function\")\n || typeof source.Read !== \"function\") {\n throw new TypeError(\"Resource source must provide Read(path, options).\");\n }\n}\n\nfunction assertResourceLoader(loader, name = \"loader\") {\n if (!loader || typeof loader.Read !== \"function\" || typeof loader.ReadFormat !== \"function\") {\n throw new TypeError(`CjsResManWorkerLoader ${name} must provide Read and ReadFormat.`);\n }\n}\n\nfunction defaultWorkerFactory(url, options) {\n if (typeof Worker === \"undefined\") {\n throw new ReferenceError(\"Browser Worker is not available.\");\n }\n return new Worker(url, options);\n}\n\nfunction normalizeWorkerRequest(request) {\n if (request === null || request === undefined || request === false) return null;\n if (!request || typeof request !== \"object\" || Array.isArray(request)) {\n throw new TypeError(\"CreateWorkerRequest must return an object or null.\");\n }\n if (typeof request.operation !== \"string\" || request.operation.trim() === \"\") {\n throw new TypeError(\"Worker source request requires a non-empty operation.\");\n }\n return {\n operation: request.operation,\n payload: request.payload,\n signal: request.signal || null,\n transfer: normalizeTransferList(request.transfer)\n };\n}\n\nfunction normalizeFormatWorkerDeclaration(descriptor) {\n const Format = descriptor?.Format;\n const declaration = descriptor?.worker || Format?.worker;\n if (!declaration) return null;\n\n const value = typeof declaration === \"string\"\n ? { module: declaration }\n : declaration;\n if (!value || typeof value !== \"object\" || !value.module) return null;\n return Object.freeze({\n module: String(value.module),\n exportName: String(value.exportName || Format?.name || \"default\"),\n outputTypes: Array.isArray(value.outputTypes)\n ? Object.freeze(value.outputTypes.map(String))\n : null,\n defaultOutput: value.defaultOutput === undefined\n ? undefined\n : String(value.defaultOutput),\n transferInput: value.transferInput === true\n });\n}\n\nfunction isWorkerFormatOutputSupported(declaration, formatOptions) {\n if (!declaration.outputTypes) return true;\n const output = formatOptions.emit ?? declaration.defaultOutput;\n return output !== undefined && declaration.outputTypes.includes(String(output));\n}\n\nfunction normalizeTransferList(value) {\n if (value === null || value === undefined) return [];\n if (!Array.isArray(value)) {\n throw new TypeError(\"Worker transfer list must be an array.\");\n }\n return value;\n}\n\nfunction getExclusiveInputTransferables(input) {\n if (input instanceof ArrayBuffer) return [ input ];\n if (ArrayBuffer.isView(input)\n && input.byteOffset === 0\n && input.byteLength === input.buffer.byteLength) {\n return [ input.buffer ];\n }\n return [];\n}\n\nfunction canCloneWorkerValue(value, seen = new Set()) {\n if (value === null || value === undefined) return true;\n const type = typeof value;\n if (type === \"string\" || type === \"number\" || type === \"boolean\" || type === \"bigint\") {\n return true;\n }\n if (type !== \"object\") return false;\n if (value instanceof ArrayBuffer || ArrayBuffer.isView(value) || value instanceof Date) {\n return true;\n }\n if (seen.has(value)) return false;\n seen.add(value);\n if (Array.isArray(value)) {\n return value.every(entry => canCloneWorkerValue(entry, seen));\n }\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== Object.prototype && prototype !== null) return false;\n return Object.values(value).every(entry => canCloneWorkerValue(entry, seen));\n}\n\nfunction cleanupPendingRequest(request) {\n if (request.signal && request.onAbort\n && typeof request.signal.removeEventListener === \"function\") {\n request.signal.removeEventListener(\"abort\", request.onAbort);\n }\n}\n\nfunction createWorkerUnavailableError(message = \"Resource worker is unavailable.\") {\n const error = new Error(message);\n error.name = \"CjsResManWorkerUnavailableError\";\n error.code = \"CJS_RESOURCE_WORKER_UNAVAILABLE\";\n return error;\n}\n\nfunction createAbortError(reason) {\n if (reason instanceof Error) return reason;\n const error = new Error(reason === undefined ? \"Resource worker request was aborted.\" : String(reason));\n error.name = \"AbortError\";\n error.code = \"ABORT_ERR\";\n return error;\n}\n\nfunction normalizeWorkerError(value) {\n if (value instanceof Error) return value;\n const error = new Error(value?.message || \"Resource worker operation failed.\");\n error.name = value?.name || \"CjsResManWorkerError\";\n for (const key of [ \"code\", \"operation\", \"path\", \"status\", \"statusText\" ]) {\n if (value?.[key] !== undefined) error[key] = value[key];\n }\n return error;\n}\n"],"names":["DEFAULT_WORKER_OPTIONS","Object","freeze","type","name","CjsResManWorkerLoader","Map","constructor","options","Array","isArray","TypeError","fallback","CjsResManMainThreadLoader","assertResourceLoader","workerFactory","defaultWorkerFactory","workerUrl","URL","import","meta","url","workerOptions","enabled","failed","worker","event","Enable","undefined","postMessage","Disable","reason","terminate","size","error","normalizeWorkerError","createWorkerUnavailableError","request","values","cleanupPendingRequest","reject","clear","Reset","SetFallback","IsAvailable","Boolean","Read","source","path","assertResourceSource","CreateWorkerRequest","normalizeWorkerRequest","Execute","operation","payload","signal","transfer","CanReadFormat","descriptor","formatOptions","declaration","normalizeFormatWorkerDeclaration","isWorkerFormatOutputSupported","canCloneWorkerValue","ReadFormat","input","transferInput","getExclusiveInputTransferables","Operation","FORMAT_READ","module","exportName","trim","Promise","aborted","createAbortError","id","resolve","promise","onResolve","onReject","onAbort","addEventListener","delete","Message","CANCEL","once","set","EXECUTE","normalizeTransferList","GetPendingCount","#Attach","onmessage","onerror","onmessageerror","#Detach","removeEventListener","#OnMessage","data","RESULT","get","ok","result","#OnError","Error","loader","Worker","ReferenceError","Format","value","String","outputTypes","map","defaultOutput","output","emit","includes","ArrayBuffer","isView","byteOffset","byteLength","buffer","seen","Set","Date","has","add","every","entry","prototype","getPrototypeOf","message","code","key"],"mappings":"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"}
1
+ {"version":3,"file":"CjsResManWorkerLoader.js","sources":["../../../src/worker/CjsResManWorkerLoader.js"],"sourcesContent":["import { Message, Operation } from \"./protocol.js\";\nimport { CjsResManMainThreadLoader } from \"./CjsResManMainThreadLoader.js\";\n\nconst DEFAULT_WORKER_OPTIONS = Object.freeze({\n type: \"module\",\n name: \"CjsResManWorker\"\n});\n\n/**\n * Browser module-worker strategy that correlates source/format requests, transfers owned buffers, propagates cancellation and fatal failure, and delegates unsupported operations to a main-thread loader.\n *\n * One module worker can overlap fetch requests and serializes synchronous\n * reader work on its own event loop. Sources opt in through\n * `CreateWorkerRequest(path, options)`. Formats opt in through a static\n * `worker` declaration containing their module URL and export name.\n */\nexport class CjsResManWorkerLoader\n{\n #boundError;\n #boundMessage;\n #nextId = 1;\n #pending = new Map();\n\n /**\n * @param {object} [options={}] Worker construction and fallback options.\n * @param {CjsResManMainThreadLoader|object} [options.fallback] Unsupported-operation fallback.\n * @param {Worker|object} [options.worker] Existing Worker-compatible instance.\n * @param {(url: string|URL, options: object) => Worker|object} [options.workerFactory] Worker factory.\n * @param {string|URL} [options.workerUrl] Module worker entry URL.\n * @param {object} [options.workerOptions] Options passed to the Worker constructor.\n * @param {boolean} [options.enabled=true] Whether worker execution may be used.\n */\n constructor(options = {}) {\n if (!options || typeof options !== \"object\" || Array.isArray(options)) {\n throw new TypeError(\"CjsResManWorkerLoader options must be an object.\");\n }\n\n this.fallback = options.fallback || new CjsResManMainThreadLoader();\n assertResourceLoader(this.fallback, \"fallback\");\n this.workerFactory = options.workerFactory || defaultWorkerFactory;\n if (typeof this.workerFactory !== \"function\") {\n throw new TypeError(\"CjsResManWorkerLoader workerFactory must be a function.\");\n }\n this.workerUrl = options.workerUrl\n || new URL(\"./CjsResManWorker.js\", import.meta.url);\n this.workerOptions = Object.freeze({\n ...DEFAULT_WORKER_OPTIONS,\n ...(options.workerOptions || {})\n });\n this.enabled = options.enabled !== false;\n this.failed = false;\n this.worker = options.worker || null;\n this.#boundMessage = event => this.#OnMessage(event);\n this.#boundError = event => this.#OnError(event);\n if (this.worker) this.#Attach(this.worker);\n }\n\n /**\n * Enable and lazily create the configured worker.\n *\n * @param {string|URL} [workerUrl] Optional replacement worker URL.\n * @returns {boolean} Whether a worker is ready.\n */\n Enable(workerUrl = this.workerUrl) {\n this.enabled = true;\n if (workerUrl !== undefined && workerUrl !== null) this.workerUrl = workerUrl;\n if (this.worker) return true;\n if (this.failed) return false;\n\n try {\n const worker = this.workerFactory(this.workerUrl, this.workerOptions);\n if (!worker || typeof worker.postMessage !== \"function\") {\n throw new TypeError(\"Worker factory did not return a Worker-compatible object.\");\n }\n this.worker = worker;\n this.#Attach(worker);\n return true;\n } catch {\n this.worker = null;\n this.failed = true;\n return false;\n }\n }\n\n /**\n * Stop worker use and reject every pending request.\n *\n * @param {*} [reason] Optional failure reason.\n * @returns {CjsResManWorkerLoader} This loader.\n */\n Disable(reason = null) {\n const worker = this.worker;\n if (worker) {\n this.#Detach(worker);\n worker.terminate?.();\n }\n this.worker = null;\n this.enabled = false;\n this.failed = reason !== null && reason !== undefined;\n\n if (this.#pending.size) {\n const error = normalizeWorkerError(\n reason || createWorkerUnavailableError(\"Resource worker was disabled.\")\n );\n for (const request of this.#pending.values()) {\n cleanupPendingRequest(request);\n request.reject(error);\n }\n this.#pending.clear();\n }\n return this;\n }\n\n /**\n * Clear a previous creation/fatal failure so a later enable can retry.\n *\n * @returns {CjsResManWorkerLoader} This loader.\n */\n Reset() {\n this.failed = false;\n this.enabled = true;\n return this;\n }\n\n /**\n * Replace the unsupported-operation fallback.\n *\n * @param {CjsResManMainThreadLoader|object} fallback Loader exposing Read and ReadFormat.\n * @returns {CjsResManWorkerLoader} This loader.\n */\n SetFallback(fallback) {\n assertResourceLoader(fallback, \"fallback\");\n this.fallback = fallback;\n return this;\n }\n\n /**\n * Report whether worker execution is configured and constructible.\n *\n * @returns {boolean}\n */\n IsAvailable() {\n return this.enabled && (Boolean(this.worker) || this.Enable());\n }\n\n /**\n * Read a source through its declared worker request, falling back when the\n * source is not worker-aware or a worker cannot be created.\n *\n * @param {object|Function} source Source implementation.\n * @param {string} path Normalized resource path.\n * @param {object} [options={}] Source options.\n * @returns {Promise<*>|*} Source result.\n */\n Read(source, path, options = {}) {\n assertResourceSource(source);\n if (typeof source.CreateWorkerRequest !== \"function\") {\n return this.fallback.Read(source, path, options);\n }\n\n const request = normalizeWorkerRequest(source.CreateWorkerRequest(path, options));\n if (!request || !this.IsAvailable()) {\n return this.fallback.Read(source, path, options);\n }\n return this.Execute(request.operation, request.payload, {\n signal: request.signal || options.signal,\n transfer: request.transfer\n });\n }\n\n /**\n * Test whether a registered format can be safely dispatched to this worker.\n *\n * @param {object} descriptor Registered format descriptor.\n * @param {object} [formatOptions={}] Normalized format options.\n * @param {object|null} [context=null] Clone-safe normalized resource path context.\n * @returns {boolean}\n */\n CanReadFormat(descriptor, formatOptions = {}, context = null) {\n const declaration = normalizeFormatWorkerDeclaration(descriptor);\n return Boolean(\n declaration\n && isWorkerFormatOutputSupported(declaration, formatOptions)\n && canCloneWorkerValue(formatOptions)\n && canCloneWorkerValue(context)\n && this.IsAvailable()\n );\n }\n\n /**\n * Execute a worker-safe format reader or use the main-thread fallback.\n *\n * Inputs are cloned by default so shared source-cache ownership is not\n * detached. A format may explicitly declare `transferInput: true` when its\n * caller guarantees exclusive ownership.\n *\n * @param {object} descriptor Registered format descriptor.\n * @param {*} input Reader input.\n * @param {object} [formatOptions={}] Normalized format options.\n * @param {object|null} [context=null] Clone-safe normalized resource path context.\n * @returns {Promise<*>} Format result.\n */\n ReadFormat(descriptor, input, formatOptions = {}, context = null) {\n const declaration = normalizeFormatWorkerDeclaration(descriptor);\n if (!declaration\n || !isWorkerFormatOutputSupported(declaration, formatOptions)\n || !canCloneWorkerValue(formatOptions)\n || !canCloneWorkerValue(context)\n || !this.IsAvailable()) {\n return this.fallback.ReadFormat(descriptor, input, formatOptions, context);\n }\n\n const transfer = declaration.transferInput\n ? getExclusiveInputTransferables(input)\n : [];\n return this.Execute(Operation.FORMAT_READ, {\n module: declaration.module,\n exportName: declaration.exportName,\n input,\n options: formatOptions,\n context\n }, { transfer });\n }\n\n /**\n * Dispatch one operation using the stable worker message protocol.\n *\n * @param {string} operation Operation name.\n * @param {*} payload Structured-cloneable operation payload.\n * @param {object} [options={}] Transfer and cancellation options.\n * @returns {Promise<*>} Worker result.\n */\n Execute(operation, payload, options = {}) {\n if (typeof operation !== \"string\" || operation.trim() === \"\") {\n return Promise.reject(new TypeError(\"Worker operation must be a non-empty string.\"));\n }\n if (!this.IsAvailable()) {\n return Promise.reject(createWorkerUnavailableError());\n }\n const signal = options.signal || null;\n if (signal?.aborted) return Promise.reject(createAbortError(signal.reason));\n\n const id = this.#nextId++;\n let resolve;\n let reject;\n const promise = new Promise((onResolve, onReject) => {\n resolve = onResolve;\n reject = onReject;\n });\n const request = {\n id,\n resolve,\n reject,\n signal,\n onAbort: null\n };\n if (signal && typeof signal.addEventListener === \"function\") {\n request.onAbort = () => {\n if (!this.#pending.delete(id)) return;\n cleanupPendingRequest(request);\n try {\n this.worker?.postMessage({\n type: Message.CANCEL,\n id\n });\n } catch {\n // The local abort remains authoritative if the worker is already gone.\n }\n reject(createAbortError(signal.reason));\n };\n signal.addEventListener(\"abort\", request.onAbort, { once: true });\n }\n this.#pending.set(id, request);\n\n try {\n this.worker.postMessage({\n type: Message.EXECUTE,\n id,\n operation,\n payload\n }, normalizeTransferList(options.transfer));\n } catch (error) {\n this.#pending.delete(id);\n cleanupPendingRequest(request);\n reject(error);\n }\n return promise;\n }\n\n /**\n * Return the number of unresolved worker requests.\n *\n * @returns {number}\n */\n GetPendingCount() {\n return this.#pending.size;\n }\n\n /** Attach this loader's result and failure listeners to a worker. */\n #Attach(worker) {\n if (typeof worker.addEventListener === \"function\") {\n worker.addEventListener(\"message\", this.#boundMessage);\n worker.addEventListener(\"error\", this.#boundError);\n worker.addEventListener(\"messageerror\", this.#boundError);\n } else {\n worker.onmessage = this.#boundMessage;\n worker.onerror = this.#boundError;\n worker.onmessageerror = this.#boundError;\n }\n }\n\n /** Detach this loader's result and failure listeners from a worker. */\n #Detach(worker) {\n if (typeof worker.removeEventListener === \"function\") {\n worker.removeEventListener(\"message\", this.#boundMessage);\n worker.removeEventListener(\"error\", this.#boundError);\n worker.removeEventListener(\"messageerror\", this.#boundError);\n } else {\n if (worker.onmessage === this.#boundMessage) worker.onmessage = null;\n if (worker.onerror === this.#boundError) worker.onerror = null;\n if (worker.onmessageerror === this.#boundError) worker.onmessageerror = null;\n }\n }\n\n /** Settle the pending request identified by one worker result message. */\n #OnMessage(event) {\n const data = event?.data;\n if (!data || data.type !== Message.RESULT) return;\n const request = this.#pending.get(data.id);\n if (!request) return;\n this.#pending.delete(data.id);\n cleanupPendingRequest(request);\n if (data.ok) request.resolve(data.result);\n else request.reject(normalizeWorkerError(data.error));\n }\n\n /** Disable worker execution after a fatal worker or message failure. */\n #OnError(event) {\n const reason = event?.error || event || new Error(\"Resource worker failed.\");\n this.Disable(reason);\n }\n}\n\nfunction assertResourceSource(source) {\n if (!source || (typeof source !== \"object\" && typeof source !== \"function\")\n || typeof source.Read !== \"function\") {\n throw new TypeError(\"Resource source must provide Read(path, options).\");\n }\n}\n\nfunction assertResourceLoader(loader, name = \"loader\") {\n if (!loader || typeof loader.Read !== \"function\" || typeof loader.ReadFormat !== \"function\") {\n throw new TypeError(`CjsResManWorkerLoader ${name} must provide Read and ReadFormat.`);\n }\n}\n\nfunction defaultWorkerFactory(url, options) {\n if (typeof Worker === \"undefined\") {\n throw new ReferenceError(\"Browser Worker is not available.\");\n }\n return new Worker(url, options);\n}\n\nfunction normalizeWorkerRequest(request) {\n if (request === null || request === undefined || request === false) return null;\n if (!request || typeof request !== \"object\" || Array.isArray(request)) {\n throw new TypeError(\"CreateWorkerRequest must return an object or null.\");\n }\n if (typeof request.operation !== \"string\" || request.operation.trim() === \"\") {\n throw new TypeError(\"Worker source request requires a non-empty operation.\");\n }\n return {\n operation: request.operation,\n payload: request.payload,\n signal: request.signal || null,\n transfer: normalizeTransferList(request.transfer)\n };\n}\n\nfunction normalizeFormatWorkerDeclaration(descriptor) {\n const Format = descriptor?.Format;\n const declaration = descriptor?.worker || Format?.worker;\n if (!declaration) return null;\n\n const value = typeof declaration === \"string\"\n ? { module: declaration }\n : declaration;\n if (!value || typeof value !== \"object\" || !value.module) return null;\n return Object.freeze({\n module: String(value.module),\n exportName: String(value.exportName || Format?.name || \"default\"),\n outputTypes: Array.isArray(value.outputTypes)\n ? Object.freeze(value.outputTypes.map(String))\n : null,\n defaultOutput: value.defaultOutput === undefined\n ? undefined\n : String(value.defaultOutput),\n transferInput: value.transferInput === true\n });\n}\n\nfunction isWorkerFormatOutputSupported(declaration, formatOptions) {\n if (!declaration.outputTypes) return true;\n const output = formatOptions.emit ?? declaration.defaultOutput;\n return output !== undefined && declaration.outputTypes.includes(String(output));\n}\n\nfunction normalizeTransferList(value) {\n if (value === null || value === undefined) return [];\n if (!Array.isArray(value)) {\n throw new TypeError(\"Worker transfer list must be an array.\");\n }\n return value;\n}\n\nfunction getExclusiveInputTransferables(input) {\n if (input instanceof ArrayBuffer) return [ input ];\n if (ArrayBuffer.isView(input)\n && input.byteOffset === 0\n && input.byteLength === input.buffer.byteLength) {\n return [ input.buffer ];\n }\n return [];\n}\n\nfunction canCloneWorkerValue(value, seen = new Set()) {\n if (value === null || value === undefined) return true;\n const type = typeof value;\n if (type === \"string\" || type === \"number\" || type === \"boolean\" || type === \"bigint\") {\n return true;\n }\n if (type !== \"object\") return false;\n if (value instanceof ArrayBuffer || ArrayBuffer.isView(value) || value instanceof Date) {\n return true;\n }\n if (seen.has(value)) return false;\n seen.add(value);\n if (Array.isArray(value)) {\n return value.every(entry => canCloneWorkerValue(entry, seen));\n }\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== Object.prototype && prototype !== null) return false;\n return Object.values(value).every(entry => canCloneWorkerValue(entry, seen));\n}\n\nfunction cleanupPendingRequest(request) {\n if (request.signal && request.onAbort\n && typeof request.signal.removeEventListener === \"function\") {\n request.signal.removeEventListener(\"abort\", request.onAbort);\n }\n}\n\nfunction createWorkerUnavailableError(message = \"Resource worker is unavailable.\") {\n const error = new Error(message);\n error.name = \"CjsResManWorkerUnavailableError\";\n error.code = \"CJS_RESOURCE_WORKER_UNAVAILABLE\";\n return error;\n}\n\nfunction createAbortError(reason) {\n if (reason instanceof Error) return reason;\n const error = new Error(reason === undefined ? \"Resource worker request was aborted.\" : String(reason));\n error.name = \"AbortError\";\n error.code = \"ABORT_ERR\";\n return error;\n}\n\nfunction normalizeWorkerError(value) {\n if (value instanceof Error) return value;\n const error = new Error(value?.message || \"Resource worker operation failed.\");\n error.name = value?.name || \"CjsResManWorkerError\";\n for (const key of [ \"code\", \"operation\", \"path\", \"status\", \"statusText\" ]) {\n if (value?.[key] !== undefined) error[key] = value[key];\n }\n return error;\n}\n"],"names":["DEFAULT_WORKER_OPTIONS","Object","freeze","type","name","CjsResManWorkerLoader","Map","constructor","options","Array","isArray","TypeError","fallback","CjsResManMainThreadLoader","assertResourceLoader","workerFactory","defaultWorkerFactory","workerUrl","URL","import","meta","url","workerOptions","enabled","failed","worker","event","Enable","undefined","postMessage","Disable","reason","terminate","size","error","normalizeWorkerError","createWorkerUnavailableError","request","values","cleanupPendingRequest","reject","clear","Reset","SetFallback","IsAvailable","Boolean","Read","source","path","assertResourceSource","CreateWorkerRequest","normalizeWorkerRequest","Execute","operation","payload","signal","transfer","CanReadFormat","descriptor","formatOptions","context","declaration","normalizeFormatWorkerDeclaration","isWorkerFormatOutputSupported","canCloneWorkerValue","ReadFormat","input","transferInput","getExclusiveInputTransferables","Operation","FORMAT_READ","module","exportName","trim","Promise","aborted","createAbortError","id","resolve","promise","onResolve","onReject","onAbort","addEventListener","delete","Message","CANCEL","once","set","EXECUTE","normalizeTransferList","GetPendingCount","#Attach","onmessage","onerror","onmessageerror","#Detach","removeEventListener","#OnMessage","data","RESULT","get","ok","result","#OnError","Error","loader","Worker","ReferenceError","Format","value","String","outputTypes","map","defaultOutput","output","emit","includes","ArrayBuffer","isView","byteOffset","byteLength","buffer","seen","Set","Date","has","add","every","entry","prototype","getPrototypeOf","message","code","key"],"mappings":"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"}
@@ -1,12 +1,12 @@
1
- const Operation = Object.freeze({
2
- FETCH: "source.fetch",
3
- FORMAT_READ: "format.read"
4
- });
5
- const Message = Object.freeze({
6
- CANCEL: "cancel",
7
- EXECUTE: "execute",
8
- RESULT: "result"
9
- });
10
-
11
- export { Message, Operation };
12
- //# sourceMappingURL=protocol.js.map
1
+ const Operation = Object.freeze({
2
+ FETCH: "source.fetch",
3
+ FORMAT_READ: "format.read"
4
+ });
5
+ const Message = Object.freeze({
6
+ CANCEL: "cancel",
7
+ EXECUTE: "execute",
8
+ RESULT: "result"
9
+ });
10
+
11
+ export { Message, Operation };
12
+ //# sourceMappingURL=protocol.js.map
package/docs/README.md CHANGED
@@ -1,98 +1,98 @@
1
- # Package documentation
2
-
3
- Status: Evolving
4
- Scope: `@carbonenginejs/runtime-resource`
5
- Audience: Users and integrators
6
- Summary: Documentation home for the GPU-free resource lifecycle, cache, format, and object-loading package.
7
-
8
- ## Purpose
9
-
10
- `@carbonenginejs/runtime-resource` owns the GPU-free resource layer of
11
- CarbonEngineJS: resource identity and state, the MotherLode cache, semantic
12
- resource classes, registered format readers, fetch providers, and the queued
13
- CPU load/publication pipeline. It stops at a published CPU payload; engine
14
- packages realize that payload into backend objects. It also owns the canonical
15
- device-free `Tr2EffectRes`/`Tr2Shader` reflection graph and portable-reflection
16
- hydration boundary.
17
-
18
- ## Use this package when
19
-
20
- - you need Carbon-shaped resource loading (`res:/` paths, requirement/emit
21
- selection, `Ready()`/`GetObject()`) without choosing a GPU backend;
22
- - you need one of the non-shader format readers as a tree-shakeable subpath
23
- (`@carbonenginejs/runtime-resource/formats/<name>`);
24
- - you need canonical effect permutation selection or immutable shader
25
- reflection records from `@carbonenginejs/runtime-resource/resource/shader`;
26
- - you need canonical raw audio resources for complete files or byte windows
27
- over shared physical sources;
28
- - you are writing an engine adapter that consumes published CPU payloads and
29
- needs the documented retention, reload, and texture-array contracts.
30
-
31
- ## Where it fits
32
-
33
- - Foundations consumed: `@carbonenginejs/runtime-utils` (event emitter, model
34
- contracts) and `@carbonenginejs/runtime-utils` where formats need math values.
35
- - Normal consumers: `runtime-core` (configures and exposes a `CjsResMan`),
36
- `runtime-trinity` and `runtime-sof` (request GPU-free objects), and engine
37
- packages (`engine-webgpu`, future WebGL engines) that realize prepared
38
- resources.
39
- - Owned responsibility: resource identity, cache, CPU payload lifecycle,
40
- format selection and conversion, load/publication queues, and canonical
41
- device-free effect/shader reflection hydration and selection.
42
- - Owned elsewhere: WebGL/WebGPU realization, device budgets, and device-loss
43
- recovery belong to engine packages; shader formats belong to the dedicated
44
- shader format packages.
45
-
46
- ## Start here
47
-
48
- - [Architecture and boundaries](architecture.md)
49
- - [Resource lifecycle concepts](concepts/resource-lifecycle.md)
50
- - [Shader resource model](concepts/shader-resource-model.md)
51
- - [Format subpaths](formats/README.md)
52
- - [Carbon compiled-effect container](formats/carbon-effect-container.md)
53
-
54
- ## Documentation map
55
-
56
- - [architecture.md](architecture.md): package boundary, relationships, and the
57
- GPU-free split.
58
- - [concepts/resource-lifecycle.md](concepts/resource-lifecycle.md): states,
59
- the load/prepare split, and the request workflow.
60
- - [concepts/shader-resource-model.md](concepts/shader-resource-model.md): how
61
- `Tr2EffectRes`, `Tr2Shader` and `Tr2Effect` relate, verified against Carbon —
62
- one file, many permutations, many effects sharing them.
63
- - [concepts/writing-an-engine-adapter.md](concepts/writing-an-engine-adapter.md):
64
- the coupling rules and the reflection/topology seam for engine packages —
65
- read before writing a second engine.
66
- - [reference/motherlode-cache.md](reference/motherlode-cache.md): canonical
67
- identity, byte-budget cache, payload retention, and purge contracts.
68
- - [reference/reload.md](reference/reload.md): the candidate-first atomic
69
- reload contract.
70
- - [reference/queues.md](reference/queues.md): queued CPU load, publication,
71
- registration, and the `Wait()` fence.
72
- - [reference/workers.md](reference/workers.md): browser-worker source and
73
- declared worker-safe format execution.
74
- - [reference/classes/audio.md](reference/classes/audio.md): complete/shared
75
- audio byte owners and individually addressable audio resource views.
76
- - [reference/classes/resources.md](reference/classes/resources.md): canonical
77
- resource records, effect selection, and shader-reflection classes.
78
- - [reference/texture-arrays.md](reference/texture-arrays.md): texture-array
79
- proxies, update generations, and adapter commits.
80
- - [reference/texture-pipeline.md](reference/texture-pipeline.md):
81
- `Tr2TexturePipeline` CPU steps and `Tr2TextureLodManager` membership.
82
- - [reference/events.md](reference/events.md): the `CjsEventEmitter` contract
83
- and event memory rules.
84
- - [reference/classes/README.md](reference/classes/README.md): the searchable
85
- one-sentence class-purpose catalog.
86
- - [formats/README.md](formats/README.md): format import map and per-format
87
- output notes.
88
- - [formats/carbon-effect-container.md](formats/carbon-effect-container.md): the
89
- public v15 compiled-effect binary layout, extension rules, shared byte reader
90
- and writer, and arena offset policy a byte-exact re-emit depends on.
91
- - [formats/gr2.md](formats/gr2.md): Granny GR2/GSF reading, output modes,
92
- conversions, graph shape, and class hydration.
93
- - [formats/wwise.md](formats/wwise.md): Wwise soundbank and media readers.
94
- - [formats/stl.md](formats/stl.md): STL geometry export.
95
- - [formats/provenance.md](formats/provenance.md): format ownership, fork
96
- provenance, and retained snapshots.
97
- - [roadmap.md](roadmap.md): approved future direction with explicit current
98
- boundary context where needed to interpret the plan.
1
+ # Package documentation
2
+
3
+ Status: Evolving
4
+ Scope: `@carbonenginejs/runtime-resource`
5
+ Audience: Users and integrators
6
+ Summary: Documentation home for the GPU-free resource lifecycle, cache, format, and object-loading package.
7
+
8
+ ## Purpose
9
+
10
+ `@carbonenginejs/runtime-resource` owns the GPU-free resource layer of
11
+ CarbonEngineJS: resource identity and state, the MotherLode cache, semantic
12
+ resource classes, registered format readers, fetch providers, and the queued
13
+ CPU load/publication pipeline. It stops at a published CPU payload; engine
14
+ packages realize that payload into backend objects. It also owns the canonical
15
+ device-free `Tr2EffectRes`/`Tr2Shader` reflection graph, built by reading the
16
+ compiled Carbon container directly.
17
+
18
+ ## Use this package when
19
+
20
+ - you need Carbon-shaped resource loading (`res:/` paths, requirement/emit
21
+ selection, `Ready()`/`GetObject()`) without choosing a GPU backend;
22
+ - you need one of the non-shader format readers as a tree-shakeable subpath
23
+ (`@carbonenginejs/runtime-resource/formats/<name>`);
24
+ - you need canonical effect permutation selection or immutable shader
25
+ reflection records from `@carbonenginejs/runtime-resource/resource/shader`;
26
+ - you need canonical raw audio resources for complete files or byte windows
27
+ over shared physical sources;
28
+ - you are writing an engine adapter that consumes published CPU payloads and
29
+ needs the documented retention, reload, and texture-array contracts.
30
+
31
+ ## Where it fits
32
+
33
+ - Foundations consumed: `@carbonenginejs/runtime-utils` (event emitter, model
34
+ contracts) and `@carbonenginejs/runtime-utils` where formats need math values.
35
+ - Normal consumers: `runtime-core` (configures and exposes a `CjsResMan`),
36
+ `runtime-trinity` and `runtime-sof` (request GPU-free objects), and engine
37
+ packages (`engine-webgpu`, future WebGL engines) that realize prepared
38
+ resources.
39
+ - Owned responsibility: resource identity, cache, CPU payload lifecycle,
40
+ format selection and conversion, load/publication queues, and canonical
41
+ device-free effect/shader reflection hydration and selection.
42
+ - Owned elsewhere: WebGL/WebGPU realization, device budgets, and device-loss
43
+ recovery belong to engine packages; shader formats belong to the dedicated
44
+ shader format packages.
45
+
46
+ ## Start here
47
+
48
+ - [Architecture and boundaries](architecture.md)
49
+ - [Resource lifecycle concepts](concepts/resource-lifecycle.md)
50
+ - [Shader resource model](concepts/shader-resource-model.md)
51
+ - [Format subpaths](formats/README.md)
52
+ - [Carbon compiled-effect container](formats/carbon-effect-container.md)
53
+
54
+ ## Documentation map
55
+
56
+ - [architecture.md](architecture.md): package boundary, relationships, and the
57
+ GPU-free split.
58
+ - [concepts/resource-lifecycle.md](concepts/resource-lifecycle.md): states,
59
+ the load/prepare split, and the request workflow.
60
+ - [concepts/shader-resource-model.md](concepts/shader-resource-model.md): how
61
+ `Tr2EffectRes`, `Tr2Shader` and `Tr2Effect` relate, verified against Carbon —
62
+ one file, many permutations, many effects sharing them.
63
+ - [concepts/writing-an-engine-adapter.md](concepts/writing-an-engine-adapter.md):
64
+ the coupling rules and the reflection/topology seam for engine packages —
65
+ read before writing a second engine.
66
+ - [reference/motherlode-cache.md](reference/motherlode-cache.md): canonical
67
+ identity, byte-budget cache, payload retention, and purge contracts.
68
+ - [reference/reload.md](reference/reload.md): the candidate-first atomic
69
+ reload contract.
70
+ - [reference/queues.md](reference/queues.md): queued CPU load, publication,
71
+ registration, and the `Wait()` fence.
72
+ - [reference/workers.md](reference/workers.md): browser-worker source and
73
+ declared worker-safe format execution.
74
+ - [reference/classes/audio.md](reference/classes/audio.md): complete/shared
75
+ audio byte owners and individually addressable audio resource views.
76
+ - [reference/classes/resources.md](reference/classes/resources.md): canonical
77
+ resource records, effect selection, and shader-reflection classes.
78
+ - [reference/texture-arrays.md](reference/texture-arrays.md): texture-array
79
+ proxies, update generations, and adapter commits.
80
+ - [reference/texture-pipeline.md](reference/texture-pipeline.md):
81
+ `Tr2TexturePipeline` CPU steps and `Tr2TextureLodManager` membership.
82
+ - [reference/events.md](reference/events.md): the `CjsEventEmitter` contract
83
+ and event memory rules.
84
+ - [reference/classes/README.md](reference/classes/README.md): the searchable
85
+ one-sentence class-purpose catalog.
86
+ - [formats/README.md](formats/README.md): format import map and per-format
87
+ output notes.
88
+ - [formats/carbon-effect-container.md](formats/carbon-effect-container.md): the
89
+ public v15 compiled-effect binary layout, extension rules, shared byte reader
90
+ and writer, and arena offset policy a byte-exact re-emit depends on.
91
+ - [formats/gr2.md](formats/gr2.md): Granny GR2/GSF reading, output modes,
92
+ conversions, graph shape, and class hydration.
93
+ - [formats/wwise.md](formats/wwise.md): Wwise soundbank and media readers.
94
+ - [formats/stl.md](formats/stl.md): STL geometry export.
95
+ - [formats/provenance.md](formats/provenance.md): format ownership, fork
96
+ provenance, and retained snapshots.
97
+ - [roadmap.md](roadmap.md): approved future direction with explicit current
98
+ boundary context where needed to interpret the plan.