packages feed

http-core-0.1.0.0: http-core.cabal

cabal-version:   3.0
name:            http-core
version:         0.1.0.0
synopsis:        Backend-agnostic HTTP request and response types
category:        Network.HTTP
description:
  Shared HTTP vocabulary types that are independent of any specific
  server backend (warp, snap, etc.) or middleware framework.
  .
  This is the Haskell equivalent of Rust's @http@ crate: a tiny,
  stable package defining Request and Response types that everyone
  depends on. WAI, warp, and other backends are confined to adapter
  packages; this package knows nothing about them.

license:         BSD-3-Clause
license-file:    LICENSE
author:          Josh Burgess
maintainer:      Josh Burgess <joshburgess.webdev@gmail.com>
homepage:        https://github.com/joshburgess/acolyte
bug-reports:     https://github.com/joshburgess/acolyte/issues
build-type:      Simple

extra-doc-files:
  CHANGELOG.md

library
  exposed-modules:
    Http.Core
    Http.Core.Request
    Http.Core.Response
    Http.Core.Extensions
    Http.Core.Body

  build-depends:
      base         >= 4.20 && < 5
    , bytestring   >= 0.11 && < 0.13
    , text         >= 2.0  && < 2.2
    , http-types   >= 0.12 && < 0.13
    , containers   >= 0.6  && < 0.8

  hs-source-dirs: src
  default-language: GHC2024
  default-extensions:
    AllowAmbiguousTypes
    OverloadedStrings
    StrictData

  -- -fno-full-laziness prevents GHC from floating IO actions out of
  -- lambdas in the streaming Body module. This transformation can
  -- silently introduce space leaks in pull-based streaming code.
  -- Applied to the whole library since it's small and no module
  -- benefits from full laziness floating.
  -- See: https://www.well-typed.com/blog/2016/09/sharing-conduit/
  ghc-options: -Wall -funbox-strict-fields -fno-full-laziness

test-suite spec
  type: exitcode-stdio-1.0
  main-is: Main.hs
  hs-source-dirs: test
  default-language: GHC2024
  default-extensions:
    StrictData

  ghc-options: -Wall -rtsopts "-with-rtsopts=-K1K"

  build-depends:
      base         >= 4.20 && < 5
    , http-core
    , bytestring   >= 0.11 && < 0.13
    , text         >= 2.0  && < 2.2
    , http-types   >= 0.12 && < 0.13

test-suite properties
  type: exitcode-stdio-1.0
  main-is: Properties.hs
  hs-source-dirs: test
  default-language: GHC2024
  default-extensions:
    OverloadedStrings
    StrictData

  ghc-options: -Wall

  build-depends:
      base         >= 4.20 && < 5
    , http-core
    , hedgehog     >= 1.4  && < 1.8
    , bytestring   >= 0.11 && < 0.13
    , text         >= 2.0  && < 2.2
    , http-types   >= 0.12 && < 0.13

source-repository head
  type:     git
  location: https://github.com/joshburgess/acolyte.git