@carbonenginejs/runtime 0.1.0-alpha.4 → 0.1.0-alpha.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/global/blue/BlueClasses.js +200 -0
- package/dist/global/blue/BlueClasses.js.map +1 -0
- package/dist/global/blue/IBlueClasses.js +79 -0
- package/dist/global/blue/IBlueClasses.js.map +1 -0
- package/dist/global/blue/IBlueDynamicResourceConstructor.js +16 -0
- package/dist/global/blue/IBlueDynamicResourceConstructor.js.map +1 -1
- package/dist/global/blue/blue.js +8 -2
- package/dist/global/blue/blue.js.map +1 -1
- package/dist/global/blue/index.js +2 -0
- package/dist/global/blue/index.js.map +1 -1
- package/dist/global/consts/index.js +0 -1
- package/dist/global/consts/index.js.map +1 -1
- package/dist/global/consts/renderContext/formats.js +26 -25
- package/dist/global/consts/renderContext/formats.js.map +1 -1
- package/dist/{trinityal/Tr2BitmapDimensions.js → global/imageio/BitmapDimensions.js} +19 -15
- package/dist/global/imageio/BitmapDimensions.js.map +1 -0
- package/dist/global/imageio/Cutout.js +28 -0
- package/dist/global/imageio/Cutout.js.map +1 -0
- package/dist/global/imageio/HostBitmap.js +1106 -0
- package/dist/global/imageio/HostBitmap.js.map +1 -0
- package/dist/global/imageio/ImageIOResult.js +99 -0
- package/dist/global/imageio/ImageIOResult.js.map +1 -0
- package/dist/global/imageio/ImageUtility.js +205 -0
- package/dist/global/imageio/ImageUtility.js.map +1 -0
- package/dist/global/imageio/LoadParameters.js +86 -0
- package/dist/global/imageio/LoadParameters.js.map +1 -0
- package/dist/global/imageio/Metadata.js +22 -0
- package/dist/global/imageio/Metadata.js.map +1 -0
- package/dist/global/imageio/index.js +8 -0
- package/dist/global/{consts/webgpu → imageio}/index.js.map +1 -1
- package/dist/global/index.js +2 -1
- package/dist/global/index.js.map +1 -1
- package/dist/global/math/color.js +1 -1
- package/dist/global/math/color.js.map +1 -1
- package/dist/global/schema/CjsSchema.js +8 -0
- package/dist/global/schema/CjsSchema.js.map +1 -1
- package/dist/index.js +12 -4
- package/dist/index.js.map +1 -1
- package/dist/resource/CjsResMan.js +47 -7
- package/dist/resource/CjsResMan.js.map +1 -1
- package/dist/resource/Tr2LightProfileRes.js +37 -0
- package/dist/resource/Tr2LightProfileRes.js.map +1 -1
- package/dist/resource/format/CjsByteWriter.js +46 -46
- package/dist/resource/format/CjsByteWriter.js.map +1 -1
- package/dist/resource/format/CjsFormat.js +7 -8
- package/dist/resource/format/CjsFormat.js.map +1 -1
- package/dist/resource/format/CjsFormatStore.js +8 -8
- package/dist/resource/format/CjsFormatStore.js.map +1 -1
- package/dist/resource/format/CjsGeometryFormat.js +114 -0
- package/dist/resource/format/CjsGeometryFormat.js.map +1 -0
- package/dist/resource/format/CjsImageFormat.js +282 -0
- package/dist/resource/format/CjsImageFormat.js.map +1 -0
- package/dist/resource/format/CjsResourceProbe.js +12 -48
- package/dist/resource/format/CjsResourceProbe.js.map +1 -1
- package/dist/resource/format/CjsStringTable.js +37 -37
- package/dist/resource/format/CjsStringTable.js.map +1 -1
- package/dist/resource/format/carbonEffect/CjsCarbonEffectReader.js +10 -10
- package/dist/resource/format/carbonEffect/CjsCarbonEffectReader.js.map +1 -1
- package/dist/resource/format/carbonEffect/CjsCarbonEffectWriter.js +37 -37
- package/dist/resource/format/carbonEffect/CjsCarbonEffectWriter.js.map +1 -1
- package/dist/resource/format/carbonEffect/carbonEffectBackendBlock.js +35 -7
- package/dist/resource/format/carbonEffect/carbonEffectBackendBlock.js.map +1 -1
- package/dist/resource/format/index.js +3 -1
- package/dist/resource/format/index.js.map +1 -1
- package/dist/resource/formats/black/CjsBlackFormat.js +130 -137
- package/dist/resource/formats/black/CjsBlackFormat.js.map +1 -1
- package/dist/resource/formats/bnk/CjsBnkFormat.js +12 -19
- package/dist/resource/formats/bnk/CjsBnkFormat.js.map +1 -1
- package/dist/resource/formats/bnk/core/helpers.js +1 -3
- package/dist/resource/formats/bnk/core/helpers.js.map +1 -1
- package/dist/resource/formats/cmf/CjsCmfFormat.js +19 -82
- package/dist/resource/formats/cmf/CjsCmfFormat.js.map +1 -1
- package/dist/resource/formats/cmf/core/constants.js +1 -2
- package/dist/resource/formats/cmf/core/constants.js.map +1 -1
- package/dist/resource/formats/{stl/core/targets.js → cmf/core/flatShared.js} +9 -8
- package/dist/resource/formats/cmf/core/flatShared.js.map +1 -0
- package/dist/resource/formats/cmf/core/helpers.js +13 -13
- package/dist/resource/formats/cmf/core/helpers.js.map +1 -1
- package/dist/resource/formats/cmf/core/writer.js +24 -24
- package/dist/resource/formats/cmf/core/writer.js.map +1 -1
- package/dist/resource/formats/dds/CjsDdsFormat.js +134 -17
- package/dist/resource/formats/dds/CjsDdsFormat.js.map +1 -1
- package/dist/resource/formats/dds/core/helpers.js +125 -40
- package/dist/resource/formats/dds/core/helpers.js.map +1 -1
- package/dist/resource/formats/dxbc/CjsDxbcFormat.js +14 -16
- package/dist/resource/formats/dxbc/CjsDxbcFormat.js.map +1 -1
- package/dist/resource/formats/dxbc/core/{container.js → DxbcContainer.js} +2 -2
- package/dist/resource/formats/dxbc/core/DxbcContainer.js.map +1 -0
- package/dist/resource/formats/dxbc/core/{errors.js → DxbcReadError.js} +1 -1
- package/dist/resource/formats/dxbc/core/DxbcReadError.js.map +1 -0
- package/dist/resource/formats/dxbc/core/DxbcReader.js +1 -1
- package/dist/resource/formats/dxbc/core/DxbcReader.js.map +1 -1
- package/dist/resource/formats/dxbc/core/{program.js → DxbcShaderProgram.js} +2 -2
- package/dist/resource/formats/dxbc/core/DxbcShaderProgram.js.map +1 -0
- package/dist/resource/formats/dxbc/core/{signature.js → DxbcSignatureChunk.js} +2 -2
- package/dist/resource/formats/dxbc/core/DxbcSignatureChunk.js.map +1 -0
- package/dist/resource/formats/dxbc/core/decoder.js +2 -2
- package/dist/resource/formats/dxbc/core/decoder.js.map +1 -1
- package/dist/resource/formats/dxbc/core/helpers.js +3 -3
- package/dist/resource/formats/dxbc/core/helpers.js.map +1 -1
- package/dist/resource/formats/fbx/CjsFbxFormat.js +18 -20
- package/dist/resource/formats/fbx/CjsFbxFormat.js.map +1 -1
- package/dist/resource/formats/flac/CjsFlacFormat.js +7 -13
- package/dist/resource/formats/flac/CjsFlacFormat.js.map +1 -1
- package/dist/resource/formats/fsd/32/CjsFsd32Format.js +29 -29
- package/dist/resource/formats/fsd/32/CjsFsd32Format.js.map +1 -1
- package/dist/resource/formats/fsd/64/CjsFsd64Format.js +3 -3
- package/dist/resource/formats/fsd/64/CjsFsd64Format.js.map +1 -1
- package/dist/resource/formats/fsd/64/core/CjsFsd64Binary.js +23 -23
- package/dist/resource/formats/fsd/64/core/CjsFsd64Binary.js.map +1 -1
- package/dist/resource/formats/fsd/64/core/CjsFsd64Reader.js +8 -8
- package/dist/resource/formats/fsd/64/core/CjsFsd64Reader.js.map +1 -1
- package/dist/resource/formats/fsd/CjsFsdFormat.js +23 -23
- package/dist/resource/formats/fsd/CjsFsdFormat.js.map +1 -1
- package/dist/resource/formats/gif/CjsGifFormat.js +24 -15
- package/dist/resource/formats/gif/CjsGifFormat.js.map +1 -1
- package/dist/resource/formats/gltf/CjsGltfFormat.js +33 -98
- package/dist/resource/formats/gltf/CjsGltfFormat.js.map +1 -1
- package/dist/resource/formats/gltf/core/helpers.js +3 -12
- package/dist/resource/formats/gltf/core/helpers.js.map +1 -1
- package/dist/resource/formats/gr2/CjsGr2Format.js +27 -91
- package/dist/resource/formats/gr2/CjsGr2Format.js.map +1 -1
- package/dist/resource/formats/hlsl/CjsHlslFormat.js +22 -25
- package/dist/resource/formats/hlsl/CjsHlslFormat.js.map +1 -1
- package/dist/resource/formats/hlsl/core/carbonDescriptionToRuntime.js +1 -1
- package/dist/resource/formats/hlsl/core/carbonDescriptionToRuntime.js.map +1 -1
- package/dist/resource/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js +3 -3
- package/dist/resource/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js.map +1 -1
- package/dist/resource/formats/ies/CjsIESFormat.js +29 -29
- package/dist/resource/formats/ies/CjsIESFormat.js.map +1 -1
- package/dist/resource/formats/jpeg/CjsJpegFormat.js +24 -15
- package/dist/resource/formats/jpeg/CjsJpegFormat.js.map +1 -1
- package/dist/resource/formats/jpeg/core/helpers.js +3 -5
- package/dist/resource/formats/jpeg/core/helpers.js.map +1 -1
- package/dist/resource/formats/jpeg/core/jpeg.js +58 -58
- package/dist/resource/formats/jpeg/core/jpeg.js.map +1 -1
- package/dist/resource/formats/jsonl/CjsJsonlFormat.js +3 -3
- package/dist/resource/formats/jsonl/CjsJsonlFormat.js.map +1 -1
- package/dist/resource/formats/mp3/CjsMp3Format.js +7 -14
- package/dist/resource/formats/mp3/CjsMp3Format.js.map +1 -1
- package/dist/resource/formats/mp3/core/helpers.js +3 -5
- package/dist/resource/formats/mp3/core/helpers.js.map +1 -1
- package/dist/resource/formats/mp4/CjsMp4Format.js +7 -13
- package/dist/resource/formats/mp4/CjsMp4Format.js.map +1 -1
- package/dist/resource/formats/mp4/core/helpers.js +3 -5
- package/dist/resource/formats/mp4/core/helpers.js.map +1 -1
- package/dist/resource/formats/obj/CjsObjFormat.js +92 -157
- package/dist/resource/formats/obj/CjsObjFormat.js.map +1 -1
- package/dist/resource/formats/obj/core/helpers.js +5 -113
- package/dist/resource/formats/obj/core/helpers.js.map +1 -1
- package/dist/resource/formats/ogg/CjsOggFormat.js +7 -14
- package/dist/resource/formats/ogg/CjsOggFormat.js.map +1 -1
- package/dist/resource/formats/pickle/CjsPickleFormat.js +7 -12
- package/dist/resource/formats/pickle/CjsPickleFormat.js.map +1 -1
- package/dist/resource/formats/pickle/core/CjsPickleProtocol0Reader.js +7 -7
- package/dist/resource/formats/pickle/core/CjsPickleProtocol0Reader.js.map +1 -1
- package/dist/resource/formats/pickle/core/CjsPickleProtocol4Reader.js +7 -7
- package/dist/resource/formats/pickle/core/CjsPickleProtocol4Reader.js.map +1 -1
- package/dist/resource/formats/png/CjsPngFormat.js +40 -15
- package/dist/resource/formats/png/CjsPngFormat.js.map +1 -1
- package/dist/resource/formats/png/core/helpers.js +4 -6
- package/dist/resource/formats/png/core/helpers.js.map +1 -1
- package/dist/resource/formats/red/CjsRedFormat.js +22 -28
- package/dist/resource/formats/red/CjsRedFormat.js.map +1 -1
- package/dist/resource/formats/schemabound/CjsSchemaBoundFormat.js +3 -7
- package/dist/resource/formats/schemabound/CjsSchemaBoundFormat.js.map +1 -1
- package/dist/resource/formats/schemabound/core/schemaBoundValues.js +5 -0
- package/dist/resource/formats/schemabound/core/schemaBoundValues.js.map +1 -1
- package/dist/resource/formats/sqlite/CjsSqliteFormat.js +4 -9
- package/dist/resource/formats/sqlite/CjsSqliteFormat.js.map +1 -1
- package/dist/resource/formats/static/CjsStaticFormat.js +4 -4
- package/dist/resource/formats/static/CjsStaticFormat.js.map +1 -1
- package/dist/resource/formats/stl/CjsStlFormat.js +39 -104
- package/dist/resource/formats/stl/CjsStlFormat.js.map +1 -1
- package/dist/resource/formats/stl/core/helpers.js +5 -19
- package/dist/resource/formats/stl/core/helpers.js.map +1 -1
- package/dist/resource/formats/tga/CjsTgaFormat.js +26 -15
- package/dist/resource/formats/tga/CjsTgaFormat.js.map +1 -1
- package/dist/resource/formats/tga/core/helpers.js +3 -5
- package/dist/resource/formats/tga/core/helpers.js.map +1 -1
- package/dist/resource/formats/vta/CjsVtaFormat.js +8 -15
- package/dist/resource/formats/vta/CjsVtaFormat.js.map +1 -1
- package/dist/resource/formats/wav/CjsWavFormat.js +7 -14
- package/dist/resource/formats/wav/CjsWavFormat.js.map +1 -1
- package/dist/resource/formats/wav/core/helpers.js +3 -5
- package/dist/resource/formats/wav/core/helpers.js.map +1 -1
- package/dist/resource/formats/webgl/CjsWebglFormat.js +103 -105
- package/dist/resource/formats/webgl/CjsWebglFormat.js.map +1 -1
- package/dist/resource/formats/webgl/core/{errors.js → WebglReadError.js} +1 -1
- package/dist/resource/formats/webgl/core/WebglReadError.js.map +1 -0
- package/dist/resource/formats/webgl/core/effectPackage.js +1 -1
- package/dist/resource/formats/webgl/core/effectPackage.js.map +1 -1
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js +3 -3
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
- package/dist/resource/formats/webgl/core/glsl/{DxbcGlslHelpers.js → DxbcGlslHelperRegistry.js} +2 -2
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslHelperRegistry.js.map +1 -0
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js +1 -1
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js.map +1 -1
- package/dist/resource/formats/webgl/core/glslBackendBlock.js +1 -1
- package/dist/resource/formats/webgl/core/glslBackendBlock.js.map +1 -1
- package/dist/resource/formats/webgl/core/helpers.js.map +1 -1
- package/dist/resource/formats/webgpu/CjsWebgpuFormat.js +28 -29
- package/dist/resource/formats/webgpu/CjsWebgpuFormat.js.map +1 -1
- package/dist/resource/formats/webgpu/core/{errors.js → WebgpuReadError.js} +1 -1
- package/dist/resource/formats/webgpu/core/WebgpuReadError.js.map +1 -0
- package/dist/resource/formats/webgpu/core/carbonWebgpu/validateContainer.js +1 -1
- package/dist/resource/formats/webgpu/core/carbonWebgpu/validateContainer.js.map +1 -1
- package/dist/resource/formats/webgpu/core/helpers.js +1 -1
- package/dist/resource/formats/webgpu/core/helpers.js.map +1 -1
- package/dist/resource/formats/webgpu/core/ir/lowerDxbcToIr.js +1 -1
- package/dist/resource/formats/webgpu/core/ir/lowerDxbcToIr.js.map +1 -1
- package/dist/resource/formats/webgpu/core/wgsl/buildWgslSet.js +18 -6
- package/dist/resource/formats/webgpu/core/wgsl/buildWgslSet.js.map +1 -1
- package/dist/resource/formats/webgpu/core/wgsl/lowerBindingLayout.js +39 -13
- package/dist/resource/formats/webgpu/core/wgsl/lowerBindingLayout.js.map +1 -1
- package/dist/resource/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js +16 -14
- package/dist/resource/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js.map +1 -1
- package/dist/resource/formats/webm/CjsWebmFormat.js +8 -13
- package/dist/resource/formats/webm/CjsWebmFormat.js.map +1 -1
- package/dist/resource/formats/webm/core/helpers.js +3 -5
- package/dist/resource/formats/webm/core/helpers.js.map +1 -1
- package/dist/resource/formats/webp/CjsWebpFormat.js +8 -12
- package/dist/resource/formats/webp/CjsWebpFormat.js.map +1 -1
- package/dist/resource/formats/wem/CjsWemFormat.js +9 -17
- package/dist/resource/formats/wem/CjsWemFormat.js.map +1 -1
- package/dist/resource/formats/wem/core/bitStream.js +35 -35
- package/dist/resource/formats/wem/core/bitStream.js.map +1 -1
- package/dist/resource/formats/wem/core/helpers.js +1 -3
- package/dist/resource/formats/wem/core/helpers.js.map +1 -1
- package/dist/resource/formats/yaml/CjsYamlFormat.js +28 -37
- package/dist/resource/formats/yaml/CjsYamlFormat.js.map +1 -1
- package/dist/resource/imageio/ImageIO.js +142 -0
- package/dist/resource/imageio/ImageIO.js.map +1 -0
- package/dist/resource/imageio/index.js +17 -0
- package/dist/resource/imageio/index.js.map +1 -0
- package/dist/resource/index.js +7 -0
- package/dist/resource/index.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectResource.js +24 -2
- package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2Pass.js +76 -5
- package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -1
- package/dist/resource/texture/CjsTextureArrayConstructor.js +97 -0
- package/dist/resource/texture/CjsTextureArrayConstructor.js.map +1 -0
- package/dist/resource/texture/CjsTexturePackConstructor.js +160 -0
- package/dist/resource/texture/CjsTexturePackConstructor.js.map +1 -0
- package/dist/resource/texture/CjsTexturePipelineStepArray.js +72 -0
- package/dist/resource/texture/CjsTexturePipelineStepArray.js.map +1 -0
- package/dist/resource/texture/CjsTexturePipelineStepConvert.js +73 -0
- package/dist/resource/texture/CjsTexturePipelineStepConvert.js.map +1 -0
- package/dist/resource/texture/CjsTexturePipelineStepPack.js +71 -0
- package/dist/resource/texture/CjsTexturePipelineStepPack.js.map +1 -0
- package/dist/resource/texture/CjsTexturePipelineStepResize.js +123 -0
- package/dist/resource/texture/CjsTexturePipelineStepResize.js.map +1 -0
- package/dist/resource/texture/SolidColorTextureConstructor.js +11 -1
- package/dist/resource/texture/SolidColorTextureConstructor.js.map +1 -1
- package/dist/resource/texture/Tr2ImageRes.js +100 -68
- package/dist/resource/texture/Tr2ImageRes.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipeline.js +45 -25
- package/dist/resource/texture/Tr2TexturePipeline.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepCompress.js +34 -1
- package/dist/resource/texture/Tr2TexturePipelineStepCompress.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js +30 -3
- package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js +81 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLoad.js +36 -1
- package/dist/resource/texture/Tr2TexturePipelineStepLoad.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepPack.js +146 -24
- package/dist/resource/texture/Tr2TexturePipelineStepPack.js.map +1 -1
- package/dist/resource/texture/TriTextureRes.js +151 -29
- package/dist/resource/texture/TriTextureRes.js.map +1 -1
- package/dist/resource/texture/index.js +7 -0
- package/dist/resource/texture/index.js.map +1 -1
- package/dist/resource/texture/registerTextureResources.js +83 -0
- package/dist/resource/texture/registerTextureResources.js.map +1 -0
- package/dist/resource/texture/solidColorTexture.js +10 -19
- package/dist/resource/texture/solidColorTexture.js.map +1 -1
- package/dist/sof/EveSOF.js +39 -7
- package/dist/sof/EveSOF.js.map +1 -1
- package/dist/trinity/core/Tr2GpuResourcePool/Tr2GpuResourcePool.js +2 -2
- package/dist/trinity/core/Tr2GpuResourcePool/Tr2GpuResourcePool.js.map +1 -1
- package/dist/trinity/core/Tr2ImageIOHelpers.js +80 -17
- package/dist/trinity/core/Tr2ImageIOHelpers.js.map +1 -1
- package/dist/trinity/core/Tr2RenderUtils.js +1 -1
- package/dist/trinity/core/Tr2TextureArray/Tr2TextureArray.js +49 -62
- package/dist/trinity/core/Tr2TextureArray/Tr2TextureArray.js.map +1 -1
- package/dist/trinity/core/Tr2TextureReference.js +114 -0
- package/dist/trinity/core/Tr2TextureReference.js.map +1 -0
- package/dist/trinity/core/device/Tr2DepthStencil.js +2 -2
- package/dist/trinity/core/device/Tr2DepthStencil.js.map +1 -1
- package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBuffer.js +1 -1
- package/dist/trinity/core/index.js +1 -0
- package/dist/trinity/core/index.js.map +1 -1
- package/dist/trinity/core/lighting/Tr2LightManager.js +5 -4
- package/dist/trinity/core/lighting/Tr2LightManager.js.map +1 -1
- package/dist/trinity/core/procedural/GradientTextureConstructor.js +5 -4
- package/dist/trinity/core/procedural/GradientTextureConstructor.js.map +1 -1
- package/dist/trinity/core/procedural/gradientTexture.js +10 -13
- package/dist/trinity/core/procedural/gradientTexture.js.map +1 -1
- package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js +1 -1
- package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js.map +1 -1
- package/dist/trinity/eve/EveImpactOverlay.js +102 -50
- package/dist/trinity/eve/EveImpactOverlay.js.map +1 -1
- package/dist/trinity/eve/EveModularObjectModifier.js +9 -18
- package/dist/trinity/eve/EveModularObjectModifier.js.map +1 -1
- package/dist/trinity/eve/attachment/turrets/EveTurretSet.js +175 -157
- package/dist/trinity/eve/attachment/turrets/EveTurretSet.js.map +1 -1
- package/dist/trinity/eve/attachment/turrets/EveTurretTarget.js +100 -83
- package/dist/trinity/eve/attachment/turrets/EveTurretTarget.js.map +1 -1
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js +26 -20
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js.map +1 -1
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js +368 -179
- package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js.map +1 -1
- package/dist/trinity/eve/child/EveChildMesh.js +242 -234
- package/dist/trinity/eve/child/EveChildMesh.js.map +1 -1
- package/dist/trinity/eve/child/EveChildTurret.js +57 -16
- package/dist/trinity/eve/child/EveChildTurret.js.map +1 -1
- package/dist/trinity/eve/child/EveSpaceObjectChild.js +28 -1
- package/dist/trinity/eve/child/EveSpaceObjectChild.js.map +1 -1
- package/dist/trinity/eve/index.js +2 -2
- package/dist/trinity/eve/overlays/EveDamageOverlay.js +5 -1
- package/dist/trinity/eve/overlays/EveDamageOverlay.js.map +1 -1
- package/dist/trinity/eve/scene/EveSpaceScene.js +234 -233
- package/dist/trinity/eve/scene/EveSpaceScene.js.map +1 -1
- package/dist/trinity/eve/scene/EveSpaceSceneRenderDriver.js +2 -0
- package/dist/trinity/eve/scene/EveSpaceSceneRenderDriver.js.map +1 -1
- package/dist/trinity/eve/spaceObject/EveSpaceObject2.js +492 -437
- package/dist/trinity/eve/spaceObject/EveSpaceObject2.js.map +1 -1
- package/dist/trinity/generated/index.js +0 -1
- package/dist/trinity/generated/index.js.map +1 -1
- package/dist/trinity/generated/trinityCore/index.js +0 -1
- package/dist/trinity/generated/trinityCore/index.js.map +1 -1
- package/dist/trinity/index.js +3 -3
- package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js +10 -1
- package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js.map +1 -1
- package/dist/trinity/shader/Tr2DataTextureManager.js +152 -66
- package/dist/trinity/shader/Tr2DataTextureManager.js.map +1 -1
- package/dist/trinity/shader/Tr2Material.js +1 -1
- package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureSubresource.js +5 -5
- package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureSubresource.js.map +1 -1
- package/dist/trinityal/index.js +1 -1
- package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2RenderContextALStub.js +2 -2
- package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2RenderContextALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2SwapChainALStub.js +45 -45
- package/dist/trinityal/stub/Tr2SwapChainALStub.js.map +1 -1
- package/dist/trinityal/stub/Tr2TextureALStub.js +170 -170
- package/dist/trinityal/stub/Tr2TextureALStub.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuDevice.js +234 -164
- package/dist/trinityal/webgpu/CjsWebgpuDevice.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js +7 -0
- package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js.map +1 -1
- package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js +78 -14
- package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js.map +1 -1
- package/dist/trinityal/webgpu/core/CjsWebgpuUtils.js +94 -0
- package/dist/trinityal/webgpu/core/CjsWebgpuUtils.js.map +1 -0
- package/dist/trinityal/webgpu/internal.js +1 -0
- package/dist/trinityal/webgpu/internal.js.map +1 -1
- package/docs/global/reference/classes/README.md +90 -0
- package/docs/resource/concepts/format-capabilities.md +3 -3
- package/docs/resource/formats/README.md +1 -1
- package/docs/resource/reference/classes/core.md +31 -1
- package/docs/resource/reference/classes/formats.md +7 -7
- package/docs/resource/reference/classes/resources.md +76 -16
- package/docs/trinity/reference/classes/generated.md +0 -10
- package/docs/trinity/reference/classes/trinity-core.md +1692 -1682
- package/docs/trinityal/reference/classes/README.md +0 -10
- package/docs/trinityal/webgpu/reference/classes/README.md +276 -266
- package/package.json +4 -3
- package/dist/global/consts/webgpu/index.js +0 -2
- package/dist/global/consts/webgpu/textureFormats.js +0 -180
- package/dist/global/consts/webgpu/textureFormats.js.map +0 -1
- package/dist/resource/formats/dxbc/core/container.js.map +0 -1
- package/dist/resource/formats/dxbc/core/errors.js.map +0 -1
- package/dist/resource/formats/dxbc/core/program.js.map +0 -1
- package/dist/resource/formats/dxbc/core/signature.js.map +0 -1
- package/dist/resource/formats/stl/core/targets.js.map +0 -1
- package/dist/resource/formats/webgl/core/errors.js.map +0 -1
- package/dist/resource/formats/webgl/core/glsl/DxbcGlslHelpers.js.map +0 -1
- package/dist/resource/formats/webgpu/core/errors.js.map +0 -1
- package/dist/resource/texture/texturePipelineBehavior.js +0 -332
- package/dist/resource/texture/texturePipelineBehavior.js.map +0 -1
- package/dist/trinity/generated/trinityCore/Tr2TextureReference.js +0 -40
- package/dist/trinity/generated/trinityCore/Tr2TextureReference.js.map +0 -1
- package/dist/trinityal/Tr2BitmapDimensions.js.map +0 -1
|
@@ -36,14 +36,14 @@ class CjsFsd64Binary {
|
|
|
36
36
|
UINT_64: "UINT_64",
|
|
37
37
|
UINT_64_IDENTIFIER: "UINT_64_IDENTIFIER"
|
|
38
38
|
};
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
_bytes;
|
|
40
|
+
_view;
|
|
41
41
|
|
|
42
42
|
/** Creates a validated view over caller-supplied container bytes. */
|
|
43
43
|
constructor(bytes, options = {}) {
|
|
44
|
-
this
|
|
45
|
-
this
|
|
46
|
-
this
|
|
44
|
+
this._bytes = NormalizeBytes(bytes);
|
|
45
|
+
this._view = new DataView(this._bytes.buffer, this._bytes.byteOffset, this._bytes.byteLength);
|
|
46
|
+
this._AssertContainer(options.path ?? "FSD input");
|
|
47
47
|
if (options.schemaID) {
|
|
48
48
|
this.AssertSchema(options.schemaID, options.path);
|
|
49
49
|
}
|
|
@@ -51,7 +51,7 @@ class CjsFsd64Binary {
|
|
|
51
51
|
|
|
52
52
|
/** Returns the complete container byte length. */
|
|
53
53
|
get ByteLength() {
|
|
54
|
-
return this
|
|
54
|
+
return this._bytes.byteLength;
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
/** Returns the payload length declared by the container header. */
|
|
@@ -66,7 +66,7 @@ class CjsFsd64Binary {
|
|
|
66
66
|
|
|
67
67
|
/** Returns the lossless hexadecimal schema identity from the header. */
|
|
68
68
|
get SchemaID() {
|
|
69
|
-
return Hex(this
|
|
69
|
+
return Hex(this._bytes.subarray(0, 24));
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
/**
|
|
@@ -81,7 +81,7 @@ class CjsFsd64Binary {
|
|
|
81
81
|
* file that is byte-identical on both.
|
|
82
82
|
*/
|
|
83
83
|
get LayoutID() {
|
|
84
|
-
return Hex(this
|
|
84
|
+
return Hex(this._bytes.subarray(0, 16));
|
|
85
85
|
}
|
|
86
86
|
|
|
87
87
|
/**
|
|
@@ -142,43 +142,43 @@ class CjsFsd64Binary {
|
|
|
142
142
|
/** Reads one unsigned byte at an absolute offset. */
|
|
143
143
|
Byte(offset) {
|
|
144
144
|
this.AssertRange(offset, 1);
|
|
145
|
-
return this
|
|
145
|
+
return this._view.getUint8(offset);
|
|
146
146
|
}
|
|
147
147
|
|
|
148
148
|
/** Returns a bounded byte view without copying its contents. */
|
|
149
149
|
Bytes(offset, size) {
|
|
150
150
|
this.AssertRange(offset, size);
|
|
151
|
-
return this
|
|
151
|
+
return this._bytes.subarray(offset, offset + size);
|
|
152
152
|
}
|
|
153
153
|
|
|
154
154
|
/** Reads one little-endian 32-bit floating-point value. */
|
|
155
155
|
Float32(offset) {
|
|
156
156
|
this.AssertRange(offset, 4);
|
|
157
|
-
return this
|
|
157
|
+
return this._view.getFloat32(offset, true);
|
|
158
158
|
}
|
|
159
159
|
|
|
160
160
|
/** Reads one little-endian 64-bit floating-point value. */
|
|
161
161
|
Float64(offset) {
|
|
162
162
|
this.AssertRange(offset, 8);
|
|
163
|
-
return this
|
|
163
|
+
return this._view.getFloat64(offset, true);
|
|
164
164
|
}
|
|
165
165
|
|
|
166
166
|
/** Reads one little-endian signed 32-bit integer. */
|
|
167
167
|
Int32(offset) {
|
|
168
168
|
this.AssertRange(offset, 4);
|
|
169
|
-
return this
|
|
169
|
+
return this._view.getInt32(offset, true);
|
|
170
170
|
}
|
|
171
171
|
|
|
172
172
|
/** Reads one little-endian unsigned 32-bit integer. */
|
|
173
173
|
Uint32(offset) {
|
|
174
174
|
this.AssertRange(offset, 4);
|
|
175
|
-
return this
|
|
175
|
+
return this._view.getUint32(offset, true);
|
|
176
176
|
}
|
|
177
177
|
|
|
178
178
|
/** Reads one little-endian unsigned 64-bit safe integer. */
|
|
179
179
|
Uint64(offset) {
|
|
180
180
|
this.AssertRange(offset, 8);
|
|
181
|
-
const value = this
|
|
181
|
+
const value = this._view.getBigUint64(offset, true);
|
|
182
182
|
if (value > BigInt(Number.MAX_SAFE_INTEGER)) {
|
|
183
183
|
const error = new RangeError(`FSD uint64 is not a safe JavaScript offset/count: ${value}`);
|
|
184
184
|
error.code = "CJS_FSD_UINT64_UNSAFE";
|
|
@@ -194,7 +194,7 @@ class CjsFsd64Binary {
|
|
|
194
194
|
*/
|
|
195
195
|
Uint64Identity(offset) {
|
|
196
196
|
this.AssertRange(offset, 8);
|
|
197
|
-
return this
|
|
197
|
+
return this._view.getBigUint64(offset, true).toString(10);
|
|
198
198
|
}
|
|
199
199
|
|
|
200
200
|
/** Returns a safe unsigned 64-bit value or null for an invalid read. */
|
|
@@ -202,7 +202,7 @@ class CjsFsd64Binary {
|
|
|
202
202
|
if (!Number.isSafeInteger(offset) || offset < 0 || offset + 8 > this.ByteLength) {
|
|
203
203
|
return null;
|
|
204
204
|
}
|
|
205
|
-
const value = this
|
|
205
|
+
const value = this._view.getBigUint64(offset, true);
|
|
206
206
|
return value <= BigInt(Number.MAX_SAFE_INTEGER) ? Number(value) : null;
|
|
207
207
|
}
|
|
208
208
|
|
|
@@ -218,12 +218,12 @@ class CjsFsd64Binary {
|
|
|
218
218
|
}
|
|
219
219
|
const tableOffset = this.Absolute(this.Uint64(headerOffset));
|
|
220
220
|
const bucketCount = this.Uint64(tableOffset - 8);
|
|
221
|
-
this
|
|
221
|
+
this._AssertElementRange(tableOffset, bucketCount, 8);
|
|
222
222
|
const offsets = [];
|
|
223
223
|
for (let index = 0; index < bucketCount; index++) {
|
|
224
224
|
const bucketOffset = this.Absolute(this.Uint64(tableOffset + index * 8));
|
|
225
225
|
const recordCount = this.Uint64(bucketOffset - 8);
|
|
226
|
-
this
|
|
226
|
+
this._AssertElementRange(bucketOffset, recordCount, recordSize);
|
|
227
227
|
for (let recordIndex = 0; recordIndex < recordCount; recordIndex++) {
|
|
228
228
|
offsets.push(bucketOffset + recordIndex * recordSize);
|
|
229
229
|
}
|
|
@@ -261,7 +261,7 @@ class CjsFsd64Binary {
|
|
|
261
261
|
error.maximumCount = maximumCount;
|
|
262
262
|
throw error;
|
|
263
263
|
}
|
|
264
|
-
this
|
|
264
|
+
this._AssertElementRange(dataOffset, count, recordSize);
|
|
265
265
|
return Array.from({
|
|
266
266
|
length: count
|
|
267
267
|
}, (_, index) => dataOffset + index * recordSize);
|
|
@@ -293,7 +293,7 @@ class CjsFsd64Binary {
|
|
|
293
293
|
return null;
|
|
294
294
|
}
|
|
295
295
|
try {
|
|
296
|
-
return strictTextDecoder.decode(this
|
|
296
|
+
return strictTextDecoder.decode(this._bytes.subarray(dataOffset, dataOffset + length));
|
|
297
297
|
} catch {
|
|
298
298
|
return null;
|
|
299
299
|
}
|
|
@@ -339,7 +339,7 @@ class CjsFsd64Binary {
|
|
|
339
339
|
}
|
|
340
340
|
|
|
341
341
|
/** Validates the byte range occupied by a repeated fixed-size value. */
|
|
342
|
-
|
|
342
|
+
_AssertElementRange(offset, count, size) {
|
|
343
343
|
if (!Number.isSafeInteger(count) || count < 0 || count > Math.floor(this.ByteLength / size)) {
|
|
344
344
|
const error = new RangeError(`FSD element count is invalid: ${count}`);
|
|
345
345
|
error.code = "CJS_FSD_COUNT_INVALID";
|
|
@@ -351,7 +351,7 @@ class CjsFsd64Binary {
|
|
|
351
351
|
}
|
|
352
352
|
|
|
353
353
|
/** Validates the fixed header and its declared payload length. */
|
|
354
|
-
|
|
354
|
+
_AssertContainer(path) {
|
|
355
355
|
if (this.ByteLength < HEADER_SIZE) {
|
|
356
356
|
const error = new Error(`FSD input is smaller than its ${HEADER_SIZE}-byte header: ${path}`);
|
|
357
357
|
error.code = "CJS_FSD_HEADER_INVALID";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CjsFsd64Binary.js","sources":["../../../../../../../src/resource/formats/fsd/64/core/CjsFsd64Binary.js"],"sourcesContent":["const HEADER_SIZE = 32;\r\nconst strictTextDecoder = new TextDecoder(\"utf-8\", { fatal: true });\r\n\r\n/**\r\n * Provides bounds-checked access to 64-bit FSD container bytes.\r\n */\r\nexport class CjsFsd64Binary\r\n{\r\n /**\r\n * Binary value types accepted by declarative reader schemas.\r\n *\r\n * Schema files store these property names as strings so they remain inert\r\n * JSON. Schema validation resolves the names through this object.\r\n */\r\n static Type = {\r\n /**\r\n * A single flag bit inside a byte, addressed by `offset` plus `bit`.\r\n *\r\n * The container packs several independent flags into one byte, so a\r\n * schema that called such a field `UINT_8` would describe the byte\r\n * rather than the field and hand a consumer 1 where it expected true.\r\n */\r\n BOOLEAN: \"BOOLEAN\",\r\n FLOAT_32: \"FLOAT_32\",\r\n FLOAT_64: \"FLOAT_64\",\r\n INT_32: \"INT_32\",\r\n INT_32_IDENTIFIER: \"INT_32_IDENTIFIER\",\r\n LIST: \"LIST\",\r\n MAP: \"MAP\",\r\n OBJECT: \"OBJECT\",\r\n STRING: \"STRING\",\r\n UINT_8: \"UINT_8\",\r\n UINT_32: \"UINT_32\",\r\n UINT_32_IDENTIFIER: \"UINT_32_IDENTIFIER\",\r\n UINT_64: \"UINT_64\",\r\n UINT_64_IDENTIFIER: \"UINT_64_IDENTIFIER\",\r\n };\r\n\r\n #bytes;\r\n #view;\r\n\r\n /** Creates a validated view over caller-supplied container bytes. */\r\n constructor(bytes, options = {})\r\n {\r\n this.#bytes = NormalizeBytes(bytes);\r\n this.#view = new DataView(\r\n this.#bytes.buffer,\r\n this.#bytes.byteOffset,\r\n this.#bytes.byteLength,\r\n );\r\n\r\n this.#AssertContainer(options.path ?? \"FSD input\");\r\n\r\n if (options.schemaID)\r\n {\r\n this.AssertSchema(options.schemaID, options.path);\r\n }\r\n }\r\n\r\n /** Returns the complete container byte length. */\r\n get ByteLength()\r\n {\r\n return this.#bytes.byteLength;\r\n }\r\n\r\n /** Returns the payload length declared by the container header. */\r\n get PayloadLength()\r\n {\r\n return this.Uint64(24);\r\n }\r\n\r\n /** Returns the first byte offset after the fixed container header. */\r\n get RootOffset()\r\n {\r\n return HEADER_SIZE;\r\n }\r\n\r\n /** Returns the lossless hexadecimal schema identity from the header. */\r\n get SchemaID()\r\n {\r\n return Hex(this.#bytes.subarray(0, 24));\r\n }\r\n\r\n /**\r\n * Returns the layout half of the schema identity.\r\n *\r\n * The 24-byte identity is two values: the first sixteen bytes identify the\r\n * record layout and are stable across builds and across publishers, while\r\n * the last eight are a digest of the data itself and change whenever the\r\n * file's contents do. Measured 2026-08-14 across CCP build 3466501 and\r\n * NetEase build 3466057: eleven datasets agreed on the first sixteen bytes\r\n * and differed on the last eight in every case, the sole exception being a\r\n * file that is byte-identical on both.\r\n */\r\n get LayoutID()\r\n {\r\n return Hex(this.#bytes.subarray(0, 16));\r\n }\r\n\r\n /**\r\n * Rejects the container when its schema identity differs from the expected value.\r\n *\r\n * A 32-character expectation pins the layout alone, which is what a reader\r\n * wants: it keeps decoding the same dataset after its contents change and\r\n * accepts the same layout from another publisher. A 48-character\r\n * expectation additionally pins the content digest, so it accepts exactly\r\n * one build's bytes.\r\n *\r\n * Several identities may be passed. The identity is not a hash of the byte\r\n * layout alone, so one layout can appear under two of them: Infinity's\r\n * `dogmaeffects.fsdbinary` reads `3f128288…` where CCP and Serenity read\r\n * `b7107f57…`, yet every offset, every presence bit and the modifier entry\r\n * are the same. A reader may accept both, and should say what it measured\r\n * to justify each one.\r\n */\r\n AssertSchema(expected, path = \"FSD input\")\r\n {\r\n const wanted = (Array.isArray(expected) ? expected : [ expected ])\r\n .map(value => String(value).toLowerCase());\r\n const actual = new Set(wanted.map(value => value.length === 32 ? this.LayoutID : this.SchemaID));\r\n\r\n if (wanted.some(value => actual.has(value))) return;\r\n\r\n // Reported in the form that was asked for, so a reader pinning the\r\n // content digest is not told about the layout half it did not ask about.\r\n const reported = wanted[0].length === 32 ? this.LayoutID : this.SchemaID;\r\n const error = new Error(`Unsupported FSD schema for ${path}: ${reported}`);\r\n\r\n error.code = \"CJS_FSD_SCHEMA_UNSUPPORTED\";\r\n error.actualSchemaID = reported;\r\n error.expectedSchemaID = wanted.length === 1 ? wanted[0] : wanted;\r\n error.path = path;\r\n throw error;\r\n }\r\n\r\n /** Resolves one payload-relative offset to an absolute container offset. */\r\n Absolute(relativeOffset)\r\n {\r\n const absolute = this.RootOffset + relativeOffset;\r\n this.AssertRange(absolute, 0);\r\n return absolute;\r\n }\r\n\r\n /** Aligns an absolute byte offset to the next eight-byte boundary. */\r\n Align8(offset)\r\n {\r\n return Math.ceil(offset / 8) * 8;\r\n }\r\n\r\n /** Rejects a byte range which falls outside the supplied container. */\r\n AssertRange(offset, size)\r\n {\r\n if (!Number.isSafeInteger(offset) || !Number.isSafeInteger(size) ||\r\n offset < 0 || size < 0 || offset + size > this.ByteLength)\r\n {\r\n const error = new RangeError(`FSD offset is outside the input: ${offset} + ${size}`);\r\n error.code = \"CJS_FSD_OFFSET_INVALID\";\r\n error.offset = offset;\r\n error.size = size;\r\n throw error;\r\n }\r\n }\r\n\r\n /** Reads one unsigned byte at an absolute offset. */\r\n Byte(offset)\r\n {\r\n this.AssertRange(offset, 1);\r\n return this.#view.getUint8(offset);\r\n }\r\n\r\n /** Returns a bounded byte view without copying its contents. */\r\n Bytes(offset, size)\r\n {\r\n this.AssertRange(offset, size);\r\n return this.#bytes.subarray(offset, offset + size);\r\n }\r\n\r\n /** Reads one little-endian 32-bit floating-point value. */\r\n Float32(offset)\r\n {\r\n this.AssertRange(offset, 4);\r\n return this.#view.getFloat32(offset, true);\r\n }\r\n\r\n /** Reads one little-endian 64-bit floating-point value. */\r\n Float64(offset)\r\n {\r\n this.AssertRange(offset, 8);\r\n return this.#view.getFloat64(offset, true);\r\n }\r\n\r\n /** Reads one little-endian signed 32-bit integer. */\r\n Int32(offset)\r\n {\r\n this.AssertRange(offset, 4);\r\n return this.#view.getInt32(offset, true);\r\n }\r\n\r\n /** Reads one little-endian unsigned 32-bit integer. */\r\n Uint32(offset)\r\n {\r\n this.AssertRange(offset, 4);\r\n return this.#view.getUint32(offset, true);\r\n }\r\n\r\n /** Reads one little-endian unsigned 64-bit safe integer. */\r\n Uint64(offset)\r\n {\r\n this.AssertRange(offset, 8);\r\n const value = this.#view.getBigUint64(offset, true);\r\n\r\n if (value > BigInt(Number.MAX_SAFE_INTEGER))\r\n {\r\n const error = new RangeError(`FSD uint64 is not a safe JavaScript offset/count: ${value}`);\r\n error.code = \"CJS_FSD_UINT64_UNSAFE\";\r\n error.offset = offset;\r\n throw error;\r\n }\r\n\r\n return Number(value);\r\n }\r\n\r\n /**\r\n * Reads an unsigned 64-bit identity without passing through a JavaScript\r\n * number, returning its lossless decimal JSON representation.\r\n */\r\n Uint64Identity(offset)\r\n {\r\n this.AssertRange(offset, 8);\r\n return this.#view.getBigUint64(offset, true).toString(10);\r\n }\r\n\r\n /** Returns a safe unsigned 64-bit value or null for an invalid read. */\r\n TryUint64(offset)\r\n {\r\n if (!Number.isSafeInteger(offset) || offset < 0 || offset + 8 > this.ByteLength)\r\n {\r\n return null;\r\n }\r\n\r\n const value = this.#view.getBigUint64(offset, true);\r\n return value <= BigInt(Number.MAX_SAFE_INTEGER) ? Number(value) : null;\r\n }\r\n\r\n /**\r\n * Returns the absolute offsets of every record in an FSD hash-map.\r\n */\r\n MapEntries(recordSize, headerOffset = this.RootOffset)\r\n {\r\n AssertRecordSize(recordSize);\r\n this.AssertRange(headerOffset, 16);\r\n\r\n const expectedCount = this.Uint64(headerOffset + 8);\r\n\r\n if (expectedCount === 0)\r\n {\r\n return [];\r\n }\r\n\r\n const tableOffset = this.Absolute(this.Uint64(headerOffset));\r\n const bucketCount = this.Uint64(tableOffset - 8);\r\n this.#AssertElementRange(tableOffset, bucketCount, 8);\r\n\r\n const offsets = [];\r\n\r\n for (let index = 0; index < bucketCount; index++)\r\n {\r\n const bucketOffset = this.Absolute(this.Uint64(tableOffset + index * 8));\r\n const recordCount = this.Uint64(bucketOffset - 8);\r\n this.#AssertElementRange(bucketOffset, recordCount, recordSize);\r\n\r\n for (let recordIndex = 0; recordIndex < recordCount; recordIndex++)\r\n {\r\n offsets.push(bucketOffset + recordIndex * recordSize);\r\n }\r\n }\r\n\r\n if (offsets.length !== expectedCount)\r\n {\r\n const error = new Error(\r\n `FSD map contains ${offsets.length} records; its header declares ${expectedCount}.`,\r\n );\r\n error.code = \"CJS_FSD_RECORD_COUNT_INVALID\";\r\n error.actualCount = offsets.length;\r\n error.expectedCount = expectedCount;\r\n throw error;\r\n }\r\n\r\n return offsets;\r\n }\r\n\r\n /**\r\n * Returns absolute offsets for a count-prefixed FSD list.\r\n */\r\n ListEntries(relativeOffset, recordSize, maximumCount = Number.MAX_SAFE_INTEGER)\r\n {\r\n AssertRecordSize(recordSize);\r\n\r\n if (relativeOffset === 0)\r\n {\r\n return [];\r\n }\r\n\r\n if (!Number.isSafeInteger(relativeOffset) || relativeOffset < 8)\r\n {\r\n const error = new RangeError(`FSD list pointer is invalid: ${relativeOffset}`);\r\n error.code = \"CJS_FSD_OFFSET_INVALID\";\r\n error.offset = relativeOffset;\r\n throw error;\r\n }\r\n\r\n const dataOffset = this.Absolute(relativeOffset);\r\n const count = this.Uint64(dataOffset - 8);\r\n\r\n if (count > maximumCount)\r\n {\r\n const error = new RangeError(`FSD list count exceeds its limit: ${count}`);\r\n error.code = \"CJS_FSD_COUNT_INVALID\";\r\n error.count = count;\r\n error.maximumCount = maximumCount;\r\n throw error;\r\n }\r\n\r\n this.#AssertElementRange(dataOffset, count, recordSize);\r\n return Array.from(\r\n { length: count },\r\n (_, index) => dataOffset + index * recordSize,\r\n );\r\n }\r\n\r\n /** Returns a printable ASCII string or null for invalid evidence. */\r\n StringAtDataPointer(relativeOffset, maximumLength = 4096)\r\n {\r\n const value = this.Utf8StringAtDataPointer(relativeOffset, maximumLength);\r\n\r\n if (value === null)\r\n {\r\n return null;\r\n }\r\n\r\n for (const character of value)\r\n {\r\n const code = character.codePointAt(0);\r\n\r\n if (code < 32 || code > 126)\r\n {\r\n return null;\r\n }\r\n }\r\n\r\n return value;\r\n }\r\n\r\n /** Returns a strict UTF-8 string or null for invalid evidence. */\r\n Utf8StringAtDataPointer(relativeOffset, maximumLength = 4096)\r\n {\r\n if (!Number.isSafeInteger(relativeOffset) || relativeOffset < 8)\r\n {\r\n return null;\r\n }\r\n\r\n const dataOffset = this.RootOffset + relativeOffset;\r\n const length = this.TryUint64(dataOffset - 8);\r\n\r\n if (length === null || length > maximumLength || dataOffset + length > this.ByteLength)\r\n {\r\n return null;\r\n }\r\n\r\n try\r\n {\r\n return strictTextDecoder.decode(this.#bytes.subarray(dataOffset, dataOffset + length));\r\n }\r\n catch\r\n {\r\n return null;\r\n }\r\n }\r\n\r\n /** Returns a bounded printable string list or null for invalid evidence. */\r\n StringList(relativeOffset, maximumCount = 100)\r\n {\r\n if (!Number.isSafeInteger(relativeOffset) || relativeOffset < 8)\r\n {\r\n return null;\r\n }\r\n\r\n const tableOffset = this.RootOffset + relativeOffset;\r\n const count = this.TryUint64(tableOffset - 8);\r\n\r\n if (count === null || count > maximumCount || tableOffset + count * 8 > this.ByteLength)\r\n {\r\n return null;\r\n }\r\n\r\n const values = [];\r\n\r\n for (let index = 0; index < count; index++)\r\n {\r\n const value = this.StringAtDataPointer(this.TryUint64(tableOffset + index * 8));\r\n\r\n if (value === null)\r\n {\r\n return null;\r\n }\r\n\r\n values.push(value);\r\n }\r\n\r\n return values;\r\n }\r\n\r\n /** Returns a bounded unsigned 32-bit list or null for invalid evidence. */\r\n Uint32List(relativeOffset, maximumCount = 100)\r\n {\r\n if (relativeOffset === 0)\r\n {\r\n return [];\r\n }\r\n\r\n if (!Number.isSafeInteger(relativeOffset) || relativeOffset < 8)\r\n {\r\n return null;\r\n }\r\n\r\n const dataOffset = this.RootOffset + relativeOffset;\r\n const count = this.TryUint64(dataOffset - 8);\r\n\r\n if (count === null || count > maximumCount || dataOffset + count * 4 > this.ByteLength)\r\n {\r\n return null;\r\n }\r\n\r\n return Array.from(\r\n { length: count },\r\n (_, index) => this.Uint32(dataOffset + index * 4),\r\n );\r\n }\r\n\r\n /** Validates the byte range occupied by a repeated fixed-size value. */\r\n #AssertElementRange(offset, count, size)\r\n {\r\n if (!Number.isSafeInteger(count) || count < 0 ||\r\n count > Math.floor(this.ByteLength / size))\r\n {\r\n const error = new RangeError(`FSD element count is invalid: ${count}`);\r\n error.code = \"CJS_FSD_COUNT_INVALID\";\r\n error.count = count;\r\n error.elementSize = size;\r\n throw error;\r\n }\r\n\r\n this.AssertRange(offset, count * size);\r\n }\r\n\r\n /** Validates the fixed header and its declared payload length. */\r\n #AssertContainer(path)\r\n {\r\n if (this.ByteLength < HEADER_SIZE)\r\n {\r\n const error = new Error(`FSD input is smaller than its ${HEADER_SIZE}-byte header: ${path}`);\r\n error.code = \"CJS_FSD_HEADER_INVALID\";\r\n throw error;\r\n }\r\n\r\n const payloadLength = this.Uint64(24);\r\n\r\n if (payloadLength !== this.ByteLength - HEADER_SIZE)\r\n {\r\n const error = new Error(`FSD payload length does not match its header: ${path}`);\r\n error.code = \"CJS_FSD_LENGTH_INVALID\";\r\n error.actualLength = this.ByteLength - HEADER_SIZE;\r\n error.expectedLength = payloadLength;\r\n throw error;\r\n }\r\n }\r\n}\r\n\r\nfunction AssertRecordSize(value)\r\n{\r\n if (!Number.isSafeInteger(value) || value < 1)\r\n {\r\n const error = new RangeError(`FSD record size is invalid: ${value}`);\r\n error.code = \"CJS_FSD_RECORD_SIZE_INVALID\";\r\n throw error;\r\n }\r\n}\r\n\r\nfunction Hex(bytes)\r\n{\r\n return Array.from(bytes, value => value.toString(16).padStart(2, \"0\")).join(\"\");\r\n}\r\n\r\nfunction NormalizeBytes(input)\r\n{\r\n if (input instanceof ArrayBuffer)\r\n {\r\n return new Uint8Array(input);\r\n }\r\n\r\n if (ArrayBuffer.isView(input))\r\n {\r\n return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\r\n }\r\n\r\n const error = new TypeError(\"FSD input must be an ArrayBuffer or an ArrayBuffer view.\");\r\n error.code = \"CJS_FSD_INPUT_INVALID\";\r\n throw error;\r\n}\r\n\r\nexport default CjsFsd64Binary;\r\n"],"names":["HEADER_SIZE","strictTextDecoder","TextDecoder","fatal","CjsFsd64Binary","Type","BOOLEAN","FLOAT_32","FLOAT_64","INT_32","INT_32_IDENTIFIER","LIST","MAP","OBJECT","STRING","UINT_8","UINT_32","UINT_32_IDENTIFIER","UINT_64","UINT_64_IDENTIFIER","constructor","bytes","options","NormalizeBytes","DataView","buffer","byteOffset","byteLength","path","schemaID","AssertSchema","ByteLength","PayloadLength","Uint64","RootOffset","SchemaID","Hex","subarray","LayoutID","expected","wanted","Array","isArray","map","value","String","toLowerCase","actual","Set","length","some","has","reported","error","Error","code","actualSchemaID","expectedSchemaID","Absolute","relativeOffset","absolute","AssertRange","Align8","offset","Math","ceil","size","Number","isSafeInteger","RangeError","Byte","getUint8","Bytes","Float32","getFloat32","Float64","getFloat64","Int32","getInt32","Uint32","getUint32","getBigUint64","BigInt","MAX_SAFE_INTEGER","Uint64Identity","toString","TryUint64","MapEntries","recordSize","headerOffset","AssertRecordSize","expectedCount","tableOffset","bucketCount","offsets","index","bucketOffset","recordCount","recordIndex","push","actualCount","ListEntries","maximumCount","dataOffset","count","from","_","StringAtDataPointer","maximumLength","Utf8StringAtDataPointer","character","codePointAt","decode","StringList","values","Uint32List","#AssertElementRange","floor","elementSize","#AssertContainer","payloadLength","actualLength","expectedLength","padStart","join","input","ArrayBuffer","Uint8Array","isView","TypeError"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CjsFsd64Binary.js","sources":["../../../../../../../src/resource/formats/fsd/64/core/CjsFsd64Binary.js"],"sourcesContent":["const HEADER_SIZE = 32;\r\nconst strictTextDecoder = new TextDecoder(\"utf-8\", { fatal: true });\r\n\r\n/**\r\n * Provides bounds-checked access to 64-bit FSD container bytes.\r\n */\r\nexport class CjsFsd64Binary\r\n{\r\n /**\r\n * Binary value types accepted by declarative reader schemas.\r\n *\r\n * Schema files store these property names as strings so they remain inert\r\n * JSON. Schema validation resolves the names through this object.\r\n */\r\n static Type = {\r\n /**\r\n * A single flag bit inside a byte, addressed by `offset` plus `bit`.\r\n *\r\n * The container packs several independent flags into one byte, so a\r\n * schema that called such a field `UINT_8` would describe the byte\r\n * rather than the field and hand a consumer 1 where it expected true.\r\n */\r\n BOOLEAN: \"BOOLEAN\",\r\n FLOAT_32: \"FLOAT_32\",\r\n FLOAT_64: \"FLOAT_64\",\r\n INT_32: \"INT_32\",\r\n INT_32_IDENTIFIER: \"INT_32_IDENTIFIER\",\r\n LIST: \"LIST\",\r\n MAP: \"MAP\",\r\n OBJECT: \"OBJECT\",\r\n STRING: \"STRING\",\r\n UINT_8: \"UINT_8\",\r\n UINT_32: \"UINT_32\",\r\n UINT_32_IDENTIFIER: \"UINT_32_IDENTIFIER\",\r\n UINT_64: \"UINT_64\",\r\n UINT_64_IDENTIFIER: \"UINT_64_IDENTIFIER\",\r\n };\r\n\r\n _bytes;\r\n _view;\r\n\r\n /** Creates a validated view over caller-supplied container bytes. */\r\n constructor(bytes, options = {})\r\n {\r\n this._bytes = NormalizeBytes(bytes);\r\n this._view = new DataView(\r\n this._bytes.buffer,\r\n this._bytes.byteOffset,\r\n this._bytes.byteLength,\r\n );\r\n\r\n this._AssertContainer(options.path ?? \"FSD input\");\r\n\r\n if (options.schemaID)\r\n {\r\n this.AssertSchema(options.schemaID, options.path);\r\n }\r\n }\r\n\r\n /** Returns the complete container byte length. */\r\n get ByteLength()\r\n {\r\n return this._bytes.byteLength;\r\n }\r\n\r\n /** Returns the payload length declared by the container header. */\r\n get PayloadLength()\r\n {\r\n return this.Uint64(24);\r\n }\r\n\r\n /** Returns the first byte offset after the fixed container header. */\r\n get RootOffset()\r\n {\r\n return HEADER_SIZE;\r\n }\r\n\r\n /** Returns the lossless hexadecimal schema identity from the header. */\r\n get SchemaID()\r\n {\r\n return Hex(this._bytes.subarray(0, 24));\r\n }\r\n\r\n /**\r\n * Returns the layout half of the schema identity.\r\n *\r\n * The 24-byte identity is two values: the first sixteen bytes identify the\r\n * record layout and are stable across builds and across publishers, while\r\n * the last eight are a digest of the data itself and change whenever the\r\n * file's contents do. Measured 2026-08-14 across CCP build 3466501 and\r\n * NetEase build 3466057: eleven datasets agreed on the first sixteen bytes\r\n * and differed on the last eight in every case, the sole exception being a\r\n * file that is byte-identical on both.\r\n */\r\n get LayoutID()\r\n {\r\n return Hex(this._bytes.subarray(0, 16));\r\n }\r\n\r\n /**\r\n * Rejects the container when its schema identity differs from the expected value.\r\n *\r\n * A 32-character expectation pins the layout alone, which is what a reader\r\n * wants: it keeps decoding the same dataset after its contents change and\r\n * accepts the same layout from another publisher. A 48-character\r\n * expectation additionally pins the content digest, so it accepts exactly\r\n * one build's bytes.\r\n *\r\n * Several identities may be passed. The identity is not a hash of the byte\r\n * layout alone, so one layout can appear under two of them: Infinity's\r\n * `dogmaeffects.fsdbinary` reads `3f128288…` where CCP and Serenity read\r\n * `b7107f57…`, yet every offset, every presence bit and the modifier entry\r\n * are the same. A reader may accept both, and should say what it measured\r\n * to justify each one.\r\n */\r\n AssertSchema(expected, path = \"FSD input\")\r\n {\r\n const wanted = (Array.isArray(expected) ? expected : [ expected ])\r\n .map(value => String(value).toLowerCase());\r\n const actual = new Set(wanted.map(value => value.length === 32 ? this.LayoutID : this.SchemaID));\r\n\r\n if (wanted.some(value => actual.has(value))) return;\r\n\r\n // Reported in the form that was asked for, so a reader pinning the\r\n // content digest is not told about the layout half it did not ask about.\r\n const reported = wanted[0].length === 32 ? this.LayoutID : this.SchemaID;\r\n const error = new Error(`Unsupported FSD schema for ${path}: ${reported}`);\r\n\r\n error.code = \"CJS_FSD_SCHEMA_UNSUPPORTED\";\r\n error.actualSchemaID = reported;\r\n error.expectedSchemaID = wanted.length === 1 ? wanted[0] : wanted;\r\n error.path = path;\r\n throw error;\r\n }\r\n\r\n /** Resolves one payload-relative offset to an absolute container offset. */\r\n Absolute(relativeOffset)\r\n {\r\n const absolute = this.RootOffset + relativeOffset;\r\n this.AssertRange(absolute, 0);\r\n return absolute;\r\n }\r\n\r\n /** Aligns an absolute byte offset to the next eight-byte boundary. */\r\n Align8(offset)\r\n {\r\n return Math.ceil(offset / 8) * 8;\r\n }\r\n\r\n /** Rejects a byte range which falls outside the supplied container. */\r\n AssertRange(offset, size)\r\n {\r\n if (!Number.isSafeInteger(offset) || !Number.isSafeInteger(size) ||\r\n offset < 0 || size < 0 || offset + size > this.ByteLength)\r\n {\r\n const error = new RangeError(`FSD offset is outside the input: ${offset} + ${size}`);\r\n error.code = \"CJS_FSD_OFFSET_INVALID\";\r\n error.offset = offset;\r\n error.size = size;\r\n throw error;\r\n }\r\n }\r\n\r\n /** Reads one unsigned byte at an absolute offset. */\r\n Byte(offset)\r\n {\r\n this.AssertRange(offset, 1);\r\n return this._view.getUint8(offset);\r\n }\r\n\r\n /** Returns a bounded byte view without copying its contents. */\r\n Bytes(offset, size)\r\n {\r\n this.AssertRange(offset, size);\r\n return this._bytes.subarray(offset, offset + size);\r\n }\r\n\r\n /** Reads one little-endian 32-bit floating-point value. */\r\n Float32(offset)\r\n {\r\n this.AssertRange(offset, 4);\r\n return this._view.getFloat32(offset, true);\r\n }\r\n\r\n /** Reads one little-endian 64-bit floating-point value. */\r\n Float64(offset)\r\n {\r\n this.AssertRange(offset, 8);\r\n return this._view.getFloat64(offset, true);\r\n }\r\n\r\n /** Reads one little-endian signed 32-bit integer. */\r\n Int32(offset)\r\n {\r\n this.AssertRange(offset, 4);\r\n return this._view.getInt32(offset, true);\r\n }\r\n\r\n /** Reads one little-endian unsigned 32-bit integer. */\r\n Uint32(offset)\r\n {\r\n this.AssertRange(offset, 4);\r\n return this._view.getUint32(offset, true);\r\n }\r\n\r\n /** Reads one little-endian unsigned 64-bit safe integer. */\r\n Uint64(offset)\r\n {\r\n this.AssertRange(offset, 8);\r\n const value = this._view.getBigUint64(offset, true);\r\n\r\n if (value > BigInt(Number.MAX_SAFE_INTEGER))\r\n {\r\n const error = new RangeError(`FSD uint64 is not a safe JavaScript offset/count: ${value}`);\r\n error.code = \"CJS_FSD_UINT64_UNSAFE\";\r\n error.offset = offset;\r\n throw error;\r\n }\r\n\r\n return Number(value);\r\n }\r\n\r\n /**\r\n * Reads an unsigned 64-bit identity without passing through a JavaScript\r\n * number, returning its lossless decimal JSON representation.\r\n */\r\n Uint64Identity(offset)\r\n {\r\n this.AssertRange(offset, 8);\r\n return this._view.getBigUint64(offset, true).toString(10);\r\n }\r\n\r\n /** Returns a safe unsigned 64-bit value or null for an invalid read. */\r\n TryUint64(offset)\r\n {\r\n if (!Number.isSafeInteger(offset) || offset < 0 || offset + 8 > this.ByteLength)\r\n {\r\n return null;\r\n }\r\n\r\n const value = this._view.getBigUint64(offset, true);\r\n return value <= BigInt(Number.MAX_SAFE_INTEGER) ? Number(value) : null;\r\n }\r\n\r\n /**\r\n * Returns the absolute offsets of every record in an FSD hash-map.\r\n */\r\n MapEntries(recordSize, headerOffset = this.RootOffset)\r\n {\r\n AssertRecordSize(recordSize);\r\n this.AssertRange(headerOffset, 16);\r\n\r\n const expectedCount = this.Uint64(headerOffset + 8);\r\n\r\n if (expectedCount === 0)\r\n {\r\n return [];\r\n }\r\n\r\n const tableOffset = this.Absolute(this.Uint64(headerOffset));\r\n const bucketCount = this.Uint64(tableOffset - 8);\r\n this._AssertElementRange(tableOffset, bucketCount, 8);\r\n\r\n const offsets = [];\r\n\r\n for (let index = 0; index < bucketCount; index++)\r\n {\r\n const bucketOffset = this.Absolute(this.Uint64(tableOffset + index * 8));\r\n const recordCount = this.Uint64(bucketOffset - 8);\r\n this._AssertElementRange(bucketOffset, recordCount, recordSize);\r\n\r\n for (let recordIndex = 0; recordIndex < recordCount; recordIndex++)\r\n {\r\n offsets.push(bucketOffset + recordIndex * recordSize);\r\n }\r\n }\r\n\r\n if (offsets.length !== expectedCount)\r\n {\r\n const error = new Error(\r\n `FSD map contains ${offsets.length} records; its header declares ${expectedCount}.`,\r\n );\r\n error.code = \"CJS_FSD_RECORD_COUNT_INVALID\";\r\n error.actualCount = offsets.length;\r\n error.expectedCount = expectedCount;\r\n throw error;\r\n }\r\n\r\n return offsets;\r\n }\r\n\r\n /**\r\n * Returns absolute offsets for a count-prefixed FSD list.\r\n */\r\n ListEntries(relativeOffset, recordSize, maximumCount = Number.MAX_SAFE_INTEGER)\r\n {\r\n AssertRecordSize(recordSize);\r\n\r\n if (relativeOffset === 0)\r\n {\r\n return [];\r\n }\r\n\r\n if (!Number.isSafeInteger(relativeOffset) || relativeOffset < 8)\r\n {\r\n const error = new RangeError(`FSD list pointer is invalid: ${relativeOffset}`);\r\n error.code = \"CJS_FSD_OFFSET_INVALID\";\r\n error.offset = relativeOffset;\r\n throw error;\r\n }\r\n\r\n const dataOffset = this.Absolute(relativeOffset);\r\n const count = this.Uint64(dataOffset - 8);\r\n\r\n if (count > maximumCount)\r\n {\r\n const error = new RangeError(`FSD list count exceeds its limit: ${count}`);\r\n error.code = \"CJS_FSD_COUNT_INVALID\";\r\n error.count = count;\r\n error.maximumCount = maximumCount;\r\n throw error;\r\n }\r\n\r\n this._AssertElementRange(dataOffset, count, recordSize);\r\n return Array.from(\r\n { length: count },\r\n (_, index) => dataOffset + index * recordSize,\r\n );\r\n }\r\n\r\n /** Returns a printable ASCII string or null for invalid evidence. */\r\n StringAtDataPointer(relativeOffset, maximumLength = 4096)\r\n {\r\n const value = this.Utf8StringAtDataPointer(relativeOffset, maximumLength);\r\n\r\n if (value === null)\r\n {\r\n return null;\r\n }\r\n\r\n for (const character of value)\r\n {\r\n const code = character.codePointAt(0);\r\n\r\n if (code < 32 || code > 126)\r\n {\r\n return null;\r\n }\r\n }\r\n\r\n return value;\r\n }\r\n\r\n /** Returns a strict UTF-8 string or null for invalid evidence. */\r\n Utf8StringAtDataPointer(relativeOffset, maximumLength = 4096)\r\n {\r\n if (!Number.isSafeInteger(relativeOffset) || relativeOffset < 8)\r\n {\r\n return null;\r\n }\r\n\r\n const dataOffset = this.RootOffset + relativeOffset;\r\n const length = this.TryUint64(dataOffset - 8);\r\n\r\n if (length === null || length > maximumLength || dataOffset + length > this.ByteLength)\r\n {\r\n return null;\r\n }\r\n\r\n try\r\n {\r\n return strictTextDecoder.decode(this._bytes.subarray(dataOffset, dataOffset + length));\r\n }\r\n catch\r\n {\r\n return null;\r\n }\r\n }\r\n\r\n /** Returns a bounded printable string list or null for invalid evidence. */\r\n StringList(relativeOffset, maximumCount = 100)\r\n {\r\n if (!Number.isSafeInteger(relativeOffset) || relativeOffset < 8)\r\n {\r\n return null;\r\n }\r\n\r\n const tableOffset = this.RootOffset + relativeOffset;\r\n const count = this.TryUint64(tableOffset - 8);\r\n\r\n if (count === null || count > maximumCount || tableOffset + count * 8 > this.ByteLength)\r\n {\r\n return null;\r\n }\r\n\r\n const values = [];\r\n\r\n for (let index = 0; index < count; index++)\r\n {\r\n const value = this.StringAtDataPointer(this.TryUint64(tableOffset + index * 8));\r\n\r\n if (value === null)\r\n {\r\n return null;\r\n }\r\n\r\n values.push(value);\r\n }\r\n\r\n return values;\r\n }\r\n\r\n /** Returns a bounded unsigned 32-bit list or null for invalid evidence. */\r\n Uint32List(relativeOffset, maximumCount = 100)\r\n {\r\n if (relativeOffset === 0)\r\n {\r\n return [];\r\n }\r\n\r\n if (!Number.isSafeInteger(relativeOffset) || relativeOffset < 8)\r\n {\r\n return null;\r\n }\r\n\r\n const dataOffset = this.RootOffset + relativeOffset;\r\n const count = this.TryUint64(dataOffset - 8);\r\n\r\n if (count === null || count > maximumCount || dataOffset + count * 4 > this.ByteLength)\r\n {\r\n return null;\r\n }\r\n\r\n return Array.from(\r\n { length: count },\r\n (_, index) => this.Uint32(dataOffset + index * 4),\r\n );\r\n }\r\n\r\n /** Validates the byte range occupied by a repeated fixed-size value. */\r\n _AssertElementRange(offset, count, size)\r\n {\r\n if (!Number.isSafeInteger(count) || count < 0 ||\r\n count > Math.floor(this.ByteLength / size))\r\n {\r\n const error = new RangeError(`FSD element count is invalid: ${count}`);\r\n error.code = \"CJS_FSD_COUNT_INVALID\";\r\n error.count = count;\r\n error.elementSize = size;\r\n throw error;\r\n }\r\n\r\n this.AssertRange(offset, count * size);\r\n }\r\n\r\n /** Validates the fixed header and its declared payload length. */\r\n _AssertContainer(path)\r\n {\r\n if (this.ByteLength < HEADER_SIZE)\r\n {\r\n const error = new Error(`FSD input is smaller than its ${HEADER_SIZE}-byte header: ${path}`);\r\n error.code = \"CJS_FSD_HEADER_INVALID\";\r\n throw error;\r\n }\r\n\r\n const payloadLength = this.Uint64(24);\r\n\r\n if (payloadLength !== this.ByteLength - HEADER_SIZE)\r\n {\r\n const error = new Error(`FSD payload length does not match its header: ${path}`);\r\n error.code = \"CJS_FSD_LENGTH_INVALID\";\r\n error.actualLength = this.ByteLength - HEADER_SIZE;\r\n error.expectedLength = payloadLength;\r\n throw error;\r\n }\r\n }\r\n}\r\n\r\nfunction AssertRecordSize(value)\r\n{\r\n if (!Number.isSafeInteger(value) || value < 1)\r\n {\r\n const error = new RangeError(`FSD record size is invalid: ${value}`);\r\n error.code = \"CJS_FSD_RECORD_SIZE_INVALID\";\r\n throw error;\r\n }\r\n}\r\n\r\nfunction Hex(bytes)\r\n{\r\n return Array.from(bytes, value => value.toString(16).padStart(2, \"0\")).join(\"\");\r\n}\r\n\r\nfunction NormalizeBytes(input)\r\n{\r\n if (input instanceof ArrayBuffer)\r\n {\r\n return new Uint8Array(input);\r\n }\r\n\r\n if (ArrayBuffer.isView(input))\r\n {\r\n return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\r\n }\r\n\r\n const error = new TypeError(\"FSD input must be an ArrayBuffer or an ArrayBuffer view.\");\r\n error.code = \"CJS_FSD_INPUT_INVALID\";\r\n throw error;\r\n}\r\n\r\nexport default CjsFsd64Binary;\r\n"],"names":["HEADER_SIZE","strictTextDecoder","TextDecoder","fatal","CjsFsd64Binary","Type","BOOLEAN","FLOAT_32","FLOAT_64","INT_32","INT_32_IDENTIFIER","LIST","MAP","OBJECT","STRING","UINT_8","UINT_32","UINT_32_IDENTIFIER","UINT_64","UINT_64_IDENTIFIER","_bytes","_view","constructor","bytes","options","NormalizeBytes","DataView","buffer","byteOffset","byteLength","_AssertContainer","path","schemaID","AssertSchema","ByteLength","PayloadLength","Uint64","RootOffset","SchemaID","Hex","subarray","LayoutID","expected","wanted","Array","isArray","map","value","String","toLowerCase","actual","Set","length","some","has","reported","error","Error","code","actualSchemaID","expectedSchemaID","Absolute","relativeOffset","absolute","AssertRange","Align8","offset","Math","ceil","size","Number","isSafeInteger","RangeError","Byte","getUint8","Bytes","Float32","getFloat32","Float64","getFloat64","Int32","getInt32","Uint32","getUint32","getBigUint64","BigInt","MAX_SAFE_INTEGER","Uint64Identity","toString","TryUint64","MapEntries","recordSize","headerOffset","AssertRecordSize","expectedCount","tableOffset","bucketCount","_AssertElementRange","offsets","index","bucketOffset","recordCount","recordIndex","push","actualCount","ListEntries","maximumCount","dataOffset","count","from","_","StringAtDataPointer","maximumLength","Utf8StringAtDataPointer","character","codePointAt","decode","StringList","values","Uint32List","floor","elementSize","payloadLength","actualLength","expectedLength","padStart","join","input","ArrayBuffer","Uint8Array","isView","TypeError"],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* or resource-index work.
|
|
6
6
|
*/
|
|
7
7
|
class CjsFsd64Reader {
|
|
8
|
-
|
|
8
|
+
_readers = new Map();
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* Registers one approved file-specific reader by logical path.
|
|
@@ -13,13 +13,13 @@ class CjsFsd64Reader {
|
|
|
13
13
|
Register(path, reader, options = {}) {
|
|
14
14
|
const key = NormalizeReaderKey(path);
|
|
15
15
|
const implementation = NormalizeReader(reader);
|
|
16
|
-
if (this
|
|
16
|
+
if (this._readers.has(key) && options.replace !== true) {
|
|
17
17
|
const error = new Error(`FSD reader is already registered: ${key}`);
|
|
18
18
|
error.code = "CJS_FSD_READER_EXISTS";
|
|
19
19
|
error.path = key;
|
|
20
20
|
throw error;
|
|
21
21
|
}
|
|
22
|
-
this
|
|
22
|
+
this._readers.set(key, implementation);
|
|
23
23
|
return this;
|
|
24
24
|
}
|
|
25
25
|
|
|
@@ -27,21 +27,21 @@ class CjsFsd64Reader {
|
|
|
27
27
|
* Removes a reader without affecting any caller-owned bytes or data.
|
|
28
28
|
*/
|
|
29
29
|
Remove(path) {
|
|
30
|
-
return this
|
|
30
|
+
return this._readers.delete(NormalizeReaderKey(path));
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
/**
|
|
34
34
|
* Reports whether an exact file-specific reader is registered.
|
|
35
35
|
*/
|
|
36
36
|
Has(path) {
|
|
37
|
-
return this
|
|
37
|
+
return this._readers.has(NormalizeReaderKey(path));
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
/**
|
|
41
41
|
* Lists registered logical paths in deterministic order.
|
|
42
42
|
*/
|
|
43
43
|
List() {
|
|
44
|
-
return [...this
|
|
44
|
+
return [...this._readers.keys()].sort();
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
/**
|
|
@@ -49,7 +49,7 @@ class CjsFsd64Reader {
|
|
|
49
49
|
*/
|
|
50
50
|
async Read(input, options = {}) {
|
|
51
51
|
const path = NormalizeReaderKey(options.path);
|
|
52
|
-
const reader = this
|
|
52
|
+
const reader = this._readers.get(path);
|
|
53
53
|
if (!reader) {
|
|
54
54
|
const error = new Error(`No FSD reader is registered for: ${path}`);
|
|
55
55
|
error.code = "CJS_FSD_READER_NOT_FOUND";
|
|
@@ -69,7 +69,7 @@ class CjsFsd64Reader {
|
|
|
69
69
|
*/
|
|
70
70
|
async ReadJSON(input, options = {}) {
|
|
71
71
|
const path = NormalizeReaderKey(options.path);
|
|
72
|
-
const reader = this
|
|
72
|
+
const reader = this._readers.get(path);
|
|
73
73
|
if (!reader) {
|
|
74
74
|
const error = new Error(`No FSD reader is registered for: ${path}`);
|
|
75
75
|
error.code = "CJS_FSD_READER_NOT_FOUND";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CjsFsd64Reader.js","sources":["../../../../../../../src/resource/formats/fsd/64/core/CjsFsd64Reader.js"],"sourcesContent":["/**\r\n * Dispatches caller-supplied bytes to an explicitly registered FSD reader.\r\n *\r\n * This class deliberately performs no filesystem, network, provider, build,\r\n * or resource-index work.\r\n */\r\nexport class CjsFsd64Reader\r\n{\r\n
|
|
1
|
+
{"version":3,"file":"CjsFsd64Reader.js","sources":["../../../../../../../src/resource/formats/fsd/64/core/CjsFsd64Reader.js"],"sourcesContent":["/**\r\n * Dispatches caller-supplied bytes to an explicitly registered FSD reader.\r\n *\r\n * This class deliberately performs no filesystem, network, provider, build,\r\n * or resource-index work.\r\n */\r\nexport class CjsFsd64Reader\r\n{\r\n _readers = new Map();\r\n\r\n /**\r\n * Registers one approved file-specific reader by logical path.\r\n */\r\n Register(path, reader, options = {})\r\n {\r\n const key = NormalizeReaderKey(path);\r\n const implementation = NormalizeReader(reader);\r\n\r\n if (this._readers.has(key) && options.replace !== true)\r\n {\r\n const error = new Error(`FSD reader is already registered: ${key}`);\r\n error.code = \"CJS_FSD_READER_EXISTS\";\r\n error.path = key;\r\n throw error;\r\n }\r\n\r\n this._readers.set(key, implementation);\r\n return this;\r\n }\r\n\r\n /**\r\n * Removes a reader without affecting any caller-owned bytes or data.\r\n */\r\n Remove(path)\r\n {\r\n return this._readers.delete(NormalizeReaderKey(path));\r\n }\r\n\r\n /**\r\n * Reports whether an exact file-specific reader is registered.\r\n */\r\n Has(path)\r\n {\r\n return this._readers.has(NormalizeReaderKey(path));\r\n }\r\n\r\n /**\r\n * Lists registered logical paths in deterministic order.\r\n */\r\n List()\r\n {\r\n return [ ...this._readers.keys() ].sort();\r\n }\r\n\r\n /**\r\n * Reads caller-supplied bytes with the reader registered for options.path.\r\n */\r\n async Read(input, options = {})\r\n {\r\n const path = NormalizeReaderKey(options.path);\r\n const reader = this._readers.get(path);\r\n\r\n if (!reader)\r\n {\r\n const error = new Error(`No FSD reader is registered for: ${path}`);\r\n error.code = \"CJS_FSD_READER_NOT_FOUND\";\r\n error.path = path;\r\n throw error;\r\n }\r\n\r\n const bytes = NormalizeBytes(input);\r\n return reader.Read(bytes, {\r\n ...options,\r\n path,\r\n });\r\n }\r\n\r\n /**\r\n * Reads caller-supplied bytes as a plain JSON-compatible value through the\r\n * schema-backed reader registered for options.path.\r\n */\r\n async ReadJSON(input, options = {})\r\n {\r\n const path = NormalizeReaderKey(options.path);\r\n const reader = this._readers.get(path);\r\n\r\n if (!reader)\r\n {\r\n const error = new Error(`No FSD reader is registered for: ${path}`);\r\n error.code = \"CJS_FSD_READER_NOT_FOUND\";\r\n error.path = path;\r\n throw error;\r\n }\r\n\r\n if (typeof reader.ReadJSON !== \"function\")\r\n {\r\n const error = new Error(`FSD reader does not expose JSON decoding: ${path}`);\r\n error.code = \"CJS_FSD_JSON_READER_INVALID\";\r\n error.path = path;\r\n throw error;\r\n }\r\n\r\n const bytes = NormalizeBytes(input);\r\n return reader.ReadJSON(bytes, {\r\n ...options,\r\n path,\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Produces a stable registry key without importing resource-source policy.\r\n */\r\nfunction NormalizeReaderKey(value)\r\n{\r\n if (typeof value !== \"string\" || value.trim() === \"\")\r\n {\r\n const error = new TypeError(\"FSD reader path must be a non-empty string.\");\r\n error.code = \"CJS_FSD_PATH_INVALID\";\r\n throw error;\r\n }\r\n\r\n return value.trim().replaceAll(\"\\\\\", \"/\").toLowerCase();\r\n}\r\n\r\n/**\r\n * Accepts object readers and function shorthand while storing one contract.\r\n */\r\nfunction NormalizeReader(value)\r\n{\r\n if (typeof value === \"function\")\r\n {\r\n return { Read: value };\r\n }\r\n\r\n if (!value || typeof value.Read !== \"function\")\r\n {\r\n const error = new TypeError(\"FSD reader must be a function or expose Read(bytes, context).\");\r\n error.code = \"CJS_FSD_READER_INVALID\";\r\n throw error;\r\n }\r\n\r\n return value;\r\n}\r\n\r\n/**\r\n * Creates a byte view over accepted binary inputs without copying or mutation.\r\n */\r\nfunction NormalizeBytes(input)\r\n{\r\n if (input instanceof ArrayBuffer)\r\n {\r\n return new Uint8Array(input);\r\n }\r\n\r\n if (ArrayBuffer.isView(input))\r\n {\r\n return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\r\n }\r\n\r\n const error = new TypeError(\"FSD input must be an ArrayBuffer or an ArrayBuffer view.\");\r\n error.code = \"CJS_FSD_INPUT_INVALID\";\r\n throw error;\r\n}\r\n\r\nexport default CjsFsd64Reader;\r\n"],"names":["CjsFsd64Reader","_readers","Map","Register","path","reader","options","key","NormalizeReaderKey","implementation","NormalizeReader","has","replace","error","Error","code","set","Remove","delete","Has","List","keys","sort","Read","input","get","bytes","NormalizeBytes","ReadJSON","value","trim","TypeError","replaceAll","toLowerCase","ArrayBuffer","Uint8Array","isView","buffer","byteOffset","byteLength"],"mappings":"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"}
|
|
@@ -14,11 +14,11 @@ const OUTPUT_JSON = "json";
|
|
|
14
14
|
* `bitWidth: 32` or `variant: "fsd32"` until its schema-driven reader exists.
|
|
15
15
|
*/
|
|
16
16
|
class CjsFsdFormat extends CjsFormat {
|
|
17
|
-
/**
|
|
18
|
-
* Inspect the explicitly selected legacy layout or recognized modern layout.
|
|
19
|
-
* @param {*} input Candidate input.
|
|
20
|
-
* @param {object} [options] Format profile.
|
|
21
|
-
* @returns {object} Variant metadata.
|
|
17
|
+
/**
|
|
18
|
+
* Inspect the explicitly selected legacy layout or recognized modern layout.
|
|
19
|
+
* @param {*} input Candidate input.
|
|
20
|
+
* @param {object} [options] Format profile.
|
|
21
|
+
* @returns {object} Variant metadata.
|
|
22
22
|
*/
|
|
23
23
|
static inspect(input, options = {}) {
|
|
24
24
|
if (CjsFsd32Format.is(input, options)) {
|
|
@@ -27,11 +27,11 @@ class CjsFsdFormat extends CjsFormat {
|
|
|
27
27
|
return CjsFsd64Format.inspect(input, options);
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
/**
|
|
31
|
-
* Report support for the selected or recognized FSD variant.
|
|
32
|
-
* @param {*|string} input Candidate input.
|
|
33
|
-
* @param {object} [options] Format and reader options.
|
|
34
|
-
* @returns {object} Plain support report.
|
|
30
|
+
/**
|
|
31
|
+
* Report support for the selected or recognized FSD variant.
|
|
32
|
+
* @param {*|string} input Candidate input.
|
|
33
|
+
* @param {object} [options] Format and reader options.
|
|
34
|
+
* @returns {object} Plain support report.
|
|
35
35
|
*/
|
|
36
36
|
static probeSupport(input, options = {}) {
|
|
37
37
|
if (CjsFsd32Format.is(input, options)) {
|
|
@@ -40,11 +40,11 @@ class CjsFsdFormat extends CjsFormat {
|
|
|
40
40
|
return CjsFsd64Format.probeSupport(input, options);
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
/**
|
|
44
|
-
* Decode the selected or recognized FSD variant.
|
|
45
|
-
* @param {*} input Candidate input.
|
|
46
|
-
* @param {object} [options] Format and reader options.
|
|
47
|
-
* @returns {*} Decoded payload.
|
|
43
|
+
/**
|
|
44
|
+
* Decode the selected or recognized FSD variant.
|
|
45
|
+
* @param {*} input Candidate input.
|
|
46
|
+
* @param {object} [options] Format and reader options.
|
|
47
|
+
* @returns {*} Decoded payload.
|
|
48
48
|
*/
|
|
49
49
|
static read(input, options = {}) {
|
|
50
50
|
if (CjsFsd32Format.is(input, options)) {
|
|
@@ -59,11 +59,11 @@ class CjsFsdFormat extends CjsFormat {
|
|
|
59
59
|
throw error;
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
/**
|
|
63
|
-
* Decode the selected or recognized FSD variant to JSON-compatible values.
|
|
64
|
-
* @param {*} input Candidate input.
|
|
65
|
-
* @param {object} [options] Format and reader options.
|
|
66
|
-
* @returns {*} Decoded JSON-compatible value.
|
|
62
|
+
/**
|
|
63
|
+
* Decode the selected or recognized FSD variant to JSON-compatible values.
|
|
64
|
+
* @param {*} input Candidate input.
|
|
65
|
+
* @param {object} [options] Format and reader options.
|
|
66
|
+
* @returns {*} Decoded JSON-compatible value.
|
|
67
67
|
*/
|
|
68
68
|
static readJSON(input, options = {}) {
|
|
69
69
|
return this.read(input, {
|
|
@@ -71,9 +71,9 @@ class CjsFsdFormat extends CjsFormat {
|
|
|
71
71
|
emit: OUTPUT_JSON
|
|
72
72
|
});
|
|
73
73
|
}
|
|
74
|
-
static id = "
|
|
75
|
-
static extensions =
|
|
76
|
-
static mediaTypes =
|
|
74
|
+
static id = "CjsFsdFormat";
|
|
75
|
+
static extensions = [".fsdbinary"];
|
|
76
|
+
static mediaTypes = ["data"];
|
|
77
77
|
static outputs = CjsFormat.defineOutputs({
|
|
78
78
|
payload: {
|
|
79
79
|
default: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CjsFsdFormat.js","sources":["../../../../../src/resource/formats/fsd/CjsFsdFormat.js"],"sourcesContent":["import { CjsFormat } from \"../../format/CjsFormat.js\";\r\nimport { CjsFsd32Format } from \"./32/index.js\";\r\nimport { CjsFsd64Format } from \"./64/index.js\";\r\n\r\nconst OUTPUT_JSON = \"json\";\r\nconst OUTPUT_PAYLOAD = \"payload\";\r\n\r\n/**\r\n * Normal FSD format-pipeline entry point.\r\n *\r\n * Modern cFSD identifies itself through its 32-byte envelope. Legacy FSD is\r\n * headerless and therefore must be identified by the caller/profile through\r\n * `bitWidth: 32` or `variant: \"fsd32\"` until its schema-driven reader exists.\r\n */\r\nexport class CjsFsdFormat extends CjsFormat\n{\n /**\n * Inspect the explicitly selected legacy layout or recognized modern layout.\n * @param {*} input Candidate input.\n * @param {object} [options] Format profile.\n * @returns {object} Variant metadata.\n */\n static inspect(input, options = {})\n {\r\n if (CjsFsd32Format.is(input, options))\r\n {\r\n return CjsFsd32Format.inspect(input, options);\r\n }\r\n\r\n return CjsFsd64Format.inspect(input, options);\r\n }\r\n\r\n /**\n * Report support for the selected or recognized FSD variant.\n * @param {*|string} input Candidate input.\n * @param {object} [options] Format and reader options.\n * @returns {object} Plain support report.\n */\n static probeSupport(input, options = {})\n {\r\n if (CjsFsd32Format.is(input, options))\r\n {\r\n return CjsFsd32Format.probeSupport(input, options);\r\n }\r\n\r\n return CjsFsd64Format.probeSupport(input, options);\r\n }\r\n\r\n /**\n * Decode the selected or recognized FSD variant.\n * @param {*} input Candidate input.\n * @param {object} [options] Format and reader options.\n * @returns {*} Decoded payload.\n */\n static read(input, options = {})\n {\r\n if (CjsFsd32Format.is(input, options))\r\n {\r\n return CjsFsd32Format.read(input, options);\r\n }\r\n\r\n if (CjsFsd64Format.is(input))\r\n {\r\n return CjsFsd64Format.read(input, options);\r\n }\r\n\r\n const error = new Error(\r\n \"FSD input is neither an identified legacy 32-bit layout nor a valid modern 64-bit cFSD container.\"\r\n );\r\n\r\n error.code = \"CJS_FSD_VARIANT_UNKNOWN\";\r\n error.path = options.path ?? null;\r\n throw error;\r\n }\r\n\r\n /**\n * Decode the selected or recognized FSD variant to JSON-compatible values.\n * @param {*} input Candidate input.\n * @param {object} [options] Format and reader options.\n * @returns {*} Decoded JSON-compatible value.\n */\n static readJSON(input, options = {})\n {\r\n return this.read(input, { ...options, emit: OUTPUT_JSON });\r\n }\r\n\r\n static id = \"
|
|
1
|
+
{"version":3,"file":"CjsFsdFormat.js","sources":["../../../../../src/resource/formats/fsd/CjsFsdFormat.js"],"sourcesContent":["import { CjsFormat } from \"../../format/CjsFormat.js\";\r\nimport { CjsFsd32Format } from \"./32/index.js\";\r\nimport { CjsFsd64Format } from \"./64/index.js\";\r\n\r\nconst OUTPUT_JSON = \"json\";\r\nconst OUTPUT_PAYLOAD = \"payload\";\r\n\r\n/**\r\n * Normal FSD format-pipeline entry point.\r\n *\r\n * Modern cFSD identifies itself through its 32-byte envelope. Legacy FSD is\r\n * headerless and therefore must be identified by the caller/profile through\r\n * `bitWidth: 32` or `variant: \"fsd32\"` until its schema-driven reader exists.\r\n */\r\nexport class CjsFsdFormat extends CjsFormat\r\n{\r\n /**\r\n * Inspect the explicitly selected legacy layout or recognized modern layout.\r\n * @param {*} input Candidate input.\r\n * @param {object} [options] Format profile.\r\n * @returns {object} Variant metadata.\r\n */\r\n static inspect(input, options = {})\r\n {\r\n if (CjsFsd32Format.is(input, options))\r\n {\r\n return CjsFsd32Format.inspect(input, options);\r\n }\r\n\r\n return CjsFsd64Format.inspect(input, options);\r\n }\r\n\r\n /**\r\n * Report support for the selected or recognized FSD variant.\r\n * @param {*|string} input Candidate input.\r\n * @param {object} [options] Format and reader options.\r\n * @returns {object} Plain support report.\r\n */\r\n static probeSupport(input, options = {})\r\n {\r\n if (CjsFsd32Format.is(input, options))\r\n {\r\n return CjsFsd32Format.probeSupport(input, options);\r\n }\r\n\r\n return CjsFsd64Format.probeSupport(input, options);\r\n }\r\n\r\n /**\r\n * Decode the selected or recognized FSD variant.\r\n * @param {*} input Candidate input.\r\n * @param {object} [options] Format and reader options.\r\n * @returns {*} Decoded payload.\r\n */\r\n static read(input, options = {})\r\n {\r\n if (CjsFsd32Format.is(input, options))\r\n {\r\n return CjsFsd32Format.read(input, options);\r\n }\r\n\r\n if (CjsFsd64Format.is(input))\r\n {\r\n return CjsFsd64Format.read(input, options);\r\n }\r\n\r\n const error = new Error(\r\n \"FSD input is neither an identified legacy 32-bit layout nor a valid modern 64-bit cFSD container.\"\r\n );\r\n\r\n error.code = \"CJS_FSD_VARIANT_UNKNOWN\";\r\n error.path = options.path ?? null;\r\n throw error;\r\n }\r\n\r\n /**\r\n * Decode the selected or recognized FSD variant to JSON-compatible values.\r\n * @param {*} input Candidate input.\r\n * @param {object} [options] Format and reader options.\r\n * @returns {*} Decoded JSON-compatible value.\r\n */\r\n static readJSON(input, options = {})\r\n {\r\n return this.read(input, { ...options, emit: OUTPUT_JSON });\r\n }\r\n\r\n static id = \"CjsFsdFormat\";\r\n static extensions = [ \".fsdbinary\" ];\r\n static mediaTypes = [ \"data\" ];\r\n static outputs = CjsFormat.defineOutputs({\r\n payload: { default: true, decoded: true },\r\n json: { decoded: true }\r\n });\r\n}\r\n\r\nexport default CjsFsdFormat;\r\n"],"names":["OUTPUT_JSON","CjsFsdFormat","CjsFormat","inspect","input","options","CjsFsd32Format","is","CjsFsd64Format","probeSupport","read","error","Error","code","path","readJSON","emit","id","extensions","mediaTypes","outputs","defineOutputs","payload","default","decoded","json"],"mappings":";;;;;;AAIA,MAAMA,WAAW,GAAG,MAAM;;AAG1B;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,YAAY,SAASC,SAAS,CAC3C;AACI;AACJ;AACA;AACA;AACA;AACA;EACI,OAAOC,OAAOA,CAACC,KAAK,EAAEC,OAAO,GAAG,EAAE,EAClC;IACI,IAAIC,cAAc,CAACC,EAAE,CAACH,KAAK,EAAEC,OAAO,CAAC,EACrC;AACI,MAAA,OAAOC,cAAc,CAACH,OAAO,CAACC,KAAK,EAAEC,OAAO,CAAC;AACjD,IAAA;AAEA,IAAA,OAAOG,cAAc,CAACL,OAAO,CAACC,KAAK,EAAEC,OAAO,CAAC;AACjD,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACA;EACI,OAAOI,YAAYA,CAACL,KAAK,EAAEC,OAAO,GAAG,EAAE,EACvC;IACI,IAAIC,cAAc,CAACC,EAAE,CAACH,KAAK,EAAEC,OAAO,CAAC,EACrC;AACI,MAAA,OAAOC,cAAc,CAACG,YAAY,CAACL,KAAK,EAAEC,OAAO,CAAC;AACtD,IAAA;AAEA,IAAA,OAAOG,cAAc,CAACC,YAAY,CAACL,KAAK,EAAEC,OAAO,CAAC;AACtD,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACA;EACI,OAAOK,IAAIA,CAACN,KAAK,EAAEC,OAAO,GAAG,EAAE,EAC/B;IACI,IAAIC,cAAc,CAACC,EAAE,CAACH,KAAK,EAAEC,OAAO,CAAC,EACrC;AACI,MAAA,OAAOC,cAAc,CAACI,IAAI,CAACN,KAAK,EAAEC,OAAO,CAAC;AAC9C,IAAA;AAEA,IAAA,IAAIG,cAAc,CAACD,EAAE,CAACH,KAAK,CAAC,EAC5B;AACI,MAAA,OAAOI,cAAc,CAACE,IAAI,CAACN,KAAK,EAAEC,OAAO,CAAC;AAC9C,IAAA;AAEA,IAAA,MAAMM,KAAK,GAAG,IAAIC,KAAK,CACnB,mGACJ,CAAC;IAEDD,KAAK,CAACE,IAAI,GAAG,yBAAyB;AACtCF,IAAAA,KAAK,CAACG,IAAI,GAAGT,OAAO,CAACS,IAAI,IAAI,IAAI;AACjC,IAAA,MAAMH,KAAK;AACf,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACA;EACI,OAAOI,QAAQA,CAACX,KAAK,EAAEC,OAAO,GAAG,EAAE,EACnC;AACI,IAAA,OAAO,IAAI,CAACK,IAAI,CAACN,KAAK,EAAE;AAAE,MAAA,GAAGC,OAAO;AAAEW,MAAAA,IAAI,EAAEhB;AAAY,KAAC,CAAC;AAC9D,EAAA;EAEA,OAAOiB,EAAE,GAAG,cAAc;AAC1B,EAAA,OAAOC,UAAU,GAAG,CAAE,YAAY,CAAE;AACpC,EAAA,OAAOC,UAAU,GAAG,CAAE,MAAM,CAAE;AAC9B,EAAA,OAAOC,OAAO,GAAGlB,SAAS,CAACmB,aAAa,CAAC;AACrCC,IAAAA,OAAO,EAAE;AAAEC,MAAAA,OAAO,EAAE,IAAI;AAAEC,MAAAA,OAAO,EAAE;KAAM;AACzCC,IAAAA,IAAI,EAAE;AAAED,MAAAA,OAAO,EAAE;AAAK;AAC1B,GAAC,CAAC;AACN;;;;"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { asUint8Array } from '#utils/bytes';
|
|
2
2
|
import { CjsFormat } from '../../format/CjsFormat.js';
|
|
3
|
-
import {
|
|
3
|
+
import { CjsImageFormat } from '../../format/CjsImageFormat.js';
|
|
4
|
+
import { DEFAULT_VALUES, normalizeValues, readWithValues, inspectWithValues, isGIF } from './core/helpers.js';
|
|
4
5
|
import { toJsonWithByteSummary } from '../../format/jsonPolicies.js';
|
|
5
6
|
|
|
6
7
|
const FORMAT_NAME = "CjsGifFormat";
|
|
@@ -9,8 +10,8 @@ const FORMAT_NAME = "CjsGifFormat";
|
|
|
9
10
|
* GIF format profile that inspects header and frame metadata and reads GIF
|
|
10
11
|
* bytes into raw, debug JSON, or LZW-decoded RGBA frame payloads.
|
|
11
12
|
*/
|
|
12
|
-
class CjsGifFormat extends
|
|
13
|
-
|
|
13
|
+
class CjsGifFormat extends CjsImageFormat {
|
|
14
|
+
_values = DEFAULT_VALUES;
|
|
14
15
|
|
|
15
16
|
/** Creates a CjsGifFormat with caller-provided reader configuration. */
|
|
16
17
|
constructor(options = {}) {
|
|
@@ -23,7 +24,7 @@ class CjsGifFormat extends CjsFormat {
|
|
|
23
24
|
* GIF format configuration.
|
|
24
25
|
*/
|
|
25
26
|
SetValues(options = {}) {
|
|
26
|
-
this
|
|
27
|
+
this._values = normalizeValues(this._values, {
|
|
27
28
|
inputType: "gif",
|
|
28
29
|
...options
|
|
29
30
|
}, FORMAT_NAME);
|
|
@@ -35,7 +36,7 @@ class CjsGifFormat extends CjsFormat {
|
|
|
35
36
|
* configuration.
|
|
36
37
|
*/
|
|
37
38
|
GetValues(options = {}) {
|
|
38
|
-
return normalizeValues(this
|
|
39
|
+
return normalizeValues(this._values, {
|
|
39
40
|
inputType: "gif",
|
|
40
41
|
...options
|
|
41
42
|
}, FORMAT_NAME);
|
|
@@ -113,15 +114,8 @@ class CjsGifFormat extends CjsFormat {
|
|
|
113
114
|
/**
|
|
114
115
|
* Emit targets for this format (canonical frozen enum).
|
|
115
116
|
*/
|
|
116
|
-
static
|
|
117
|
-
|
|
118
|
-
RGBA: OUTPUT_RGBA,
|
|
119
|
-
RAW: OUTPUT_RAW,
|
|
120
|
-
JSON: OUTPUT_JSON
|
|
121
|
-
});
|
|
122
|
-
static OUTPUT_GIF_JSON = "gifJson";
|
|
123
|
-
static id = "gif";
|
|
124
|
-
static mediaTypes = Object.freeze(["image"]);
|
|
117
|
+
static id = "CjsGifFormat";
|
|
118
|
+
static mediaTypes = ["image"];
|
|
125
119
|
static outputs = CjsFormat.defineOutputs({
|
|
126
120
|
image: {
|
|
127
121
|
decoded: true,
|
|
@@ -140,7 +134,22 @@ class CjsGifFormat extends CjsFormat {
|
|
|
140
134
|
passthrough: true
|
|
141
135
|
}
|
|
142
136
|
});
|
|
143
|
-
|
|
137
|
+
/**
|
|
138
|
+
* Fill a HostBitmap through this format's RGBA8 output, for Carbon's ImageIO
|
|
139
|
+
* registry (`CjsGifFormat.carbon`). See CjsImageFormat.readImageFromRgbaPayload.
|
|
140
|
+
*
|
|
141
|
+
* @param {Uint8Array|ArrayBuffer} input Image bytes.
|
|
142
|
+
* @param {object} _loadParameters Load parameters; a single-mip image skips nothing.
|
|
143
|
+
* @param {object} bitmap Destination HostBitmap.
|
|
144
|
+
* @param {object|null} [metadata] Optional Metadata out.
|
|
145
|
+
* @returns {object} ImageIOResult.
|
|
146
|
+
*/
|
|
147
|
+
static readImageNative(input, _loadParameters, bitmap, metadata = null) {
|
|
148
|
+
return this.readImageFromRgbaPayload(this.read(input, {
|
|
149
|
+
emit: "rgba"
|
|
150
|
+
}), bitmap, metadata);
|
|
151
|
+
}
|
|
152
|
+
static extensions = [".gif"];
|
|
144
153
|
}
|
|
145
154
|
|
|
146
155
|
export { CjsGifFormat };
|