name:               postgrest
version:            12.2.8
synopsis:           REST API for any Postgres database
description:        Reads the schema of a PostgreSQL database and creates RESTful routes
                    for tables, views, and functions, supporting all HTTP methods that security
                    permits.
license:            MIT
license-file:       LICENSE
author:             Joe Nelson, Adam Baker, Steve Chavez
maintainer:         Steve Chavez <stevechavezast@gmail.com>
category:           Executable, PostgreSQL, Network APIs
homepage:           https://postgrest.org
bug-reports:        https://github.com/PostgREST/postgrest/issues
build-type:         Simple
extra-source-files: CHANGELOG.md
cabal-version:      >= 1.10

tested-with:
    -- stack on FreeBSD, MacOS, Ubuntu, Windows
    GHC == 9.4.5
    -- nix, cabal on Ubuntu (arm)
  , GHC == 9.4.8
    -- cabal on Ubuntu
  , GHC == 9.6.4
    -- cabal on Ubuntu
  , GHC == 9.8.2

source-repository head
  type:     git
  location: git://github.com/PostgREST/postgrest.git

flag dev
  default:     False
  manual:      True
  description: Development flags

flag hpc
  default:     True
  manual:      True
  description: Enable HPC (dev only)

library
  default-language:   Haskell2010
  default-extensions: OverloadedStrings
                      NoImplicitPrelude
  hs-source-dirs:     src
  exposed-modules:    PostgREST.Admin
                      PostgREST.App
                      PostgREST.AppState
                      PostgREST.Auth
                      PostgREST.CLI
                      PostgREST.Config
                      PostgREST.Config.Database
                      PostgREST.Config.JSPath
                      PostgREST.Config.PgVersion
                      PostgREST.Config.Proxy
                      PostgREST.Cors
                      PostgREST.SchemaCache
                      PostgREST.SchemaCache.Identifiers
                      PostgREST.SchemaCache.Routine
                      PostgREST.SchemaCache.Relationship
                      PostgREST.SchemaCache.Representations
                      PostgREST.SchemaCache.Table
                      PostgREST.Error
                      PostgREST.Listener
                      PostgREST.Logger
                      PostgREST.MediaType
                      PostgREST.Metrics
                      PostgREST.Observation
                      PostgREST.Query
                      PostgREST.Query.QueryBuilder
                      PostgREST.Query.SqlFragment
                      PostgREST.Query.Statements
                      PostgREST.Plan
                      PostgREST.Plan.CallPlan
                      PostgREST.Plan.MutatePlan
                      PostgREST.Plan.ReadPlan
                      PostgREST.Plan.Types
                      PostgREST.RangeQuery
                      PostgREST.Unix
                      PostgREST.ApiRequest
                      PostgREST.ApiRequest.Preferences
                      PostgREST.ApiRequest.QueryParams
                      PostgREST.ApiRequest.Types
                      PostgREST.Response
                      PostgREST.Response.OpenAPI
                      PostgREST.Response.GucHeader
                      PostgREST.Response.Performance
                      PostgREST.Version
  other-modules:      Paths_postgrest
  build-depends:      base                      >= 4.9 && < 4.20
                    , HTTP                      >= 4000.3.7 && < 4000.5
                    , Ranged-sets               >= 0.3 && < 0.5
                    , aeson                     >= 2.0.3 && < 2.3
                    , auto-update               >= 0.1.4 && < 0.2
                    , base64-bytestring         >= 1 && < 1.3
                    , bytestring                >= 0.10.8 && < 0.13
                    , cache                     >= 0.1.3 && < 0.2.0
                    , case-insensitive          >= 1.2 && < 1.3
                    , cassava                   >= 0.4.5 && < 0.6
                    , clock                     >= 0.8.3 && < 0.9.0
                    , configurator-pg           >= 0.2 && < 0.3
                    , containers                >= 0.5.7 && < 0.7
                    , contravariant-extras      >= 0.3.3 && < 0.4
                    , cookie                    >= 0.4.2 && < 0.5
                    , directory                 >= 1.2.6 && < 1.4
                    , either                    >= 4.4.1 && < 5.1
                    , extra                     >= 1.7.0 && < 2.0
                    , fuzzyset                  >= 0.2.4 && < 0.3
                    , gitrev                    >= 1.2 && < 1.4
                    , hasql                     >= 1.6.1.1 && < 1.7
                    , hasql-dynamic-statements  >= 0.3.1 && < 0.4
                    , hasql-notifications       >= 0.2.2.2 && < 0.2.3
                    , hasql-pool                >= 1.0.1 && < 1.1
                    , hasql-transaction         >= 1.0.1 && < 1.1
                    , heredoc                   >= 0.2 && < 0.3
                    , http-types                >= 0.12.2 && < 0.13
                    , insert-ordered-containers >= 0.2.2 && < 0.3
                    , interpolatedstring-perl6  >= 1 && < 1.1
                    , jose                      >= 0.8.5.1 && < 0.12
                    , lens                      >= 4.14 && < 5.3
                    , lens-aeson                >= 1.0.1 && < 1.3
                    , mtl                       >= 2.2.2 && < 2.4
                    , network                   >= 2.6 && < 3.2
                    , network-uri               >= 2.6.1 && < 2.8
                    , optparse-applicative      >= 0.13 && < 0.19
                    , parsec                    >= 3.1.11 && < 3.2
                    , postgresql-libpq          >= 0.10
                    , prometheus-client         >= 1.1.1 && < 1.2.0
                    , protolude                 >= 0.3.1 && < 0.4
                    , regex-tdfa                >= 1.2.2 && < 1.4
                    , retry                     >= 0.7.4 && < 0.10
                    , scientific                >= 0.3.4 && < 0.4
                    , streaming-commons         >= 0.1.1 && < 0.3
                    , swagger2                  >= 2.4 && < 2.9
                    , text                      >= 1.2.2 && < 2.2
                    , time                      >= 1.6 && < 1.13
                    , timeit                    >= 2.0 && < 2.1
                    , unordered-containers      >= 0.2.8 && < 0.3
                    , unix-compat               >= 0.5.4 && < 0.8
                    , vault                     >= 0.3.1.5 && < 0.4
                    , vector                    >= 0.11 && < 0.14
                    , wai                       >= 3.2.1 && < 3.3
                    , wai-cors                  >= 0.2.5 && < 0.3
                    , wai-extra                 >= 3.1.8 && < 3.2
                    -- We already depend on wai-logger >= 2.3.7 indirectly via wai-extra,
                    -- but we want to depend on 2.4.0 which fixes 'unknownSocket' log output
                    -- for unix sockets; this is tested in test/io/test_io.py. See
                    -- https://github.com/kazu-yamamoto/logger/commit/3a71ca70afdbb93d4ecf0083eeba1fbbbcab3fc3
                    , wai-logger                >= 2.4.0
                    , warp                      >= 3.3.19 && < 3.4
                      -- -fno-spec-constr may help keep compile time memory use in check,
                      --   see https://gitlab.haskell.org/ghc/ghc/issues/16017#note_219304
                      -- -optP-Wno-nonportable-include-path
                      --   prevents build failures on case-insensitive filesystems (macos),
                      --   see https://github.com/commercialhaskell/stack/issues/3918
  ghc-options:        -Werror -Wall -fwarn-identities
                      -fno-spec-constr -optP-Wno-nonportable-include-path

  if flag(dev)
    ghc-options: -O0 -fwrite-ide-info
    if flag(hpc)
      ghc-options: -fhpc -hpcdir .hpc
  else
    ghc-options: -O2

  if !os(windows)
    build-depends:
      unix

executable postgrest
  default-language:   Haskell2010
  default-extensions: OverloadedStrings
                      NoImplicitPrelude
  hs-source-dirs:     main
  main-is:            Main.hs
  build-depends:      base                >= 4.9 && < 4.20
                    , containers          >= 0.5.7 && < 0.7
                    , postgrest
                    , protolude           >= 0.3.1 && < 0.4
  ghc-options:        -threaded -rtsopts "-with-rtsopts=-N -I0 -qg"
                      -O2 -Werror -Wall -fwarn-identities
                      -fno-spec-constr -optP-Wno-nonportable-include-path

  if flag(dev)
    ghc-options: -O0 -fwrite-ide-info
                 -- https://github.com/PostgREST/postgrest/issues/387
                 -with-rtsopts=-K1K
    if flag(hpc)
      ghc-options: -fhpc -hpcdir .hpc
  else
    ghc-options: -O2

test-suite spec
  type:               exitcode-stdio-1.0
  default-language:   Haskell2010
  default-extensions: OverloadedStrings
                      QuasiQuotes
                      NoImplicitPrelude
  hs-source-dirs:     test/spec
  main-is:            Main.hs
  other-modules:      Feature.Auth.AsymmetricJwtSpec
                      Feature.Auth.AudienceJwtSecretSpec
                      Feature.Auth.AuthSpec
                      Feature.Auth.BinaryJwtSecretSpec
                      Feature.Auth.NoAnonSpec
                      Feature.Auth.NoJwtSpec
                      Feature.ConcurrentSpec
                      Feature.CorsSpec
                      Feature.ExtraSearchPathSpec
                      Feature.NoSuperuserSpec
                      Feature.ObservabilitySpec
                      Feature.OpenApi.DisabledOpenApiSpec
                      Feature.OpenApi.IgnorePrivOpenApiSpec
                      Feature.OpenApi.OpenApiSpec
                      Feature.OpenApi.ProxySpec
                      Feature.OpenApi.RootSpec
                      Feature.OpenApi.SecurityOpenApiSpec
                      Feature.OptionsSpec
                      Feature.Query.AggregateFunctionsSpec
                      Feature.Query.AndOrParamsSpec
                      Feature.Query.ComputedRelsSpec
                      Feature.Query.CustomMediaSpec
                      Feature.Query.DeleteSpec
                      Feature.Query.EmbedDisambiguationSpec
                      Feature.Query.EmbedInnerJoinSpec
                      Feature.Query.ErrorSpec
                      Feature.Query.InsertSpec
                      Feature.Query.JsonOperatorSpec
                      Feature.Query.LimitedMutationSpec
                      Feature.Query.MultipleSchemaSpec
                      Feature.Query.NullsStripSpec
                      Feature.Query.PgSafeUpdateSpec
                      Feature.Query.PlanSpec
                      Feature.Query.PostGISSpec
                      Feature.Query.PreferencesSpec
                      Feature.Query.QueryLimitedSpec
                      Feature.Query.QuerySpec
                      Feature.Query.RangeSpec
                      Feature.Query.RawOutputTypesSpec
                      Feature.Query.RelatedQueriesSpec
                      Feature.Query.RpcSpec
                      Feature.Query.ServerTimingSpec
                      Feature.Query.SingularSpec
                      Feature.Query.SpreadQueriesSpec
                      Feature.Query.UnicodeSpec
                      Feature.Query.UpdateSpec
                      Feature.Query.UpsertSpec
                      Feature.RollbackSpec
                      Feature.RpcPreRequestGucsSpec
                      SpecHelper
  build-depends:      base              >= 4.9 && < 4.20
                    , aeson             >= 2.0.3 && < 2.3
                    , aeson-qq          >= 0.8.1 && < 0.9
                    , async             >= 2.1.1 && < 2.3
                    , auto-update       >= 0.1.4 && < 0.2
                    , base64-bytestring >= 1 && < 1.3
                    , bytestring        >= 0.10.8 && < 0.13
                    , case-insensitive  >= 1.2 && < 1.3
                    , containers        >= 0.5.7 && < 0.7
                    , hasql-pool        >= 1.0.1 && < 1.1
                    , hasql-transaction >= 1.0.1 && < 1.1
                    , heredoc           >= 0.2 && < 0.3
                    , hspec             >= 2.3 && < 2.12
                    , hspec-wai         >= 0.10 && < 0.12
                    , hspec-wai-json    >= 0.10 && < 0.12
                    , http-types        >= 0.12.3 && < 0.13
                    , lens              >= 4.14 && < 5.3
                    , lens-aeson        >= 1.0.1 && < 1.3
                    , monad-control     >= 1.0.1 && < 1.1
                    , postgrest
                    , process           >= 1.4.2 && < 1.7
                    , protolude         >= 0.3.1 && < 0.4
                    , regex-tdfa        >= 1.2.2 && < 1.4
                    , scientific        >= 0.3.4 && < 0.4
                    , text              >= 1.2.2 && < 2.2
                    , transformers-base >= 0.4.4 && < 0.5
                    , wai               >= 3.2.1 && < 3.3
                    , wai-extra         >= 3.0.19 && < 3.2
  ghc-options:        -threaded -O0 -Werror -Wall -fwarn-identities
                      -fno-spec-constr -optP-Wno-nonportable-include-path
                      -fno-warn-missing-signatures
                      -fwrite-ide-info
                      -- https://github.com/PostgREST/postgrest/issues/387
                      -with-rtsopts=-K33K

test-suite doctests
  type:               exitcode-stdio-1.0
  default-language:   Haskell2010
  default-extensions: OverloadedStrings
                      NoImplicitPrelude
  hs-source-dirs:     test/doc
  main-is:            Main.hs
  build-depends:      base              >= 4.9 && < 4.20
                    , doctest           >= 0.8
                    , postgrest
                    , pretty-simple
                    , protolude         >= 0.3.1 && < 0.4
  ghc-options:        -threaded -O0 -Werror -Wall -fwarn-identities
                      -fno-spec-constr -optP-Wno-nonportable-include-path
