Module

Codec.Codec

Package
purescript-json-codecs
Repository
jordanmartinez/purescript-json-codecs

Note: this module is the same as purescript-codec@v6.0.0 with the following changes:

  • Codec's decode and encode functions were converted to an uncurried representation via Fn* types
  • The decode function includes additional parts that enable custom decoding errors.
  • The decoding monad was hard-coded to V e
  • decode and encode were renamed to decoder and encoder

#Codec Source

data Codec decodePath decodeHandlers decodeError extra decodeInput encodeOutput encodeInput decodeOutputEncodeAccumulator

Constructors

  • Codec (DecoderFn decodePath decodeHandlers decodeError extra decodeInput decodeOutputEncodeAccumulator) (Fn2 extra encodeInput (Tuple encodeOutput decodeOutputEncodeAccumulator))

Instances

  • Functor (Codec decodePath decodeHandlers decodeError extra decodeInput encodeOutput encodeInput)
  • Invariant (Codec decodePath decodeHandlers decodeError extra decodeInput encodeOutput encodeInput)
  • (Semigroup encodeOutput) => Apply (Codec decodePath decodeHandlers decodeError extra decodeInput encodeOutput encodeInput)
  • (Monoid encodeOutput) => Applicative (Codec decodePath decodeHandlers decodeError extra decodeInput encodeOutput encodeInput)
  • Profunctor (Codec decodePath decodeHandlers decodeError extra decodeInput encodeOutput)

#codec Source

codec :: forall decodePath decodeHandlers decodeError extra decodeInput encodeOutput encodeInput. (DecoderFn decodePath decodeHandlers decodeError extra decodeInput encodeInput) -> (Fn2 extra encodeInput encodeOutput) -> Codec decodePath decodeHandlers decodeError extra decodeInput encodeOutput encodeInput encodeInput

#Codec' Source

type Codec' decodePath decodeHandlers decodeError extra decodeFromEncodeTo decodeToEncodeFrom = Codec decodePath decodeHandlers decodeError extra decodeFromEncodeTo decodeFromEncodeTo decodeToEncodeFrom decodeToEncodeFrom

#codec' Source

codec' :: forall decodePath decodeHandlers decodeError extra decodeFromEncodeTo decodeToEncodeFrom. (DecoderFn decodePath decodeHandlers decodeError extra decodeFromEncodeTo decodeToEncodeFrom) -> (Fn2 extra decodeToEncodeFrom decodeFromEncodeTo) -> Codec' decodePath decodeHandlers decodeError extra decodeFromEncodeTo decodeToEncodeFrom

#decoder Source

decoder :: forall decodePath decodeHandlers decodeError extra decodeInput encodeOutput encodeInput decodeOutputEncodeAccumulator. Codec decodePath decodeHandlers decodeError extra decodeInput encodeOutput encodeInput decodeOutputEncodeAccumulator -> DecoderFn decodePath decodeHandlers decodeError extra decodeInput decodeOutputEncodeAccumulator

#encoder Source

encoder :: forall decodePath decodeHandlers decodeError extra decodeInput encodeOutput encodeInput decodeOutputEncodeAccumulator. Codec decodePath decodeHandlers decodeError extra decodeInput encodeOutput encodeInput decodeOutputEncodeAccumulator -> Fn2 extra encodeInput (Tuple encodeOutput decodeOutputEncodeAccumulator)

#identity Source

identity :: forall decodePath decodeHandlers decodeError extra a. Codec decodePath decodeHandlers decodeError extra a a a a

#compose Source

compose :: forall decodePath decodeHandlers decodeError extra a d f b e c. Codec decodePath decodeHandlers decodeError extra d c e f -> Codec decodePath decodeHandlers decodeError extra a b c d -> Codec decodePath decodeHandlers decodeError extra a b e f

#(<~<) Source

Operator alias for Codec.Codec.compose (right-associative / precedence 8)

#composeFlipped Source

composeFlipped :: forall decodePath decodeHandlers decodeError extra a d f b e c. Codec decodePath decodeHandlers decodeError extra a b c d -> Codec decodePath decodeHandlers decodeError extra d c e f -> Codec decodePath decodeHandlers decodeError extra a b e f

#(>~>) Source

Operator alias for Codec.Codec.composeFlipped (right-associative / precedence 8)

#(~) Source

Operator alias for Data.Profunctor.lcmap (left-associative / precedence 5)

Codec is defined as a Profunctor so that lcmap can be used to target specific fields when defining a codec for a product type. This operator is a convenience for that:

tupleCodec =
  Tuple
    <$> fst ~ fstCodec
    <*> snd ~ sndCodec

#mapDecodeError Source

mapDecodeError :: forall decodePath decodeHandlers decodeError extra decodeInput encodeOutput encodeInput decodeOutputEncodeAccumulator. (DecoderFn decodePath decodeHandlers decodeError extra decodeInput decodeOutputEncodeAccumulator -> DecoderFn decodePath decodeHandlers decodeError extra decodeInput decodeOutputEncodeAccumulator) -> Codec decodePath decodeHandlers decodeError extra decodeInput encodeOutput encodeInput decodeOutputEncodeAccumulator -> Codec decodePath decodeHandlers decodeError extra decodeInput encodeOutput encodeInput decodeOutputEncodeAccumulator