mfmts-1.1.0.0: cid/MultiFormats/CID/Component/Codec.hs
-- | Module : MultiFormats.CID.Component.Codec
-- Description : Implements extracting codecs from CIDs.
-- Copyright : Zoey McBride (c) 2026
-- License : AGPL-3.0-or-later
-- Maintainer : zoeymcbride@mailbox.org
-- Stability : experimental
module MultiFormats.CID.Component.Codec (Codec (Codec)) where
import Data.BaseSystem.BinaryTranscoder (BinaryTranscoder)
import Data.Bifunctor (first)
import MultiFormats.CID.Extractor (Extractor (extractor))
import MultiFormats.MultiCodec (MultiCodec (MultiCodec))
-- | Represents a MultiCodec value embedded within CID data.
newtype Codec = Codec MultiCodec deriving (Eq)
-- | Extracts the MultiCodec from VarInt in bytes and wraps in Codec.
instance (BinaryTranscoder t) => Extractor Codec t where
extractor bytes = first (Codec . MultiCodec) <$> extractor bytes