@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.
- package/LICENSE +21 -21
- package/NOTICE +32 -32
- package/README.md +129 -108
- package/dist/CjsMotherLode.js +1271 -1271
- package/dist/CjsResMan.js +3858 -3494
- package/dist/CjsResMan.js.map +1 -1
- package/dist/CjsResManFetchProvider.js +94 -94
- package/dist/CjsResManWorkQueue.js +301 -301
- package/dist/_virtual/_rollupPluginBabelHelpers.js +150 -150
- package/dist/format/CjsBlueReader.js +358 -358
- package/dist/format/CjsByteReader.js +310 -310
- package/dist/format/CjsByteWriter.js +242 -242
- package/dist/format/CjsFormat.js +223 -223
- package/dist/format/CjsFormatError.js +41 -41
- package/dist/format/CjsReader.js +22 -22
- package/dist/format/CjsResourceProbe.js +279 -279
- package/dist/format/CjsStringTable.js +268 -268
- package/dist/format/carbonEffect/CjsCarbonEffectReader.js +408 -361
- package/dist/format/carbonEffect/CjsCarbonEffectReader.js.map +1 -1
- package/dist/format/carbonEffect/CjsCarbonEffectWriter.js +373 -373
- package/dist/format/carbonEffect/buildCarbonEffectContainer.js +182 -0
- package/dist/format/carbonEffect/buildCarbonEffectContainer.js.map +1 -0
- package/dist/format/carbonEffect/carbonEffectBackendBlock.js +321 -427
- package/dist/format/carbonEffect/carbonEffectBackendBlock.js.map +1 -1
- package/dist/format/carbonEffect/carbonEffectRecords.js +1147 -955
- package/dist/format/carbonEffect/carbonEffectRecords.js.map +1 -1
- package/dist/format/carbonEffect/carbonEffectResourceTransform.js +197 -0
- package/dist/format/carbonEffect/carbonEffectResourceTransform.js.map +1 -0
- package/dist/format/compareUtf8.js +36 -36
- package/dist/format/effect/effectBodyInventory.js +146 -0
- package/dist/format/effect/effectBodyInventory.js.map +1 -0
- package/dist/format/effect/effectPermutationGraph.js +257 -257
- package/dist/format/effect/effectPermutationGraph.js.map +1 -1
- package/dist/format/effect/sha256.js +114 -114
- package/dist/format/index.js +11 -11
- package/dist/format/payloadContract.js +193 -193
- package/dist/formats/black/CjsBlackFormat.js +310 -292
- package/dist/formats/black/CjsBlackFormat.js.map +1 -1
- package/dist/formats/black/core/CjsBlackBinaryReader.js +260 -260
- package/dist/formats/black/core/CjsBlackPropertyReaders.js +448 -448
- package/dist/formats/black/core/CjsBlackReader.js +764 -764
- package/dist/formats/black/core/CjsBlackSchemaRegistry.js +540 -540
- package/dist/formats/black/core/black-schema-v1-2026-07-23.json.js +4 -4
- package/dist/formats/black/core/blackConstants.js +7 -7
- package/dist/formats/black/core/blackDefinitions.js +10 -10
- package/dist/formats/black/core/blackEnums.js +6 -6
- package/dist/formats/black/core/blackSchema.js +3 -3
- package/dist/formats/black/core/blackVersion.js +22 -22
- package/dist/formats/black/core/helpers.js +199 -199
- package/dist/formats/black/core/schema.js +4 -4
- package/dist/formats/black/index.js +2 -2
- package/dist/formats/bnk/CjsBnkFormat.js +175 -156
- package/dist/formats/bnk/CjsBnkFormat.js.map +1 -1
- package/dist/formats/bnk/core/busNodes.js +252 -0
- package/dist/formats/bnk/core/busNodes.js.map +1 -0
- package/dist/formats/bnk/core/effectNodes.js +147 -0
- package/dist/formats/bnk/core/effectNodes.js.map +1 -0
- package/dist/formats/bnk/core/eventAction.js +416 -305
- package/dist/formats/bnk/core/eventAction.js.map +1 -1
- package/dist/formats/bnk/core/globalSettings.js +215 -0
- package/dist/formats/bnk/core/globalSettings.js.map +1 -0
- package/dist/formats/bnk/core/graph.js +137 -137
- package/dist/formats/bnk/core/helpers.js +512 -480
- package/dist/formats/bnk/core/helpers.js.map +1 -1
- package/dist/formats/bnk/core/musicNodes.js +533 -509
- package/dist/formats/bnk/core/musicNodes.js.map +1 -1
- package/dist/formats/bnk/core/nodeBase.js +553 -532
- package/dist/formats/bnk/core/nodeBase.js.map +1 -1
- package/dist/formats/bnk/core/sfxNodes.js +632 -632
- package/dist/formats/bnk/core/soundbanksInfo.js +209 -209
- package/dist/formats/bnk/index.js +2 -2
- package/dist/formats/cmf/CjsCmfFormat.js +497 -497
- package/dist/formats/cmf/core/binary.js +194 -194
- package/dist/formats/cmf/core/buffers.js +237 -237
- package/dist/formats/cmf/core/constants.js +47 -47
- package/dist/formats/cmf/core/gr2Anim.js +453 -453
- package/dist/formats/cmf/core/helpers.js +318 -318
- package/dist/formats/cmf/core/pack.js +276 -276
- package/dist/formats/cmf/core/schema.js +374 -374
- package/dist/formats/cmf/core/shared.js +277 -277
- package/dist/formats/cmf/core/writer.js +571 -571
- package/dist/formats/cmf/index.js +2 -2
- package/dist/formats/dds/CjsDdsFormat.js +200 -200
- package/dist/formats/dds/core/bc6h.js +298 -298
- package/dist/formats/dds/core/bc7.js +272 -272
- package/dist/formats/dds/core/helpers.js +862 -862
- package/dist/formats/dds/index.js +2 -2
- package/dist/formats/dxbc/CjsDxbcFormat.js +142 -142
- package/dist/formats/dxbc/core/DxbcReader.js +266 -266
- package/dist/formats/dxbc/core/container.js +169 -169
- package/dist/formats/dxbc/core/decoder.js +789 -789
- package/dist/formats/dxbc/core/errors.js +19 -19
- package/dist/formats/dxbc/core/helpers.js +220 -220
- package/dist/formats/dxbc/core/opcodes.js +45 -45
- package/dist/formats/dxbc/core/program.js +91 -91
- package/dist/formats/dxbc/core/signature.js +172 -172
- package/dist/formats/dxbc/index.js +2 -2
- package/dist/formats/fbx/CjsFbxFormat.js +266 -266
- package/dist/formats/fbx/core/helpers.js +3932 -3932
- package/dist/formats/fbx/index.js +2 -2
- package/dist/formats/flac/CjsFlacFormat.js +142 -142
- package/dist/formats/flac/core/helpers.js +315 -315
- package/dist/formats/flac/index.js +2 -2
- package/dist/formats/gif/CjsGifFormat.js +141 -141
- package/dist/formats/gif/core/helpers.js +380 -380
- package/dist/formats/gif/index.js +2 -2
- package/dist/formats/gltf/CjsGltfFormat.js +290 -290
- package/dist/formats/gltf/core/helpers.js +307 -307
- package/dist/formats/gltf/core/json.js +79 -79
- package/dist/formats/gltf/core/parser.js +679 -679
- package/dist/formats/gltf/core/targets.js +173 -173
- package/dist/formats/gltf/index.js +2 -2
- package/dist/formats/gr2/CjsGr2Format.js +289 -289
- package/dist/formats/gr2/core/bitknit2.js +282 -282
- package/dist/formats/gr2/core/curves.js +1047 -1047
- package/dist/formats/gr2/core/gsf.js +72 -72
- package/dist/formats/gr2/core/helpers.js +352 -352
- package/dist/formats/gr2/core/json.js +622 -622
- package/dist/formats/gr2/core/oodle1.js +388 -388
- package/dist/formats/gr2/core/tangents.js +48 -48
- package/dist/formats/gr2/core/targets.js +361 -361
- package/dist/formats/gr2/index.js +2 -2
- package/dist/formats/hlsl/CjsHlslFormat.js +254 -254
- package/dist/formats/hlsl/core/HlslBinaryUtils.js +15 -15
- package/dist/formats/hlsl/core/HlslEffectReadError.js +19 -19
- package/dist/formats/hlsl/core/HlslEffectStateManager.js +130 -130
- package/dist/formats/hlsl/core/HlslRenderStateSetup.js +37 -37
- package/dist/formats/hlsl/core/HlslResourceSetDescription.js +94 -94
- package/dist/formats/hlsl/core/HlslShaderBytecode.js +44 -44
- package/dist/formats/hlsl/core/analysis.js +51 -51
- package/dist/formats/hlsl/core/carbonDescriptionToRuntime.js +850 -781
- package/dist/formats/hlsl/core/carbonDescriptionToRuntime.js.map +1 -1
- package/dist/formats/hlsl/core/detailMapFamily.js +128 -0
- package/dist/formats/hlsl/core/detailMapFamily.js.map +1 -0
- package/dist/formats/hlsl/core/helpers.js +270 -270
- package/dist/formats/hlsl/core/json.js +284 -284
- package/dist/formats/hlsl/core/localLightFamily.js +133 -0
- package/dist/formats/hlsl/core/localLightFamily.js.map +1 -0
- package/dist/formats/hlsl/core/metadata.js +327 -327
- package/dist/formats/hlsl/core/render-states.js +280 -280
- package/dist/formats/hlsl/core/tr2/HlslRenderContextEnum.js +43 -43
- package/dist/formats/hlsl/core/tr2/resources/HlslEffectRes.js +320 -314
- package/dist/formats/hlsl/core/tr2/resources/HlslEffectRes.js.map +1 -1
- package/dist/formats/hlsl/core/tr2/resources/HlslShaderPermutation.js +33 -33
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectBindingManifest.js +416 -416
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectConstant.js +40 -40
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectDescription.js +62 -742
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectDescription.js.map +1 -1
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectLibrary.js +52 -52
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectParameterAnnotation.js +38 -38
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectResource.js +50 -50
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js +86 -86
- package/dist/formats/hlsl/core/tr2/shader/HlslEffectTechnique.js +31 -31
- package/dist/formats/hlsl/core/tr2/shader/HlslPass.js +42 -42
- package/dist/formats/hlsl/core/tr2/shader/HlslSamplerDescription.js +55 -55
- package/dist/formats/hlsl/core/tr2/shader/HlslSamplerSetup.js +29 -29
- package/dist/formats/hlsl/core/tr2/shader/HlslShader.js +220 -220
- package/dist/formats/hlsl/core/tr2/shader/HlslShaderOption.js +30 -30
- package/dist/formats/hlsl/index.js +3 -3
- package/dist/formats/index.js +33 -31
- package/dist/formats/index.js.map +1 -1
- package/dist/formats/jpeg/CjsJpegFormat.js +212 -212
- package/dist/formats/jpeg/core/helpers.js +402 -402
- package/dist/formats/jpeg/core/jpeg.js +480 -480
- package/dist/formats/jpeg/index.js +2 -2
- package/dist/formats/mp3/CjsMp3Format.js +197 -197
- package/dist/formats/mp3/core/helpers.js +375 -375
- package/dist/formats/mp3/index.js +2 -2
- package/dist/formats/mp4/CjsMp4Format.js +197 -197
- package/dist/formats/mp4/core/helpers.js +484 -484
- package/dist/formats/mp4/index.js +2 -2
- package/dist/formats/obj/CjsObjFormat.js +253 -253
- package/dist/formats/obj/core/helpers.js +573 -573
- package/dist/formats/obj/core/json.js +64 -64
- package/dist/formats/obj/core/parser.js +321 -321
- package/dist/formats/obj/index.js +2 -2
- package/dist/formats/ogg/CjsOggFormat.js +143 -143
- package/dist/formats/ogg/core/helpers.js +410 -410
- package/dist/formats/ogg/core/imdct.js +178 -178
- package/dist/formats/ogg/core/vorbis.js +1017 -1017
- package/dist/formats/ogg/index.js +2 -2
- package/dist/formats/pickle/CjsPickleFormat.js +214 -0
- package/dist/formats/pickle/CjsPickleFormat.js.map +1 -0
- package/dist/formats/pickle/core/CjsPickleProtocol0Reader.js +551 -0
- package/dist/formats/pickle/core/CjsPickleProtocol0Reader.js.map +1 -0
- package/dist/formats/pickle/index.js +2 -0
- package/dist/formats/pickle/index.js.map +1 -0
- package/dist/formats/png/CjsPngFormat.js +201 -201
- package/dist/formats/png/core/helpers.js +635 -635
- package/dist/formats/png/index.js +2 -2
- package/dist/formats/red/CjsRedFormat.js +263 -263
- package/dist/formats/red/core/CjsRedReader.js +246 -246
- package/dist/formats/red/core/blackDefinitions.js +3 -3
- package/dist/formats/red/core/helpers.js +158 -158
- package/dist/formats/red/core/redGraph.js +71 -68
- package/dist/formats/red/core/redGraph.js.map +1 -1
- package/dist/formats/red/core/schema.js +4 -4
- package/dist/formats/red/index.js +2 -2
- package/dist/formats/stl/CjsStlFormat.js +365 -365
- package/dist/formats/stl/core/helpers.js +261 -261
- package/dist/formats/stl/core/json.js +51 -51
- package/dist/formats/stl/core/stl.js +642 -642
- package/dist/formats/stl/core/targets.js +173 -173
- package/dist/formats/stl/index.js +2 -2
- package/dist/formats/tga/CjsTgaFormat.js +197 -197
- package/dist/formats/tga/core/helpers.js +493 -493
- package/dist/formats/tga/index.js +2 -2
- package/dist/formats/wav/CjsWavFormat.js +198 -198
- package/dist/formats/wav/core/helpers.js +365 -365
- package/dist/formats/wav/index.js +2 -2
- package/dist/formats/webgl/CjsWebglFormat.js +199 -221
- package/dist/formats/webgl/CjsWebglFormat.js.map +1 -1
- package/dist/formats/webgl/core/buildGlslEffectContainer.js +70 -0
- package/dist/formats/webgl/core/buildGlslEffectContainer.js.map +1 -0
- package/dist/formats/webgl/core/effectPackage.js +900 -792
- package/dist/formats/webgl/core/effectPackage.js.map +1 -1
- package/dist/formats/webgl/core/errors.js +27 -27
- package/dist/formats/webgl/core/errors.js.map +1 -1
- package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js +2820 -2678
- package/dist/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
- package/dist/formats/webgl/core/glsl/DxbcGlslHelpers.js +89 -89
- package/dist/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js +486 -428
- package/dist/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js.map +1 -1
- package/dist/formats/webgl/core/glsl/packedLightFixups.js +98 -0
- package/dist/formats/webgl/core/glsl/packedLightFixups.js.map +1 -0
- package/dist/formats/webgl/core/glslBackendBlock.js +552 -0
- package/dist/formats/webgl/core/glslBackendBlock.js.map +1 -0
- package/dist/formats/webgl/core/glslBackendBodySet.js +243 -0
- package/dist/formats/webgl/core/glslBackendBodySet.js.map +1 -0
- package/dist/formats/webgl/core/{cewgCompleteness.js → glslEffectCompleteness.js} +85 -81
- package/dist/formats/webgl/core/glslEffectCompleteness.js.map +1 -0
- package/dist/formats/webgl/core/helpers.js +167 -306
- package/dist/formats/webgl/core/helpers.js.map +1 -1
- package/dist/formats/webgl/core/inspectGlslEffectContainer.js +122 -0
- package/dist/formats/webgl/core/inspectGlslEffectContainer.js.map +1 -0
- package/dist/formats/webgl/core/readGlslEffectContainer.js +303 -0
- package/dist/formats/webgl/core/readGlslEffectContainer.js.map +1 -0
- package/dist/formats/webgl/index.js +2 -2
- package/dist/formats/webgpu/CjsWebgpuFormat.js +357 -357
- package/dist/formats/webgpu/CjsWebgpuFormat.js.map +1 -1
- package/dist/formats/webgpu/core/buildCarbonEffectContainer.js +89 -197
- package/dist/formats/webgpu/core/buildCarbonEffectContainer.js.map +1 -1
- package/dist/formats/webgpu/core/{cewgpu/CewgpuContainer.js → carbonWebgpu/CarbonWebgpuContainer.js} +354 -368
- package/dist/formats/webgpu/core/carbonWebgpu/CarbonWebgpuContainer.js.map +1 -0
- package/dist/formats/webgpu/core/{cewgpu → carbonWebgpu}/containerViews.js +355 -355
- package/dist/formats/webgpu/core/carbonWebgpu/containerViews.js.map +1 -0
- package/dist/formats/webgpu/core/{cewgpu → carbonWebgpu}/validateContainer.js +90 -90
- package/dist/formats/webgpu/core/carbonWebgpu/validateContainer.js.map +1 -0
- package/dist/formats/webgpu/core/effectAnalysis.js +82 -82
- package/dist/formats/webgpu/core/effectBackendBodySet.js +289 -289
- package/dist/formats/webgpu/core/effectBackendBodySet.js.map +1 -1
- package/dist/formats/webgpu/core/errors.js +20 -20
- package/dist/formats/webgpu/core/errors.js.map +1 -1
- package/dist/formats/webgpu/core/helpers.js +443 -443
- package/dist/formats/webgpu/core/helpers.js.map +1 -1
- package/dist/formats/webgpu/core/ir/analyzeRegisterValues.js +212 -212
- package/dist/formats/webgpu/core/ir/buildControlFlow.js +220 -220
- package/dist/formats/webgpu/core/ir/indexableTemps.js +137 -137
- package/dist/formats/webgpu/core/ir/inferValueTypes.js +449 -449
- package/dist/formats/webgpu/core/ir/lowerDxbcToIr.js +494 -494
- package/dist/formats/webgpu/core/ir/resolveRegisterFlow.js +177 -177
- package/dist/formats/webgpu/core/ir/sourceLanes.js +61 -61
- package/dist/formats/webgpu/core/packageEffect.js +381 -385
- package/dist/formats/webgpu/core/packageEffect.js.map +1 -1
- package/dist/formats/webgpu/core/packageEffectSelection.js +164 -164
- package/dist/formats/webgpu/core/packageEffectSelection.js.map +1 -1
- package/dist/formats/webgpu/core/packageMetadata.js +17 -17
- package/dist/formats/webgpu/core/schema.js +4 -4
- package/dist/formats/webgpu/core/wgsl/buildResourceTransformPlan.js +263 -263
- package/dist/formats/webgpu/core/wgsl/buildResourceTransformPlan.js.map +1 -1
- package/dist/formats/webgpu/core/wgsl/buildWgslBindingPlan.js +172 -172
- package/dist/formats/webgpu/core/wgsl/buildWgslSet.js +320 -320
- package/dist/formats/webgpu/core/wgsl/buildWgslSet.js.map +1 -1
- package/dist/formats/webgpu/core/wgsl/emitWgsl.js +356 -356
- package/dist/formats/webgpu/core/wgsl/hoistEscapingValues.js +77 -77
- package/dist/formats/webgpu/core/wgsl/lowerBindingLayout.js +451 -451
- package/dist/formats/webgpu/core/wgsl/lowerComputeProgram.js +735 -735
- package/dist/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js +457 -457
- package/dist/formats/webgpu/core/wgsl/lowerFragmentProgram.js +1572 -1572
- package/dist/formats/webgpu/core/wgsl/lowerMergeHistogramsComputeProgram.js +659 -659
- package/dist/formats/webgpu/core/wgsl/lowerParticleClearComputePrograms.js +734 -734
- package/dist/formats/webgpu/core/wgsl/lowerParticleEmitComputeProgram.js +583 -583
- package/dist/formats/webgpu/core/wgsl/lowerSkinVerticesComputeProgram.js +621 -621
- package/dist/formats/webgpu/core/wgsl/lowerSortComputeProgram.js +824 -824
- package/dist/formats/webgpu/core/wgsl/lowerSortInnerComputeProgram.js +697 -697
- package/dist/formats/webgpu/core/wgsl/lowerSortStepComputeProgram.js +559 -559
- package/dist/formats/webgpu/core/wgsl/lowerVertexProgram.js +1328 -1328
- package/dist/formats/webgpu/core/wgsl/particleEmitSemanticDigest.js +110 -110
- package/dist/formats/webgpu/core/wgsl/precisionControls.js +55 -55
- package/dist/formats/webgpu/core/wgsl/selectionPlans.js +717 -717
- package/dist/formats/webgpu/core/wgsl/uniformity.js +78 -78
- package/dist/formats/webgpu/core/wgsl/validateExactComputeIr.js +196 -196
- package/dist/formats/webgpu/core/wgsl/validateHandleOperand.js +37 -37
- package/dist/formats/webgpu/index.js +2 -2
- package/dist/formats/webm/CjsWebmFormat.js +197 -197
- package/dist/formats/webm/core/helpers.js +572 -572
- package/dist/formats/webm/index.js +2 -2
- package/dist/formats/webp/CjsWebpFormat.js +140 -140
- package/dist/formats/webp/core/helpers.js +237 -237
- package/dist/formats/webp/index.js +2 -2
- package/dist/formats/wem/CjsWemFormat.js +250 -250
- package/dist/formats/wem/core/bitStream.js +261 -261
- package/dist/formats/wem/core/codebookLibrary.js +164 -164
- package/dist/formats/wem/core/helpers.js +437 -437
- package/dist/formats/wem/core/packedCodebooksAotuv603.js +30 -30
- package/dist/formats/wem/core/ptadpcm.js +77 -77
- package/dist/formats/wem/core/resolve.js +121 -121
- package/dist/formats/wem/core/wemToOgg.js +485 -485
- package/dist/formats/wem/index.js +2 -2
- package/dist/formats/yaml/CjsYamlFormat.js +134 -134
- package/dist/formats/yaml/CjsYamlFormat.js.map +1 -1
- package/dist/formats/yaml/core/CjsYamlReader.js +400 -402
- package/dist/formats/yaml/core/CjsYamlReader.js.map +1 -1
- package/dist/formats/yaml/core/helpers.js +196 -170
- package/dist/formats/yaml/core/helpers.js.map +1 -1
- package/dist/formats/yaml/index.js +2 -2
- package/dist/index.js +64 -62
- package/dist/index.js.map +1 -1
- package/dist/resource/CjsLoadingObject.js +19 -0
- package/dist/resource/CjsLoadingObject.js.map +1 -0
- package/dist/resource/CjsResource.js +801 -797
- package/dist/resource/CjsResource.js.map +1 -1
- package/dist/resource/ResourceHandlerMode.js +14 -0
- package/dist/resource/ResourceHandlerMode.js.map +1 -0
- package/dist/resource/Tr2LightProfileRes.js +32 -32
- package/dist/resource/audio/AudioGeometryResData.js +47 -47
- package/dist/resource/audio/CjsAudioBufferRes.js +86 -86
- package/dist/resource/audio/CjsAudioRes.js +213 -213
- package/dist/resource/audio/index.js +4 -4
- package/dist/resource/geometry/MeshDecalData.js +37 -37
- package/dist/resource/geometry/MeshDecalLodData.js +34 -34
- package/dist/resource/geometry/TriGeometryRes.js +675 -675
- package/dist/resource/geometry/TriGeometryResAreaData.js +59 -59
- package/dist/resource/geometry/TriGeometryResJointData.js +38 -38
- package/dist/resource/geometry/TriGeometryResLodData.js +88 -88
- package/dist/resource/geometry/TriGeometryResMeshData.js +63 -63
- package/dist/resource/geometry/TriGeometryResSkeletonData.js +34 -34
- package/dist/resource/geometry/TriJointBinding.js +38 -38
- package/dist/resource/geometry/TriMorphTargetGeometryConstants.js +46 -46
- package/dist/resource/geometry/TriRtGeometryConstants.js +88 -88
- package/dist/resource/geometry/granny/GStateBindingCallbackData.js +31 -31
- package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js +60 -60
- package/dist/resource/geometry/granny/Tr2GrannyStateRes.js +36 -36
- package/dist/resource/geometry/granny/TriGrannyRes.js +35 -35
- package/dist/resource/geometry/granny/enums.js +10 -10
- package/dist/resource/geometry/granny/index.js +6 -6
- package/dist/resource/geometry/index.js +17 -17
- package/dist/resource/index.js +54 -52
- package/dist/resource/index.js.map +1 -1
- package/dist/resource/resourceBoundary.js +64 -64
- package/dist/resource/shader/Tr2EffectRes.js +336 -431
- package/dist/resource/shader/Tr2EffectRes.js.map +1 -1
- package/dist/resource/shader/Tr2MaterialArea.js +31 -31
- package/dist/resource/shader/Tr2MaterialMesh.js +27 -27
- package/dist/resource/shader/Tr2MaterialRes.js +31 -31
- package/dist/resource/shader/Tr2Shader.js +283 -261
- package/dist/resource/shader/Tr2Shader.js.map +1 -1
- package/dist/resource/shader/Tr2ShaderPermutation.js +43 -43
- package/dist/resource/shader/index.js +17 -17
- package/dist/resource/shader/reflection/Tr2EffectConstant.js +143 -135
- package/dist/resource/shader/reflection/Tr2EffectConstant.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectDefine.js +30 -30
- package/dist/resource/shader/reflection/Tr2EffectDescription.js +114 -109
- package/dist/resource/shader/reflection/Tr2EffectDescription.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js +168 -147
- package/dist/resource/shader/reflection/Tr2EffectLibrary.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +125 -105
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectResource.js +120 -86
- package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js +372 -241
- package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js +78 -68
- package/dist/resource/shader/reflection/Tr2EffectTechnique.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2Pass.js +168 -111
- package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -1
- package/dist/resource/shader/reflection/carbonRecordFields.js +159 -0
- package/dist/resource/shader/reflection/carbonRecordFields.js.map +1 -0
- package/dist/resource/shader/reflection/shaderStage.js +22 -0
- package/dist/resource/shader/reflection/shaderStage.js.map +1 -0
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js +135 -77
- package/dist/resource/shader/sampler/Tr2SamplerSetup.js.map +1 -1
- package/dist/resource/texture/CjsTextureArrayRes.js +472 -472
- package/dist/resource/texture/CjsTextureArrayResParameterProxy.js +179 -179
- package/dist/resource/texture/Tr2ImageRes.js +120 -120
- package/dist/resource/texture/Tr2TextureLodManager.js +82 -82
- package/dist/resource/texture/Tr2TextureLodUpdateRequest.js +37 -37
- package/dist/resource/texture/Tr2TexturePackChannel.js +37 -37
- package/dist/resource/texture/Tr2TexturePipeline.js +54 -54
- package/dist/resource/texture/Tr2TexturePipelineParams.js +34 -34
- package/dist/resource/texture/Tr2TexturePipelineStepCompress.js +40 -40
- package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js +22 -22
- package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js +34 -34
- package/dist/resource/texture/Tr2TexturePipelineStepLoad.js +31 -31
- package/dist/resource/texture/Tr2TexturePipelineStepPack.js +43 -43
- package/dist/resource/texture/TriTextureRes.js +359 -359
- package/dist/resource/texture/index.js +15 -15
- package/dist/resource/texture/texturePipelineBehavior.js +308 -308
- package/dist/worker/CjsResManMainThreadLoader.js +89 -87
- package/dist/worker/CjsResManMainThreadLoader.js.map +1 -1
- package/dist/worker/CjsResManWorker.js +218 -217
- package/dist/worker/CjsResManWorker.js.map +1 -1
- package/dist/worker/CjsResManWorkerLoader.js +437 -434
- package/dist/worker/CjsResManWorkerLoader.js.map +1 -1
- package/dist/worker/protocol.js +12 -12
- package/docs/README.md +98 -98
- package/docs/architecture.md +118 -109
- package/docs/concepts/resource-lifecycle.md +226 -225
- package/docs/concepts/shader-resource-model.md +111 -114
- package/docs/concepts/writing-an-engine-adapter.md +115 -115
- package/docs/formats/README.md +138 -136
- package/docs/formats/carbon-effect-container.md +553 -452
- package/docs/formats/dxbc/README.md +68 -68
- package/docs/formats/dxbc/architecture.md +80 -80
- package/docs/formats/dxbc/reference/api.md +77 -77
- package/docs/formats/dxbc/reference/classes/README.md +9 -9
- package/docs/formats/dxbc/reference/decoded-output.md +122 -122
- package/docs/formats/gr2.md +160 -160
- package/docs/formats/hlsl/README.md +54 -54
- package/docs/formats/hlsl/architecture.md +65 -67
- package/docs/formats/hlsl/guides/hydrating-json-output.md +60 -62
- package/docs/formats/hlsl/guides/reading-effects.md +64 -64
- package/docs/formats/hlsl/reference/advanced-analysis.md +61 -66
- package/docs/formats/hlsl/reference/api.md +92 -98
- package/docs/formats/hlsl/reference/classes/README.md +11 -11
- package/docs/formats/hlsl/reference/json-graph.md +97 -100
- package/docs/formats/pickle.md +82 -0
- package/docs/formats/provenance.md +196 -196
- package/docs/formats/stl.md +37 -37
- package/docs/formats/webgl/README.md +115 -57
- package/docs/formats/webgl/architecture.md +69 -70
- package/docs/formats/webgl/carbon-constant-layouts.md +326 -326
- package/docs/formats/webgl/decl-io.md +1234 -1234
- package/docs/formats/webgl/memory-structured.md +890 -871
- package/docs/formats/webgl/reference/classes/README.md +9 -9
- package/docs/formats/webgl/texture-sample.md +964 -964
- package/docs/formats/webgpu/README.md +84 -84
- package/docs/formats/webgpu/architecture.md +95 -96
- package/docs/formats/webgpu/formats/{cewgpu.md → carbon-webgpu.md} +215 -216
- package/docs/formats/webgpu/guides/effect-packaging.md +189 -191
- package/docs/formats/webgpu/reference/api.md +196 -197
- package/docs/formats/webgpu/reference/classes/README.md +9 -9
- package/docs/formats/webgpu/reference/wgsl-compatibility.md +1546 -1543
- package/docs/formats/wwise.md +146 -85
- package/docs/reference/classes/README.md +35 -35
- package/docs/reference/classes/audio.md +30 -30
- package/docs/reference/classes/core.md +216 -206
- package/docs/reference/classes/dropped.md +46 -46
- package/docs/reference/classes/formats.md +944 -952
- package/docs/reference/classes/resources.md +456 -456
- package/docs/reference/classes/texture.md +26 -26
- package/docs/reference/events.md +117 -117
- package/docs/reference/motherlode-cache.md +275 -275
- package/docs/reference/queues.md +194 -110
- package/docs/reference/reload.md +107 -107
- package/docs/reference/texture-arrays.md +113 -113
- package/docs/reference/texture-pipeline.md +53 -53
- package/docs/reference/workers.md +142 -135
- package/docs/roadmap.md +150 -150
- package/format-notices/black/LICENSE +21 -21
- package/format-notices/black/NOTICE +47 -47
- package/format-notices/bnk/LICENSE +21 -21
- package/format-notices/bnk/NOTICE +21 -21
- package/format-notices/cmf/LICENSE +21 -21
- package/format-notices/cmf/NOTICE +36 -36
- package/format-notices/dds/LICENSE +21 -21
- package/format-notices/dds/NOTICE +14 -14
- package/format-notices/dxbc/LICENSE +21 -21
- package/format-notices/dxbc/NOTICE +20 -20
- package/format-notices/fbx/LICENSE +21 -21
- package/format-notices/fbx/NOTICE +14 -14
- package/format-notices/flac/LICENSE +21 -21
- package/format-notices/flac/NOTICE +14 -14
- package/format-notices/gif/LICENSE +21 -21
- package/format-notices/gif/NOTICE +14 -14
- package/format-notices/gltf/LICENSE +21 -21
- package/format-notices/gltf/NOTICE +27 -27
- package/format-notices/gr2/LICENSE +21 -21
- package/format-notices/gr2/NOTICE +60 -60
- package/format-notices/gr2/THIRD-PARTY-NOTICES.md +93 -93
- package/format-notices/hlsl/LICENSE +21 -21
- package/format-notices/hlsl/NOTICE +25 -25
- package/format-notices/jpeg/LICENSE +21 -21
- package/format-notices/jpeg/NOTICE +14 -14
- package/format-notices/mp3/LICENSE +21 -21
- package/format-notices/mp3/NOTICE +14 -14
- package/format-notices/mp4/LICENSE +21 -21
- package/format-notices/mp4/NOTICE +14 -14
- package/format-notices/obj/LICENSE +21 -21
- package/format-notices/obj/NOTICE +26 -26
- package/format-notices/ogg/LICENSE +21 -21
- package/format-notices/ogg/NOTICE +28 -28
- package/format-notices/png/LICENSE +21 -21
- package/format-notices/png/NOTICE +14 -14
- package/format-notices/red/LICENSE +21 -21
- package/format-notices/red/NOTICE +31 -31
- package/format-notices/stl/LICENSE +21 -21
- package/format-notices/stl/NOTICE +21 -21
- package/format-notices/tga/LICENSE +21 -21
- package/format-notices/tga/NOTICE +14 -14
- package/format-notices/wav/LICENSE +21 -21
- package/format-notices/wav/NOTICE +14 -14
- package/format-notices/webgl/LICENSE +21 -21
- package/format-notices/webgl/NOTICE +35 -35
- package/format-notices/webgpu/LICENSE +21 -21
- package/format-notices/webgpu/NOTICE +31 -31
- package/format-notices/webm/LICENSE +21 -21
- package/format-notices/webm/NOTICE +14 -14
- package/format-notices/webp/LICENSE +21 -21
- package/format-notices/webp/NOTICE +14 -14
- package/format-notices/wem/LICENSE +57 -57
- package/format-notices/wem/NOTICE +33 -33
- package/format-notices/yaml/LICENSE +21 -21
- package/format-notices/yaml/NOTICE +44 -44
- package/package.json +63 -63
- package/dist/format/carbonEffect/carbonDescriptionFromPortable.js +0 -372
- package/dist/format/carbonEffect/carbonDescriptionFromPortable.js.map +0 -1
- package/dist/format/effect/effectReflectionPackage.js +0 -636
- package/dist/format/effect/effectReflectionPackage.js.map +0 -1
- package/dist/formats/hlsl/core/HlslReader.js +0 -16
- package/dist/formats/hlsl/core/HlslReader.js.map +0 -1
- package/dist/formats/hlsl/core/portableReflection.js +0 -848
- package/dist/formats/hlsl/core/portableReflection.js.map +0 -1
- package/dist/formats/hlsl/portable.js +0 -2
- package/dist/formats/hlsl/portable.js.map +0 -1
- package/dist/formats/webgl/core/cewg/CewgPackage.js +0 -340
- package/dist/formats/webgl/core/cewg/CewgPackage.js.map +0 -1
- package/dist/formats/webgl/core/cewg/CewgPackageBuilder.js +0 -104
- package/dist/formats/webgl/core/cewg/CewgPackageBuilder.js.map +0 -1
- package/dist/formats/webgl/core/cewg/binary.js +0 -19
- package/dist/formats/webgl/core/cewg/binary.js.map +0 -1
- package/dist/formats/webgl/core/cewgCompleteness.js.map +0 -1
- package/dist/formats/webgl/core/effectPackageValidation.js +0 -331
- package/dist/formats/webgl/core/effectPackageValidation.js.map +0 -1
- package/dist/formats/webgpu/core/cewgpu/CewgpuContainer.js.map +0 -1
- package/dist/formats/webgpu/core/cewgpu/containerViews.js.map +0 -1
- package/dist/formats/webgpu/core/cewgpu/validateContainer.js.map +0 -1
- package/dist/resource/shader/portable.js +0 -33
- package/dist/resource/shader/portable.js.map +0 -1
- package/docs/formats/hlsl/reference/portable-reflection.md +0 -141
- package/docs/formats/webgl/effect-reflection.md +0 -127
|
@@ -1,540 +1,540 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Registry that normalizes caller-supplied schemas into per-class source
|
|
3
|
-
* shapes the Black reader uses to resolve persisted fields.
|
|
4
|
-
*/
|
|
5
|
-
class CjsBlackSchemaRegistry {
|
|
6
|
-
/** Creates a CjsBlackSchemaRegistry with caller-provided initial state. */
|
|
7
|
-
constructor(schema = null) {
|
|
8
|
-
this.shapes = CjsBlackSchemaRegistry.createShapeMap(schema);
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
/** Returns source shape from the current Black object-graph reader. */
|
|
12
|
-
GetSourceShape(kind) {
|
|
13
|
-
return this.shapes.get(kind) || null;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
/** Creates shape map for the current Black object-graph reader. */
|
|
17
|
-
static createShapeMap(schema) {
|
|
18
|
-
const shapes = new Map();
|
|
19
|
-
if (CjsBlackSchemaRegistry.isCompactClassMap(schema)) {
|
|
20
|
-
CjsBlackSchemaRegistry.addCompactClassMap(schema, shapes);
|
|
21
|
-
return shapes;
|
|
22
|
-
}
|
|
23
|
-
CjsBlackSchemaRegistry.collectSchemaShapes(schema, shapes, new WeakSet());
|
|
24
|
-
return shapes;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/** Collects schema shapes required by the current Black object-graph reader. */
|
|
28
|
-
static collectSchemaShapes(value, shapes, seen) {
|
|
29
|
-
if (!value || typeof value !== "object") return;
|
|
30
|
-
if (seen.has(value)) return;
|
|
31
|
-
seen.add(value);
|
|
32
|
-
if (Array.isArray(value)) {
|
|
33
|
-
for (const item of value) {
|
|
34
|
-
CjsBlackSchemaRegistry.collectSchemaShapes(item, shapes, seen);
|
|
35
|
-
}
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
38
|
-
if (CjsBlackSchemaRegistry.isClassSchema(value)) {
|
|
39
|
-
CjsBlackSchemaRegistry.addShape(value, shapes);
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
if (Array.isArray(value.families)) {
|
|
43
|
-
for (const family of value.families) {
|
|
44
|
-
CjsBlackSchemaRegistry.collectSchemaShapes(family, shapes, seen);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
if (Array.isArray(value.classes)) {
|
|
48
|
-
for (const item of value.classes) {
|
|
49
|
-
CjsBlackSchemaRegistry.collectSchemaShapes(item, shapes, seen);
|
|
50
|
-
}
|
|
51
|
-
} else if (CjsBlackSchemaRegistry.isCompactClassMap(value.classes)) {
|
|
52
|
-
CjsBlackSchemaRegistry.addCompactClassMap(value.classes, shapes);
|
|
53
|
-
}
|
|
54
|
-
for (const item of Object.values(value)) {
|
|
55
|
-
if (item && typeof item === "object" && CjsBlackSchemaRegistry.isClassSchema(item)) {
|
|
56
|
-
CjsBlackSchemaRegistry.addShape(item, shapes);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* Reports whether the current Black object-graph reader satisfies compact
|
|
63
|
-
* class map.
|
|
64
|
-
*/
|
|
65
|
-
static isCompactClassMap(value) {
|
|
66
|
-
if (!value || typeof value !== "object" || Array.isArray(value)) return false;
|
|
67
|
-
if (CjsBlackSchemaRegistry.isClassSchema(value)) return false;
|
|
68
|
-
if (value.black || value.families || Array.isArray(value.classes)) return false;
|
|
69
|
-
const entries = Object.entries(value);
|
|
70
|
-
if (!entries.length) return false;
|
|
71
|
-
return entries.every(([className, fields]) => typeof className === "string" && className.length > 0 && CjsBlackSchemaRegistry.isCompactFieldMap(fields) && CjsBlackSchemaRegistry.isCompactClassFields(fields));
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* Reports whether the current Black object-graph reader satisfies compact
|
|
76
|
-
* class fields.
|
|
77
|
-
*/
|
|
78
|
-
static isCompactClassFields(fields) {
|
|
79
|
-
const specs = Object.values(fields || {});
|
|
80
|
-
return specs.every(spec => CjsBlackSchemaRegistry.isCompactFieldSpec(spec));
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
/**
|
|
84
|
-
* Reports whether the current Black object-graph reader satisfies compact
|
|
85
|
-
* field spec.
|
|
86
|
-
*/
|
|
87
|
-
static isCompactFieldSpec(spec) {
|
|
88
|
-
if (typeof spec === "string") return true;
|
|
89
|
-
if (!spec || typeof spec !== "object" || Array.isArray(spec)) return false;
|
|
90
|
-
return typeof spec.type === "string" || typeof spec.kind === "string";
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
/** Adds compact class map to the current Black object-graph reader. */
|
|
94
|
-
static addCompactClassMap(classes, shapes) {
|
|
95
|
-
for (const [className, fields] of Object.entries(classes || {})) {
|
|
96
|
-
CjsBlackSchemaRegistry.addShape({
|
|
97
|
-
className,
|
|
98
|
-
fields
|
|
99
|
-
}, shapes);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* Reports whether the current Black object-graph reader satisfies class
|
|
105
|
-
* schema.
|
|
106
|
-
*/
|
|
107
|
-
static isClassSchema(value) {
|
|
108
|
-
if (!value || typeof value !== "object") return false;
|
|
109
|
-
if (Array.isArray(value)) return false;
|
|
110
|
-
return Boolean(value.black?.fields || value.black && (value.black.className || value.className || value.blueClass || value.cppClass) || value.className && CjsBlackSchemaRegistry.isCompactFieldMap(value.fields) || value.className && Array.isArray(value.fields) || value.blueClass && value.black);
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
/** Adds shape to the current Black object-graph reader. */
|
|
114
|
-
static addShape(schema, shapes) {
|
|
115
|
-
const shape = CjsBlackSchemaRegistry.normalizeShape(schema);
|
|
116
|
-
if (!shape?.className) return;
|
|
117
|
-
shapes.set(shape.className, shape);
|
|
118
|
-
if (schema.blueClass) shapes.set(schema.blueClass, shape);
|
|
119
|
-
if (schema.cppClass) shapes.set(schema.cppClass, shape);
|
|
120
|
-
if (schema.name) shapes.set(schema.name, shape);
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
/**
|
|
124
|
-
* Converts shape into the canonical Black object-graph reader
|
|
125
|
-
* representation.
|
|
126
|
-
*/
|
|
127
|
-
static normalizeShape(schema) {
|
|
128
|
-
const black = schema.black || {};
|
|
129
|
-
const className = black.className || schema.className || schema.blueClass || schema.cppClass || schema.name || null;
|
|
130
|
-
if (!className) return null;
|
|
131
|
-
const fields = CjsBlackSchemaRegistry.normalizeFields(schema);
|
|
132
|
-
const blackFieldSource = CjsBlackSchemaRegistry.isCompactFieldMap(schema.fields) ? CjsBlackSchemaRegistry.compactBlackFields(schema.fields) : black.fields || schema.blackFields || schema.fields || [];
|
|
133
|
-
const blackFields = blackFieldSource.filter(item => item && typeof item === "object").map(item => CjsBlackSchemaRegistry.normalizeBlackField(item, fields));
|
|
134
|
-
return {
|
|
135
|
-
...schema,
|
|
136
|
-
className,
|
|
137
|
-
family: schema.family || null,
|
|
138
|
-
fields,
|
|
139
|
-
black: {
|
|
140
|
-
...black,
|
|
141
|
-
className,
|
|
142
|
-
fields: blackFields
|
|
143
|
-
}
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
/**
|
|
148
|
-
* Converts fields into the canonical Black object-graph reader
|
|
149
|
-
* representation.
|
|
150
|
-
*/
|
|
151
|
-
static normalizeFields(schema) {
|
|
152
|
-
const fields = [];
|
|
153
|
-
const byName = new Map();
|
|
154
|
-
const add = field => {
|
|
155
|
-
if (!field || typeof field !== "object") return;
|
|
156
|
-
const name = field.name || field.fieldName || field.blueName || CjsBlackSchemaRegistry.toJsFieldName(field.cppName || field.member || "");
|
|
157
|
-
if (!name || byName.has(name)) return;
|
|
158
|
-
const normalized = {
|
|
159
|
-
...field,
|
|
160
|
-
name,
|
|
161
|
-
cppName: field.cppName || field.memberPath || field.memberRoot || field.member || null,
|
|
162
|
-
cppType: field.cppType || null
|
|
163
|
-
};
|
|
164
|
-
byName.set(name, normalized);
|
|
165
|
-
fields.push(normalized);
|
|
166
|
-
};
|
|
167
|
-
if (CjsBlackSchemaRegistry.isCompactFieldMap(schema.fields)) {
|
|
168
|
-
for (const [blackName, fieldSpec] of Object.entries(schema.fields)) {
|
|
169
|
-
add(CjsBlackSchemaRegistry.compactField(blackName, fieldSpec));
|
|
170
|
-
}
|
|
171
|
-
} else {
|
|
172
|
-
for (const field of schema.fields || []) {
|
|
173
|
-
add(field);
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
for (const attribute of schema.attributes || []) {
|
|
177
|
-
if (!attribute?.black) continue;
|
|
178
|
-
const black = CjsBlackSchemaRegistry.normalizeBlackField(attribute.black, fields);
|
|
179
|
-
add({
|
|
180
|
-
name: black.fieldName || attribute.blueName || black.name,
|
|
181
|
-
cppName: black.cppName,
|
|
182
|
-
cppType: black.cppType || attribute.cppType,
|
|
183
|
-
black
|
|
184
|
-
});
|
|
185
|
-
}
|
|
186
|
-
return fields;
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
/**
|
|
190
|
-
* Reports whether the current Black object-graph reader satisfies compact
|
|
191
|
-
* field map.
|
|
192
|
-
*/
|
|
193
|
-
static isCompactFieldMap(value) {
|
|
194
|
-
return !!value && typeof value === "object" && !Array.isArray(value);
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
/**
|
|
198
|
-
* Converts compact Black field declarations into normalized field records
|
|
199
|
-
* for the Black object-graph reader.
|
|
200
|
-
*/
|
|
201
|
-
static compactBlackFields(fields) {
|
|
202
|
-
return Object.entries(fields || {}).map(([blackName, fieldSpec]) => CjsBlackSchemaRegistry.compactBlackField(blackName, fieldSpec));
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
/**
|
|
206
|
-
* Converts one compact field declaration into a normalized field record for
|
|
207
|
-
* the Black object-graph reader.
|
|
208
|
-
*/
|
|
209
|
-
static compactField(blackName, fieldSpec) {
|
|
210
|
-
const spec = CjsBlackSchemaRegistry.normalizeCompactSpec(blackName, fieldSpec);
|
|
211
|
-
return {
|
|
212
|
-
name: spec.fieldName,
|
|
213
|
-
fieldName: spec.fieldName,
|
|
214
|
-
enumType: spec.enumType,
|
|
215
|
-
jsType: spec.jsType,
|
|
216
|
-
black: spec.black
|
|
217
|
-
};
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
/**
|
|
221
|
-
* Converts one Black-specific compact field declaration into a normalized
|
|
222
|
-
* record for the Black object-graph reader.
|
|
223
|
-
*/
|
|
224
|
-
static compactBlackField(blackName, fieldSpec) {
|
|
225
|
-
return CjsBlackSchemaRegistry.normalizeCompactSpec(blackName, fieldSpec).black;
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
/**
|
|
229
|
-
* Converts compact spec into the canonical Black object-graph reader
|
|
230
|
-
* representation.
|
|
231
|
-
*/
|
|
232
|
-
static normalizeCompactSpec(blackName, fieldSpec) {
|
|
233
|
-
const spec = typeof fieldSpec === "string" ? {
|
|
234
|
-
type: fieldSpec
|
|
235
|
-
} : fieldSpec || {},
|
|
236
|
-
type = spec.type || spec.kind || "unknown",
|
|
237
|
-
fieldName = spec.field || spec.fieldName || blackName,
|
|
238
|
-
descriptor = CjsBlackSchemaRegistry.compactTypeDescriptor(type, spec),
|
|
239
|
-
black = {
|
|
240
|
-
name: blackName,
|
|
241
|
-
fieldName,
|
|
242
|
-
storageName: fieldName,
|
|
243
|
-
member: blackName,
|
|
244
|
-
memberPath: fieldName,
|
|
245
|
-
memberRoot: fieldName,
|
|
246
|
-
indexKey: Object.hasOwn(spec, "index") ? spec.index : undefined,
|
|
247
|
-
indexToken: spec.token || null,
|
|
248
|
-
enumType: spec.enum || null,
|
|
249
|
-
...descriptor.black,
|
|
250
|
-
jsType: descriptor.jsType
|
|
251
|
-
};
|
|
252
|
-
return {
|
|
253
|
-
fieldName,
|
|
254
|
-
enumType: spec.enum || null,
|
|
255
|
-
jsType: descriptor.jsType,
|
|
256
|
-
black
|
|
257
|
-
};
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
/**
|
|
261
|
-
* Converts a compact type descriptor into its normalized schema
|
|
262
|
-
* representation for the Black object-graph reader.
|
|
263
|
-
*/
|
|
264
|
-
static compactTypeDescriptor(type, spec) {
|
|
265
|
-
const normalized = String(type || "unknown");
|
|
266
|
-
switch (normalized) {
|
|
267
|
-
case "boolean":
|
|
268
|
-
case "bool":
|
|
269
|
-
return CjsBlackSchemaRegistry.compactBlackType("BOOL", {
|
|
270
|
-
kind: "boolean"
|
|
271
|
-
});
|
|
272
|
-
case "string":
|
|
273
|
-
return CjsBlackSchemaRegistry.compactBlackType("STDSTRING", {
|
|
274
|
-
kind: "string"
|
|
275
|
-
});
|
|
276
|
-
case "wstring":
|
|
277
|
-
return CjsBlackSchemaRegistry.compactBlackType("STDWSTRING", {
|
|
278
|
-
kind: "string"
|
|
279
|
-
});
|
|
280
|
-
case "path":
|
|
281
|
-
return CjsBlackSchemaRegistry.compactBlackType("STDSTRING", {
|
|
282
|
-
kind: "path"
|
|
283
|
-
});
|
|
284
|
-
case "expression":
|
|
285
|
-
return CjsBlackSchemaRegistry.compactBlackType("STDSTRING", {
|
|
286
|
-
kind: "expression",
|
|
287
|
-
js: "string"
|
|
288
|
-
});
|
|
289
|
-
case "enum":
|
|
290
|
-
return CjsBlackSchemaRegistry.compactBlackType("LONG", {
|
|
291
|
-
kind: "enum"
|
|
292
|
-
}, {
|
|
293
|
-
signed: true
|
|
294
|
-
});
|
|
295
|
-
case "float":
|
|
296
|
-
return CjsBlackSchemaRegistry.compactBlackType("FLOAT", {
|
|
297
|
-
kind: "float32"
|
|
298
|
-
});
|
|
299
|
-
case "double":
|
|
300
|
-
return CjsBlackSchemaRegistry.compactBlackType("DOUBLE", {
|
|
301
|
-
kind: "float64"
|
|
302
|
-
});
|
|
303
|
-
case "int":
|
|
304
|
-
return CjsBlackSchemaRegistry.compactBlackType("LONG", {
|
|
305
|
-
kind: "int32"
|
|
306
|
-
}, {
|
|
307
|
-
signed: true
|
|
308
|
-
});
|
|
309
|
-
case "uint":
|
|
310
|
-
return CjsBlackSchemaRegistry.compactBlackType("ULONG", {
|
|
311
|
-
kind: "uint32"
|
|
312
|
-
}, {
|
|
313
|
-
signed: false
|
|
314
|
-
});
|
|
315
|
-
case "int64":
|
|
316
|
-
return CjsBlackSchemaRegistry.compactBlackType("INT64", {
|
|
317
|
-
kind: "int64"
|
|
318
|
-
}, {
|
|
319
|
-
signed: true
|
|
320
|
-
});
|
|
321
|
-
case "uint64":
|
|
322
|
-
return CjsBlackSchemaRegistry.compactBlackType("UINT64", {
|
|
323
|
-
kind: "uint64"
|
|
324
|
-
}, {
|
|
325
|
-
signed: false
|
|
326
|
-
});
|
|
327
|
-
case "byte":
|
|
328
|
-
return CjsBlackSchemaRegistry.compactBlackType("BYTE", {
|
|
329
|
-
kind: "int8"
|
|
330
|
-
}, {
|
|
331
|
-
signed: true
|
|
332
|
-
});
|
|
333
|
-
case "ubyte":
|
|
334
|
-
return CjsBlackSchemaRegistry.compactBlackType("BYTE", {
|
|
335
|
-
kind: "uint8"
|
|
336
|
-
}, {
|
|
337
|
-
signed: false
|
|
338
|
-
});
|
|
339
|
-
case "short":
|
|
340
|
-
return CjsBlackSchemaRegistry.compactBlackType("SHORT", {
|
|
341
|
-
kind: "int16"
|
|
342
|
-
}, {
|
|
343
|
-
signed: true
|
|
344
|
-
});
|
|
345
|
-
case "ushort":
|
|
346
|
-
return CjsBlackSchemaRegistry.compactBlackType("SHORT", {
|
|
347
|
-
kind: "uint16"
|
|
348
|
-
}, {
|
|
349
|
-
signed: false
|
|
350
|
-
});
|
|
351
|
-
case "vector2":
|
|
352
|
-
return CjsBlackSchemaRegistry.compactFloatArrayType("vector2", 2);
|
|
353
|
-
case "vector3":
|
|
354
|
-
return CjsBlackSchemaRegistry.compactFloatArrayType("vector3", 3);
|
|
355
|
-
case "vector4":
|
|
356
|
-
return CjsBlackSchemaRegistry.compactFloatArrayType("vector4", 4);
|
|
357
|
-
case "color":
|
|
358
|
-
return CjsBlackSchemaRegistry.compactFloatArrayType("color", 4);
|
|
359
|
-
case "quaternion":
|
|
360
|
-
return CjsBlackSchemaRegistry.compactFloatArrayType("quaternion", 4);
|
|
361
|
-
case "matrix3":
|
|
362
|
-
return CjsBlackSchemaRegistry.compactFloatArrayType("matrix3", 9);
|
|
363
|
-
case "matrix4":
|
|
364
|
-
return CjsBlackSchemaRegistry.compactFloatArrayType("matrix4", 16);
|
|
365
|
-
case "floatArray":
|
|
366
|
-
return CjsBlackSchemaRegistry.compactFloatArrayType("array", spec.length || 0);
|
|
367
|
-
case "array":
|
|
368
|
-
return CjsBlackSchemaRegistry.compactBlackType("IROOT", {
|
|
369
|
-
kind: "array"
|
|
370
|
-
}, {
|
|
371
|
-
container: "list"
|
|
372
|
-
});
|
|
373
|
-
case "dict":
|
|
374
|
-
return CjsBlackSchemaRegistry.compactBlackType("IROOT", {
|
|
375
|
-
kind: "map"
|
|
376
|
-
}, {
|
|
377
|
-
container: "dict"
|
|
378
|
-
});
|
|
379
|
-
case "object":
|
|
380
|
-
return CjsBlackSchemaRegistry.compactBlackType("IROOTPTR", {
|
|
381
|
-
kind: "objectRef"
|
|
382
|
-
});
|
|
383
|
-
case "rawStruct":
|
|
384
|
-
return CjsBlackSchemaRegistry.compactBlackType("IROOT", {
|
|
385
|
-
kind: "rawStruct"
|
|
386
|
-
});
|
|
387
|
-
case "structList":
|
|
388
|
-
return CjsBlackSchemaRegistry.compactBlackType("IROOT", {
|
|
389
|
-
kind: "array"
|
|
390
|
-
}, {
|
|
391
|
-
container: "list",
|
|
392
|
-
cppType: spec.cppType || "StructureList"
|
|
393
|
-
});
|
|
394
|
-
case "binaryBlock":
|
|
395
|
-
return CjsBlackSchemaRegistry.compactBlackType("BINARYBLOCK", {
|
|
396
|
-
kind: "typedArray"
|
|
397
|
-
});
|
|
398
|
-
default:
|
|
399
|
-
return CjsBlackSchemaRegistry.compactBlackType(null, {
|
|
400
|
-
kind: normalized
|
|
401
|
-
});
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
|
|
405
|
-
/**
|
|
406
|
-
* Converts a compact Black wire type into its normalized schema
|
|
407
|
-
* representation for the Black object-graph reader.
|
|
408
|
-
*/
|
|
409
|
-
static compactBlackType(beType, jsType, extra = {}) {
|
|
410
|
-
return {
|
|
411
|
-
jsType,
|
|
412
|
-
black: {
|
|
413
|
-
beType,
|
|
414
|
-
wireType: CjsBlackSchemaRegistry.compactWireType(beType, extra.container),
|
|
415
|
-
...extra
|
|
416
|
-
}
|
|
417
|
-
};
|
|
418
|
-
}
|
|
419
|
-
|
|
420
|
-
/**
|
|
421
|
-
* Converts a compact float-array type into its normalized schema
|
|
422
|
-
* representation for the Black object-graph reader.
|
|
423
|
-
*/
|
|
424
|
-
static compactFloatArrayType(kind, length) {
|
|
425
|
-
return CjsBlackSchemaRegistry.compactBlackType("FLOATARRAY", {
|
|
426
|
-
kind,
|
|
427
|
-
length
|
|
428
|
-
}, {
|
|
429
|
-
length
|
|
430
|
-
});
|
|
431
|
-
}
|
|
432
|
-
|
|
433
|
-
/**
|
|
434
|
-
* Converts a compact wire-type code into its normalized schema
|
|
435
|
-
* representation for the Black object-graph reader.
|
|
436
|
-
*/
|
|
437
|
-
static compactWireType(beType, container = null) {
|
|
438
|
-
switch (beType) {
|
|
439
|
-
case "BOOL":
|
|
440
|
-
return "bool";
|
|
441
|
-
case "STDSTRING":
|
|
442
|
-
case "STDWSTRING":
|
|
443
|
-
return "stringRef";
|
|
444
|
-
case "FLOAT":
|
|
445
|
-
return "float32";
|
|
446
|
-
case "DOUBLE":
|
|
447
|
-
return "float64";
|
|
448
|
-
case "LONG":
|
|
449
|
-
return "int32";
|
|
450
|
-
case "ULONG":
|
|
451
|
-
return "uint32";
|
|
452
|
-
case "INT64":
|
|
453
|
-
return "int64";
|
|
454
|
-
case "UINT64":
|
|
455
|
-
return "uint64";
|
|
456
|
-
case "BYTE":
|
|
457
|
-
return "uint8";
|
|
458
|
-
case "SHORT":
|
|
459
|
-
return "uint16";
|
|
460
|
-
case "FLOATARRAY":
|
|
461
|
-
return "floatArray";
|
|
462
|
-
case "BINARYBLOCK":
|
|
463
|
-
return "binaryBlock";
|
|
464
|
-
case "IROOTPTR":
|
|
465
|
-
return "objectRef";
|
|
466
|
-
case "IROOT":
|
|
467
|
-
return container ? "container" : "inlineObject";
|
|
468
|
-
default:
|
|
469
|
-
return null;
|
|
470
|
-
}
|
|
471
|
-
}
|
|
472
|
-
|
|
473
|
-
/**
|
|
474
|
-
* Converts black field into the canonical Black object-graph reader
|
|
475
|
-
* representation.
|
|
476
|
-
*/
|
|
477
|
-
static normalizeBlackField(field, sourceFields = []) {
|
|
478
|
-
const names = field.names || null;
|
|
479
|
-
const name = field.name || CjsBlackSchemaRegistry.getNameRole(names, "name") || field.nameExpression || null;
|
|
480
|
-
const fieldName = field.fieldName || CjsBlackSchemaRegistry.getNameRole(names, "fieldName") || name || null;
|
|
481
|
-
const cppName = field.cppName || CjsBlackSchemaRegistry.getNameRole(names, "cppName") || CjsBlackSchemaRegistry.getNameRole(names, "memberPath") || CjsBlackSchemaRegistry.getNameRole(names, "memberRoot") || null;
|
|
482
|
-
const member = field.member || CjsBlackSchemaRegistry.getNameRole(names, "member") || cppName || name;
|
|
483
|
-
const memberPath = field.memberPath || CjsBlackSchemaRegistry.getNameRole(names, "memberPath") || cppName;
|
|
484
|
-
const memberRoot = field.memberRoot || CjsBlackSchemaRegistry.getNameRole(names, "memberRoot") || memberPath;
|
|
485
|
-
const sourceField = sourceFields.find(item => item.name === fieldName || item.name === name || item.cppName === cppName || item.cppName === memberPath || item.cppName === memberRoot);
|
|
486
|
-
return {
|
|
487
|
-
...field,
|
|
488
|
-
names,
|
|
489
|
-
name,
|
|
490
|
-
fieldName,
|
|
491
|
-
storageName: field.storageName || fieldName || name,
|
|
492
|
-
cppName: cppName || sourceField?.cppName || null,
|
|
493
|
-
member,
|
|
494
|
-
memberPath,
|
|
495
|
-
memberRoot,
|
|
496
|
-
cppType: field.cppType || sourceField?.cppType || null,
|
|
497
|
-
beType: field.beType || null
|
|
498
|
-
};
|
|
499
|
-
}
|
|
500
|
-
|
|
501
|
-
/**
|
|
502
|
-
* Reports whether black field name matches the current Black object-graph
|
|
503
|
-
* reader.
|
|
504
|
-
*/
|
|
505
|
-
static matchesBlackFieldName(field, blackName) {
|
|
506
|
-
if (!field || !blackName) return false;
|
|
507
|
-
if (field.name === blackName) return true;
|
|
508
|
-
if (field.fieldName === blackName) return true;
|
|
509
|
-
if (field.member === blackName) return true;
|
|
510
|
-
if (field.memberPath === blackName) return true;
|
|
511
|
-
if (field.memberRoot === blackName) return true;
|
|
512
|
-
if (field.cppName === blackName) return true;
|
|
513
|
-
if (field.nameExpression === blackName) return true;
|
|
514
|
-
if (field.names && typeof field.names === "object") {
|
|
515
|
-
return Object.hasOwn(field.names, blackName);
|
|
516
|
-
}
|
|
517
|
-
return false;
|
|
518
|
-
}
|
|
519
|
-
|
|
520
|
-
/**
|
|
521
|
-
* Classifies a field name as canonical, source, or alias metadata for the
|
|
522
|
-
* Black object-graph reader.
|
|
523
|
-
*/
|
|
524
|
-
static getNameRole(names, role) {
|
|
525
|
-
if (!names || typeof names !== "object") return null;
|
|
526
|
-
for (const [name, roles] of Object.entries(names)) {
|
|
527
|
-
const roleList = Array.isArray(roles) ? roles : String(roles || "").split(/\s+/);
|
|
528
|
-
if (roleList.includes(role)) return name;
|
|
529
|
-
}
|
|
530
|
-
return null;
|
|
531
|
-
}
|
|
532
|
-
|
|
533
|
-
/** Converts the current Black object-graph reader value to JS field name. */
|
|
534
|
-
static toJsFieldName(value) {
|
|
535
|
-
return String(value || "").replace(/^m_/, "");
|
|
536
|
-
}
|
|
537
|
-
}
|
|
538
|
-
|
|
539
|
-
export { CjsBlackSchemaRegistry };
|
|
540
|
-
//# sourceMappingURL=CjsBlackSchemaRegistry.js.map
|
|
1
|
+
/**
|
|
2
|
+
* Registry that normalizes caller-supplied schemas into per-class source
|
|
3
|
+
* shapes the Black reader uses to resolve persisted fields.
|
|
4
|
+
*/
|
|
5
|
+
class CjsBlackSchemaRegistry {
|
|
6
|
+
/** Creates a CjsBlackSchemaRegistry with caller-provided initial state. */
|
|
7
|
+
constructor(schema = null) {
|
|
8
|
+
this.shapes = CjsBlackSchemaRegistry.createShapeMap(schema);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/** Returns source shape from the current Black object-graph reader. */
|
|
12
|
+
GetSourceShape(kind) {
|
|
13
|
+
return this.shapes.get(kind) || null;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/** Creates shape map for the current Black object-graph reader. */
|
|
17
|
+
static createShapeMap(schema) {
|
|
18
|
+
const shapes = new Map();
|
|
19
|
+
if (CjsBlackSchemaRegistry.isCompactClassMap(schema)) {
|
|
20
|
+
CjsBlackSchemaRegistry.addCompactClassMap(schema, shapes);
|
|
21
|
+
return shapes;
|
|
22
|
+
}
|
|
23
|
+
CjsBlackSchemaRegistry.collectSchemaShapes(schema, shapes, new WeakSet());
|
|
24
|
+
return shapes;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/** Collects schema shapes required by the current Black object-graph reader. */
|
|
28
|
+
static collectSchemaShapes(value, shapes, seen) {
|
|
29
|
+
if (!value || typeof value !== "object") return;
|
|
30
|
+
if (seen.has(value)) return;
|
|
31
|
+
seen.add(value);
|
|
32
|
+
if (Array.isArray(value)) {
|
|
33
|
+
for (const item of value) {
|
|
34
|
+
CjsBlackSchemaRegistry.collectSchemaShapes(item, shapes, seen);
|
|
35
|
+
}
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
if (CjsBlackSchemaRegistry.isClassSchema(value)) {
|
|
39
|
+
CjsBlackSchemaRegistry.addShape(value, shapes);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
if (Array.isArray(value.families)) {
|
|
43
|
+
for (const family of value.families) {
|
|
44
|
+
CjsBlackSchemaRegistry.collectSchemaShapes(family, shapes, seen);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (Array.isArray(value.classes)) {
|
|
48
|
+
for (const item of value.classes) {
|
|
49
|
+
CjsBlackSchemaRegistry.collectSchemaShapes(item, shapes, seen);
|
|
50
|
+
}
|
|
51
|
+
} else if (CjsBlackSchemaRegistry.isCompactClassMap(value.classes)) {
|
|
52
|
+
CjsBlackSchemaRegistry.addCompactClassMap(value.classes, shapes);
|
|
53
|
+
}
|
|
54
|
+
for (const item of Object.values(value)) {
|
|
55
|
+
if (item && typeof item === "object" && CjsBlackSchemaRegistry.isClassSchema(item)) {
|
|
56
|
+
CjsBlackSchemaRegistry.addShape(item, shapes);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Reports whether the current Black object-graph reader satisfies compact
|
|
63
|
+
* class map.
|
|
64
|
+
*/
|
|
65
|
+
static isCompactClassMap(value) {
|
|
66
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) return false;
|
|
67
|
+
if (CjsBlackSchemaRegistry.isClassSchema(value)) return false;
|
|
68
|
+
if (value.black || value.families || Array.isArray(value.classes)) return false;
|
|
69
|
+
const entries = Object.entries(value);
|
|
70
|
+
if (!entries.length) return false;
|
|
71
|
+
return entries.every(([className, fields]) => typeof className === "string" && className.length > 0 && CjsBlackSchemaRegistry.isCompactFieldMap(fields) && CjsBlackSchemaRegistry.isCompactClassFields(fields));
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Reports whether the current Black object-graph reader satisfies compact
|
|
76
|
+
* class fields.
|
|
77
|
+
*/
|
|
78
|
+
static isCompactClassFields(fields) {
|
|
79
|
+
const specs = Object.values(fields || {});
|
|
80
|
+
return specs.every(spec => CjsBlackSchemaRegistry.isCompactFieldSpec(spec));
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Reports whether the current Black object-graph reader satisfies compact
|
|
85
|
+
* field spec.
|
|
86
|
+
*/
|
|
87
|
+
static isCompactFieldSpec(spec) {
|
|
88
|
+
if (typeof spec === "string") return true;
|
|
89
|
+
if (!spec || typeof spec !== "object" || Array.isArray(spec)) return false;
|
|
90
|
+
return typeof spec.type === "string" || typeof spec.kind === "string";
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/** Adds compact class map to the current Black object-graph reader. */
|
|
94
|
+
static addCompactClassMap(classes, shapes) {
|
|
95
|
+
for (const [className, fields] of Object.entries(classes || {})) {
|
|
96
|
+
CjsBlackSchemaRegistry.addShape({
|
|
97
|
+
className,
|
|
98
|
+
fields
|
|
99
|
+
}, shapes);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Reports whether the current Black object-graph reader satisfies class
|
|
105
|
+
* schema.
|
|
106
|
+
*/
|
|
107
|
+
static isClassSchema(value) {
|
|
108
|
+
if (!value || typeof value !== "object") return false;
|
|
109
|
+
if (Array.isArray(value)) return false;
|
|
110
|
+
return Boolean(value.black?.fields || value.black && (value.black.className || value.className || value.blueClass || value.cppClass) || value.className && CjsBlackSchemaRegistry.isCompactFieldMap(value.fields) || value.className && Array.isArray(value.fields) || value.blueClass && value.black);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/** Adds shape to the current Black object-graph reader. */
|
|
114
|
+
static addShape(schema, shapes) {
|
|
115
|
+
const shape = CjsBlackSchemaRegistry.normalizeShape(schema);
|
|
116
|
+
if (!shape?.className) return;
|
|
117
|
+
shapes.set(shape.className, shape);
|
|
118
|
+
if (schema.blueClass) shapes.set(schema.blueClass, shape);
|
|
119
|
+
if (schema.cppClass) shapes.set(schema.cppClass, shape);
|
|
120
|
+
if (schema.name) shapes.set(schema.name, shape);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Converts shape into the canonical Black object-graph reader
|
|
125
|
+
* representation.
|
|
126
|
+
*/
|
|
127
|
+
static normalizeShape(schema) {
|
|
128
|
+
const black = schema.black || {};
|
|
129
|
+
const className = black.className || schema.className || schema.blueClass || schema.cppClass || schema.name || null;
|
|
130
|
+
if (!className) return null;
|
|
131
|
+
const fields = CjsBlackSchemaRegistry.normalizeFields(schema);
|
|
132
|
+
const blackFieldSource = CjsBlackSchemaRegistry.isCompactFieldMap(schema.fields) ? CjsBlackSchemaRegistry.compactBlackFields(schema.fields) : black.fields || schema.blackFields || schema.fields || [];
|
|
133
|
+
const blackFields = blackFieldSource.filter(item => item && typeof item === "object").map(item => CjsBlackSchemaRegistry.normalizeBlackField(item, fields));
|
|
134
|
+
return {
|
|
135
|
+
...schema,
|
|
136
|
+
className,
|
|
137
|
+
family: schema.family || null,
|
|
138
|
+
fields,
|
|
139
|
+
black: {
|
|
140
|
+
...black,
|
|
141
|
+
className,
|
|
142
|
+
fields: blackFields
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Converts fields into the canonical Black object-graph reader
|
|
149
|
+
* representation.
|
|
150
|
+
*/
|
|
151
|
+
static normalizeFields(schema) {
|
|
152
|
+
const fields = [];
|
|
153
|
+
const byName = new Map();
|
|
154
|
+
const add = field => {
|
|
155
|
+
if (!field || typeof field !== "object") return;
|
|
156
|
+
const name = field.name || field.fieldName || field.blueName || CjsBlackSchemaRegistry.toJsFieldName(field.cppName || field.member || "");
|
|
157
|
+
if (!name || byName.has(name)) return;
|
|
158
|
+
const normalized = {
|
|
159
|
+
...field,
|
|
160
|
+
name,
|
|
161
|
+
cppName: field.cppName || field.memberPath || field.memberRoot || field.member || null,
|
|
162
|
+
cppType: field.cppType || null
|
|
163
|
+
};
|
|
164
|
+
byName.set(name, normalized);
|
|
165
|
+
fields.push(normalized);
|
|
166
|
+
};
|
|
167
|
+
if (CjsBlackSchemaRegistry.isCompactFieldMap(schema.fields)) {
|
|
168
|
+
for (const [blackName, fieldSpec] of Object.entries(schema.fields)) {
|
|
169
|
+
add(CjsBlackSchemaRegistry.compactField(blackName, fieldSpec));
|
|
170
|
+
}
|
|
171
|
+
} else {
|
|
172
|
+
for (const field of schema.fields || []) {
|
|
173
|
+
add(field);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
for (const attribute of schema.attributes || []) {
|
|
177
|
+
if (!attribute?.black) continue;
|
|
178
|
+
const black = CjsBlackSchemaRegistry.normalizeBlackField(attribute.black, fields);
|
|
179
|
+
add({
|
|
180
|
+
name: black.fieldName || attribute.blueName || black.name,
|
|
181
|
+
cppName: black.cppName,
|
|
182
|
+
cppType: black.cppType || attribute.cppType,
|
|
183
|
+
black
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
return fields;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Reports whether the current Black object-graph reader satisfies compact
|
|
191
|
+
* field map.
|
|
192
|
+
*/
|
|
193
|
+
static isCompactFieldMap(value) {
|
|
194
|
+
return !!value && typeof value === "object" && !Array.isArray(value);
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* Converts compact Black field declarations into normalized field records
|
|
199
|
+
* for the Black object-graph reader.
|
|
200
|
+
*/
|
|
201
|
+
static compactBlackFields(fields) {
|
|
202
|
+
return Object.entries(fields || {}).map(([blackName, fieldSpec]) => CjsBlackSchemaRegistry.compactBlackField(blackName, fieldSpec));
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* Converts one compact field declaration into a normalized field record for
|
|
207
|
+
* the Black object-graph reader.
|
|
208
|
+
*/
|
|
209
|
+
static compactField(blackName, fieldSpec) {
|
|
210
|
+
const spec = CjsBlackSchemaRegistry.normalizeCompactSpec(blackName, fieldSpec);
|
|
211
|
+
return {
|
|
212
|
+
name: spec.fieldName,
|
|
213
|
+
fieldName: spec.fieldName,
|
|
214
|
+
enumType: spec.enumType,
|
|
215
|
+
jsType: spec.jsType,
|
|
216
|
+
black: spec.black
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* Converts one Black-specific compact field declaration into a normalized
|
|
222
|
+
* record for the Black object-graph reader.
|
|
223
|
+
*/
|
|
224
|
+
static compactBlackField(blackName, fieldSpec) {
|
|
225
|
+
return CjsBlackSchemaRegistry.normalizeCompactSpec(blackName, fieldSpec).black;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* Converts compact spec into the canonical Black object-graph reader
|
|
230
|
+
* representation.
|
|
231
|
+
*/
|
|
232
|
+
static normalizeCompactSpec(blackName, fieldSpec) {
|
|
233
|
+
const spec = typeof fieldSpec === "string" ? {
|
|
234
|
+
type: fieldSpec
|
|
235
|
+
} : fieldSpec || {},
|
|
236
|
+
type = spec.type || spec.kind || "unknown",
|
|
237
|
+
fieldName = spec.field || spec.fieldName || blackName,
|
|
238
|
+
descriptor = CjsBlackSchemaRegistry.compactTypeDescriptor(type, spec),
|
|
239
|
+
black = {
|
|
240
|
+
name: blackName,
|
|
241
|
+
fieldName,
|
|
242
|
+
storageName: fieldName,
|
|
243
|
+
member: blackName,
|
|
244
|
+
memberPath: fieldName,
|
|
245
|
+
memberRoot: fieldName,
|
|
246
|
+
indexKey: Object.hasOwn(spec, "index") ? spec.index : undefined,
|
|
247
|
+
indexToken: spec.token || null,
|
|
248
|
+
enumType: spec.enum || null,
|
|
249
|
+
...descriptor.black,
|
|
250
|
+
jsType: descriptor.jsType
|
|
251
|
+
};
|
|
252
|
+
return {
|
|
253
|
+
fieldName,
|
|
254
|
+
enumType: spec.enum || null,
|
|
255
|
+
jsType: descriptor.jsType,
|
|
256
|
+
black
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
/**
|
|
261
|
+
* Converts a compact type descriptor into its normalized schema
|
|
262
|
+
* representation for the Black object-graph reader.
|
|
263
|
+
*/
|
|
264
|
+
static compactTypeDescriptor(type, spec) {
|
|
265
|
+
const normalized = String(type || "unknown");
|
|
266
|
+
switch (normalized) {
|
|
267
|
+
case "boolean":
|
|
268
|
+
case "bool":
|
|
269
|
+
return CjsBlackSchemaRegistry.compactBlackType("BOOL", {
|
|
270
|
+
kind: "boolean"
|
|
271
|
+
});
|
|
272
|
+
case "string":
|
|
273
|
+
return CjsBlackSchemaRegistry.compactBlackType("STDSTRING", {
|
|
274
|
+
kind: "string"
|
|
275
|
+
});
|
|
276
|
+
case "wstring":
|
|
277
|
+
return CjsBlackSchemaRegistry.compactBlackType("STDWSTRING", {
|
|
278
|
+
kind: "string"
|
|
279
|
+
});
|
|
280
|
+
case "path":
|
|
281
|
+
return CjsBlackSchemaRegistry.compactBlackType("STDSTRING", {
|
|
282
|
+
kind: "path"
|
|
283
|
+
});
|
|
284
|
+
case "expression":
|
|
285
|
+
return CjsBlackSchemaRegistry.compactBlackType("STDSTRING", {
|
|
286
|
+
kind: "expression",
|
|
287
|
+
js: "string"
|
|
288
|
+
});
|
|
289
|
+
case "enum":
|
|
290
|
+
return CjsBlackSchemaRegistry.compactBlackType("LONG", {
|
|
291
|
+
kind: "enum"
|
|
292
|
+
}, {
|
|
293
|
+
signed: true
|
|
294
|
+
});
|
|
295
|
+
case "float":
|
|
296
|
+
return CjsBlackSchemaRegistry.compactBlackType("FLOAT", {
|
|
297
|
+
kind: "float32"
|
|
298
|
+
});
|
|
299
|
+
case "double":
|
|
300
|
+
return CjsBlackSchemaRegistry.compactBlackType("DOUBLE", {
|
|
301
|
+
kind: "float64"
|
|
302
|
+
});
|
|
303
|
+
case "int":
|
|
304
|
+
return CjsBlackSchemaRegistry.compactBlackType("LONG", {
|
|
305
|
+
kind: "int32"
|
|
306
|
+
}, {
|
|
307
|
+
signed: true
|
|
308
|
+
});
|
|
309
|
+
case "uint":
|
|
310
|
+
return CjsBlackSchemaRegistry.compactBlackType("ULONG", {
|
|
311
|
+
kind: "uint32"
|
|
312
|
+
}, {
|
|
313
|
+
signed: false
|
|
314
|
+
});
|
|
315
|
+
case "int64":
|
|
316
|
+
return CjsBlackSchemaRegistry.compactBlackType("INT64", {
|
|
317
|
+
kind: "int64"
|
|
318
|
+
}, {
|
|
319
|
+
signed: true
|
|
320
|
+
});
|
|
321
|
+
case "uint64":
|
|
322
|
+
return CjsBlackSchemaRegistry.compactBlackType("UINT64", {
|
|
323
|
+
kind: "uint64"
|
|
324
|
+
}, {
|
|
325
|
+
signed: false
|
|
326
|
+
});
|
|
327
|
+
case "byte":
|
|
328
|
+
return CjsBlackSchemaRegistry.compactBlackType("BYTE", {
|
|
329
|
+
kind: "int8"
|
|
330
|
+
}, {
|
|
331
|
+
signed: true
|
|
332
|
+
});
|
|
333
|
+
case "ubyte":
|
|
334
|
+
return CjsBlackSchemaRegistry.compactBlackType("BYTE", {
|
|
335
|
+
kind: "uint8"
|
|
336
|
+
}, {
|
|
337
|
+
signed: false
|
|
338
|
+
});
|
|
339
|
+
case "short":
|
|
340
|
+
return CjsBlackSchemaRegistry.compactBlackType("SHORT", {
|
|
341
|
+
kind: "int16"
|
|
342
|
+
}, {
|
|
343
|
+
signed: true
|
|
344
|
+
});
|
|
345
|
+
case "ushort":
|
|
346
|
+
return CjsBlackSchemaRegistry.compactBlackType("SHORT", {
|
|
347
|
+
kind: "uint16"
|
|
348
|
+
}, {
|
|
349
|
+
signed: false
|
|
350
|
+
});
|
|
351
|
+
case "vector2":
|
|
352
|
+
return CjsBlackSchemaRegistry.compactFloatArrayType("vector2", 2);
|
|
353
|
+
case "vector3":
|
|
354
|
+
return CjsBlackSchemaRegistry.compactFloatArrayType("vector3", 3);
|
|
355
|
+
case "vector4":
|
|
356
|
+
return CjsBlackSchemaRegistry.compactFloatArrayType("vector4", 4);
|
|
357
|
+
case "color":
|
|
358
|
+
return CjsBlackSchemaRegistry.compactFloatArrayType("color", 4);
|
|
359
|
+
case "quaternion":
|
|
360
|
+
return CjsBlackSchemaRegistry.compactFloatArrayType("quaternion", 4);
|
|
361
|
+
case "matrix3":
|
|
362
|
+
return CjsBlackSchemaRegistry.compactFloatArrayType("matrix3", 9);
|
|
363
|
+
case "matrix4":
|
|
364
|
+
return CjsBlackSchemaRegistry.compactFloatArrayType("matrix4", 16);
|
|
365
|
+
case "floatArray":
|
|
366
|
+
return CjsBlackSchemaRegistry.compactFloatArrayType("array", spec.length || 0);
|
|
367
|
+
case "array":
|
|
368
|
+
return CjsBlackSchemaRegistry.compactBlackType("IROOT", {
|
|
369
|
+
kind: "array"
|
|
370
|
+
}, {
|
|
371
|
+
container: "list"
|
|
372
|
+
});
|
|
373
|
+
case "dict":
|
|
374
|
+
return CjsBlackSchemaRegistry.compactBlackType("IROOT", {
|
|
375
|
+
kind: "map"
|
|
376
|
+
}, {
|
|
377
|
+
container: "dict"
|
|
378
|
+
});
|
|
379
|
+
case "object":
|
|
380
|
+
return CjsBlackSchemaRegistry.compactBlackType("IROOTPTR", {
|
|
381
|
+
kind: "objectRef"
|
|
382
|
+
});
|
|
383
|
+
case "rawStruct":
|
|
384
|
+
return CjsBlackSchemaRegistry.compactBlackType("IROOT", {
|
|
385
|
+
kind: "rawStruct"
|
|
386
|
+
});
|
|
387
|
+
case "structList":
|
|
388
|
+
return CjsBlackSchemaRegistry.compactBlackType("IROOT", {
|
|
389
|
+
kind: "array"
|
|
390
|
+
}, {
|
|
391
|
+
container: "list",
|
|
392
|
+
cppType: spec.cppType || "StructureList"
|
|
393
|
+
});
|
|
394
|
+
case "binaryBlock":
|
|
395
|
+
return CjsBlackSchemaRegistry.compactBlackType("BINARYBLOCK", {
|
|
396
|
+
kind: "typedArray"
|
|
397
|
+
});
|
|
398
|
+
default:
|
|
399
|
+
return CjsBlackSchemaRegistry.compactBlackType(null, {
|
|
400
|
+
kind: normalized
|
|
401
|
+
});
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
/**
|
|
406
|
+
* Converts a compact Black wire type into its normalized schema
|
|
407
|
+
* representation for the Black object-graph reader.
|
|
408
|
+
*/
|
|
409
|
+
static compactBlackType(beType, jsType, extra = {}) {
|
|
410
|
+
return {
|
|
411
|
+
jsType,
|
|
412
|
+
black: {
|
|
413
|
+
beType,
|
|
414
|
+
wireType: CjsBlackSchemaRegistry.compactWireType(beType, extra.container),
|
|
415
|
+
...extra
|
|
416
|
+
}
|
|
417
|
+
};
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
/**
|
|
421
|
+
* Converts a compact float-array type into its normalized schema
|
|
422
|
+
* representation for the Black object-graph reader.
|
|
423
|
+
*/
|
|
424
|
+
static compactFloatArrayType(kind, length) {
|
|
425
|
+
return CjsBlackSchemaRegistry.compactBlackType("FLOATARRAY", {
|
|
426
|
+
kind,
|
|
427
|
+
length
|
|
428
|
+
}, {
|
|
429
|
+
length
|
|
430
|
+
});
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
/**
|
|
434
|
+
* Converts a compact wire-type code into its normalized schema
|
|
435
|
+
* representation for the Black object-graph reader.
|
|
436
|
+
*/
|
|
437
|
+
static compactWireType(beType, container = null) {
|
|
438
|
+
switch (beType) {
|
|
439
|
+
case "BOOL":
|
|
440
|
+
return "bool";
|
|
441
|
+
case "STDSTRING":
|
|
442
|
+
case "STDWSTRING":
|
|
443
|
+
return "stringRef";
|
|
444
|
+
case "FLOAT":
|
|
445
|
+
return "float32";
|
|
446
|
+
case "DOUBLE":
|
|
447
|
+
return "float64";
|
|
448
|
+
case "LONG":
|
|
449
|
+
return "int32";
|
|
450
|
+
case "ULONG":
|
|
451
|
+
return "uint32";
|
|
452
|
+
case "INT64":
|
|
453
|
+
return "int64";
|
|
454
|
+
case "UINT64":
|
|
455
|
+
return "uint64";
|
|
456
|
+
case "BYTE":
|
|
457
|
+
return "uint8";
|
|
458
|
+
case "SHORT":
|
|
459
|
+
return "uint16";
|
|
460
|
+
case "FLOATARRAY":
|
|
461
|
+
return "floatArray";
|
|
462
|
+
case "BINARYBLOCK":
|
|
463
|
+
return "binaryBlock";
|
|
464
|
+
case "IROOTPTR":
|
|
465
|
+
return "objectRef";
|
|
466
|
+
case "IROOT":
|
|
467
|
+
return container ? "container" : "inlineObject";
|
|
468
|
+
default:
|
|
469
|
+
return null;
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
/**
|
|
474
|
+
* Converts black field into the canonical Black object-graph reader
|
|
475
|
+
* representation.
|
|
476
|
+
*/
|
|
477
|
+
static normalizeBlackField(field, sourceFields = []) {
|
|
478
|
+
const names = field.names || null;
|
|
479
|
+
const name = field.name || CjsBlackSchemaRegistry.getNameRole(names, "name") || field.nameExpression || null;
|
|
480
|
+
const fieldName = field.fieldName || CjsBlackSchemaRegistry.getNameRole(names, "fieldName") || name || null;
|
|
481
|
+
const cppName = field.cppName || CjsBlackSchemaRegistry.getNameRole(names, "cppName") || CjsBlackSchemaRegistry.getNameRole(names, "memberPath") || CjsBlackSchemaRegistry.getNameRole(names, "memberRoot") || null;
|
|
482
|
+
const member = field.member || CjsBlackSchemaRegistry.getNameRole(names, "member") || cppName || name;
|
|
483
|
+
const memberPath = field.memberPath || CjsBlackSchemaRegistry.getNameRole(names, "memberPath") || cppName;
|
|
484
|
+
const memberRoot = field.memberRoot || CjsBlackSchemaRegistry.getNameRole(names, "memberRoot") || memberPath;
|
|
485
|
+
const sourceField = sourceFields.find(item => item.name === fieldName || item.name === name || item.cppName === cppName || item.cppName === memberPath || item.cppName === memberRoot);
|
|
486
|
+
return {
|
|
487
|
+
...field,
|
|
488
|
+
names,
|
|
489
|
+
name,
|
|
490
|
+
fieldName,
|
|
491
|
+
storageName: field.storageName || fieldName || name,
|
|
492
|
+
cppName: cppName || sourceField?.cppName || null,
|
|
493
|
+
member,
|
|
494
|
+
memberPath,
|
|
495
|
+
memberRoot,
|
|
496
|
+
cppType: field.cppType || sourceField?.cppType || null,
|
|
497
|
+
beType: field.beType || null
|
|
498
|
+
};
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
/**
|
|
502
|
+
* Reports whether black field name matches the current Black object-graph
|
|
503
|
+
* reader.
|
|
504
|
+
*/
|
|
505
|
+
static matchesBlackFieldName(field, blackName) {
|
|
506
|
+
if (!field || !blackName) return false;
|
|
507
|
+
if (field.name === blackName) return true;
|
|
508
|
+
if (field.fieldName === blackName) return true;
|
|
509
|
+
if (field.member === blackName) return true;
|
|
510
|
+
if (field.memberPath === blackName) return true;
|
|
511
|
+
if (field.memberRoot === blackName) return true;
|
|
512
|
+
if (field.cppName === blackName) return true;
|
|
513
|
+
if (field.nameExpression === blackName) return true;
|
|
514
|
+
if (field.names && typeof field.names === "object") {
|
|
515
|
+
return Object.hasOwn(field.names, blackName);
|
|
516
|
+
}
|
|
517
|
+
return false;
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
/**
|
|
521
|
+
* Classifies a field name as canonical, source, or alias metadata for the
|
|
522
|
+
* Black object-graph reader.
|
|
523
|
+
*/
|
|
524
|
+
static getNameRole(names, role) {
|
|
525
|
+
if (!names || typeof names !== "object") return null;
|
|
526
|
+
for (const [name, roles] of Object.entries(names)) {
|
|
527
|
+
const roleList = Array.isArray(roles) ? roles : String(roles || "").split(/\s+/);
|
|
528
|
+
if (roleList.includes(role)) return name;
|
|
529
|
+
}
|
|
530
|
+
return null;
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
/** Converts the current Black object-graph reader value to JS field name. */
|
|
534
|
+
static toJsFieldName(value) {
|
|
535
|
+
return String(value || "").replace(/^m_/, "");
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
export { CjsBlackSchemaRegistry };
|
|
540
|
+
//# sourceMappingURL=CjsBlackSchemaRegistry.js.map
|