packages feed

hq-json-0.1.1: src/HQ/Runner/Error.hs

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}

module HQ.Runner.Error where

import Relude hiding (Compose, Const)

data RunnerError
  = -- | The event or cursor stream ran dry where more was required.
    UnexpectedEndOfInput
  | UnexpectedEndOfArray
  | UnexpectedEndOfObject
  | UnexpectedObjectKey
  | -- | Structural failures while navigating or rewriting.
    InvalidObject
  | EmptyValue
  | ExpectedMemberValue
  | UnexpectedEndReadingObject
  | UnexpectedEndReadingArray
  | -- | Input is not valid UTF-8.
    InvalidUtf8
  | -- | Event-list materialization failures ('eventsToValue').
    TrailingEventsAfterValue
  | ExpectedJSONValue
  | ExpectedObjectKeyEvent

renderRunnerError :: RunnerError -> Text
renderRunnerError err = case err of
  UnexpectedEndOfInput -> "unexpected end of JSON input"
  UnexpectedEndOfArray -> "unexpected end of array"
  UnexpectedEndOfObject -> "unexpected end of object"
  UnexpectedObjectKey -> "unexpected object key"
  InvalidObject -> "invalid JSON object"
  EmptyValue -> "unexpected empty value"
  ExpectedMemberValue -> "unexpected end of input after object key"
  UnexpectedEndReadingObject -> "unexpected end of input while reading object"
  UnexpectedEndReadingArray -> "unexpected end of input while reading array"
  InvalidUtf8 -> "invalid UTF-8 input"
  TrailingEventsAfterValue -> "trailing events after a JSON value"
  ExpectedJSONValue -> "expected a JSON value"
  ExpectedObjectKeyEvent -> "expected an object key"