packages feed

mfmts-1.0.0.0: cid/MultiFormats/CID/Internal/CIDCodec.hs

-- | Module      : MultiFormats.CID.Internal.CIDCodec
--   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.Internal.CIDCodec (CIDCodec (CIDCodec)) where

import Data.Bifunctor (first)
import MultiFormats.CID.Extractor (Extractor (extractor))
import MultiFormats.MultiCodec (MultiCodec (MultiCodec))

-- | Represents a MultiCodec value embedded within CID data.
newtype CIDCodec = CIDCodec MultiCodec deriving (Eq)

-- | Extracts the MultiCodec from VarInt in bytes and wraps in CIDCodec.
instance Extractor CIDCodec where
  extractor bytes = first (CIDCodec . MultiCodec) <$> extractor bytes