cabal-version:   2.2
name:            json-syntax
version:         0.2.7.2
synopsis:        High-performance JSON parser and encoder
description:
  This library parses JSON into a @Value@ type that is consistent with the
  ABNF described in [RFC 7159](https://tools.ietf.org/html/rfc7159). The
  parser is about six times faster than the parser that `aeson` provides.
  This parser is however, non-resumable, so if resumable parsing is
  important, `aeson` should be preferred.
  .
  This library does not include any functions or typeclasses to help users
  marshal `Value` to their application-specific data types. Such functions
  and typeclasses are outside the scope of this library. If anyone writes a
  library that offers users these conveniences open a issue so that the
  @json-syntax@ documentation can point users to it.

homepage:        https://github.com/byteverse/json-syntax
bug-reports:     https://github.com/byteverse/json-syntax/issues
license:         BSD-3-Clause
license-file:    LICENSE
author:          Andrew Martin
maintainer:      amartin@layer3com.com
copyright:       2019 Andrew Martin
category:        Data
build-type:      Simple
extra-doc-files:
  CHANGELOG.md
  README.md

tested-with:     GHC ==9.4.8 || ==9.6.3 || ==9.8.1

common build-settings
  default-language: Haskell2010
  ghc-options:      -Wall -Wunused-packages

library
  import:          build-settings
  exposed-modules:
    Json
    Json.Flatten
    Json.Smile

  build-depends:
    , array-builder        >=0.1    && <0.2
    , array-chunks         >=0.1.3  && <0.2
    , base                 >=4.15   && <5
    , bytebuild            >=0.3.10 && <0.4
    , byteslice            >=0.2.9  && <0.3
    , bytesmith            >=0.3.8  && <0.4
    , bytestring           >=0.10.8 && <0.12
    , contiguous           >=0.6    && <0.7
    , natural-arithmetic   >=0.1.2  && <0.3
    , primitive            >=0.7    && <0.10
    , run-st               >=0.1.1  && <0.2
    , scientific-notation  >=0.1.6  && <0.2
    , text                 >=2.0.2  && <2.2
    , text-short           >=0.1.3  && <0.2
    , transformers         >=0.5.6  && <0.7
    , word-compat          >=0.0.6  && <0.1
    , zigzag               >=0.0.1  && <0.1

  hs-source-dirs:  src
  ghc-options:     -O2

test-suite test
  import:         build-settings
  type:           exitcode-stdio-1.0
  hs-source-dirs: test common
  main-is:        Main.hs
  other-modules:
    Person
    Twitter100

  build-depends:
    , aeson                >=2.0.2
    , base                 >=4.12.0.0 && <5
    , bytebuild
    , byteslice            >=0.1.3
    , bytestring
    , json-syntax
    , neat-interpolation   >=0.3.2
    , primitive
    , QuickCheck           >=2.14.2
    , scientific
    , scientific-notation  >=0.1.1
    , tasty                >=1.2.3
    , tasty-golden         >=2.0
    , tasty-hunit          >=0.10.0.2
    , tasty-quickcheck     >=0.10.1.2
    , text                 >=2.0.2
    , text-short

benchmark bench
  import:         build-settings
  type:           exitcode-stdio-1.0
  build-depends:
    , aeson
    , base
    , bytebuild
    , byteslice
    , bytestring
    , gauge
    , json-syntax
    , neat-interpolation  >=0.3.2
    , primitive
    , text                >=2.0.2

  ghc-options:    -O2
  hs-source-dirs: bench common
  main-is:        Main.hs
  other-modules:
    Metrics1024
    Twitter100
    Url100

source-repository head
  type:     git
  location: git://github.com/byteverse/json-syntax.git