cabal-version:       2.2

name:                graphql-engine
version:             1.0.0
synopsis:            GraphQL API over Postgres
homepage:            https://www.hasura.io
license:             Apache-2.0
author:              Vamshi Surabhi
maintainer:          vamshi@hasura.io
copyright:           Hasura Inc.
category:            Database
build-type:          Simple

source-repository head
  type:     git
  location: https://github.com/hasura/graphql-engine

flag developer
  description: Enable support for development-only APIs
  default: False
  manual: True

flag profiling
  description: Configures the project to be profiling-compatible
  default: False
  manual: True

common common-all
  ghc-options:
    -fmax-simplifier-iterations=20 -foptimal-applicative-do
    -Wall -Wcompat -Wincomplete-record-updates -Wincomplete-uni-patterns -Wredundant-constraints

  if flag(developer)
    cpp-options: -DDeveloperAPIs
  if flag(profiling)
    cpp-options: -DPROFILING

  default-language: Haskell2010
  default-extensions:
    AllowAmbiguousTypes
    ApplicativeDo
    BangPatterns
    BlockArguments
    ConstraintKinds
    DataKinds
    DefaultSignatures
    DeriveDataTypeable
    DeriveFoldable
    DeriveFunctor
    DeriveGeneric
    DeriveLift
    DeriveTraversable
    DerivingVia
    EmptyCase
    ExistentialQuantification
    FlexibleContexts
    FlexibleInstances
    FunctionalDependencies
    GADTs
    GeneralizedNewtypeDeriving
    InstanceSigs
    LambdaCase
    MultiParamTypeClasses
    MultiWayIf
    NamedFieldPuns
    NoImplicitPrelude
    OverloadedStrings
    QuantifiedConstraints
    QuasiQuotes
    RankNTypes
    RecordWildCards
    RoleAnnotations
    ScopedTypeVariables
    StandaloneDeriving
    TemplateHaskell
    TupleSections
    TypeApplications
    TypeFamilies
    TypeFamilyDependencies
    TypeOperators

common common-exe
  ghc-options:
    -threaded -rtsopts
    -- `-I0` disables idle GC. We do this in application code now. See 'ourIdleGC' for details.
    -- `-T` is required to collect the stats we use in 'ourIdleGC'.
    --
    -- `-qn2` limits the parallel GC to at most 2 capabilities. This came up in #3354/#3394, as the
    -- parallel GC was causing significant performance overhead. Folks in #ghc on freenode advised
    -- limiting the parallel GC to 2 or 3 capabilities as a very conservative choice, since more
    -- than that is highly unlikely to ever be helpful. More benchmarking would be useful to know if
    -- this is the right decision. It’s possible it would better to just turn it off completely.
    --
    -- `-kc8K` helps limit memory consumption in websockets (perhaps elsewhere) by making the
    -- cost of a thread's first (and probably only) stack overflow less severe.
    -- See:https://github.com/hasura/graphql-engine/issues/5190
    --
    -- `--disable-delayed-os-memory-return` seems to help lower reported residency, in particular
    -- in situations where we seem to be dealing with haskell heap fragmentation. This is more a
    -- workaround for limitations in monitoring tools than anything...
    "-with-rtsopts=-N -I0 -T -qn2 -kc8K --disable-delayed-os-memory-return"

library
  import: common-all
  hs-source-dirs:      src-lib
  build-depends:       Spock-core
                     , aeson
                     , aeson-casing
                     , attoparsec
                     , attoparsec-iso8601 >= 1.0
                     , base
                     , bytestring
                     , containers
                     , deepseq
                     , dependent-map >=0.4 && <0.5
                     , dependent-sum
                     , exceptions
                     , fast-logger
                     , hashable
                     , hashable-time
                     , http-client-tls
                     , http-conduit
                     , http-types
                     , kan-extensions
                     , lifted-base
                     , monad-control
                     , monad-loops
                     , monad-validate
                     , mtl
                     , optparse-applicative
                     , pg-client
                     , postgresql-binary
                     , postgresql-libpq
                     , process
                     , profunctors
                     , retry
                     , safe-exceptions
                     , scientific
                     , semialign
                     , some
                     , split
                     , template-haskell
                     , text
                     , text-builder >= 0.6
                     , these
                     , time >= 1.9
                     , transformers
                     , transformers-base
                     , unordered-containers >= 0.2.12
                     , utf8-string
                     , validation
                     , vector
                     , vector-instances
                     , wai
                     , hashable-time

                     -- Encoder related
                     , uuid
                     , binary
                     , base16-bytestring

                     -- Logging related
                     , network
                     , byteorder

                     -- for parsing RSA keys
                     , cryptonite

                     -- for jwt verification
                     , jose
                     , pem
                     , x509
                     , asn1-encoding
                     , asn1-types

                     -- Server related
                     , warp
                     , lens

                     -- GraphQL related
                     , graphql-parser >=0.2 && <0.3

                     -- URL parser related
                     , network-uri >=2.6.3.0 && <2.7
                     , uri-encode

                     -- String related
                     , case-insensitive
                     , text-conversions

                     -- Http client
                     , wreq
                     , http-client

                     -- ordered map
                     , insert-ordered-containers

                     -- Parsing SemVer
                     , semver

                     -- Templating
                     , mustache
                     , file-embed
                     , shakespeare >= 2.0.22

                     --
                     , data-has
                     -- for src-exec
                     , yaml
                     , template-haskell >= 2.11

                     -- websockets interface related
                     , websockets
                     , stm
                     , stm-containers
                     , list-t
                     , async
                     , lifted-async
                     , immortal < 0.3

                     -- logging related
                     , base64-bytestring >= 1.0
                     , auto-update

                     -- regex related
                     , regex-tdfa >=1.3.1 && <1.4

                     -- pretty printer
                     , ansi-wl-pprint

                     -- for capturing various metrics
                     , ekg-core
                     , ekg-json

                     -- metrics for CI integration
                     , ci-info

                     -- serve static files
                     , filepath >= 1.4
                     , mime-types >= 0.1

                     -- for handling posix signals for graceful shutdown
                     , unix
                     -- HTTP compression
                     , zlib

                     -- caching
                     , psqueues >= 0.2

                     -- testing
                     , QuickCheck
                     , quickcheck-instances

                     , directory

                     , random
                     , mmorph
                     , http-api-data
                     , lens-aeson

                     , semigroups >= 0.19.1

                     -- scheduled triggers
                     , cron >= 0.6.2
                     -- needed for deriving via
                     , semigroups >= 0.19

                     -- mssql support
                     , odbc
                     , resource-pool

                     -- bigquery support
                     , memory
                     , x509-store

                     , tagged

                     -- mysql
                     , mysql
                     , mysql-simple


  if !flag(profiling)
    build-depends:
      -- 0.6.1 is supposedly not okay for ghc 8.6:
      --   https://github.com/nomeata/ghc-heap-view/issues/27
      ghc-heap-view

  exposed-modules:     Control.Arrow.Extended
                     , Control.Arrow.Trans
                     , Control.Concurrent.Extended
                     , Control.Lens.Extended
                     , Control.Monad.Stateless
                     , Control.Monad.Trans.Managed
                     , Control.Monad.Unique
                     , Data.Aeson.Extended
                     , Data.Aeson.Ordered
                     , Data.Environment
                     , Data.HashMap.Strict.Extended
                     , Data.HashMap.Strict.InsOrd.Extended
                     , Data.List.Extended
                     , Data.Parser.CacheControl
                     , Data.Parser.Expires
                     , Data.Parser.JSONPath
                     , Data.Sequence.NonEmpty
                     , Data.SqlCommenter
                     , Data.TByteString
                     , Data.Text.Extended
                     , Data.Text.NonEmpty
                     , Data.Time.Clock.Units
                     , Data.URL.Template
                     , GHC.Stats.Extended
                     , Hasura.App
                     , Hasura.Metadata.Class

                     , Hasura.Base.Error
                     , Hasura.Base.Instances

                     , Hasura.Backends.BigQuery.Connection
                     , Hasura.Backends.BigQuery.Execute
                     , Hasura.Backends.BigQuery.DDL
                     , Hasura.Backends.BigQuery.DDL.BoolExp
                     , Hasura.Backends.BigQuery.DDL.RunSQL
                     , Hasura.Backends.BigQuery.DDL.Source
                     , Hasura.Backends.BigQuery.FromIr
                     , Hasura.Backends.BigQuery.Instances.API
                     , Hasura.Backends.BigQuery.Instances.Execute
                     , Hasura.Backends.BigQuery.Instances.Schema
                     , Hasura.Backends.BigQuery.Instances.Transport
                     , Hasura.Backends.BigQuery.Instances.Types
                     , Hasura.Backends.BigQuery.Instances.Metadata
                     , Hasura.Backends.BigQuery.Meta
                     , Hasura.Backends.BigQuery.Plan
                     , Hasura.Backends.BigQuery.Source
                     , Hasura.Backends.BigQuery.ToQuery
                     , Hasura.Backends.BigQuery.Types

                     , Hasura.Backends.MSSQL.Connection
                     , Hasura.Backends.MSSQL.DDL
                     , Hasura.Backends.MSSQL.DDL.BoolExp
                     , Hasura.Backends.MSSQL.DDL.RunSQL
                     , Hasura.Backends.MSSQL.DDL.Source
                     , Hasura.Backends.MSSQL.FromIr
                     , Hasura.Backends.MSSQL.Instances.API
                     , Hasura.Backends.MSSQL.Instances.Execute
                     , Hasura.Backends.MSSQL.Instances.Metadata
                     , Hasura.Backends.MSSQL.Instances.Schema
                     , Hasura.Backends.MSSQL.Instances.Transport
                     , Hasura.Backends.MSSQL.Instances.Types
                     , Hasura.Backends.MSSQL.Meta
                     , Hasura.Backends.MSSQL.Plan
                     , Hasura.Backends.MSSQL.SQL.Value
                     , Hasura.Backends.MSSQL.ToQuery
                     , Hasura.Backends.MSSQL.Types
                     , Hasura.Backends.MSSQL.Types.Instances
                     , Hasura.Backends.MSSQL.Types.Internal

                     , Hasura.Backends.Postgres.Connection
                     , Hasura.Backends.Postgres.DDL
                     , Hasura.Backends.Postgres.DDL.BoolExp
                     , Hasura.Backends.Postgres.DDL.Field
                     , Hasura.Backends.Postgres.DDL.Function
                     , Hasura.Backends.Postgres.DDL.RunSQL
                     , Hasura.Backends.Postgres.DDL.Source
                     , Hasura.Backends.Postgres.DDL.Source.Version
                     , Hasura.Backends.Postgres.DDL.Table
                     , Hasura.Backends.Postgres.Execute.LiveQuery
                     , Hasura.Backends.Postgres.Execute.Insert
                     , Hasura.Backends.Postgres.Execute.Mutation
                     , Hasura.Backends.Postgres.Execute.Prepare
                     , Hasura.Backends.Postgres.Execute.Types
                     , Hasura.Backends.Postgres.Instances.API
                     , Hasura.Backends.Postgres.Instances.Execute
                     , Hasura.Backends.Postgres.Instances.Metadata
                     , Hasura.Backends.Postgres.Instances.Schema
                     , Hasura.Backends.Postgres.Instances.Transport
                     , Hasura.Backends.Postgres.Instances.Types
                     , Hasura.Backends.Postgres.SQL.DML
                     , Hasura.Backends.Postgres.SQL.Error
                     , Hasura.Backends.Postgres.SQL.Rewrite
                     , Hasura.Backends.Postgres.SQL.Types
                     , Hasura.Backends.Postgres.SQL.Value
                     , Hasura.Backends.Postgres.Translate.BoolExp
                     , Hasura.Backends.Postgres.Translate.Column
                     , Hasura.Backends.Postgres.Translate.Delete
                     , Hasura.Backends.Postgres.Translate.Insert
                     , Hasura.Backends.Postgres.Translate.Mutation
                     , Hasura.Backends.Postgres.Translate.Returning
                     , Hasura.Backends.Postgres.Translate.Select
                     , Hasura.Backends.Postgres.Translate.Types
                     , Hasura.Backends.Postgres.Translate.Update
                     , Hasura.Backends.Postgres.Types.BoolExp
                     , Hasura.Backends.Postgres.Types.Column
                     , Hasura.Backends.Postgres.Types.Table
                     , Hasura.Backends.Postgres.Types.CitusExtraTableMetadata

                     , Hasura.Backends.MySQL.Types
                     , Hasura.Backends.MySQL.Types.Internal
                     , Hasura.Backends.MySQL.Types.Instances
                     , Hasura.Backends.MySQL.Plan
                     , Hasura.Backends.MySQL.FromIr
                     , Hasura.Backends.MySQL.Connection
                     , Hasura.Backends.MySQL.Meta
                     , Hasura.Backends.MySQL.Instances.Types
                     , Hasura.Backends.MySQL.Instances.Metadata
                     , Hasura.Backends.MySQL.Instances.Schema
                     , Hasura.Backends.MySQL.Instances.Execute
                     , Hasura.Backends.MySQL.Instances.Transport
                     , Hasura.Backends.MySQL.SQL
                     , Hasura.Backends.MySQL.ToQuery
                     , Hasura.Backends.MySQL.Instances.API

                     -- Exposed for benchmark:
                     , Hasura.Cache.Bounded
                     , Hasura.Logging
                     , Hasura.HTTP
                     , Hasura.Incremental
                     , Hasura.Server.App
                     , Hasura.Server.Auth
                     , Hasura.Server.Init
                     , Hasura.Server.Init.Config
                     , Hasura.Server.API.Backend
                     , Hasura.Server.API.Instances
                     , Hasura.Server.API.Metadata
                     , Hasura.Server.API.Query
                     , Hasura.Server.API.V2Query
                     , Hasura.Server.Utils
                     , Hasura.Server.Version
                     , Hasura.Server.Version.TH
                     , Hasura.Server.Logging
                     , Hasura.Server.Migrate
                     , Hasura.Server.Compression
                     , Hasura.Server.Types
                     , Hasura.Server.API.PGDump
                     , Hasura.Server.Rest
                     , Hasura.Prelude

                     , Hasura.EncJSON
                     , Hasura.GraphQL.Execute.Query
                     , Hasura.GraphQL.Logging
                     , Hasura.Incremental.Select
                     , Hasura.RQL.DML.Select
                     , Hasura.RQL.Types.Run
                     , Hasura.Session

                     -- exposed for Pro
                     , Hasura.Server.API.Config
                     , Hasura.Server.Telemetry
                     , Hasura.Server.Metrics
                     -- Exposed for testing:
                     , Hasura.Server.Telemetry.Counters
                     , Hasura.Server.Auth.JWT
                     , Hasura.GC
                     , Hasura.Incremental.Internal.Cache
                     , Hasura.Incremental.Internal.Dependency
                     , Hasura.Incremental.Internal.Rule
                     , Hasura.Server.Auth.WebHook
                     , Hasura.Server.Middleware
                     , Hasura.Server.Cors
                     , Hasura.Server.CheckUpdates
                     , Hasura.Server.SchemaUpdate
                     , Hasura.Server.Migrate.Version
                     , Hasura.Server.Migrate.Internal
                     , Hasura.Server.Auth.JWT.Internal
                     , Hasura.Server.Auth.JWT.Logging
                     , Hasura.RQL.Types
                     , Hasura.RQL.Types.Action
                     , Hasura.RQL.Types.ApiLimit
                     , Hasura.RQL.Types.Backend
                     , Hasura.RQL.Types.Column
                     , Hasura.RQL.Types.Common
                     , Hasura.RQL.Types.ComputedField
                     , Hasura.RQL.Types.CustomTypes
                     , Hasura.RQL.Types.Endpoint
                     , Hasura.RQL.Types.Endpoint.Trie
                     , Hasura.RQL.Types.EventTrigger
                     , Hasura.RQL.Types.GraphqlSchemaIntrospection
                     , Hasura.RQL.Types.Function
                     , Hasura.RQL.Types.Instances
                     , Hasura.RQL.Types.Metadata
                     , Hasura.RQL.Types.Metadata.Backend
                     , Hasura.RQL.Types.Metadata.Instances
                     , Hasura.RQL.Types.Metadata.Object
                     , Hasura.RQL.Types.Permission
                     , Hasura.RQL.Types.QueryCollection
                     , Hasura.RQL.Types.QueryTags
                     , Hasura.RQL.Types.Relationship
                     , Hasura.RQL.Types.RemoteRelationship
                     , Hasura.RQL.Types.RemoteSchema
                     , Hasura.RQL.Types.ScheduledTrigger
                     , Hasura.RQL.Types.SchemaCache
                     , Hasura.RQL.Types.SchemaCache.Build
                     , Hasura.RQL.Types.SchemaCacheTypes
                     , Hasura.RQL.Types.Source
                     , Hasura.RQL.Types.Table
                     , Hasura.RQL.Types.Roles
                     , Hasura.RQL.Types.Roles.Internal
                     , Hasura.RQL.DDL.Action
                     , Hasura.RQL.DDL.ApiLimit
                     , Hasura.RQL.DDL.ComputedField
                     , Hasura.RQL.DDL.CustomTypes
                     , Hasura.RQL.DDL.Deps
                     , Hasura.RQL.DDL.Endpoint
                     , Hasura.RQL.DDL.GraphqlSchemaIntrospection
                     , Hasura.RQL.DDL.InheritedRoles
                     , Hasura.RQL.DDL.Headers
                     , Hasura.RQL.DDL.Metadata
                     , Hasura.RQL.DDL.Metadata.Types
                     , Hasura.RQL.DDL.Permission
                     , Hasura.RQL.DDL.Permission.Internal
                     , Hasura.RQL.DDL.QueryCollection
                     , Hasura.RQL.DDL.Relationship
                     , Hasura.RQL.DDL.Relationship.Rename
                     , Hasura.RQL.DDL.RemoteRelationship
                     , Hasura.RQL.DDL.RemoteRelationship.Validate
                     , Hasura.RQL.DDL.RemoteSchema
                     , Hasura.RQL.DDL.RemoteSchema.Permission
                     , Hasura.RQL.DDL.Schema
                     , Hasura.RQL.DDL.Schema.Cache
                     , Hasura.RQL.DDL.Schema.Cache.Common
                     , Hasura.RQL.DDL.Schema.Cache.Dependencies
                     , Hasura.RQL.DDL.Schema.Cache.Fields
                     , Hasura.RQL.DDL.Schema.Cache.Permission
                     , Hasura.RQL.DDL.Schema.Catalog
                     , Hasura.RQL.DDL.Schema.Diff
                     , Hasura.RQL.DDL.Schema.LegacyCatalog
                     , Hasura.RQL.DDL.Schema.Common
                     , Hasura.RQL.DDL.Schema.Enum
                     , Hasura.RQL.DDL.Schema.Function
                     , Hasura.RQL.DDL.Schema.Rename
                     , Hasura.RQL.DDL.Schema.Table
                     , Hasura.RQL.DDL.Schema.Source
                     , Hasura.RQL.DDL.EventTrigger
                     , Hasura.RQL.DDL.ScheduledTrigger
                     , Hasura.RQL.DML.Count
                     , Hasura.RQL.DML.Delete
                     , Hasura.RQL.DML.Insert
                     , Hasura.RQL.DML.Internal
                     , Hasura.RQL.DML.Update
                     , Hasura.RQL.DML.Types
                     , Hasura.RQL.IR.BoolExp
                     , Hasura.RQL.IR.Delete
                     , Hasura.RQL.IR.Insert
                     , Hasura.RQL.IR.OrderBy
                     , Hasura.RQL.IR.Returning
                     , Hasura.RQL.IR.Select
                     , Hasura.RQL.IR.Update
                     , Hasura.RQL.IR.Root
                     , Hasura.RQL.IR
                     , Hasura.GraphQL.Context
                     , Hasura.GraphQL.Execute
                     , Hasura.GraphQL.Execute.Action
                     , Hasura.GraphQL.Execute.Action.Subscription
                     , Hasura.GraphQL.Execute.Action.Types
                     , Hasura.GraphQL.Execute.Backend
                     , Hasura.GraphQL.Execute.Common
                     , Hasura.GraphQL.Execute.Inline
                     , Hasura.GraphQL.Execute.Instances
                     , Hasura.GraphQL.Execute.LiveQuery.Options
                     , Hasura.GraphQL.Execute.LiveQuery.Plan
                     , Hasura.GraphQL.Execute.LiveQuery.Poll
                     , Hasura.GraphQL.Execute.LiveQuery.State
                     , Hasura.GraphQL.Execute.LiveQuery.TMap
                     , Hasura.GraphQL.Execute.Mutation
                     , Hasura.GraphQL.Execute.Remote
                     , Hasura.GraphQL.Execute.RemoteJoin
                     , Hasura.GraphQL.Execute.RemoteJoin.Types
                     , Hasura.GraphQL.Execute.RemoteJoin.Collect
                     , Hasura.GraphQL.Execute.RemoteJoin.Join
                     , Hasura.GraphQL.Execute.RemoteJoin.RemoteSchema
                     , Hasura.GraphQL.Execute.Resolve
                     , Hasura.GraphQL.Execute.Types
                     , Hasura.GraphQL.Explain
                     , Hasura.GraphQL.ParameterizedQueryHash
                     , Hasura.GraphQL.Parser
                     , Hasura.GraphQL.Parser.Class
                     , Hasura.GraphQL.Parser.Class.Parse
                     , Hasura.GraphQL.Parser.Collect
                     , Hasura.GraphQL.Parser.Column
                     , Hasura.GraphQL.Parser.Directives
                     , Hasura.GraphQL.Parser.Internal.Convert
                     , Hasura.GraphQL.Parser.Internal.Input
                     , Hasura.GraphQL.Parser.Internal.Parser
                     , Hasura.GraphQL.Parser.Internal.Scalars
                     , Hasura.GraphQL.Parser.Internal.TypeChecking
                     , Hasura.GraphQL.Parser.Internal.Types
                     , Hasura.GraphQL.Parser.Monad
                     , Hasura.GraphQL.Parser.Schema
                     , Hasura.GraphQL.RemoteServer
                     , Hasura.GraphQL.Schema
                     , Hasura.GraphQL.Schema.Action
                     , Hasura.GraphQL.Schema.Backend
                     , Hasura.GraphQL.Schema.BoolExp
                     , Hasura.GraphQL.Schema.Build
                     , Hasura.GraphQL.Schema.Common
                     , Hasura.GraphQL.Schema.Introspect
                     , Hasura.GraphQL.Schema.Instances
                     , Hasura.GraphQL.Schema.Mutation
                     , Hasura.GraphQL.Schema.OrderBy
                     , Hasura.GraphQL.Schema.Postgres
                     , Hasura.GraphQL.Schema.Remote
                     , Hasura.GraphQL.Schema.Select
                     , Hasura.GraphQL.Schema.Table
                     , Hasura.GraphQL.Transport.Backend
                     , Hasura.GraphQL.Transport.HTTP
                     , Hasura.GraphQL.Transport.HTTP.Protocol
                     , Hasura.GraphQL.Transport.Instances
                     , Hasura.GraphQL.Transport.WebSocket
                     , Hasura.GraphQL.Transport.WebSocket.Protocol
                     , Hasura.GraphQL.Transport.WebSocket.Server

                     , Hasura.Eventing.HTTP
                     , Hasura.Eventing.EventTrigger
                     , Hasura.Eventing.ScheduledTrigger
                     , Hasura.Eventing.ScheduledTrigger.Types
                     , Hasura.Eventing.Common
                     , Data.GADT.Compare.Extended
                     , Data.Tuple.Extended
                     , Hasura.SQL.AnyBackend
                     , Hasura.SQL.Backend
                     , Hasura.SQL.TH
                     , Hasura.SQL.Tag
                     , Hasura.SQL.GeoJSON
                     , Hasura.SQL.Time
                     , Hasura.SQL.Types
                     , Hasura.SQL.Value
                     , Hasura.SQL.WKT
                     , Hasura.Tracing
                     , Hasura.QueryTags
                     , Network.HTTP.Client.Extended
                     , Network.URI.Extended
                     , Network.Wai.Extended
                     , Network.Wai.Handler.WebSockets.Custom


executable graphql-engine
  import: common-all, common-exe
  hs-source-dirs:    src-exec
  main-is:           Main.hs
  build-depends:     base
                   , graphql-engine
                   , bytestring
                   , kan-extensions
                   , pg-client
                   , text
                   , text-conversions
                   , time
                   , unix
                   , ekg-core

test-suite graphql-engine-tests
  import: common-all, common-exe
  type: exitcode-stdio-1.0
  build-depends:
      aeson
    , base
    , bytestring
    , containers
    , cron
    , dependent-map
    , dependent-sum
    , graphql-engine
    , graphql-parser
    , hspec >=2.6.1 && <3
    , hspec-core >=2.6.1 && <3
    , hspec-expectations
    , hspec-expectations-lifted
    , http-client
    , http-client-tls
    , http-types
    , insert-ordered-containers
    , jose
    , kan-extensions
    , lens
    , lifted-base
    , mmorph
    , monad-control
    , mtl
    , natural-transformation >=0.4 && <0.5
    , network-uri
    , optparse-applicative
    , pg-client
    , process
    , QuickCheck
    , safe
    , scientific
    , split
    , template-haskell
    , text
    , time
    , transformers-base
    , unordered-containers
    , vector
  hs-source-dirs: src-test
  main-is: Main.hs
  other-modules:
    Data.NonNegativeIntSpec
    Data.Parser.CacheControlSpec
    Data.Parser.JSONPathSpec
    Data.Parser.URLTemplate
    Data.Text.RawString
    Data.TimeSpec
    Hasura.EventingSpec
    Hasura.Generator
    Hasura.GraphQL.Parser.DirectivesTest
    Hasura.GraphQL.Parser.TestUtils
    Hasura.GraphQL.Schema.RemoteTest
    Hasura.IncrementalSpec
    Hasura.SessionSpec
    Hasura.GraphQL.RemoteServerSpec
    Hasura.RQL.PermissionSpec
    Hasura.RQL.Types.EndpointSpec
    Hasura.SQL.WKTSpec
    Hasura.Server.AuthSpec
    Hasura.Server.MigrateSpec
    Hasura.Server.TelemetrySpec