packages feed

ipldm-1.0.0.0: dagcbor/IPLD/DagCBOR/Encoder/Errors.hs

-- | Module      : IPLD.DagCBOR.Encoder.Errors
--   Description : Errors for DAG-CBOR encoding
--   Copyright   : Zoey McBride (c) 2026
--   License     : AGPL-3.0-or-later
--   Maintainer  : zoeymcbride@mailbox.org
--   Stability   : experimental
module IPLD.DagCBOR.Encoder.Errors (Okay, Error (..), (<<>>)) where

import MultiFormats.CID.Errors qualified as CID

-- | Defines the DAG-CBOR encoder errors.
data Error
  = -- | For implementing `Alternative` class.
    EmptyAlternative
  | -- | When the provided DM.IntKind exceeds 64-bits
    OverflowIntKind
  | -- | When CID encoding fails.
    CIDError CID.Error
  deriving (Show, Eq)

-- | Functor for encoder error results.
type Okay t = Either Error t

-- | Concatenates two monoids `m` within the same context `a`.
{-# INLINE (<<>>) #-}
(<<>>) :: (Applicative a, Monoid m) => a m -> a m -> a m
(<<>>) = liftA2 (<>)