@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sources":["../../../../../../src/resource/formats/obj/core/helpers.js"],"sourcesContent":["/**\n * Internal read-pipeline glue for CjsObjFormat.\n */\n\nimport { toJsonWithArrayValues as toJsonValue } from \"../../../format/jsonPolicies.js\";\nimport { hydrateJson } from \"./json.js\";\nimport { parseObjText } from \"./parser.js\";\nimport {\n generateBiNormals,\n generateNormals,\n generateTangents\n} from \"#math/mesh\";\nimport {\n packTangentFrames\n} from \"#math/tangent\";\nimport { CMF_CLASS_KEYS, GR2_CLASS_KEYS } from \"../../cmf/core/constants.js\";\nimport { bytesPerIndex, firstTriangle, totalIndexCount } from \"../../cmf/core/utils/indices.js\";\nimport { hydrateCmf } from \"../../cmf/core/utils/hydration.js\";\nimport { elementTypeSize, estimateStrideFromDecl } from \"../../cmf/core/utils/vertex.js\";\n\nexport { CMF_CLASS_KEYS, GR2_CLASS_KEYS };\n\nexport const CLASS_KEYS = Object.freeze(Array.from(new Set([\n ...GR2_CLASS_KEYS,\n ...CMF_CLASS_KEYS\n])));\n\nexport const OUTPUT_JSON = \"json\";\nexport const OUTPUT_OBJ_JSON = \"objJson\";\nexport const OUTPUT_SHARED = \"shared\";\nexport const OUTPUT_GR2 = \"gr2\";\nexport const OUTPUT_CMF = \"cmf\";\n\nexport const DEFAULT_VALUES = Object.freeze({\n emit: OUTPUT_OBJ_JSON,\n source: \"memory\",\n packTangents: false,\n uvHandedness: \"right\",\n rebuildMissingNormals: false,\n rebuildMissingTangents: false,\n rebuildMissingBiNormals: false,\n classes: Object.freeze({})\n});\n\nconst OPTION_KEYS = new Set([\n \"emit\",\n \"source\",\n \"packTangents\",\n \"uvHandedness\",\n \"rebuildMissingNormals\",\n \"rebuildMissingTangents\",\n \"rebuildMissingBiNormals\",\n \"classes\"\n]);\n\n/**\n * Validate a `classes` node key against {@link CLASS_KEYS}.\n *\n * @param {string} key Candidate node key.\n * @param {string} [readerName] Format name used in thrown errors.\n */\nexport function validateClassKey(key, readerName = \"CjsObjFormat\")\n{\n if (!CLASS_KEYS.includes(key))\n {\n throw new Error(`${readerName}: unknown class key ${JSON.stringify(key)}; expected one of ${CLASS_KEYS.join(\", \")}`);\n }\n}\n\n/**\n * Validate a single `classes` entry.\n *\n * @param {string} key Node key.\n * @param {Function} Class Candidate constructor.\n * @param {string} [readerName] Format name used in thrown errors.\n */\nexport function validateClass(key, Class, readerName = \"CjsObjFormat\")\n{\n validateClassKey(key, readerName);\n if (typeof Class !== \"function\")\n {\n throw new TypeError(`${readerName}: class ${JSON.stringify(key)} must be a constructor`);\n }\n}\n\n/**\n * Merge and validate a class map.\n *\n * @param {object} base Current classes map.\n * @param {object} classes Incoming classes map.\n * @param {string} readerName Format name used in thrown errors.\n * @returns {object} Merged classes.\n */\nfunction mergeClasses(base, classes, readerName)\n{\n if (!classes || typeof classes !== \"object\")\n {\n throw new TypeError(`${readerName}: classes option must be an object`);\n }\n\n const next = { ...base };\n for (const [ key, Class ] of Object.entries(classes))\n {\n if (Class === null || Class === undefined)\n {\n delete next[key];\n continue;\n }\n validateClass(key, Class, readerName);\n next[key] = Class;\n }\n return next;\n}\n\n/**\n * Validate a boolean/function mesh rule.\n *\n * @param {string} name Option name.\n * @param {any} value Candidate option value.\n * @param {string} readerName Format name used in thrown errors.\n * @returns {boolean|Function} Validated rule.\n */\nfunction validateRule(name, value, readerName)\n{\n if (typeof value === \"boolean\" || typeof value === \"function\") return value;\n throw new TypeError(`${readerName}: ${name} must be true, false, or a function`);\n}\n\n/**\n * Normalize the generated UV/tangent handedness option.\n *\n * @param {any} value Candidate option value.\n * @param {string} readerName Format name used in thrown errors.\n * @returns {\"right\"|\"left\"} Normalized handedness.\n */\nfunction normalizeUvHandedness(value, readerName)\n{\n if (value === undefined || value === null) return DEFAULT_VALUES.uvHandedness;\n if (value === \"right\" || value === 1 || value === \"positive\") return \"right\";\n if (value === \"left\" || value === -1 || value === \"negative\") return \"left\";\n throw new TypeError(`${readerName}: uvHandedness must be \"right\" or \"left\"`);\n}\n\n/**\n * Merge format values over a base set and validate them.\n *\n * @param {object} base Current values.\n * @param {object} [options] Values to merge in.\n * @param {string} [readerName] Format name used in error messages.\n * @returns {object} A validated copy of the merged values.\n */\nexport function normalizeValues(base, options = {}, readerName = \"CjsObjFormat\")\n{\n if (!options || typeof options !== \"object\")\n {\n throw new TypeError(`${readerName}: options must be an object`);\n }\n for (const key of Object.keys(options))\n {\n if (!OPTION_KEYS.has(key))\n {\n throw new TypeError(`${readerName}: unknown option ${JSON.stringify(key)}`);\n }\n }\n\n const values = { ...base, ...options };\n const emit = normalizeEmit(values.emit, readerName);\n const classes = Object.prototype.hasOwnProperty.call(options, \"classes\")\n ? mergeClasses(base.classes || {}, options.classes, readerName)\n : { ...(base.classes || {}) };\n if ((emit === OUTPUT_GR2 || emit === OUTPUT_CMF) && !hasClasses(classes))\n {\n throw new TypeError(`${readerName}: emit \"${emit}\" requires explicit classes`);\n }\n if (typeof values.source !== \"string\" || !values.source)\n {\n values.source = DEFAULT_VALUES.source;\n }\n\n return {\n emit,\n source: values.source,\n packTangents: validateRule(\"packTangents\", values.packTangents, readerName),\n uvHandedness: normalizeUvHandedness(values.uvHandedness, readerName),\n rebuildMissingNormals: validateRule(\"rebuildMissingNormals\", values.rebuildMissingNormals, readerName),\n rebuildMissingTangents: validateRule(\"rebuildMissingTangents\", values.rebuildMissingTangents, readerName),\n rebuildMissingBiNormals: validateRule(\"rebuildMissingBiNormals\", values.rebuildMissingBiNormals, readerName),\n classes\n };\n}\n\nfunction normalizeEmit(emit, readerName)\n{\n if (emit === undefined || emit === null || emit === OUTPUT_JSON || emit === OUTPUT_OBJ_JSON || emit === OUTPUT_SHARED)\n {\n return OUTPUT_OBJ_JSON;\n }\n if (emit === OUTPUT_GR2 || emit === OUTPUT_CMF) return emit;\n throw new TypeError(`${readerName}: emit must be \"${OUTPUT_SHARED}\", \"${OUTPUT_OBJ_JSON}\", \"${OUTPUT_GR2}\", or \"${OUTPUT_CMF}\", got ${JSON.stringify(emit)}`);\n}\n\nfunction hasClasses(classes)\n{\n return !!classes && Object.values(classes).some((Class) => typeof Class === \"function\");\n}\n\n/**\n * Normalize caller input into OBJ text.\n *\n * @param {string|Uint8Array|ArrayBuffer|DataView} input Candidate OBJ text.\n * @returns {string} OBJ text.\n */\nexport function toText(input)\n{\n if (typeof input === \"string\") return input;\n if (typeof ArrayBuffer !== \"undefined\" && input instanceof ArrayBuffer)\n {\n return new TextDecoder().decode(new Uint8Array(input));\n }\n if (typeof ArrayBuffer !== \"undefined\" && ArrayBuffer.isView(input))\n {\n return new TextDecoder().decode(new Uint8Array(input.buffer, input.byteOffset, input.byteLength));\n }\n throw new TypeError(\"CjsObjFormat: input must be OBJ text or UTF-8 bytes\");\n}\n\n/**\n * Whether a shared-schema vertex channel contains data.\n *\n * @param {object} mesh Mesh record.\n * @param {string} channel Vertex channel name.\n * @returns {boolean} True when channel exists and has values.\n */\nfunction hasVertexChannel(mesh, channel)\n{\n const value = mesh && mesh.vertex && mesh.vertex[channel];\n return !!value && value.length > 0;\n}\n\n/**\n * Require one vertex channel.\n *\n * @param {object} mesh Mesh record.\n * @param {number} meshIndex Mesh index.\n * @param {string} channel Vertex channel name.\n * @param {string} feature Feature name.\n * @returns {number[]} Channel values.\n */\nfunction requireVertexChannel(mesh, meshIndex, channel, feature)\n{\n const value = mesh && mesh.vertex && mesh.vertex[channel];\n if (!value || value.length === 0)\n {\n const name = mesh && mesh.name ? JSON.stringify(mesh.name) : `#${meshIndex}`;\n throw new Error(`CjsObjFormat: ${feature} requires mesh.vertex.${channel} for mesh ${name}`);\n }\n return value;\n}\n\n/**\n * Gather all triangle indices from a mesh's index groups.\n *\n * @param {object} mesh Mesh record.\n * @param {number} meshIndex Mesh index.\n * @param {string} feature Feature name.\n * @returns {number[]} Flat triangle indices.\n */\nfunction triangleFaces(mesh, meshIndex, feature)\n{\n const faces = [];\n for (const group of mesh.indices || [])\n {\n if (group && group.faces) faces.push(...group.faces);\n }\n if (faces.length === 0)\n {\n const name = mesh && mesh.name ? JSON.stringify(mesh.name) : `#${meshIndex}`;\n throw new Error(`CjsObjFormat: ${feature} requires triangle indices for mesh ${name}`);\n }\n return faces;\n}\n\n/**\n * Evaluate a boolean/function mesh rule.\n *\n * @param {object|Function} format Format instance or constructor.\n * @param {boolean|Function} rule Rule value.\n * @param {object} context Rule context.\n * @returns {boolean} Whether the rule applies.\n */\nfunction shouldApplyMeshRule(format, rule, context)\n{\n if (typeof rule === \"function\")\n {\n const result = rule({ format, reader: format, ...context });\n if (typeof result !== \"boolean\")\n {\n throw new TypeError(`CjsObjFormat: ${context.feature} rule must return true or false`);\n }\n return result;\n }\n return rule;\n}\n\n/**\n * Apply missing-channel rebuild options to a shared JSON graph.\n *\n * @param {object|Function} format Format instance or constructor.\n * @param {object} json Shared JSON graph.\n * @param {object} values Normalized format values.\n */\nfunction rebuildMissingMeshData(format, json, values)\n{\n for (let meshIndex = 0; meshIndex < json.meshes.length; meshIndex++)\n {\n const\n mesh = json.meshes[meshIndex],\n common = { options: values, raw: null, json, mesh, meshIndex },\n shouldPackTangents = shouldApplyMeshRule(\n format,\n values.packTangents,\n { ...common, feature: \"packTangents\", channel: \"tangent\" }\n );\n\n if (!hasVertexChannel(mesh, \"normal\") && shouldApplyMeshRule(\n format,\n values.rebuildMissingNormals,\n { ...common, feature: \"rebuildMissingNormals\", channel: \"normal\" }))\n {\n mesh.vertex.normal = generateNormals(\n requireVertexChannel(mesh, meshIndex, \"position\", \"rebuildMissingNormals\"),\n triangleFaces(mesh, meshIndex, \"rebuildMissingNormals\")\n );\n }\n else if (!hasVertexChannel(mesh, \"normal\") && shouldPackTangents)\n {\n mesh.vertex.normal = generateNormals(\n requireVertexChannel(mesh, meshIndex, \"position\", \"packTangents\"),\n triangleFaces(mesh, meshIndex, \"packTangents\")\n );\n }\n\n if (!hasVertexChannel(mesh, \"tangent\") && shouldApplyMeshRule(\n format,\n values.rebuildMissingTangents,\n { ...common, feature: \"rebuildMissingTangents\", channel: \"tangent\" }))\n {\n mesh.vertex.tangent = generateTangents(\n requireVertexChannel(mesh, meshIndex, \"position\", \"rebuildMissingTangents\"),\n requireVertexChannel(mesh, meshIndex, \"normal\", \"rebuildMissingTangents\"),\n requireVertexChannel(mesh, meshIndex, \"texcoord0\", \"rebuildMissingTangents\"),\n triangleFaces(mesh, meshIndex, \"rebuildMissingTangents\"),\n { uvHandedness: values.uvHandedness }\n );\n }\n else if (!hasVertexChannel(mesh, \"tangent\") && shouldPackTangents)\n {\n mesh.vertex.tangent = generateTangents(\n requireVertexChannel(mesh, meshIndex, \"position\", \"packTangents\"),\n requireVertexChannel(mesh, meshIndex, \"normal\", \"packTangents\"),\n requireVertexChannel(mesh, meshIndex, \"texcoord0\", \"packTangents\"),\n triangleFaces(mesh, meshIndex, \"packTangents\"),\n { uvHandedness: values.uvHandedness }\n );\n }\n\n if (!hasVertexChannel(mesh, \"binormal\") && shouldApplyMeshRule(\n format,\n values.rebuildMissingBiNormals,\n { ...common, feature: \"rebuildMissingBiNormals\", channel: \"binormal\" }))\n {\n mesh.vertex.binormal = generateBiNormals(\n requireVertexChannel(mesh, meshIndex, \"normal\", \"rebuildMissingBiNormals\"),\n requireVertexChannel(mesh, meshIndex, \"tangent\", \"rebuildMissingBiNormals\"),\n { uvHandedness: values.uvHandedness }\n );\n }\n else if (!hasVertexChannel(mesh, \"binormal\") && shouldPackTangents)\n {\n mesh.vertex.binormal = generateBiNormals(\n requireVertexChannel(mesh, meshIndex, \"normal\", \"packTangents\"),\n requireVertexChannel(mesh, meshIndex, \"tangent\", \"packTangents\"),\n { uvHandedness: values.uvHandedness }\n );\n }\n\n if (shouldPackTangents)\n {\n mesh.vertex.tangent = packTangentFrames(\n requireVertexChannel(mesh, meshIndex, \"normal\", \"packTangents\"),\n requireVertexChannel(mesh, meshIndex, \"tangent\", \"packTangents\"),\n requireVertexChannel(mesh, meshIndex, \"binormal\", \"packTangents\")\n );\n mesh.vertex.normal = [];\n mesh.vertex.binormal = [];\n }\n }\n}\n\n/**\n * Read OBJ text and return the shared JSON schema.\n *\n * @param {object|Function} format Format instance or constructor.\n * @param {string|Uint8Array|ArrayBuffer|DataView} input OBJ text or UTF-8 bytes.\n * @param {object} values Normalized format values.\n * @param {string} readerName Format name.\n * @returns {object} Shared JSON graph.\n */\nexport function readWithValues(format, input, values, readerName = \"CjsObjFormat\")\n{\n const text = toText(input);\n const json = parseObjText(text, { source: values.source });\n rebuildMissingMeshData(format, json, values);\n if (values.emit === OUTPUT_CMF)\n {\n return hydrateCmf(\n buildCmfFromShared(json),\n values.classes,\n { source: values.source },\n \"CjsObjFormat CMF\"\n );\n }\n return hydrateJson(json, { classes: values.classes, source: values.source });\n}\n\nfunction buildCmfFromShared(root)\n{\n return {\n version: 1,\n metadata: null,\n meshes: (root.meshes ?? []).map((mesh) => buildCmfMesh(mesh)),\n skeletons: [],\n animations: []\n };\n}\n\nfunction buildCmfMesh(mesh)\n{\n const\n vertex = mesh.vertex ?? {},\n stride = estimateVertexStride(vertex),\n vertexCount = stride === 0 ? 0 : Math.floor((vertex.position ?? []).length / 3),\n indices = mesh.indices ?? [];\n\n return {\n name: mesh.name ?? \"\",\n decl: buildCmfDecl(vertex),\n lods: [ {\n vb: { index: 1, offset: 0, size: vertexCount * stride, stride },\n ib: { index: 2, offset: 0, size: totalIndexCount(indices) * bytesPerIndex(indices), stride: bytesPerIndex(indices) },\n areas: indices.map((group, index) => ({\n firstElement: firstTriangle(indices, index),\n elementCount: Math.floor((group.faces ?? []).length / 3)\n })),\n morphTargets: [],\n threshold: 0xffffffff,\n vertex,\n indices\n } ],\n areas: indices.map((group) => ({\n name: group.name ?? \"\",\n bounds: cmfBounds(mesh),\n bones: [],\n affectedByBones: false,\n affectedByMorphTargets: false\n })),\n boneBindings: [],\n morphTargets: { decl: [], targets: [] },\n uvDensities: [],\n bounds: cmfBounds(mesh),\n audioOcclusionMesh: {\n vertices: [],\n indices: [],\n bounds: { min: [ 0, 0, 0 ], max: [ 0, 0, 0 ] }\n },\n topology: \"TriangleList\",\n skeleton: null,\n vertex,\n indices\n };\n}\n\nfunction buildCmfDecl(vertex)\n{\n const decl = [];\n let offset = 0;\n for (const channel of [\n [ \"position\", \"Position\", 3 ],\n [ \"normal\", \"Normal\", 3 ],\n [ \"tangent\", \"Tangent\", 3 ],\n [ \"binormal\", \"Binormal\", 3 ],\n [ \"texcoord0\", \"TexCoord\", 2, 0 ],\n [ \"texcoord1\", \"TexCoord\", 2, 1 ],\n [ \"color0\", \"Color\", 4, 0 ],\n [ \"blendIndice\", \"BoneIndices\", 4, 0, \"UInt16\" ],\n [ \"blendWeight\", \"BoneWeights\", 4, 0 ]\n ])\n {\n const [ name, usage, elementCount, usageIndex = 0, type = \"Float32\" ] = channel;\n if (!Array.isArray(vertex[name]) || vertex[name].length === 0) continue;\n decl.push({ usage, usageIndex, type, elementCount, offset });\n offset += elementCount * elementTypeSize(type);\n }\n return decl;\n}\n\nfunction estimateVertexStride(vertex)\n{\n return estimateStrideFromDecl(buildCmfDecl(vertex));\n}\n\nfunction cmfBounds(mesh)\n{\n return {\n min: mesh.minBounds ?? [ 0, 0, 0 ],\n max: mesh.maxBounds ?? [ 0, 0, 0 ]\n };\n}\n\n/**\n * Inspect OBJ text without hydrating classes or applying rebuild options.\n *\n * @param {string|Uint8Array|ArrayBuffer|DataView} input OBJ text or UTF-8 bytes.\n * @param {object} values Normalized format values.\n * @returns {object} Plain summary data.\n */\nexport function inspectWithValues(input, values)\n{\n const json = parseObjText(toText(input), { source: values.source });\n return {\n source: json.grannyFileSource,\n format: \"obj\",\n meshCount: json.meshes.length,\n triangleCount: json.meshes.reduce((total, mesh) =>\n total + mesh.indices.reduce((meshTotal, group) => meshTotal + group.faces.length / 3, 0), 0),\n meshes: json.meshes.map(mesh => ({\n name: mesh.name,\n vertexCount: mesh.vertex.position.length / 3,\n triangleCount: mesh.indices.reduce((total, group) => total + group.faces.length / 3, 0),\n indexGroupCount: mesh.indices.length,\n indexGroupNames: mesh.indices.map(group => group.name),\n hasNormals: mesh.vertex.normal.length > 0,\n hasTangents: mesh.vertex.tangent.length > 0,\n hasBiNormals: mesh.vertex.binormal.length > 0,\n hasTexcoord0: mesh.vertex.texcoord0.length > 0\n }))\n };\n}\n\n/**\n * Convert format output to plain JSON-compatible data.\n *\n * @param {any} value Format output.\n * @returns {any} JSON-compatible value.\n */\n/** The shared JSON policy for this reader, under the name its callers use. */\nexport { toJsonValue };\n\n"],"names":["CLASS_KEYS","Object","freeze","Array","from","Set","GR2_CLASS_KEYS","CMF_CLASS_KEYS","OUTPUT_JSON","OUTPUT_OBJ_JSON","OUTPUT_SHARED","OUTPUT_GR2","OUTPUT_CMF","DEFAULT_VALUES","emit","source","packTangents","uvHandedness","rebuildMissingNormals","rebuildMissingTangents","rebuildMissingBiNormals","classes","OPTION_KEYS","validateClassKey","key","readerName","includes","Error","JSON","stringify","join","validateClass","Class","TypeError","mergeClasses","base","next","entries","undefined","validateRule","name","value","normalizeUvHandedness","normalizeValues","options","keys","has","values","normalizeEmit","prototype","hasOwnProperty","call","hasClasses","some","toText","input","ArrayBuffer","TextDecoder","decode","Uint8Array","isView","buffer","byteOffset","byteLength","hasVertexChannel","mesh","channel","vertex","length","requireVertexChannel","meshIndex","feature","triangleFaces","faces","group","indices","push","shouldApplyMeshRule","format","rule","context","result","reader","rebuildMissingMeshData","json","meshes","common","raw","shouldPackTangents","normal","generateNormals","tangent","generateTangents","binormal","generateBiNormals","packTangentFrames","readWithValues","text","parseObjText","hydrateCmf","buildCmfFromShared","hydrateJson","root","version","metadata","map","buildCmfMesh","skeletons","animations","stride","estimateVertexStride","vertexCount","Math","floor","position","decl","buildCmfDecl","lods","vb","index","offset","size","ib","totalIndexCount","bytesPerIndex","areas","firstElement","firstTriangle","elementCount","morphTargets","threshold","bounds","cmfBounds","bones","affectedByBones","affectedByMorphTargets","boneBindings","targets","uvDensities","audioOcclusionMesh","vertices","min","max","topology","skeleton","usage","usageIndex","type","isArray","elementTypeSize","estimateStrideFromDecl","minBounds","maxBounds","inspectWithValues","grannyFileSource","meshCount","triangleCount","reduce","total","meshTotal","indexGroupCount","indexGroupNames","hasNormals","hasTangents","hasBiNormals","hasTexcoord0","texcoord0"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"helpers.js","sources":["../../../../../../src/resource/formats/obj/core/helpers.js"],"sourcesContent":["/**\n * Internal read-pipeline glue for CjsObjFormat.\n */\n\nimport { CjsGeometryFormat } from \"../../../format/CjsGeometryFormat.js\";\nimport { toJsonWithArrayValues as toJsonValue } from \"../../../format/jsonPolicies.js\";\nimport { hydrateJson } from \"./json.js\";\nimport { parseObjText } from \"./parser.js\";\nimport {\n generateBiNormals,\n generateNormals,\n generateTangents\n} from \"#math/mesh\";\nimport {\n packTangentFrames\n} from \"#math/tangent\";\nimport { CMF_CLASS_KEYS, GR2_CLASS_KEYS } from \"../../cmf/core/constants.js\";\nimport { buildCmfFromFlatShared } from \"../../cmf/core/flatShared.js\";\nimport { hydrateCmf } from \"../../cmf/core/utils/hydration.js\";\n\nexport { CMF_CLASS_KEYS, GR2_CLASS_KEYS };\n\nexport const CLASS_KEYS = Object.freeze(Array.from(new Set([\n ...GR2_CLASS_KEYS,\n ...CMF_CLASS_KEYS\n])));\n\nexport const OUTPUT_JSON = \"json\";\nexport const OUTPUT_OBJ_JSON = \"objJson\";\nexport const OUTPUT_SHARED = \"shared\";\nexport const OUTPUT_GR2 = \"gr2\";\nexport const OUTPUT_CMF = \"cmf\";\n\nexport const DEFAULT_VALUES = Object.freeze({\n emit: OUTPUT_OBJ_JSON,\n source: \"memory\",\n packTangents: false,\n uvHandedness: \"right\",\n rebuildMissingNormals: false,\n rebuildMissingTangents: false,\n rebuildMissingBiNormals: false,\n classes: Object.freeze({})\n});\n\nconst OPTION_KEYS = new Set([\n \"emit\",\n \"source\",\n \"packTangents\",\n \"uvHandedness\",\n \"rebuildMissingNormals\",\n \"rebuildMissingTangents\",\n \"rebuildMissingBiNormals\",\n \"classes\"\n]);\n\n/**\n * Validate a `classes` node key against {@link CLASS_KEYS}.\n *\n * @param {string} key Candidate node key.\n * @param {string} [readerName] Format name used in thrown errors.\n */\nexport function validateClassKey(key, readerName = \"CjsObjFormat\")\n{\n CjsGeometryFormat.validateClassKey(key, CLASS_KEYS, readerName);\n}\n\n/**\n * Validate a single `classes` entry.\n *\n * @param {string} key Node key.\n * @param {Function} Class Candidate constructor.\n * @param {string} [readerName] Format name used in thrown errors.\n */\nexport function validateClass(key, Class, readerName = \"CjsObjFormat\")\n{\n CjsGeometryFormat.validateClass(key, Class, CLASS_KEYS, readerName);\n}\n\n/**\n * Merge and validate a class map.\n *\n * @param {object} base Current classes map.\n * @param {object} classes Incoming classes map.\n * @param {string} readerName Format name used in thrown errors.\n * @returns {object} Merged classes.\n */\nfunction mergeClasses(base, classes, readerName)\n{\n if (!classes || typeof classes !== \"object\")\n {\n throw new TypeError(`${readerName}: classes option must be an object`);\n }\n\n const next = { ...base };\n for (const [ key, Class ] of Object.entries(classes))\n {\n if (Class === null || Class === undefined)\n {\n delete next[key];\n continue;\n }\n validateClass(key, Class, readerName);\n next[key] = Class;\n }\n return next;\n}\n\n/**\n * Validate a boolean/function mesh rule.\n *\n * @param {string} name Option name.\n * @param {any} value Candidate option value.\n * @param {string} readerName Format name used in thrown errors.\n * @returns {boolean|Function} Validated rule.\n */\nfunction validateRule(name, value, readerName)\n{\n if (typeof value === \"boolean\" || typeof value === \"function\") return value;\n throw new TypeError(`${readerName}: ${name} must be true, false, or a function`);\n}\n\n/**\n * Normalize the generated UV/tangent handedness option.\n *\n * @param {any} value Candidate option value.\n * @param {string} readerName Format name used in thrown errors.\n * @returns {\"right\"|\"left\"} Normalized handedness.\n */\nfunction normalizeUvHandedness(value, readerName)\n{\n if (value === undefined || value === null) return DEFAULT_VALUES.uvHandedness;\n if (value === \"right\" || value === 1 || value === \"positive\") return \"right\";\n if (value === \"left\" || value === -1 || value === \"negative\") return \"left\";\n throw new TypeError(`${readerName}: uvHandedness must be \"right\" or \"left\"`);\n}\n\n/**\n * Merge format values over a base set and validate them.\n *\n * @param {object} base Current values.\n * @param {object} [options] Values to merge in.\n * @param {string} [readerName] Format name used in error messages.\n * @returns {object} A validated copy of the merged values.\n */\nexport function normalizeValues(base, options = {}, readerName = \"CjsObjFormat\")\n{\n if (!options || typeof options !== \"object\")\n {\n throw new TypeError(`${readerName}: options must be an object`);\n }\n for (const key of Object.keys(options))\n {\n if (!OPTION_KEYS.has(key))\n {\n throw new TypeError(`${readerName}: unknown option ${JSON.stringify(key)}`);\n }\n }\n\n const values = { ...base, ...options };\n const emit = normalizeEmit(values.emit, readerName);\n const classes = Object.prototype.hasOwnProperty.call(options, \"classes\")\n ? mergeClasses(base.classes || {}, options.classes, readerName)\n : { ...(base.classes || {}) };\n if ((emit === OUTPUT_GR2 || emit === OUTPUT_CMF) && !hasClasses(classes))\n {\n throw new TypeError(`${readerName}: emit \"${emit}\" requires explicit classes`);\n }\n if (typeof values.source !== \"string\" || !values.source)\n {\n values.source = DEFAULT_VALUES.source;\n }\n\n return {\n emit,\n source: values.source,\n packTangents: validateRule(\"packTangents\", values.packTangents, readerName),\n uvHandedness: normalizeUvHandedness(values.uvHandedness, readerName),\n rebuildMissingNormals: validateRule(\"rebuildMissingNormals\", values.rebuildMissingNormals, readerName),\n rebuildMissingTangents: validateRule(\"rebuildMissingTangents\", values.rebuildMissingTangents, readerName),\n rebuildMissingBiNormals: validateRule(\"rebuildMissingBiNormals\", values.rebuildMissingBiNormals, readerName),\n classes\n };\n}\n\nfunction normalizeEmit(emit, readerName)\n{\n if (emit === undefined || emit === null || emit === OUTPUT_JSON || emit === OUTPUT_OBJ_JSON || emit === OUTPUT_SHARED)\n {\n return OUTPUT_OBJ_JSON;\n }\n if (emit === OUTPUT_GR2 || emit === OUTPUT_CMF) return emit;\n throw new TypeError(`${readerName}: emit must be \"${OUTPUT_SHARED}\", \"${OUTPUT_OBJ_JSON}\", \"${OUTPUT_GR2}\", or \"${OUTPUT_CMF}\", got ${JSON.stringify(emit)}`);\n}\n\nfunction hasClasses(classes)\n{\n return !!classes && Object.values(classes).some((Class) => typeof Class === \"function\");\n}\n\n/**\n * Normalize caller input into OBJ text.\n *\n * @param {string|Uint8Array|ArrayBuffer|DataView} input Candidate OBJ text.\n * @returns {string} OBJ text.\n */\nexport function toText(input)\n{\n if (typeof input === \"string\") return input;\n if (typeof ArrayBuffer !== \"undefined\" && input instanceof ArrayBuffer)\n {\n return new TextDecoder().decode(new Uint8Array(input));\n }\n if (typeof ArrayBuffer !== \"undefined\" && ArrayBuffer.isView(input))\n {\n return new TextDecoder().decode(new Uint8Array(input.buffer, input.byteOffset, input.byteLength));\n }\n throw new TypeError(\"CjsObjFormat: input must be OBJ text or UTF-8 bytes\");\n}\n\n/**\n * Whether a shared-schema vertex channel contains data.\n *\n * @param {object} mesh Mesh record.\n * @param {string} channel Vertex channel name.\n * @returns {boolean} True when channel exists and has values.\n */\nfunction hasVertexChannel(mesh, channel)\n{\n const value = mesh && mesh.vertex && mesh.vertex[channel];\n return !!value && value.length > 0;\n}\n\n/**\n * Require one vertex channel.\n *\n * @param {object} mesh Mesh record.\n * @param {number} meshIndex Mesh index.\n * @param {string} channel Vertex channel name.\n * @param {string} feature Feature name.\n * @returns {number[]} Channel values.\n */\nfunction requireVertexChannel(mesh, meshIndex, channel, feature)\n{\n const value = mesh && mesh.vertex && mesh.vertex[channel];\n if (!value || value.length === 0)\n {\n const name = mesh && mesh.name ? JSON.stringify(mesh.name) : `#${meshIndex}`;\n throw new Error(`CjsObjFormat: ${feature} requires mesh.vertex.${channel} for mesh ${name}`);\n }\n return value;\n}\n\n/**\n * Gather all triangle indices from a mesh's index groups.\n *\n * @param {object} mesh Mesh record.\n * @param {number} meshIndex Mesh index.\n * @param {string} feature Feature name.\n * @returns {number[]} Flat triangle indices.\n */\nfunction triangleFaces(mesh, meshIndex, feature)\n{\n const faces = [];\n for (const group of mesh.indices || [])\n {\n if (group && group.faces) faces.push(...group.faces);\n }\n if (faces.length === 0)\n {\n const name = mesh && mesh.name ? JSON.stringify(mesh.name) : `#${meshIndex}`;\n throw new Error(`CjsObjFormat: ${feature} requires triangle indices for mesh ${name}`);\n }\n return faces;\n}\n\n/**\n * Evaluate a boolean/function mesh rule.\n *\n * @param {object|Function} format Format instance or constructor.\n * @param {boolean|Function} rule Rule value.\n * @param {object} context Rule context.\n * @returns {boolean} Whether the rule applies.\n */\nfunction shouldApplyMeshRule(format, rule, context)\n{\n if (typeof rule === \"function\")\n {\n const result = rule({ format, reader: format, ...context });\n if (typeof result !== \"boolean\")\n {\n throw new TypeError(`CjsObjFormat: ${context.feature} rule must return true or false`);\n }\n return result;\n }\n return rule;\n}\n\n/**\n * Apply missing-channel rebuild options to a shared JSON graph.\n *\n * @param {object|Function} format Format instance or constructor.\n * @param {object} json Shared JSON graph.\n * @param {object} values Normalized format values.\n */\nfunction rebuildMissingMeshData(format, json, values)\n{\n for (let meshIndex = 0; meshIndex < json.meshes.length; meshIndex++)\n {\n const\n mesh = json.meshes[meshIndex],\n common = { options: values, raw: null, json, mesh, meshIndex },\n shouldPackTangents = shouldApplyMeshRule(\n format,\n values.packTangents,\n { ...common, feature: \"packTangents\", channel: \"tangent\" }\n );\n\n if (!hasVertexChannel(mesh, \"normal\") && shouldApplyMeshRule(\n format,\n values.rebuildMissingNormals,\n { ...common, feature: \"rebuildMissingNormals\", channel: \"normal\" }))\n {\n mesh.vertex.normal = generateNormals(\n requireVertexChannel(mesh, meshIndex, \"position\", \"rebuildMissingNormals\"),\n triangleFaces(mesh, meshIndex, \"rebuildMissingNormals\")\n );\n }\n else if (!hasVertexChannel(mesh, \"normal\") && shouldPackTangents)\n {\n mesh.vertex.normal = generateNormals(\n requireVertexChannel(mesh, meshIndex, \"position\", \"packTangents\"),\n triangleFaces(mesh, meshIndex, \"packTangents\")\n );\n }\n\n if (!hasVertexChannel(mesh, \"tangent\") && shouldApplyMeshRule(\n format,\n values.rebuildMissingTangents,\n { ...common, feature: \"rebuildMissingTangents\", channel: \"tangent\" }))\n {\n mesh.vertex.tangent = generateTangents(\n requireVertexChannel(mesh, meshIndex, \"position\", \"rebuildMissingTangents\"),\n requireVertexChannel(mesh, meshIndex, \"normal\", \"rebuildMissingTangents\"),\n requireVertexChannel(mesh, meshIndex, \"texcoord0\", \"rebuildMissingTangents\"),\n triangleFaces(mesh, meshIndex, \"rebuildMissingTangents\"),\n { uvHandedness: values.uvHandedness }\n );\n }\n else if (!hasVertexChannel(mesh, \"tangent\") && shouldPackTangents)\n {\n mesh.vertex.tangent = generateTangents(\n requireVertexChannel(mesh, meshIndex, \"position\", \"packTangents\"),\n requireVertexChannel(mesh, meshIndex, \"normal\", \"packTangents\"),\n requireVertexChannel(mesh, meshIndex, \"texcoord0\", \"packTangents\"),\n triangleFaces(mesh, meshIndex, \"packTangents\"),\n { uvHandedness: values.uvHandedness }\n );\n }\n\n if (!hasVertexChannel(mesh, \"binormal\") && shouldApplyMeshRule(\n format,\n values.rebuildMissingBiNormals,\n { ...common, feature: \"rebuildMissingBiNormals\", channel: \"binormal\" }))\n {\n mesh.vertex.binormal = generateBiNormals(\n requireVertexChannel(mesh, meshIndex, \"normal\", \"rebuildMissingBiNormals\"),\n requireVertexChannel(mesh, meshIndex, \"tangent\", \"rebuildMissingBiNormals\"),\n { uvHandedness: values.uvHandedness }\n );\n }\n else if (!hasVertexChannel(mesh, \"binormal\") && shouldPackTangents)\n {\n mesh.vertex.binormal = generateBiNormals(\n requireVertexChannel(mesh, meshIndex, \"normal\", \"packTangents\"),\n requireVertexChannel(mesh, meshIndex, \"tangent\", \"packTangents\"),\n { uvHandedness: values.uvHandedness }\n );\n }\n\n if (shouldPackTangents)\n {\n mesh.vertex.tangent = packTangentFrames(\n requireVertexChannel(mesh, meshIndex, \"normal\", \"packTangents\"),\n requireVertexChannel(mesh, meshIndex, \"tangent\", \"packTangents\"),\n requireVertexChannel(mesh, meshIndex, \"binormal\", \"packTangents\")\n );\n mesh.vertex.normal = [];\n mesh.vertex.binormal = [];\n }\n }\n}\n\n/**\n * Read OBJ text and return the shared JSON schema.\n *\n * @param {object|Function} format Format instance or constructor.\n * @param {string|Uint8Array|ArrayBuffer|DataView} input OBJ text or UTF-8 bytes.\n * @param {object} values Normalized format values.\n * @param {string} readerName Format name.\n * @returns {object} Shared JSON graph.\n */\nexport function readWithValues(format, input, values, readerName = \"CjsObjFormat\")\n{\n const text = toText(input);\n const json = parseObjText(text, { source: values.source });\n rebuildMissingMeshData(format, json, values);\n if (values.emit === OUTPUT_CMF)\n {\n return hydrateCmf(\n buildCmfFromFlatShared(json),\n values.classes,\n { source: values.source },\n \"CjsObjFormat CMF\"\n );\n }\n return hydrateJson(json, { classes: values.classes, source: values.source });\n}\n\n\n/**\n * Inspect OBJ text without hydrating classes or applying rebuild options.\n *\n * @param {string|Uint8Array|ArrayBuffer|DataView} input OBJ text or UTF-8 bytes.\n * @param {object} values Normalized format values.\n * @returns {object} Plain summary data.\n */\nexport function inspectWithValues(input, values)\n{\n const json = parseObjText(toText(input), { source: values.source });\n return {\n source: json.grannyFileSource,\n format: \"obj\",\n meshCount: json.meshes.length,\n triangleCount: json.meshes.reduce((total, mesh) =>\n total + mesh.indices.reduce((meshTotal, group) => meshTotal + group.faces.length / 3, 0), 0),\n meshes: json.meshes.map(mesh => ({\n name: mesh.name,\n vertexCount: mesh.vertex.position.length / 3,\n triangleCount: mesh.indices.reduce((total, group) => total + group.faces.length / 3, 0),\n indexGroupCount: mesh.indices.length,\n indexGroupNames: mesh.indices.map(group => group.name),\n hasNormals: mesh.vertex.normal.length > 0,\n hasTangents: mesh.vertex.tangent.length > 0,\n hasBiNormals: mesh.vertex.binormal.length > 0,\n hasTexcoord0: mesh.vertex.texcoord0.length > 0\n }))\n };\n}\n\n/**\n * Convert format output to plain JSON-compatible data.\n *\n * @param {any} value Format output.\n * @returns {any} JSON-compatible value.\n */\n/** The shared JSON policy for this reader, under the name its callers use. */\nexport { toJsonValue };\n\n"],"names":["CLASS_KEYS","Object","freeze","Array","from","Set","GR2_CLASS_KEYS","CMF_CLASS_KEYS","OUTPUT_JSON","OUTPUT_OBJ_JSON","OUTPUT_SHARED","OUTPUT_GR2","OUTPUT_CMF","DEFAULT_VALUES","emit","source","packTangents","uvHandedness","rebuildMissingNormals","rebuildMissingTangents","rebuildMissingBiNormals","classes","OPTION_KEYS","validateClass","key","Class","readerName","CjsGeometryFormat","mergeClasses","base","TypeError","next","entries","undefined","validateRule","name","value","normalizeUvHandedness","normalizeValues","options","keys","has","JSON","stringify","values","normalizeEmit","prototype","hasOwnProperty","call","hasClasses","some","toText","input","ArrayBuffer","TextDecoder","decode","Uint8Array","isView","buffer","byteOffset","byteLength","hasVertexChannel","mesh","channel","vertex","length","requireVertexChannel","meshIndex","feature","Error","triangleFaces","faces","group","indices","push","shouldApplyMeshRule","format","rule","context","result","reader","rebuildMissingMeshData","json","meshes","common","raw","shouldPackTangents","normal","generateNormals","tangent","generateTangents","binormal","generateBiNormals","packTangentFrames","readWithValues","text","parseObjText","hydrateCmf","buildCmfFromFlatShared","hydrateJson","inspectWithValues","grannyFileSource","meshCount","triangleCount","reduce","total","meshTotal","map","vertexCount","position","indexGroupCount","indexGroupNames","hasNormals","hasTangents","hasBiNormals","hasTexcoord0","texcoord0"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { asUint8Array } from '#utils/bytes';
|
|
2
2
|
import { CjsFormat } from '../../format/CjsFormat.js';
|
|
3
|
-
import { DEFAULT_VALUES, normalizeValues, readWithValues, inspectWithValues, probeSupportWithValues, isOGG
|
|
3
|
+
import { DEFAULT_VALUES, normalizeValues, readWithValues, inspectWithValues, probeSupportWithValues, isOGG } from './core/helpers.js';
|
|
4
4
|
import { toJsonWithByteSummary } from '../../format/jsonPolicies.js';
|
|
5
5
|
|
|
6
6
|
const FORMAT_NAME = "CjsOggFormat";
|
|
@@ -11,7 +11,7 @@ const FORMAT_NAME = "CjsOggFormat";
|
|
|
11
11
|
* decoder, alongside raw and debug JSON output.
|
|
12
12
|
*/
|
|
13
13
|
class CjsOggFormat extends CjsFormat {
|
|
14
|
-
|
|
14
|
+
_values = DEFAULT_VALUES;
|
|
15
15
|
|
|
16
16
|
/** Creates a CjsOggFormat with caller-provided reader configuration. */
|
|
17
17
|
constructor(options = {}) {
|
|
@@ -24,7 +24,7 @@ class CjsOggFormat extends CjsFormat {
|
|
|
24
24
|
* Ogg format configuration.
|
|
25
25
|
*/
|
|
26
26
|
SetValues(options = {}) {
|
|
27
|
-
this
|
|
27
|
+
this._values = normalizeValues(this._values, {
|
|
28
28
|
inputType: "ogg",
|
|
29
29
|
...options
|
|
30
30
|
}, FORMAT_NAME);
|
|
@@ -36,7 +36,7 @@ class CjsOggFormat extends CjsFormat {
|
|
|
36
36
|
* configuration.
|
|
37
37
|
*/
|
|
38
38
|
GetValues(options = {}) {
|
|
39
|
-
return normalizeValues(this
|
|
39
|
+
return normalizeValues(this._values, {
|
|
40
40
|
inputType: "ogg",
|
|
41
41
|
...options
|
|
42
42
|
}, FORMAT_NAME);
|
|
@@ -120,15 +120,8 @@ class CjsOggFormat extends CjsFormat {
|
|
|
120
120
|
/**
|
|
121
121
|
* Emit targets for this format (canonical frozen enum).
|
|
122
122
|
*/
|
|
123
|
-
static
|
|
124
|
-
|
|
125
|
-
JSON: OUTPUT_JSON
|
|
126
|
-
});
|
|
127
|
-
static OUTPUT_OGG_JSON = "oggJson";
|
|
128
|
-
static OUTPUT_PCM = OUTPUT_PCM;
|
|
129
|
-
static OUTPUT_AUDIO = OUTPUT_AUDIO;
|
|
130
|
-
static id = "ogg";
|
|
131
|
-
static mediaTypes = Object.freeze(["audio", "video"]);
|
|
123
|
+
static id = "CjsOggFormat";
|
|
124
|
+
static mediaTypes = ["audio", "video"];
|
|
132
125
|
static outputs = CjsFormat.defineOutputs({
|
|
133
126
|
pcm: {
|
|
134
127
|
decoded: true
|
|
@@ -147,7 +140,7 @@ class CjsOggFormat extends CjsFormat {
|
|
|
147
140
|
passthrough: true
|
|
148
141
|
}
|
|
149
142
|
});
|
|
150
|
-
static extensions =
|
|
143
|
+
static extensions = [".ogg", ".oga", ".ogv"];
|
|
151
144
|
}
|
|
152
145
|
|
|
153
146
|
export { CjsOggFormat };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CjsOggFormat.js","sources":["../../../../../src/resource/formats/ogg/CjsOggFormat.js"],"sourcesContent":["import { asUint8Array } from \"#utils/bytes\";\nimport { CjsFormat } from \"../../format/CjsFormat.js\";\nimport {\n DEFAULT_VALUES,\n OUTPUT_AUDIO,\n OUTPUT_JSON,\n OUTPUT_PCM,\n OUTPUT_RAW,\n inspectWithValues,\n isOGG,\n probeSupportWithValues,\n normalizeValues,\n readWithValues,\n toJsonValue\n} from \"./core/helpers.js\";\n\nconst FORMAT_NAME = \"CjsOggFormat\";\n\n/**\n * Ogg container format profile that inspects page and stream metadata and\n * decodes Ogg Vorbis audio to PCM with the in-project pure-JS Vorbis\n * decoder, alongside raw and debug JSON output.\n */\nexport class CjsOggFormat extends CjsFormat\n{\n
|
|
1
|
+
{"version":3,"file":"CjsOggFormat.js","sources":["../../../../../src/resource/formats/ogg/CjsOggFormat.js"],"sourcesContent":["import { asUint8Array } from \"#utils/bytes\";\nimport { CjsFormat } from \"../../format/CjsFormat.js\";\nimport {\n DEFAULT_VALUES,\n OUTPUT_AUDIO,\n OUTPUT_JSON,\n OUTPUT_PCM,\n OUTPUT_RAW,\n inspectWithValues,\n isOGG,\n probeSupportWithValues,\n normalizeValues,\n readWithValues,\n toJsonValue\n} from \"./core/helpers.js\";\n\nconst FORMAT_NAME = \"CjsOggFormat\";\n\n/**\n * Ogg container format profile that inspects page and stream metadata and\n * decodes Ogg Vorbis audio to PCM with the in-project pure-JS Vorbis\n * decoder, alongside raw and debug JSON output.\n */\nexport class CjsOggFormat extends CjsFormat\n{\n _values = DEFAULT_VALUES;\n\n /** Creates a CjsOggFormat with caller-provided reader configuration. */\n constructor(options = {})\n {\n super();\n this.SetValues(options);\n }\n\n /**\n * Applies caller-provided options after normalizing supported fields for the\n * Ogg format configuration.\n */\n SetValues(options = {})\n {\n this._values = normalizeValues(this._values, { inputType: \"ogg\", ...options }, FORMAT_NAME);\n return this;\n }\n\n /**\n * Returns a snapshot of the normalized reader options for the Ogg format\n * configuration.\n */\n GetValues(options = {})\n {\n return normalizeValues(this._values, { inputType: \"ogg\", ...options }, FORMAT_NAME);\n }\n\n /**\n * Reads the primary public payload representation from the supplied input\n * for the Ogg format configuration.\n */\n Read(input, options = {})\n {\n return readWithValues(input, this.GetValues(options));\n }\n\n /**\n * Reads the primary public payload representation asynchronously for the Ogg\n * format configuration.\n */\n async ReadAsync(input, options = {})\n {\n return this.Read(input, options);\n }\n\n /**\n * Returns structural metadata without materializing the decoded payload for\n * the Ogg format configuration.\n */\n Inspect(input, options = {})\n {\n return inspectWithValues(input, this.GetValues(options));\n }\n\n /**\n * Converts the current decoded payload into a JSON-safe representation for\n * the Ogg format configuration.\n */\n ToJSON(value)\n {\n return toJsonValue(value);\n }\n\n /** Provides the one-shot Ogg payload reader entry point. */\n static read(input, options = {})\n {\n return readWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"ogg\", ...options }, FORMAT_NAME));\n }\n\n /** Provides the asynchronous one-shot Ogg payload reader entry point. */\n static async readAsync(input, options = {})\n {\n return CjsOggFormat.read(input, options);\n }\n\n /** Provides the one-shot Ogg metadata inspection entry point. */\n static inspect(input, options = {})\n {\n return inspectWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"ogg\", ...options }, FORMAT_NAME));\n }\n\n /** Checks one input against the Ogg decoder capability contract. */\n static probeSupport(input, options = {})\n {\n return probeSupportWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"ogg\", ...options }, FORMAT_NAME));\n }\n\n /** Provides the one-shot Ogg JSON conversion entry point. */\n static toJSON(value)\n {\n return toJsonValue(value);\n }\n\n /** Checks whether caller-provided bytes carry the expected Ogg signature. */\n static isOGG(input)\n {\n try\n {\n return isOGG(asUint8Array(input, \"OGG input\"));\n }\n catch\n {\n return false;\n }\n }\n\n /**\n * Emit targets for this format (canonical frozen enum).\n */\n static id = \"CjsOggFormat\";\n static mediaTypes = [ \"audio\", \"video\" ];\n static outputs = CjsFormat.defineOutputs({\n pcm: { decoded: true },\n audio: { decoded: true, probes: [ \"audio\", \"pcm\" ] },\n oggJson: { role: \"debug\", probes: [ \"oggJson\", \"raw\" ] },\n raw: { role: \"debug\", default: true, passthrough: true }\n });\n static extensions = [ \".ogg\", \".oga\", \".ogv\" ];\n}\n\nexport default CjsOggFormat;\n"],"names":["FORMAT_NAME","CjsOggFormat","CjsFormat","_values","DEFAULT_VALUES","constructor","options","SetValues","normalizeValues","inputType","GetValues","Read","input","readWithValues","ReadAsync","Inspect","inspectWithValues","ToJSON","value","toJsonValue","read","readAsync","inspect","probeSupport","probeSupportWithValues","toJSON","isOGG","asUint8Array","id","mediaTypes","outputs","defineOutputs","pcm","decoded","audio","probes","oggJson","role","raw","default","passthrough","extensions"],"mappings":"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"}
|
|
@@ -36,7 +36,7 @@ function readerFor(input) {
|
|
|
36
36
|
* payload graphs while rejecting callable and object-construction opcodes.
|
|
37
37
|
*/
|
|
38
38
|
class CjsPickleFormat extends CjsFormat {
|
|
39
|
-
|
|
39
|
+
_values = DEFAULT_VALUES;
|
|
40
40
|
|
|
41
41
|
/**
|
|
42
42
|
* Create a reusable pickle format profile.
|
|
@@ -55,7 +55,7 @@ class CjsPickleFormat extends CjsFormat {
|
|
|
55
55
|
* @returns {CjsPickleFormat} This format profile.
|
|
56
56
|
*/
|
|
57
57
|
SetValues(options = {}) {
|
|
58
|
-
this
|
|
58
|
+
this._values = this.constructor.normalizeValues(this._values, options);
|
|
59
59
|
return this;
|
|
60
60
|
}
|
|
61
61
|
|
|
@@ -66,7 +66,7 @@ class CjsPickleFormat extends CjsFormat {
|
|
|
66
66
|
* @returns {object} Detached effective values.
|
|
67
67
|
*/
|
|
68
68
|
GetValues(options = {}) {
|
|
69
|
-
return this.constructor.normalizeValues(this
|
|
69
|
+
return this.constructor.normalizeValues(this._values, options);
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
/**
|
|
@@ -234,15 +234,10 @@ class CjsPickleFormat extends CjsFormat {
|
|
|
234
234
|
}
|
|
235
235
|
};
|
|
236
236
|
}
|
|
237
|
-
static
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
});
|
|
242
|
-
static supportedProtocols = Object.freeze([0, 1, 2, 3, 4]);
|
|
243
|
-
static id = "pickle";
|
|
244
|
-
static extensions = Object.freeze([".pickle"]);
|
|
245
|
-
static mediaTypes = Object.freeze(["data"]);
|
|
237
|
+
static supportedProtocols = [0, 1, 2, 3, 4];
|
|
238
|
+
static id = "CjsPickleFormat";
|
|
239
|
+
static extensions = [".pickle"];
|
|
240
|
+
static mediaTypes = ["data"];
|
|
246
241
|
static outputs = CjsFormat.defineOutputs({
|
|
247
242
|
json: {
|
|
248
243
|
default: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CjsPickleFormat.js","sources":["../../../../../src/resource/formats/pickle/CjsPickleFormat.js"],"sourcesContent":["import { CjsFormat } from \"../../format/CjsFormat.js\";\nimport { CjsPickleProtocol0Reader } from \"./core/CjsPickleProtocol0Reader.js\";\nimport { CjsPickleProtocol4Reader } from \"./core/CjsPickleProtocol4Reader.js\";\nimport { PICKLE_LIMITS, normalizeBytes } from \"./core/pickleCommon.js\";\n\nconst OUTPUT_JSON = \"json\";\nconst OUTPUT_PAYLOAD = \"payload\";\nconst OUTPUT_RAW = \"raw\";\nconst OUTPUTS = new Set([ OUTPUT_JSON, OUTPUT_PAYLOAD, OUTPUT_RAW ]);\nconst OPTION_NAMES = new Set([ \"emit\", \"limits\" ]);\nconst DEFAULT_VALUES = {\n emit: OUTPUT_JSON,\n limits: PICKLE_LIMITS\n};\n\nconst PROTO = 0x80;\n\n/**\n * Choose the reader for one input.\n *\n * Protocol 0 is printable text and has no header. Every binary protocol opens\n * with `PROTO`, which is the only opcode the text protocol cannot begin with,\n * so the first byte separates them without guessing - and the binary reader\n * then reads the declared version out of that same opcode.\n *\n * @param {ArrayBuffer|ArrayBufferView} input Pickle bytes.\n * @returns {Function} Reader class for the input.\n */\nfunction readerFor(input)\n{\n const bytes = normalizeBytes(input);\n return bytes.length && bytes[0] === PROTO\n ? CjsPickleProtocol4Reader\n : CjsPickleProtocol0Reader;\n}\n\n/**\n * Data-only Python pickle format facade that decodes the inert subset of\n * protocols 0 through 4 into JSON-compatible values or identity-preserving\n * payload graphs while rejecting callable and object-construction opcodes.\n */\nexport class CjsPickleFormat extends CjsFormat\n{\n #values = DEFAULT_VALUES;\n\n /**\n * Create a reusable pickle format profile.\n *\n * @param {object} [options] Emit mode and bounded decoder limits.\n */\n constructor(options = {})\n {\n super();\n this.SetValues(options);\n }\n\n /**\n * Apply supported format options to this profile.\n *\n * @param {object} [options] Emit mode and partial decoder limits.\n * @returns {CjsPickleFormat} This format profile.\n */\n SetValues(options = {})\n {\n this.#values = this.constructor.normalizeValues(this.#values, options);\n return this;\n }\n\n /**\n * Return normalized format values with optional per-call overrides.\n *\n * @param {object} [options] Per-call format options.\n * @returns {object} Detached effective values.\n */\n GetValues(options = {})\n {\n return this.constructor.normalizeValues(this.#values, options);\n }\n\n /**\n * Decode according to the effective emit mode.\n *\n * @param {ArrayBuffer|ArrayBufferView} input Pickle bytes.\n * @param {object} [options] Per-call format options.\n * @returns {*} Decoded value graph.\n */\n Read(input, options = {})\n {\n return CjsPickleFormat.read(input, this.GetValues(options));\n }\n\n /**\n * Decode a JSON-compatible graph, rejecting cyclic memo references.\n *\n * @param {ArrayBuffer|ArrayBufferView} input Pickle bytes.\n * @param {object} [options] Per-call format options.\n * @returns {*} JSON-compatible decoded graph.\n */\n ReadJSON(input, options = {})\n {\n return CjsPickleFormat.readJSON(input, this.GetValues(options));\n }\n\n /**\n * Decode the inert payload while preserving memo object identity.\n *\n * @param {ArrayBuffer|ArrayBufferView} input Pickle bytes.\n * @param {object} [options] Per-call format options.\n * @returns {*} Decoded payload graph.\n */\n ReadPayload(input, options = {})\n {\n return CjsPickleFormat.readPayload(input, this.GetValues(options));\n }\n\n /**\n * Decode the exact inert graph while preserving memo aliases and cycles.\n *\n * @param {ArrayBuffer|ArrayBufferView} input Pickle bytes.\n * @param {object} [options] Per-call format options.\n * @returns {*} Decoded raw graph.\n */\n ReadRaw(input, options = {})\n {\n return CjsPickleFormat.readRaw(input, this.GetValues(options));\n }\n\n /**\n * Verify that a decoded graph is JSON-compatible without changing its shape.\n *\n * @param {*} value Candidate decoded graph.\n * @returns {*} The supplied value.\n */\n ToJSON(value)\n {\n return CjsPickleFormat.toJSON(value);\n }\n\n /**\n * Decode according to the requested emit mode.\n *\n * @param {ArrayBuffer|ArrayBufferView} input Pickle bytes.\n * @param {object} [options] Format options.\n * @returns {*} Decoded value graph.\n */\n static read(input, options = {})\n {\n const values = this.normalizeValues(DEFAULT_VALUES, options);\n if (values.emit === OUTPUT_RAW) return this.readRaw(input, values);\n if (values.emit === OUTPUT_PAYLOAD) return this.readPayload(input, values);\n return this.readJSON(input, values);\n }\n\n /**\n * Decode a JSON-compatible graph through the implementation for its protocol.\n *\n * @param {ArrayBuffer|ArrayBufferView} input Pickle bytes.\n * @param {object} [options] Format options.\n * @returns {*} JSON-compatible decoded graph.\n */\n static readJSON(input, options = {})\n {\n const values = this.normalizeValues(DEFAULT_VALUES, options);\n return new (readerFor(input))(input, values).ReadJSON();\n }\n\n /**\n * Decode an inert payload while preserving pickle memo identity.\n *\n * @param {ArrayBuffer|ArrayBufferView} input Pickle bytes.\n * @param {object} [options] Format options.\n * @returns {*} Decoded payload graph.\n */\n static readPayload(input, options = {})\n {\n const values = this.normalizeValues(DEFAULT_VALUES, options);\n return new (readerFor(input))(input, values).Read();\n }\n\n /**\n * Decode the exact inert graph while preserving memo aliases and cycles.\n *\n * @param {ArrayBuffer|ArrayBufferView} input Pickle bytes.\n * @param {object} [options] Format options.\n * @returns {*} Decoded raw graph.\n */\n static readRaw(input, options = {})\n {\n return this.readPayload(input, options);\n }\n\n /**\n * Verify that a decoded graph is JSON-compatible without changing its shape.\n *\n * @param {*} value Candidate decoded graph.\n * @returns {*} The supplied value.\n */\n static toJSON(value)\n {\n return CjsPickleProtocol0Reader.ToJSON(value);\n }\n\n /** Validate pickle structure and return format metadata. */\n static inspect(input, options = {})\n {\n const { source: _source, ...readOptions } = options;\n const value = this.readPayload(input, readOptions);\n const bytes = normalizeBytes(input);\n const byteLength = bytes.byteLength;\n return {\n protocol: bytes.length && bytes[0] === PROTO ? bytes[1] : 0,\n byteLength,\n rootType: value === null ? \"null\" : Array.isArray(value) ? \"array\" : typeof value\n };\n }\n\n /** Return synchronous advisory support from a bounded protocol-0 decode. */\n\n /**\n * Normalize a format profile and partial override into detached effective\n * values.\n *\n * @param {object} base Existing normalized values.\n * @param {object} [options] Partial emit and limit overrides.\n * @returns {object} Detached normalized values.\n */\n static normalizeValues(base, options = {})\n {\n if (!options || typeof options !== \"object\" || Array.isArray(options))\n {\n throw new TypeError(\"CjsPickleFormat options must be an object.\");\n }\n for (const name of Object.keys(options))\n {\n if (!OPTION_NAMES.has(name))\n {\n throw new TypeError(`CjsPickleFormat unknown option ${JSON.stringify(name)}.`);\n }\n }\n\n const emit = options.emit ?? base.emit;\n if (!OUTPUTS.has(emit))\n {\n throw new TypeError(`CjsPickleFormat unknown emit value ${JSON.stringify(emit)}.`);\n }\n\n const baseLimits = base.limits || PICKLE_LIMITS;\n const optionLimits = options.limits ?? {};\n if (!optionLimits || typeof optionLimits !== \"object\" || Array.isArray(optionLimits))\n {\n throw new TypeError(\"CjsPickleFormat limits must be an object.\");\n }\n\n return {\n emit,\n limits: {\n ...baseLimits,\n ...optionLimits\n }\n };\n }\n\n static Output = Object.freeze({\n JSON: OUTPUT_JSON,\n PAYLOAD: OUTPUT_PAYLOAD,\n RAW: OUTPUT_RAW\n });\n static supportedProtocols = Object.freeze([ 0, 1, 2, 3, 4 ]);\n static id = \"pickle\";\n static extensions = Object.freeze([ \".pickle\" ]);\n static mediaTypes = Object.freeze([ \"data\" ]);\n static outputs = CjsFormat.defineOutputs({\n json: { default: true, decoded: true },\n payload: { decoded: true },\n raw: { role: \"debug\", decoded: true }\n });\n}\n\nexport default CjsPickleFormat;\n"],"names":["OUTPUT_JSON","OUTPUT_PAYLOAD","OUTPUT_RAW","OUTPUTS","Set","OPTION_NAMES","DEFAULT_VALUES","emit","limits","PICKLE_LIMITS","PROTO","readerFor","input","bytes","normalizeBytes","length","CjsPickleProtocol4Reader","CjsPickleProtocol0Reader","CjsPickleFormat","CjsFormat","constructor","options","SetValues","normalizeValues","GetValues","Read","read","ReadJSON","readJSON","ReadPayload","readPayload","ReadRaw","readRaw","ToJSON","value","toJSON","values","inspect","source","_source","readOptions","byteLength","protocol","rootType","Array","isArray","base","TypeError","name","Object","keys","has","JSON","stringify","baseLimits","optionLimits","Output","freeze","PAYLOAD","RAW","supportedProtocols","id","extensions","mediaTypes","outputs","defineOutputs","json","default","decoded","payload","raw","role"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CjsPickleFormat.js","sources":["../../../../../src/resource/formats/pickle/CjsPickleFormat.js"],"sourcesContent":["import { CjsFormat } from \"../../format/CjsFormat.js\";\nimport { CjsPickleProtocol0Reader } from \"./core/CjsPickleProtocol0Reader.js\";\nimport { CjsPickleProtocol4Reader } from \"./core/CjsPickleProtocol4Reader.js\";\nimport { PICKLE_LIMITS, normalizeBytes } from \"./core/pickleCommon.js\";\n\nconst OUTPUT_JSON = \"json\";\nconst OUTPUT_PAYLOAD = \"payload\";\nconst OUTPUT_RAW = \"raw\";\nconst OUTPUTS = new Set([ OUTPUT_JSON, OUTPUT_PAYLOAD, OUTPUT_RAW ]);\nconst OPTION_NAMES = new Set([ \"emit\", \"limits\" ]);\nconst DEFAULT_VALUES = {\n emit: OUTPUT_JSON,\n limits: PICKLE_LIMITS\n};\n\nconst PROTO = 0x80;\n\n/**\n * Choose the reader for one input.\n *\n * Protocol 0 is printable text and has no header. Every binary protocol opens\n * with `PROTO`, which is the only opcode the text protocol cannot begin with,\n * so the first byte separates them without guessing - and the binary reader\n * then reads the declared version out of that same opcode.\n *\n * @param {ArrayBuffer|ArrayBufferView} input Pickle bytes.\n * @returns {Function} Reader class for the input.\n */\nfunction readerFor(input)\n{\n const bytes = normalizeBytes(input);\n return bytes.length && bytes[0] === PROTO\n ? CjsPickleProtocol4Reader\n : CjsPickleProtocol0Reader;\n}\n\n/**\n * Data-only Python pickle format facade that decodes the inert subset of\n * protocols 0 through 4 into JSON-compatible values or identity-preserving\n * payload graphs while rejecting callable and object-construction opcodes.\n */\nexport class CjsPickleFormat extends CjsFormat\n{\n _values = DEFAULT_VALUES;\n\n /**\n * Create a reusable pickle format profile.\n *\n * @param {object} [options] Emit mode and bounded decoder limits.\n */\n constructor(options = {})\n {\n super();\n this.SetValues(options);\n }\n\n /**\n * Apply supported format options to this profile.\n *\n * @param {object} [options] Emit mode and partial decoder limits.\n * @returns {CjsPickleFormat} This format profile.\n */\n SetValues(options = {})\n {\n this._values = this.constructor.normalizeValues(this._values, options);\n return this;\n }\n\n /**\n * Return normalized format values with optional per-call overrides.\n *\n * @param {object} [options] Per-call format options.\n * @returns {object} Detached effective values.\n */\n GetValues(options = {})\n {\n return this.constructor.normalizeValues(this._values, options);\n }\n\n /**\n * Decode according to the effective emit mode.\n *\n * @param {ArrayBuffer|ArrayBufferView} input Pickle bytes.\n * @param {object} [options] Per-call format options.\n * @returns {*} Decoded value graph.\n */\n Read(input, options = {})\n {\n return CjsPickleFormat.read(input, this.GetValues(options));\n }\n\n /**\n * Decode a JSON-compatible graph, rejecting cyclic memo references.\n *\n * @param {ArrayBuffer|ArrayBufferView} input Pickle bytes.\n * @param {object} [options] Per-call format options.\n * @returns {*} JSON-compatible decoded graph.\n */\n ReadJSON(input, options = {})\n {\n return CjsPickleFormat.readJSON(input, this.GetValues(options));\n }\n\n /**\n * Decode the inert payload while preserving memo object identity.\n *\n * @param {ArrayBuffer|ArrayBufferView} input Pickle bytes.\n * @param {object} [options] Per-call format options.\n * @returns {*} Decoded payload graph.\n */\n ReadPayload(input, options = {})\n {\n return CjsPickleFormat.readPayload(input, this.GetValues(options));\n }\n\n /**\n * Decode the exact inert graph while preserving memo aliases and cycles.\n *\n * @param {ArrayBuffer|ArrayBufferView} input Pickle bytes.\n * @param {object} [options] Per-call format options.\n * @returns {*} Decoded raw graph.\n */\n ReadRaw(input, options = {})\n {\n return CjsPickleFormat.readRaw(input, this.GetValues(options));\n }\n\n /**\n * Verify that a decoded graph is JSON-compatible without changing its shape.\n *\n * @param {*} value Candidate decoded graph.\n * @returns {*} The supplied value.\n */\n ToJSON(value)\n {\n return CjsPickleFormat.toJSON(value);\n }\n\n /**\n * Decode according to the requested emit mode.\n *\n * @param {ArrayBuffer|ArrayBufferView} input Pickle bytes.\n * @param {object} [options] Format options.\n * @returns {*} Decoded value graph.\n */\n static read(input, options = {})\n {\n const values = this.normalizeValues(DEFAULT_VALUES, options);\n if (values.emit === OUTPUT_RAW) return this.readRaw(input, values);\n if (values.emit === OUTPUT_PAYLOAD) return this.readPayload(input, values);\n return this.readJSON(input, values);\n }\n\n /**\n * Decode a JSON-compatible graph through the implementation for its protocol.\n *\n * @param {ArrayBuffer|ArrayBufferView} input Pickle bytes.\n * @param {object} [options] Format options.\n * @returns {*} JSON-compatible decoded graph.\n */\n static readJSON(input, options = {})\n {\n const values = this.normalizeValues(DEFAULT_VALUES, options);\n return new (readerFor(input))(input, values).ReadJSON();\n }\n\n /**\n * Decode an inert payload while preserving pickle memo identity.\n *\n * @param {ArrayBuffer|ArrayBufferView} input Pickle bytes.\n * @param {object} [options] Format options.\n * @returns {*} Decoded payload graph.\n */\n static readPayload(input, options = {})\n {\n const values = this.normalizeValues(DEFAULT_VALUES, options);\n return new (readerFor(input))(input, values).Read();\n }\n\n /**\n * Decode the exact inert graph while preserving memo aliases and cycles.\n *\n * @param {ArrayBuffer|ArrayBufferView} input Pickle bytes.\n * @param {object} [options] Format options.\n * @returns {*} Decoded raw graph.\n */\n static readRaw(input, options = {})\n {\n return this.readPayload(input, options);\n }\n\n /**\n * Verify that a decoded graph is JSON-compatible without changing its shape.\n *\n * @param {*} value Candidate decoded graph.\n * @returns {*} The supplied value.\n */\n static toJSON(value)\n {\n return CjsPickleProtocol0Reader.ToJSON(value);\n }\n\n /** Validate pickle structure and return format metadata. */\n static inspect(input, options = {})\n {\n const { source: _source, ...readOptions } = options;\n const value = this.readPayload(input, readOptions);\n const bytes = normalizeBytes(input);\n const byteLength = bytes.byteLength;\n return {\n protocol: bytes.length && bytes[0] === PROTO ? bytes[1] : 0,\n byteLength,\n rootType: value === null ? \"null\" : Array.isArray(value) ? \"array\" : typeof value\n };\n }\n\n /** Return synchronous advisory support from a bounded protocol-0 decode. */\n\n /**\n * Normalize a format profile and partial override into detached effective\n * values.\n *\n * @param {object} base Existing normalized values.\n * @param {object} [options] Partial emit and limit overrides.\n * @returns {object} Detached normalized values.\n */\n static normalizeValues(base, options = {})\n {\n if (!options || typeof options !== \"object\" || Array.isArray(options))\n {\n throw new TypeError(\"CjsPickleFormat options must be an object.\");\n }\n for (const name of Object.keys(options))\n {\n if (!OPTION_NAMES.has(name))\n {\n throw new TypeError(`CjsPickleFormat unknown option ${JSON.stringify(name)}.`);\n }\n }\n\n const emit = options.emit ?? base.emit;\n if (!OUTPUTS.has(emit))\n {\n throw new TypeError(`CjsPickleFormat unknown emit value ${JSON.stringify(emit)}.`);\n }\n\n const baseLimits = base.limits || PICKLE_LIMITS;\n const optionLimits = options.limits ?? {};\n if (!optionLimits || typeof optionLimits !== \"object\" || Array.isArray(optionLimits))\n {\n throw new TypeError(\"CjsPickleFormat limits must be an object.\");\n }\n\n return {\n emit,\n limits: {\n ...baseLimits,\n ...optionLimits\n }\n };\n }\n\n static supportedProtocols = [ 0, 1, 2, 3, 4 ];\n static id = \"CjsPickleFormat\";\n static extensions = [ \".pickle\" ];\n static mediaTypes = [ \"data\" ];\n static outputs = CjsFormat.defineOutputs({\n json: { default: true, decoded: true },\n payload: { decoded: true },\n raw: { role: \"debug\", decoded: true }\n });\n}\n\nexport default CjsPickleFormat;\n"],"names":["OUTPUT_JSON","OUTPUT_PAYLOAD","OUTPUT_RAW","OUTPUTS","Set","OPTION_NAMES","DEFAULT_VALUES","emit","limits","PICKLE_LIMITS","PROTO","readerFor","input","bytes","normalizeBytes","length","CjsPickleProtocol4Reader","CjsPickleProtocol0Reader","CjsPickleFormat","CjsFormat","_values","constructor","options","SetValues","normalizeValues","GetValues","Read","read","ReadJSON","readJSON","ReadPayload","readPayload","ReadRaw","readRaw","ToJSON","value","toJSON","values","inspect","source","_source","readOptions","byteLength","protocol","rootType","Array","isArray","base","TypeError","name","Object","keys","has","JSON","stringify","baseLimits","optionLimits","supportedProtocols","id","extensions","mediaTypes","outputs","defineOutputs","json","default","decoded","payload","raw","role"],"mappings":"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"}
|
|
@@ -14,8 +14,8 @@ const PROTOCOL = 0;
|
|
|
14
14
|
* protocol 0 spells its opcodes, which is as printable ASCII lines.
|
|
15
15
|
*/
|
|
16
16
|
class CjsPickleProtocol0Reader {
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
_bytes;
|
|
18
|
+
_limits;
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
21
|
* Bind one byte source and its resource limits.
|
|
@@ -24,10 +24,10 @@ class CjsPickleProtocol0Reader {
|
|
|
24
24
|
* @param {object} [options] Reader options containing optional limits.
|
|
25
25
|
*/
|
|
26
26
|
constructor(input, options = {}) {
|
|
27
|
-
this
|
|
28
|
-
this
|
|
29
|
-
if (this
|
|
30
|
-
throw pickleError("CJS_PICKLE_FORMAT_LIMIT_EXCEEDED", `Pickle input exceeds maxInputBytes (${this
|
|
27
|
+
this._bytes = normalizeBytes(input);
|
|
28
|
+
this._limits = normalizeLimits(options.limits ?? options);
|
|
29
|
+
if (this._bytes.byteLength > this._limits.maxInputBytes) {
|
|
30
|
+
throw pickleError("CJS_PICKLE_FORMAT_LIMIT_EXCEEDED", `Pickle input exceeds maxInputBytes (${this._limits.maxInputBytes}).`, 0, PROTOCOL);
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
|
|
@@ -37,7 +37,7 @@ class CjsPickleProtocol0Reader {
|
|
|
37
37
|
* @returns {*} Decoded scalar, array, or plain object graph.
|
|
38
38
|
*/
|
|
39
39
|
Read() {
|
|
40
|
-
return decode(this
|
|
40
|
+
return decode(this._bytes, this._limits);
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CjsPickleProtocol0Reader.js","sources":["../../../../../../src/resource/formats/pickle/core/CjsPickleProtocol0Reader.js"],"sourcesContent":["import {\n MARK,\n PICKLE_LIMITS,\n append,\n chargeOperation,\n createGlobalMarker,\n displayOpcode,\n getMemo,\n normalizeBytes,\n normalizeLimits,\n pickleError,\n push,\n putMemo,\n readDictionary,\n readSequence,\n reduce,\n setItem,\n stateError,\n stop,\n assertJSONCompatible,\n createState\n} from \"./pickleCommon.js\";\n\nexport const PICKLE_PROTOCOL_0_LIMITS = PICKLE_LIMITS;\n\nconst PROTOCOL = 0;\n\n/**\n * Construction-bound decoder for the inert data subset of Python pickle\n * protocol 0.\n *\n * The reader never imports modules, resolves globals, invokes reducers, or\n * constructs Python objects. Unsupported opcodes fail closed at their byte\n * offset. Everything about what a decoded value may be - limits, memo,\n * containers, the closed set of rebuildable globals - lives in `pickleCommon`\n * and is shared with the binary-protocol reader; this file owns only how\n * protocol 0 spells its opcodes, which is as printable ASCII lines.\n */\nexport class CjsPickleProtocol0Reader\n{\n #bytes;\n #limits;\n\n /**\n * Bind one byte source and its resource limits.\n *\n * @param {ArrayBuffer|ArrayBufferView} input Pickle protocol-0 bytes.\n * @param {object} [options] Reader options containing optional limits.\n */\n constructor(input, options = {})\n {\n this.#bytes = normalizeBytes(input);\n this.#limits = normalizeLimits(options.limits ?? options);\n\n if (this.#bytes.byteLength > this.#limits.maxInputBytes)\n {\n throw pickleError(\n \"CJS_PICKLE_FORMAT_LIMIT_EXCEEDED\",\n `Pickle input exceeds maxInputBytes (${this.#limits.maxInputBytes}).`,\n 0,\n PROTOCOL\n );\n }\n }\n\n /**\n * Decode an inert JavaScript value while preserving pickle memo identity.\n *\n * @returns {*} Decoded scalar, array, or plain object graph.\n */\n Read()\n {\n return decode(this.#bytes, this.#limits);\n }\n\n /**\n * Decode a value and reject cycles or values JSON cannot represent.\n *\n * @returns {*} JSON-compatible decoded graph.\n */\n ReadJSON()\n {\n const value = this.Read();\n assertJSONCompatible(value);\n return value;\n }\n\n /**\n * Verify that a decoded value can cross the JSON boundary unchanged.\n *\n * @param {*} value Candidate decoded graph.\n * @returns {*} The supplied value.\n */\n static ToJSON(value)\n {\n assertJSONCompatible(value);\n return value;\n }\n}\n\nfunction decode(bytes, limits)\n{\n const state = createState(bytes, limits, PROTOCOL);\n\n while (state.offset < bytes.byteLength)\n {\n const opcodeOffset = state.offset;\n const opcode = bytes[state.offset++];\n\n chargeOperation(state, opcodeOffset);\n\n switch (opcode)\n {\n case 0x28: // MARK\n state.marks.push(state.stack.length);\n push(state, MARK, opcodeOffset);\n break;\n\n case 0x2e: // STOP\n return stop(state, opcodeOffset);\n\n case 0x46: // FLOAT\n push(state, readFloat(state, opcodeOffset), opcodeOffset);\n break;\n\n case 0x49: // INT\n push(state, readInteger(state, opcodeOffset, false), opcodeOffset);\n break;\n\n case 0x4c: // LONG\n push(state, readInteger(state, opcodeOffset, true), opcodeOffset);\n break;\n\n case 0x4e: // NONE\n push(state, null, opcodeOffset);\n break;\n\n case 0x53: // STRING\n push(state, readString(state, opcodeOffset), opcodeOffset);\n break;\n\n case 0x56: // UNICODE\n push(state, readUnicode(state, opcodeOffset), opcodeOffset);\n break;\n\n case 0x61: // APPEND\n append(state, opcodeOffset);\n break;\n\n case 0x64: // DICT\n push(state, readDictionary(state, opcodeOffset), opcodeOffset);\n break;\n\n case 0x67: // GET\n getMemo(state, readMemoID(state, opcodeOffset), opcodeOffset);\n break;\n\n case 0x6c: // LIST\n push(state, readSequence(state, opcodeOffset, true), opcodeOffset);\n break;\n\n case 0x74: // TUPLE\n push(state, readSequence(state, opcodeOffset, false), opcodeOffset);\n break;\n\n case 0x70: // PUT\n putMemo(state, readMemoID(state, opcodeOffset), opcodeOffset);\n break;\n\n case 0x73: // SETITEM\n setItem(state, opcodeOffset);\n break;\n\n case 0x63: // GLOBAL\n push(state, readGlobal(state, opcodeOffset), opcodeOffset);\n break;\n\n case 0x52: // REDUCE\n reduce(state, opcodeOffset);\n break;\n\n default:\n throw stateError(\n state,\n \"CJS_PICKLE_FORMAT_OPCODE_UNSUPPORTED\",\n `Data-only pickle protocol 0 rejects opcode ${displayOpcode(opcode)}.`,\n opcodeOffset\n );\n }\n }\n\n throw stateError(\n state,\n \"CJS_PICKLE_FORMAT_STOP_MISSING\",\n \"Pickle input ended without a STOP opcode.\",\n state.offset\n );\n}\n\nfunction readFloat(state, offset)\n{\n const value = readAsciiLine(state, state.limits.maxStringBytes, offset);\n if (!/^[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?$/u.test(value))\n {\n throw stateError(\n state,\n \"CJS_PICKLE_FORMAT_NUMBER_INVALID\",\n `Pickle FLOAT value is invalid: ${JSON.stringify(value)}.`,\n offset\n );\n }\n\n const result = Number(value);\n if (!Number.isFinite(result))\n {\n throw stateError(\n state,\n \"CJS_PICKLE_FORMAT_NUMBER_INVALID\",\n \"Pickle FLOAT must be finite for JSON-compatible output.\",\n offset\n );\n }\n return result;\n}\n\nfunction readInteger(state, offset, isLong)\n{\n let value = readAsciiLine(state, 128, offset);\n\n if (!isLong && value === \"00\") return false;\n if (!isLong && value === \"01\") return true;\n if (isLong && value.endsWith(\"L\")) value = value.slice(0, -1);\n\n if (!/^[+-]?\\d+$/u.test(value))\n {\n throw stateError(\n state,\n \"CJS_PICKLE_FORMAT_NUMBER_INVALID\",\n `Pickle integer value is invalid: ${JSON.stringify(value)}.`,\n offset\n );\n }\n\n const result = BigInt(value);\n if (result >= BigInt(Number.MIN_SAFE_INTEGER)\n && result <= BigInt(Number.MAX_SAFE_INTEGER))\n {\n return Number(result);\n }\n return result.toString();\n}\n\nfunction readString(state, offset)\n{\n const bytes = readLine(state, state.limits.maxStringBytes, offset);\n if (bytes.byteLength < 2)\n {\n throw stateError(\n state,\n \"CJS_PICKLE_FORMAT_STRING_INVALID\",\n \"Pickle STRING must be a quoted Python string literal.\",\n offset\n );\n }\n\n const quote = bytes[0];\n if ((quote !== 0x27 && quote !== 0x22)\n || bytes[bytes.byteLength - 1] !== quote)\n {\n throw stateError(\n state,\n \"CJS_PICKLE_FORMAT_STRING_INVALID\",\n \"Pickle STRING must use matching single or double quotes.\",\n offset\n );\n }\n\n const result = [];\n for (let index = 1; index < bytes.byteLength - 1; index += 1)\n {\n const byte = bytes[index];\n if (byte !== 0x5c)\n {\n result.push(String.fromCharCode(byte));\n continue;\n }\n\n index += 1;\n if (index >= bytes.byteLength - 1)\n {\n throw stateError(\n state,\n \"CJS_PICKLE_FORMAT_STRING_INVALID\",\n \"Pickle STRING ends with an incomplete escape.\",\n offset\n );\n }\n\n const escaped = bytes[index];\n const simple = decodeSimpleEscape(escaped);\n if (simple !== null)\n {\n result.push(String.fromCharCode(simple));\n }\n else if (escaped === 0x78)\n {\n result.push(String.fromCharCode(readHex(state, bytes, index + 1, 2, offset)));\n index += 2;\n }\n else if (escaped >= 0x30 && escaped <= 0x37)\n {\n let digits = String.fromCharCode(escaped);\n while (digits.length < 3\n && index + 1 < bytes.byteLength - 1\n && bytes[index + 1] >= 0x30\n && bytes[index + 1] <= 0x37)\n {\n index += 1;\n digits += String.fromCharCode(bytes[index]);\n }\n result.push(String.fromCharCode(Number.parseInt(digits, 8)));\n }\n else\n {\n throw stateError(\n state,\n \"CJS_PICKLE_FORMAT_STRING_INVALID\",\n `Pickle STRING contains unsupported escape \\\\${String.fromCharCode(escaped)}.`,\n offset\n );\n }\n }\n return result.join(\"\");\n}\n\nfunction readUnicode(state, offset)\n{\n const bytes = readLine(state, state.limits.maxStringBytes, offset);\n const result = [];\n\n for (let index = 0; index < bytes.byteLength; index += 1)\n {\n const byte = bytes[index];\n if (byte !== 0x5c || index + 1 >= bytes.byteLength)\n {\n result.push(String.fromCharCode(byte));\n continue;\n }\n\n const escaped = bytes[index + 1];\n if (escaped === 0x75)\n {\n result.push(String.fromCharCode(readHex(state, bytes, index + 2, 4, offset)));\n index += 5;\n }\n else if (escaped === 0x55)\n {\n const codePoint = readHex(state, bytes, index + 2, 8, offset);\n if (codePoint > 0x10ffff)\n {\n throw stateError(\n state,\n \"CJS_PICKLE_FORMAT_STRING_INVALID\",\n `Pickle UNICODE code point is out of range: ${codePoint}.`,\n offset\n );\n }\n result.push(String.fromCodePoint(codePoint));\n index += 9;\n }\n else\n {\n result.push(\"\\\\\");\n }\n }\n return result.join(\"\");\n}\n\nfunction readMemoID(state, offset)\n{\n const value = readAsciiLine(state, 64, offset);\n if (!/^\\d+$/u.test(value))\n {\n throw stateError(\n state,\n \"CJS_PICKLE_FORMAT_MEMO_INVALID\",\n `Pickle memo ID is invalid: ${JSON.stringify(value)}.`,\n offset\n );\n }\n return Number(value);\n}\n\n/** Reads a GLOBAL, and refuses every name outside the closed set. */\nfunction readGlobal(state, offset)\n{\n const module = decodeAscii(readLine(state, state.limits.maxStringBytes, offset));\n const attribute = decodeAscii(readLine(state, state.limits.maxStringBytes, offset));\n\n return createGlobalMarker(state, `${module}.${attribute}`, offset);\n}\n\n/** Decodes a GLOBAL's module or attribute line, which is always ASCII. */\nfunction decodeAscii(bytes)\n{\n let result = \"\";\n\n for (const byte of bytes) result += String.fromCharCode(byte);\n\n return result.trim();\n}\n\nfunction readAsciiLine(state, limit, offset)\n{\n const bytes = readLine(state, limit, offset);\n let result = \"\";\n for (const byte of bytes)\n {\n if (byte > 0x7f)\n {\n throw stateError(\n state,\n \"CJS_PICKLE_FORMAT_STRING_INVALID\",\n \"Pickle control line must contain ASCII bytes.\",\n offset\n );\n }\n result += String.fromCharCode(byte);\n }\n return result;\n}\n\nfunction readLine(state, limit, offset)\n{\n const start = state.offset;\n while (state.offset < state.bytes.byteLength && state.bytes[state.offset] !== 0x0a)\n {\n state.offset += 1;\n if (state.offset - start > limit)\n {\n throw stateError(\n state,\n \"CJS_PICKLE_FORMAT_LIMIT_EXCEEDED\",\n `Pickle line exceeds its ${limit}-byte limit.`,\n offset\n );\n }\n }\n\n if (state.offset >= state.bytes.byteLength)\n {\n throw stateError(\n state,\n \"CJS_PICKLE_FORMAT_EOF\",\n \"Pickle line is missing its newline terminator.\",\n offset\n );\n }\n\n const result = state.bytes.subarray(start, state.offset);\n state.offset += 1;\n return result;\n}\n\nfunction readHex(state, bytes, start, length, offset)\n{\n if (start + length > bytes.byteLength)\n {\n throw stateError(\n state,\n \"CJS_PICKLE_FORMAT_STRING_INVALID\",\n \"Pickle escape sequence is truncated.\",\n offset\n );\n }\n\n let result = 0;\n for (let index = 0; index < length; index += 1)\n {\n const value = hexValue(bytes[start + index]);\n if (value === -1)\n {\n throw stateError(\n state,\n \"CJS_PICKLE_FORMAT_STRING_INVALID\",\n \"Pickle escape sequence contains a non-hexadecimal digit.\",\n offset\n );\n }\n result = result * 16 + value;\n }\n return result;\n}\n\nfunction hexValue(byte)\n{\n if (byte >= 0x30 && byte <= 0x39) return byte - 0x30;\n if (byte >= 0x41 && byte <= 0x46) return byte - 0x41 + 10;\n if (byte >= 0x61 && byte <= 0x66) return byte - 0x61 + 10;\n return -1;\n}\n\nfunction decodeSimpleEscape(byte)\n{\n const values = {\n 0x22: 0x22,\n 0x27: 0x27,\n 0x5c: 0x5c,\n 0x61: 0x07,\n 0x62: 0x08,\n 0x66: 0x0c,\n 0x6e: 0x0a,\n 0x72: 0x0d,\n 0x74: 0x09,\n 0x76: 0x0b\n };\n return Object.hasOwn(values, byte) ? values[byte] : null;\n}\n\nexport default CjsPickleProtocol0Reader;\n"],"names":["PROTOCOL","CjsPickleProtocol0Reader","constructor","input","options","normalizeBytes","normalizeLimits","limits","byteLength","maxInputBytes","pickleError","Read","decode","ReadJSON","value","assertJSONCompatible","ToJSON","bytes","state","createState","offset","opcodeOffset","opcode","chargeOperation","marks","push","stack","length","MARK","stop","readFloat","readInteger","readString","readUnicode","append","readDictionary","getMemo","readMemoID","readSequence","putMemo","setItem","readGlobal","reduce","stateError","displayOpcode","readAsciiLine","maxStringBytes","test","JSON","stringify","result","Number","isFinite","isLong","endsWith","slice","BigInt","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","toString","readLine","quote","index","byte","String","fromCharCode","escaped","simple","decodeSimpleEscape","readHex","digits","parseInt","join","codePoint","fromCodePoint","module","decodeAscii","attribute","createGlobalMarker","trim","limit","start","subarray","hexValue","values","Object","hasOwn"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CjsPickleProtocol0Reader.js","sources":["../../../../../../src/resource/formats/pickle/core/CjsPickleProtocol0Reader.js"],"sourcesContent":["import {\n MARK,\n PICKLE_LIMITS,\n append,\n chargeOperation,\n createGlobalMarker,\n displayOpcode,\n getMemo,\n normalizeBytes,\n normalizeLimits,\n pickleError,\n push,\n putMemo,\n readDictionary,\n readSequence,\n reduce,\n setItem,\n stateError,\n stop,\n assertJSONCompatible,\n createState\n} from \"./pickleCommon.js\";\n\nexport const PICKLE_PROTOCOL_0_LIMITS = PICKLE_LIMITS;\n\nconst PROTOCOL = 0;\n\n/**\n * Construction-bound decoder for the inert data subset of Python pickle\n * protocol 0.\n *\n * The reader never imports modules, resolves globals, invokes reducers, or\n * constructs Python objects. Unsupported opcodes fail closed at their byte\n * offset. Everything about what a decoded value may be - limits, memo,\n * containers, the closed set of rebuildable globals - lives in `pickleCommon`\n * and is shared with the binary-protocol reader; this file owns only how\n * protocol 0 spells its opcodes, which is as printable ASCII lines.\n */\nexport class CjsPickleProtocol0Reader\n{\n _bytes;\n _limits;\n\n /**\n * Bind one byte source and its resource limits.\n *\n * @param {ArrayBuffer|ArrayBufferView} input Pickle protocol-0 bytes.\n * @param {object} [options] Reader options containing optional limits.\n */\n constructor(input, options = {})\n {\n this._bytes = normalizeBytes(input);\n this._limits = normalizeLimits(options.limits ?? options);\n\n if (this._bytes.byteLength > this._limits.maxInputBytes)\n {\n throw pickleError(\n \"CJS_PICKLE_FORMAT_LIMIT_EXCEEDED\",\n `Pickle input exceeds maxInputBytes (${this._limits.maxInputBytes}).`,\n 0,\n PROTOCOL\n );\n }\n }\n\n /**\n * Decode an inert JavaScript value while preserving pickle memo identity.\n *\n * @returns {*} Decoded scalar, array, or plain object graph.\n */\n Read()\n {\n return decode(this._bytes, this._limits);\n }\n\n /**\n * Decode a value and reject cycles or values JSON cannot represent.\n *\n * @returns {*} JSON-compatible decoded graph.\n */\n ReadJSON()\n {\n const value = this.Read();\n assertJSONCompatible(value);\n return value;\n }\n\n /**\n * Verify that a decoded value can cross the JSON boundary unchanged.\n *\n * @param {*} value Candidate decoded graph.\n * @returns {*} The supplied value.\n */\n static ToJSON(value)\n {\n assertJSONCompatible(value);\n return value;\n }\n}\n\nfunction decode(bytes, limits)\n{\n const state = createState(bytes, limits, PROTOCOL);\n\n while (state.offset < bytes.byteLength)\n {\n const opcodeOffset = state.offset;\n const opcode = bytes[state.offset++];\n\n chargeOperation(state, opcodeOffset);\n\n switch (opcode)\n {\n case 0x28: // MARK\n state.marks.push(state.stack.length);\n push(state, MARK, opcodeOffset);\n break;\n\n case 0x2e: // STOP\n return stop(state, opcodeOffset);\n\n case 0x46: // FLOAT\n push(state, readFloat(state, opcodeOffset), opcodeOffset);\n break;\n\n case 0x49: // INT\n push(state, readInteger(state, opcodeOffset, false), opcodeOffset);\n break;\n\n case 0x4c: // LONG\n push(state, readInteger(state, opcodeOffset, true), opcodeOffset);\n break;\n\n case 0x4e: // NONE\n push(state, null, opcodeOffset);\n break;\n\n case 0x53: // STRING\n push(state, readString(state, opcodeOffset), opcodeOffset);\n break;\n\n case 0x56: // UNICODE\n push(state, readUnicode(state, opcodeOffset), opcodeOffset);\n break;\n\n case 0x61: // APPEND\n append(state, opcodeOffset);\n break;\n\n case 0x64: // DICT\n push(state, readDictionary(state, opcodeOffset), opcodeOffset);\n break;\n\n case 0x67: // GET\n getMemo(state, readMemoID(state, opcodeOffset), opcodeOffset);\n break;\n\n case 0x6c: // LIST\n push(state, readSequence(state, opcodeOffset, true), opcodeOffset);\n break;\n\n case 0x74: // TUPLE\n push(state, readSequence(state, opcodeOffset, false), opcodeOffset);\n break;\n\n case 0x70: // PUT\n putMemo(state, readMemoID(state, opcodeOffset), opcodeOffset);\n break;\n\n case 0x73: // SETITEM\n setItem(state, opcodeOffset);\n break;\n\n case 0x63: // GLOBAL\n push(state, readGlobal(state, opcodeOffset), opcodeOffset);\n break;\n\n case 0x52: // REDUCE\n reduce(state, opcodeOffset);\n break;\n\n default:\n throw stateError(\n state,\n \"CJS_PICKLE_FORMAT_OPCODE_UNSUPPORTED\",\n `Data-only pickle protocol 0 rejects opcode ${displayOpcode(opcode)}.`,\n opcodeOffset\n );\n }\n }\n\n throw stateError(\n state,\n \"CJS_PICKLE_FORMAT_STOP_MISSING\",\n \"Pickle input ended without a STOP opcode.\",\n state.offset\n );\n}\n\nfunction readFloat(state, offset)\n{\n const value = readAsciiLine(state, state.limits.maxStringBytes, offset);\n if (!/^[+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?$/u.test(value))\n {\n throw stateError(\n state,\n \"CJS_PICKLE_FORMAT_NUMBER_INVALID\",\n `Pickle FLOAT value is invalid: ${JSON.stringify(value)}.`,\n offset\n );\n }\n\n const result = Number(value);\n if (!Number.isFinite(result))\n {\n throw stateError(\n state,\n \"CJS_PICKLE_FORMAT_NUMBER_INVALID\",\n \"Pickle FLOAT must be finite for JSON-compatible output.\",\n offset\n );\n }\n return result;\n}\n\nfunction readInteger(state, offset, isLong)\n{\n let value = readAsciiLine(state, 128, offset);\n\n if (!isLong && value === \"00\") return false;\n if (!isLong && value === \"01\") return true;\n if (isLong && value.endsWith(\"L\")) value = value.slice(0, -1);\n\n if (!/^[+-]?\\d+$/u.test(value))\n {\n throw stateError(\n state,\n \"CJS_PICKLE_FORMAT_NUMBER_INVALID\",\n `Pickle integer value is invalid: ${JSON.stringify(value)}.`,\n offset\n );\n }\n\n const result = BigInt(value);\n if (result >= BigInt(Number.MIN_SAFE_INTEGER)\n && result <= BigInt(Number.MAX_SAFE_INTEGER))\n {\n return Number(result);\n }\n return result.toString();\n}\n\nfunction readString(state, offset)\n{\n const bytes = readLine(state, state.limits.maxStringBytes, offset);\n if (bytes.byteLength < 2)\n {\n throw stateError(\n state,\n \"CJS_PICKLE_FORMAT_STRING_INVALID\",\n \"Pickle STRING must be a quoted Python string literal.\",\n offset\n );\n }\n\n const quote = bytes[0];\n if ((quote !== 0x27 && quote !== 0x22)\n || bytes[bytes.byteLength - 1] !== quote)\n {\n throw stateError(\n state,\n \"CJS_PICKLE_FORMAT_STRING_INVALID\",\n \"Pickle STRING must use matching single or double quotes.\",\n offset\n );\n }\n\n const result = [];\n for (let index = 1; index < bytes.byteLength - 1; index += 1)\n {\n const byte = bytes[index];\n if (byte !== 0x5c)\n {\n result.push(String.fromCharCode(byte));\n continue;\n }\n\n index += 1;\n if (index >= bytes.byteLength - 1)\n {\n throw stateError(\n state,\n \"CJS_PICKLE_FORMAT_STRING_INVALID\",\n \"Pickle STRING ends with an incomplete escape.\",\n offset\n );\n }\n\n const escaped = bytes[index];\n const simple = decodeSimpleEscape(escaped);\n if (simple !== null)\n {\n result.push(String.fromCharCode(simple));\n }\n else if (escaped === 0x78)\n {\n result.push(String.fromCharCode(readHex(state, bytes, index + 1, 2, offset)));\n index += 2;\n }\n else if (escaped >= 0x30 && escaped <= 0x37)\n {\n let digits = String.fromCharCode(escaped);\n while (digits.length < 3\n && index + 1 < bytes.byteLength - 1\n && bytes[index + 1] >= 0x30\n && bytes[index + 1] <= 0x37)\n {\n index += 1;\n digits += String.fromCharCode(bytes[index]);\n }\n result.push(String.fromCharCode(Number.parseInt(digits, 8)));\n }\n else\n {\n throw stateError(\n state,\n \"CJS_PICKLE_FORMAT_STRING_INVALID\",\n `Pickle STRING contains unsupported escape \\\\${String.fromCharCode(escaped)}.`,\n offset\n );\n }\n }\n return result.join(\"\");\n}\n\nfunction readUnicode(state, offset)\n{\n const bytes = readLine(state, state.limits.maxStringBytes, offset);\n const result = [];\n\n for (let index = 0; index < bytes.byteLength; index += 1)\n {\n const byte = bytes[index];\n if (byte !== 0x5c || index + 1 >= bytes.byteLength)\n {\n result.push(String.fromCharCode(byte));\n continue;\n }\n\n const escaped = bytes[index + 1];\n if (escaped === 0x75)\n {\n result.push(String.fromCharCode(readHex(state, bytes, index + 2, 4, offset)));\n index += 5;\n }\n else if (escaped === 0x55)\n {\n const codePoint = readHex(state, bytes, index + 2, 8, offset);\n if (codePoint > 0x10ffff)\n {\n throw stateError(\n state,\n \"CJS_PICKLE_FORMAT_STRING_INVALID\",\n `Pickle UNICODE code point is out of range: ${codePoint}.`,\n offset\n );\n }\n result.push(String.fromCodePoint(codePoint));\n index += 9;\n }\n else\n {\n result.push(\"\\\\\");\n }\n }\n return result.join(\"\");\n}\n\nfunction readMemoID(state, offset)\n{\n const value = readAsciiLine(state, 64, offset);\n if (!/^\\d+$/u.test(value))\n {\n throw stateError(\n state,\n \"CJS_PICKLE_FORMAT_MEMO_INVALID\",\n `Pickle memo ID is invalid: ${JSON.stringify(value)}.`,\n offset\n );\n }\n return Number(value);\n}\n\n/** Reads a GLOBAL, and refuses every name outside the closed set. */\nfunction readGlobal(state, offset)\n{\n const module = decodeAscii(readLine(state, state.limits.maxStringBytes, offset));\n const attribute = decodeAscii(readLine(state, state.limits.maxStringBytes, offset));\n\n return createGlobalMarker(state, `${module}.${attribute}`, offset);\n}\n\n/** Decodes a GLOBAL's module or attribute line, which is always ASCII. */\nfunction decodeAscii(bytes)\n{\n let result = \"\";\n\n for (const byte of bytes) result += String.fromCharCode(byte);\n\n return result.trim();\n}\n\nfunction readAsciiLine(state, limit, offset)\n{\n const bytes = readLine(state, limit, offset);\n let result = \"\";\n for (const byte of bytes)\n {\n if (byte > 0x7f)\n {\n throw stateError(\n state,\n \"CJS_PICKLE_FORMAT_STRING_INVALID\",\n \"Pickle control line must contain ASCII bytes.\",\n offset\n );\n }\n result += String.fromCharCode(byte);\n }\n return result;\n}\n\nfunction readLine(state, limit, offset)\n{\n const start = state.offset;\n while (state.offset < state.bytes.byteLength && state.bytes[state.offset] !== 0x0a)\n {\n state.offset += 1;\n if (state.offset - start > limit)\n {\n throw stateError(\n state,\n \"CJS_PICKLE_FORMAT_LIMIT_EXCEEDED\",\n `Pickle line exceeds its ${limit}-byte limit.`,\n offset\n );\n }\n }\n\n if (state.offset >= state.bytes.byteLength)\n {\n throw stateError(\n state,\n \"CJS_PICKLE_FORMAT_EOF\",\n \"Pickle line is missing its newline terminator.\",\n offset\n );\n }\n\n const result = state.bytes.subarray(start, state.offset);\n state.offset += 1;\n return result;\n}\n\nfunction readHex(state, bytes, start, length, offset)\n{\n if (start + length > bytes.byteLength)\n {\n throw stateError(\n state,\n \"CJS_PICKLE_FORMAT_STRING_INVALID\",\n \"Pickle escape sequence is truncated.\",\n offset\n );\n }\n\n let result = 0;\n for (let index = 0; index < length; index += 1)\n {\n const value = hexValue(bytes[start + index]);\n if (value === -1)\n {\n throw stateError(\n state,\n \"CJS_PICKLE_FORMAT_STRING_INVALID\",\n \"Pickle escape sequence contains a non-hexadecimal digit.\",\n offset\n );\n }\n result = result * 16 + value;\n }\n return result;\n}\n\nfunction hexValue(byte)\n{\n if (byte >= 0x30 && byte <= 0x39) return byte - 0x30;\n if (byte >= 0x41 && byte <= 0x46) return byte - 0x41 + 10;\n if (byte >= 0x61 && byte <= 0x66) return byte - 0x61 + 10;\n return -1;\n}\n\nfunction decodeSimpleEscape(byte)\n{\n const values = {\n 0x22: 0x22,\n 0x27: 0x27,\n 0x5c: 0x5c,\n 0x61: 0x07,\n 0x62: 0x08,\n 0x66: 0x0c,\n 0x6e: 0x0a,\n 0x72: 0x0d,\n 0x74: 0x09,\n 0x76: 0x0b\n };\n return Object.hasOwn(values, byte) ? values[byte] : null;\n}\n\nexport default CjsPickleProtocol0Reader;\n"],"names":["PROTOCOL","CjsPickleProtocol0Reader","_bytes","_limits","constructor","input","options","normalizeBytes","normalizeLimits","limits","byteLength","maxInputBytes","pickleError","Read","decode","ReadJSON","value","assertJSONCompatible","ToJSON","bytes","state","createState","offset","opcodeOffset","opcode","chargeOperation","marks","push","stack","length","MARK","stop","readFloat","readInteger","readString","readUnicode","append","readDictionary","getMemo","readMemoID","readSequence","putMemo","setItem","readGlobal","reduce","stateError","displayOpcode","readAsciiLine","maxStringBytes","test","JSON","stringify","result","Number","isFinite","isLong","endsWith","slice","BigInt","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","toString","readLine","quote","index","byte","String","fromCharCode","escaped","simple","decodeSimpleEscape","readHex","digits","parseInt","join","codePoint","fromCodePoint","module","decodeAscii","attribute","createGlobalMarker","trim","limit","start","subarray","hexValue","values","Object","hasOwn"],"mappings":"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"}
|
|
@@ -34,8 +34,8 @@ const UTF8 = new TextDecoder("utf-8", {
|
|
|
34
34
|
* latin-1 is the mapping that loses nothing.
|
|
35
35
|
*/
|
|
36
36
|
class CjsPickleProtocol4Reader {
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
_bytes;
|
|
38
|
+
_limits;
|
|
39
39
|
|
|
40
40
|
/**
|
|
41
41
|
* Bind one byte source and its resource limits.
|
|
@@ -44,10 +44,10 @@ class CjsPickleProtocol4Reader {
|
|
|
44
44
|
* @param {object} [options] Reader options containing optional limits.
|
|
45
45
|
*/
|
|
46
46
|
constructor(input, options = {}) {
|
|
47
|
-
this
|
|
48
|
-
this
|
|
49
|
-
if (this
|
|
50
|
-
throw pickleError("CJS_PICKLE_FORMAT_LIMIT_EXCEEDED", `Pickle input exceeds maxInputBytes (${this
|
|
47
|
+
this._bytes = normalizeBytes(input);
|
|
48
|
+
this._limits = normalizeLimits(options.limits ?? options);
|
|
49
|
+
if (this._bytes.byteLength > this._limits.maxInputBytes) {
|
|
50
|
+
throw pickleError("CJS_PICKLE_FORMAT_LIMIT_EXCEEDED", `Pickle input exceeds maxInputBytes (${this._limits.maxInputBytes}).`, 0, DEFAULT_PROTOCOL);
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
|
|
@@ -57,7 +57,7 @@ class CjsPickleProtocol4Reader {
|
|
|
57
57
|
* @returns {*} Decoded scalar, array, or plain object graph.
|
|
58
58
|
*/
|
|
59
59
|
Read() {
|
|
60
|
-
return decode(this
|
|
60
|
+
return decode(this._bytes, this._limits);
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
/**
|