api-tools-0.8.0.1: DSL for generating API boilerplate and docs

Safe HaskellNone
LanguageHaskell2010

Data.API.Error

Contents

Synopsis

Representation of JSON parsing errors

type JSONWarning = JSONError Source #

At present, we do not distinguish between errors and warnings

data Expected Source #

JSON type expected at a particular position, when a value of a different type was encountered

type Position = [Step] Source #

A position inside a JSON value is a list of steps, ordered innermost first (so going inside an object prepends a step).

data Step Source #

Each step may be into a field of an object, or a specific element of an array.

Constructors

InField Text 
InElem Int 

prettyJSONErrorPositions :: [(JSONError, Position)] -> String Source #

Human-readable presentation of a list of parse errors with their positions

prettyJSONError :: JSONError -> String Source #

Human-readable description of a JSON parse error

prettyStep :: Step -> String Source #

Human-readable description of a single step in a position

JSON parse error construction

Validation and migration errors

data ValueError Source #

Errors that can be discovered when migrating data values

Constructors

JSONError JSONError

Data doesn't match schema

CustomMigrationError String Value

Error generated during custom migration

InvalidAPI ApplyFailure

An API change was invalid

data ValidateFailure Source #

Errors that may be discovered when validating a changelog

Constructors

ChangelogOutOfOrder

the changelog must be in descending order of versions

CannotDowngrade

forbid migrating from one version to an earlier version

ApiInvalid

an API uses types that are not declared

ChangelogEntryInvalid

changelog entry does not apply

ChangelogIncomplete

changelog is incomplete (ie all entries apply ok but result isn't the target api)

data ApplyFailure Source #

Errors that may occur applying a single API change

Constructors

TypeExists

for adding or renaming type

TypeDoesNotExist

for deleting or renaming a type

TypeWrongKind

e.g. it's not a record type

TypeInUse

cannot delete/modify types that are still used

Fields

TypeMalformed

type refers to a non-existent type

DeclMalformed

decl refers to a non-existent type

FieldExists

for adding or renaming a field

FieldDoesNotExist

for deleting or renaming a field

FieldBadDefaultValue

for adding a field, must be a default value compatible with the type

DefaultMissing

for adding a field to a table

TableChangeError

custom error in tableChange