Blob Blame History Raw
name:           snap-core
version:        1.0.4.1
x-revision: 1
synopsis:       Snap: A Haskell Web Framework (core interfaces and types)

description:
  Snap is a simple and fast web development framework and server written in
  Haskell. For more information or to download the latest version, you can
  visit the Snap project website at <http://snapframework.com/>.
  .
  This library contains the core definitions and types for the Snap framework,
  including:
  .
    1. Primitive types and functions for HTTP (requests, responses, cookies,
       post/query parameters, etc)
  .
    2. A monad for programming web handlers called \"Snap\", which allows:
  .
       * Stateful access to the HTTP request and response objects
  .
       * Monadic failure (i.e. MonadPlus/Alternative instances) for declining
         to handle requests and chaining handlers together
  .
       * Early termination of the computation if you know early what you want
         to return and want to prevent further monadic processing
  .
  /Quick start/: The 'Snap' monad and HTTP definitions are in "Snap.Core".

license:        BSD3
license-file:   LICENSE
author:         Snap Framework Authors (see CONTRIBUTORS)
maintainer:     snap@snapframework.com
build-type:     Simple
cabal-version:  >= 1.10
homepage:       http://snapframework.com/
bug-reports:    https://github.com/snapframework/snap-core/issues
category:       Web, Snap, IO-Streams
Tested-With:    GHC == 7.4.2, GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.3,
                GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.4, GHC == 8.6.3,
                GHC == 8.8.1

extra-source-files:
  test/TestSuite.hs,
  cbits/timefuncs.c,
  CONTRIBUTORS,
  extra/haddock.css,
  extra/hscolour.css,
  extra/logo.gif,
  haddock.sh,
  LICENSE,
  README.md,
  README.SNAP.md,
  Setup.hs,
  runTestsAndCoverage.sh,
  test/data/fileServe/foo.bin,
  test/data/fileServe/foo.bin.bin.bin,
  test/data/fileServe/foo.html,
  test/data/fileServe/foo.txt,
  test/data/fileServe/mydir1/index.txt,
  test/data/fileServe/mydir2/dir/foo.txt,
  test/data/fileServe/mydir2/foo.txt,
  test/data/fileServe/mydir3/altindex.html,
  test/Snap/Core/Tests.hs,
  test/Snap/Internal/Http/Types/Tests.hs,
  test/Snap/Internal/Parsing/Tests.hs,
  test/Snap/Internal/Routing/Tests.hs,
  test/Snap/Test/Common.hs,
  test/Snap/Types/Headers/Tests.hs,
  test/Snap/Util/FileServe/Tests.hs,
  test/Snap/Util/FileUploads/Tests.hs,
  test/Snap/Util/GZip/Tests.hs,
  test/Snap/Util/Proxy/Tests.hs

Flag portable
  Description: Compile in cross-platform mode. No platform-specific code or
               optimizations such as C routines will be used.
  Default: False


Flag debug
  Description: Enable debug logging code. With this flag, Snap will
               test the DEBUG environment variable to decide whether to do
               logging, and this introduces a tiny amount of overhead
               (a call into a function pointer) because the calls to 'debug'
               cannot be inlined.

  Default: False


Flag network-uri
  Description: Get Network.URI from the network-uri package
  Default: True


Library
  Default-language:  Haskell2010
  hs-source-dirs: src

  if !flag(debug)
    cpp-options: -DNODEBUG

  if flag(portable) || os(windows)
    cpp-options: -DPORTABLE
    build-depends: time-locale-compat == 0.1.*
  else
    c-sources: cbits/timefuncs.c
    include-dirs: cbits
    build-depends: old-locale >= 1 && <2

  exposed-modules:
    Snap.Core,
    Snap.Internal.Core,
    Snap.Internal.Debug,
    Snap.Internal.Http.Types,
    Snap.Internal.Parsing,
    Snap.Test,
    Snap.Types.Headers,
    Snap.Util.CORS,
    Snap.Util.FileServe,
    Snap.Util.FileUploads,
    Snap.Util.GZip,
    Snap.Util.Proxy

  other-modules:
    Snap.Internal.Instances,
    Snap.Internal.Routing,
    Snap.Internal.Test.RequestBuilder,
    Snap.Internal.Test.Assertions,
    Snap.Internal.Util.FileServe,
    Snap.Internal.Util.FileUploads


  build-depends:
    HUnit                     >= 1.2     && < 2,
    attoparsec                >= 0.12    && < 0.14,
    base                      >= 4       && < 5,
    bytestring                >= 0.9     && < 0.11,
    bytestring-builder        >= 0.10.4  && < 0.11,
    case-insensitive          >= 1.1     && < 1.3,
    containers                >= 0.3     && < 1.0,
    directory                 >= 1       && < 2,
    filepath                  >= 1.1     && < 2.0,
    lifted-base               >= 0.1     && < 0.3,
    io-streams                >= 1.3     && < 1.6,
    hashable                  >= 1.2.0.6 && < 1.4,
    monad-control             >= 1.0     && < 1.1,
    mtl                       >= 2.0     && < 2.3,
    random                    >= 1       && < 2,
    readable                  >= 0.1     && < 0.4,
    regex-posix               >= 0.95    && < 1,
    text                      >= 0.11    && < 1.3,
    time                      >= 1.0     && < 1.11,
    transformers              >= 0.3     && < 0.6,
    transformers-base         >= 0.4     && < 0.5,
    unix-compat               >= 0.3     && < 0.6,
    unordered-containers      >= 0.1.4.3 && < 0.3,
    vector                    >= 0.6     && < 0.13

  other-extensions:
    BangPatterns,
    CPP,
    DeriveDataTypeable,
    EmptyDataDecls,
    ExistentialQuantification,
    FlexibleContexts,
    FlexibleInstances,
    ForeignFunctionInterface,
    GeneralizedNewtypeDeriving,
    MultiParamTypeClasses,
    OverloadedStrings,
    OverloadedStrings,
    PackageImports,
    Rank2Types,
    ScopedTypeVariables,
    TypeSynonymInstances

  if impl(ghc >= 6.12.0)
    ghc-options: -Wall -fwarn-tabs -fno-warn-unused-do-bind
  else
    ghc-options: -Wall -fwarn-tabs

  -- See https://ghc.haskell.org/trac/ghc/wiki/Migration/8.0#base-4.9.0.0

  if impl(ghc < 8.8)
    if impl(ghc >= 8.0)
      ghc-options: -Wcompat -Wnoncanonical-monad-instances -Wnoncanonical-monadfail-instances
    else
      build-depends: fail == 4.9.*, semigroups == 0.18.*

  if flag(network-uri)
    build-depends: network-uri >= 2.6 && < 2.7,
                   network     >= 2.6 && < 3.2
  else
    build-depends: network-uri >= 2.5 && < 2.6,
                   network     >= 2.3 && < 2.6


Test-suite testsuite
  hs-source-dirs: src test
  Type:              exitcode-stdio-1.0
  Main-is:           TestSuite.hs
  Default-language:  Haskell2010

  if flag(portable) || os(windows)
    cpp-options: -DPORTABLE
    build-depends: time-locale-compat == 0.1.*
  else
    c-sources: cbits/timefuncs.c
    include-dirs: cbits
    build-depends: old-locale >= 1 && <2

  other-modules:
    Snap.Core,
    Snap.Internal.Debug,
    Snap.Internal.Http.Types,
    Snap.Internal.Parsing,
    Snap.Test,
    Snap.Types.Headers,
    Snap.Util.CORS,
    Snap.Util.FileServe,
    Snap.Util.FileUploads,
    Snap.Util.GZip,
    Snap.Util.Proxy,
    Snap.Internal.Core,
    Snap.Internal.Instances,
    Snap.Internal.Routing,
    Snap.Internal.Test.RequestBuilder,
    Snap.Internal.Test.Assertions,
    Snap.Internal.Util.FileServe,
    Snap.Internal.Util.FileUploads,
    --------------------------------------------------------------------------
    Snap.Core.Tests,
    Snap.Internal.Http.Types.Tests,
    Snap.Internal.Parsing.Tests,
    Snap.Internal.Routing.Tests,
    Snap.Test.Common,
    Snap.Test.Tests,
    Snap.Types.Headers.Tests,
    Snap.Util.CORS.Tests,
    Snap.Util.FileServe.Tests,
    Snap.Util.FileUploads.Tests,
    Snap.Util.GZip.Tests,
    Snap.Util.Proxy.Tests

  build-depends:
    HUnit,
    attoparsec,
    base,
    bytestring,
    bytestring-builder,
    case-insensitive,
    containers,
    directory,
    filepath,
    hashable,
    lifted-base,
    io-streams,
    monad-control,
    mtl,
    random,
    readable,
    regex-posix,
    text,
    time,
    transformers,
    transformers-base,
    unix-compat,
    unordered-containers,
    vector,
    --------------------------------------------------------------------------
    QuickCheck                 >= 2.3.0.2  && <3,
    deepseq                    >= 1.1      && < 1.5,
    parallel                   >= 3        && <4,
    test-framework             >= 0.8.0.3  && <0.9,
    test-framework-hunit       >= 0.2.7    && <0.4,
    test-framework-quickcheck2 >= 0.2.12.1 && <0.4,
    zlib                       >= 0.5      && <0.7

  if flag(network-uri)
    build-depends: network-uri,
                   network
  else
    build-depends: network-uri,
                   network

  ghc-options: -Wall -fwarn-tabs -funbox-strict-fields -threaded
               -fno-warn-unused-do-bind

  -- See https://ghc.haskell.org/trac/ghc/wiki/Migration/8.0#base-4.9.0.0
  if impl(ghc < 8.8)
    if impl(ghc >= 8.0)
      ghc-options: -Wcompat -Wnoncanonical-monad-instances -Wnoncanonical-monadfail-instances
    else
      build-depends: fail == 4.9.*, semigroups == 0.18.*

  other-extensions:
    BangPatterns,
    CPP,
    DeriveDataTypeable,
    EmptyDataDecls,
    ExistentialQuantification,
    FlexibleContexts,
    FlexibleInstances,
    ForeignFunctionInterface,
    GeneralizedNewtypeDeriving,
    MagicHash,
    MultiParamTypeClasses,
    OverloadedStrings,
    Rank2Types,
    ScopedTypeVariables,
    StandaloneDeriving,
    TypeFamilies,
    TypeSynonymInstances

source-repository head
  type:     git
  location: git://github.com/snapframework/snap-core.git