X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/03d4ea83bfe6d38622ecaba6c6c56da1c2d211b1..bc11792923bc42053800a442661def8ed91223da:/gnu/packages/haskell-web.scm diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm index aae1209218..a250bb4262 100644 --- a/gnu/packages/haskell-web.scm +++ b/gnu/packages/haskell-web.scm @@ -8,6 +8,10 @@ ;;; Copyright © 2019 Robert Vollmert ;;; Copyright © 2019 John Soo ;;; Copyright © 2020 Alexandru-Sergiu Marton +;;; Copyright © 2020 Marius Bakke +;;; Copyright © 2020 Kyle Meyer +;;; Copyright © 2020 Alexandru-Sergiu Marton +;;; Copyright © 2020 Giacomo Leidi ;;; ;;; This file is part of GNU Guix. ;;; @@ -93,6 +97,27 @@ for screen-scraping.") (description "HTTP cookie parsing and rendering library for Haskell.") (license license:bsd-3))) +(define-public ghc-curl + (package + (name "ghc-curl") + (version "1.3.8") + (source (origin + (method url-fetch) + (uri (string-append "mirror://hackage/package/curl/curl-" + version ".tar.gz")) + (sha256 + (base32 + "0vj4hpaa30jz7c702xpsfvqaqdxz28zslsqnsfx6bf6dpwvck1wh")))) + (build-system haskell-build-system) + (inputs + `(("curl" ,curl))) + (home-page "https://hackage.haskell.org/package/curl") + (synopsis "Haskell bindings for libcurl") + (description + "@code{libcurl} is a versatile client-side URL transfer library. +This package provides a Haskell binding to libcurl.") + (license license:bsd-3))) + (define-public ghc-httpd-shed (package (name "ghc-httpd-shed") @@ -149,7 +174,7 @@ both client and server code).") (package (name "ghc-http") (version "4000.3.14") - (outputs '("out" "doc")) + (outputs '("out" "static" "doc")) (source (origin (method url-fetch) @@ -175,7 +200,23 @@ both client and server code).") ("ghc-network-uri" ,ghc-network-uri) ("ghc-split" ,ghc-split))) (arguments - `(#:tests? #f)) ; FIXME: currently missing libraries used for tests. + `(#:tests? #f ; FIXME: currently missing libraries used for tests. + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'create-simple-paths-module + (lambda _ + (call-with-output-file "Paths_HTTP.hs" + (lambda (port) + (format port "\ +{-# LANGUAGE CPP #-} +{-# LANGUAGE NoRebindableSyntax #-} +{-# OPTIONS_GHC -fno-warn-missing-import-lists #-} +module Paths_HTTP (version) where +import Data.Version (Version(..)) +version :: Version +version = Version [~a] [] +" (string-map (lambda (chr) (if (eq? chr #\.) #\, chr)) ,version)))) + #t))))) (home-page "https://github.com/haskell/HTTP") (synopsis "Library for client-side HTTP") (description @@ -378,6 +419,48 @@ contents of the HTTP connection. It also provides higher-level functions which allow you to avoid direct usage of conduits.") (license license:bsd-3))) +(define-public ghc-http-reverse-proxy + (package + (name "ghc-http-reverse-proxy") + (version "0.6.0") + (source + (origin + (method url-fetch) + (uri (string-append + "https://hackage.haskell.org/package/http-reverse-proxy/" + "http-reverse-proxy-" version ".tar.gz")) + (sha256 + (base32 + "1a6i5njf85b2lhg8m83njagcf09wih5q2irnyb2890s724qr277v")))) + (build-system haskell-build-system) + (inputs + `(("ghc-case-insensitive" ,ghc-case-insensitive) + ("ghc-http-types" ,ghc-http-types) + ("ghc-word8" ,ghc-word8) + ("ghc-blaze-builder" ,ghc-blaze-builder) + ("ghc-http-client" ,ghc-http-client) + ("ghc-wai" ,ghc-wai) + ("ghc-network" ,ghc-network) + ("ghc-conduit" ,ghc-conduit) + ("ghc-conduit-extra" ,ghc-conduit-extra) + ("ghc-wai-logger" ,ghc-wai-logger) + ("ghc-resourcet" ,ghc-resourcet) + ("ghc-unliftio" ,ghc-unliftio) + ("ghc-streaming-commons" ,ghc-streaming-commons))) + (native-inputs + `(("ghc-hspec" ,ghc-hspec) + ("ghc-warp" ,ghc-warp) + ("ghc-http-conduit" ,ghc-http-conduit))) + (home-page + "https://github.com/fpco/http-reverse-proxy") + (synopsis + "Reverse proxy HTTP requests, either over raw sockets or with WAI") + (description + "Provides a simple means of reverse-proxying HTTP requests. The raw +approach uses the same technique as leveraged by keter, whereas the WAI +approach performs full request/response parsing via WAI and http-conduit.") + (license license:bsd-3))) + (define-public ghc-wai (package (name "ghc-wai") @@ -546,7 +629,7 @@ Haskell's Web Application Interface (WAI).") ("ghc-tasty-hedgehog" ,ghc-tasty-hedgehog) ("ghc-tasty-hunit" ,ghc-tasty-hunit) ("ghc-doctest" ,ghc-doctest))) - (home-page "http://github.com/sjakobi/bsb-http-chunked") + (home-page "https://github.com/sjakobi/bsb-http-chunked") (synopsis "Chunked HTTP transfer encoding for bytestring builders") (description "This Haskell library contains functions for encoding bytestring builders for chunked Hypertext Transfer Protocol (HTTP) 1.1 @@ -594,7 +677,7 @@ transfers.") ("ghc-hunit" ,ghc-hunit) ("ghc-http-client" ,ghc-http-client) ("hspec-discover" ,hspec-discover))) - (home-page "http://github.com/yesodweb/wai") + (home-page "https://github.com/yesodweb/wai") (synopsis "HTTP server library for Haskell's WAI") (description "Warp is a server library for HTTP/1.x and HTTP/2 based WAI (Web Application Interface in Haskell).") @@ -649,7 +732,7 @@ limitation, automatic pruning, energy saving and replay resistance.") ("ghc-tls-session-manager" ,ghc-tls-session-manager) ("ghc-wai" ,ghc-wai) ("ghc-warp" ,ghc-warp))) - (home-page "http://github.com/yesodweb/wai") + (home-page "https://github.com/yesodweb/wai") (synopsis "SSL/TLS support for Warp") (description "This package provides SSL/TLS support for Warp, a WAI handler, via the native Haskell TLS implementation.") @@ -785,7 +868,7 @@ attacks.") `(("ghc-attoparsec" ,ghc-attoparsec) ("ghc-hspec" ,ghc-hspec) ("ghc-quickcheck" ,ghc-quickcheck))) - (home-page "http://www.yesodweb.com/") + (home-page "https://www.yesodweb.com/") (synopsis "CSS parser and renderer") (description "This package provides a CSS parser and renderer for Haskell.") @@ -882,6 +965,7 @@ entity decoding bugfixes applied.") (base32 "0k1r1hddjgqighazcazxrx6xfhvy2gm8il8l82ainv3cai13yl30")))) (build-system haskell-build-system) + (outputs '("out" "static" "doc")) (inputs `(("ghc-blaze-builder" ,ghc-blaze-builder) ("ghc-blaze-markup" ,ghc-blaze-markup))) @@ -912,6 +996,7 @@ entity decoding bugfixes applied.") "1jhabz1lbbv6yqxqiybifi86cb5xlsadrn368n5dd0wzzc7ja4iz")))) (build-system haskell-build-system) (arguments `(#:tests? #f)) ; FIXME: testing libraries are missing. + (outputs '("out" "static" "doc")) (inputs `(("ghc-attoparsec" ,ghc-attoparsec) ("ghc-base-compat" ,ghc-base-compat) @@ -1005,6 +1090,39 @@ the function @code{aesonQQ} that compile-time converts a string representation of a JSON value into a @code{Data.Aeson.Value}.") (license license:expat))) +(define-public ghc-aeson-better-errors + (package + (name "ghc-aeson-better-errors") + (version "0.9.1.0") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://hackage/package/aeson-better-errors/aeson-better-errors-" + version + ".tar.gz")) + (sha256 + (base32 + "09vkyrhwak3bmpfsqcd2az8hfqqkxyhg468hv5avgisy0nzh3w38")))) + (build-system haskell-build-system) + (inputs + `(("ghc-aeson" ,ghc-aeson) + ("ghc-unordered-containers" ,ghc-unordered-containers) + ("ghc-dlist" ,ghc-dlist) + ("ghc-scientific" ,ghc-scientific) + ("ghc-vector" ,ghc-vector) + ("ghc-transformers-compat" ,ghc-transformers-compat) + ("ghc-void" ,ghc-void))) + (home-page + "https://github.com/hdgarrood/aeson-better-errors") + (synopsis + "Better error messages when decoding JSON values in Haskell") + (description + "Gives you the tools to build parsers to decode JSON values, and gives +good error messages when parsing fails. See also +@url{http://harry.garrood.me/blog/aeson-better-errors/}.") + (license license:expat))) + (define-public ghc-multipart (package (name "ghc-multipart") @@ -1141,7 +1259,7 @@ avoid any issues with characters.") (define-public ghc-yesod-core (package (name "ghc-yesod-core") - (version "1.6.16.1") + (version "1.6.17.2") (source (origin (method url-fetch) @@ -1150,7 +1268,7 @@ avoid any issues with characters.") "yesod-core-" version ".tar.gz")) (sha256 (base32 - "0a0yv7wkwvb0n6iia532y9nzrirgnm09pjc8hpm0lx4ff609pgd2")))) + "0rcfksbxnwcpg5qh9vjkddv39q95mx4nxzgix51bbwa128hhzcwf")))) (build-system haskell-build-system) (inputs `(("ghc-wai" ,ghc-wai) ("ghc-extra" ,ghc-extra) @@ -1233,7 +1351,7 @@ functions, widgets, etc.") ("ghc-wai-extra" ,ghc-wai-extra) ("ghc-yesod-core" ,ghc-yesod-core) ("ghc-persistent-sqlite" ,ghc-persistent-sqlite))) - (home-page "http://www.yesodweb.com/") + (home-page "https://www.yesodweb.com/") (synopsis "Helpers for using Persistent from Yesod") (description "This Haskell package provides helpers for using Persistent from Yesod.") @@ -1275,7 +1393,7 @@ from Yesod.") ("ghc-hspec" ,ghc-hspec))) (home-page "https://www.yesodweb.com") (synopsis "Form handling support for Yesod Web Framework") - (description "This Haskell package provies a set of basic form inputs such + (description "This Haskell package provides a set of basic form inputs such as text, number, time, checkbox, select, textarea, etc through the @code{Yesod.Form.Fields} module. Also, there is @code{Yesod.Form.Nic} module providing richtext field using Nic editor. ") @@ -1392,7 +1510,7 @@ ignored.") (inputs `(("ghc-hxt-charproperties" ,ghc-hxt-charproperties) ("ghc-hunit" ,ghc-hunit))) - (home-page "http://www.haskell.org/haskellwiki/Regular_expressions_for_XML_Schema") + (home-page "https://wiki.haskell.org/Regular_expressions_for_XML_Schema") (synopsis "Regular expression library for W3C XML Schema regular expressions") (description "This library supports full W3C XML Schema regular expressions inclusive @@ -1415,6 +1533,7 @@ derivations of regular expressions.") (base32 "0836k65px3w9c5h1h2bmzq5a7mp6ajxwvfg3pfr2kbxwkgc0j63j")))) (build-system haskell-build-system) + (outputs '("out" "static" "doc")) (inputs `(("ghc-hxt-charproperties" ,ghc-hxt-charproperties) ("ghc-hxt-unicode" ,ghc-hxt-unicode) @@ -1871,3 +1990,283 @@ as frontend to hjsmin.") "This package provides a data type and ToJSON/FromJSON instances for Bower's package manifest file, bower.json.") (license license:expat))) + +(define-public ghc-dav + (package + (name "ghc-dav") + (version "1.3.4") + (source + (origin + (method url-fetch) + (uri (string-append "https://hackage.haskell.org/package/DAV/DAV-" + version ".tar.gz")) + (sha256 + (base32 "1isvi4fahq70lzxfz23as7qzkc01g7kba568l6flrgd0j1984fsy")))) + (build-system haskell-build-system) + (inputs + `(("ghc-case-insensitive" ,ghc-case-insensitive) + ("ghc-data-default" ,ghc-data-default) + ("ghc-exceptions" ,ghc-exceptions) + ("ghc-http-client" ,ghc-http-client) + ("ghc-http-client-tls" ,ghc-http-client-tls) + ("ghc-http-types" ,ghc-http-types) + ("ghc-lens" ,ghc-lens) + ("ghc-transformers-base" ,ghc-transformers-base) + ("ghc-transformers-compat" ,ghc-transformers-compat) + ("ghc-utf8-string" ,ghc-utf8-string) + ("ghc-xml-conduit" ,ghc-xml-conduit) + ("ghc-xml-hamlet" ,ghc-xml-hamlet) + ("ghc-network" ,ghc-network) + ("ghc-network-uri" ,ghc-network-uri) + ("ghc-optparse-applicative" ,ghc-optparse-applicative))) + (home-page "http://floss.scru.org/hDAV") + (synopsis "RFC 4918 WebDAV support") + (description "This package provides a library for the Web Distributed +Authoring and Versioning (WebDAV) extensions to HTTP as well an executable, +@command{hdav}, for command-line operation.") + (license license:gpl3))) + +(define-public ghc-yesod-test + (package + (name "ghc-yesod-test") + (version "1.6.9") + (source + (origin + (method url-fetch) + (uri (string-append "https://hackage.haskell.org/package/" + "yesod-test/yesod-test-" version ".tar.gz")) + (sha256 + (base32 + "0v25lqq7hgd5lggnyfd9kamkzd4126rd7vlhc131n253n4by4yak")))) + (build-system haskell-build-system) + (inputs + `(("ghc-hunit" ,ghc-hunit) + ("ghc-aeson" ,ghc-aeson) + ("ghc-attoparsec" ,ghc-attoparsec) + ("ghc-blaze-builder" ,ghc-blaze-builder) + ("ghc-blaze-html" ,ghc-blaze-html) + ("ghc-case-insensitive" ,ghc-case-insensitive) + ("ghc-conduit" ,ghc-conduit) + ("ghc-cookie" ,ghc-cookie) + ("ghc-hspec-core" ,ghc-hspec-core) + ("ghc-html-conduit" ,ghc-html-conduit) + ("ghc-http-types" ,ghc-http-types) + ("ghc-network" ,ghc-network) + ("ghc-memory" ,ghc-memory) + ("ghc-pretty-show" ,ghc-pretty-show) + ("ghc-semigroups" ,ghc-semigroups) + ("ghc-wai" ,ghc-wai) + ("ghc-wai-extra" ,ghc-wai-extra) + ("ghc-xml-conduit" ,ghc-xml-conduit) + ("ghc-xml-types" ,ghc-xml-types) + ("ghc-yesod-core" ,ghc-yesod-core))) + (native-inputs + `(("ghc-hspec" ,ghc-hspec) + ("ghc-yesod-form" ,ghc-yesod-form) + ("ghc-unliftio" ,ghc-unliftio) + ("ghc-unliftio-core" ,ghc-unliftio-core))) + (home-page "https://www.yesodweb.com") + (synopsis "Integration testing for WAI/Yesod Applications") + (description "This package's main goal is to encourage integration +and system testing of web applications by making everything easy to +test. Tests are like browser sessions that keep track of cookies and +the last visited page. You can perform assertions on the content of +HTML responses using CSS selectors.") + (license license:expat))) + +(define-public ghc-wai-app-static + (package + (name "ghc-wai-app-static") + (version "3.1.7.1") + (source + (origin + (method url-fetch) + (uri (string-append "https://hackage.haskell.org/package/" + "wai-app-static/wai-app-static-" + version ".tar.gz")) + (sha256 + (base32 + "10k6jb450p89r6dgpnwh428gg0wfw2qbx9n126jkvbchcjr1f4v8")))) + (build-system haskell-build-system) + (inputs + `(("ghc-wai" ,ghc-wai) + ("ghc-http-types" ,ghc-http-types) + ("ghc-unix-compat" ,ghc-unix-compat) + ("ghc-old-locale" ,ghc-old-locale) + ("ghc-file-embed" ,ghc-file-embed) + ("ghc-cryptonite" ,ghc-cryptonite) + ("ghc-memory" ,ghc-memory) + ("ghc-http-date" ,ghc-http-date) + ("ghc-blaze-html" ,ghc-blaze-html) + ("ghc-blaze-markup" ,ghc-blaze-markup) + ("ghc-mime-types" ,ghc-mime-types) + ("ghc-unordered-containers" ,ghc-unordered-containers) + ("ghc-zlib" ,ghc-zlib) + ("ghc-wai-extra" ,ghc-wai-extra) + ("ghc-optparse-applicative" ,ghc-optparse-applicative) + ("ghc-warp" ,ghc-warp))) + (native-inputs + `(("ghc-hspec" ,ghc-hspec) + ("ghc-network" ,ghc-network) + ("ghc-temporary" ,ghc-temporary) + ("ghc-mockery" ,ghc-mockery))) + (arguments + `(#:cabal-revision + ("1" "0bkmml30rzifvb7nxddj3pxczk0kniahra19mjn0qrkzy1n5752p"))) + (home-page "https://www.yesodweb.com/book/web-application-interface") + (synopsis "WAI application for static serving") + (description "This package provides a Web Application +Interface (WAI) application for static serving. It also provides some +helper functions and datatypes for use outside of WAI.") + (license license:expat))) + +(define-public ghc-hjsmin + (package + (name "ghc-hjsmin") + (version "0.2.0.4") + (source + (origin + (method url-fetch) + (uri (string-append "https://hackage.haskell.org/package/" + "hjsmin/hjsmin-" version ".tar.gz")) + (sha256 + (base32 + "1r2p5rjdjr25j3w4s57q5hxw2c3ymw12x7ms18yvglnq2ivr9fc1")))) + (build-system haskell-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'build 'fix-dist-directory-for-tests + (lambda _ + (substitute* '("test/test-cli.hs" "test/cli/core/runner") + (("dist-newstyle") "dist"))))))) + (inputs + `(("ghc-language-javascript" ,ghc-language-javascript) + ("ghc-optparse-applicative" ,ghc-optparse-applicative))) + (native-inputs + `(("ghc-extra" ,ghc-extra))) + (home-page "https://github.com/erikd/hjsmin") + (synopsis "Haskell implementation of a JavaScript minifier") + (description "This library provides tools reduce the size of +JavaScript files by stripping out extraneous whitespace and other +syntactic elements, without changing the semantics.") + (license license:bsd-3))) + +(define-public ghc-yesod-static + (package + (name "ghc-yesod-static") + (version "1.6.0.1") + (source + (origin + (method url-fetch) + (uri (string-append "https://hackage.haskell.org/package/" + "yesod-static/yesod-static-" version ".tar.gz")) + (sha256 + (base32 + "1jd0ryfr2vyrwasyvbqmc6j4ngv1lgz78w427f169l7gyl1firxb")))) + (build-system haskell-build-system) + (inputs + `(("ghc-async" ,ghc-async) + ("ghc-attoparsec" ,ghc-attoparsec) + ("ghc-base64-bytestring" ,ghc-base64-bytestring) + ("ghc-blaze-builder" ,ghc-blaze-builder) + ("ghc-conduit" ,ghc-conduit) + ("ghc-cryptonite" ,ghc-cryptonite) + ("ghc-cryptonite-conduit" ,ghc-cryptonite-conduit) + ("ghc-css-text" ,ghc-css-text) + ("ghc-data-default" ,ghc-data-default) + ("ghc-file-embed" ,ghc-file-embed) + ("ghc-hashable" ,ghc-hashable) + ("ghc-hjsmin" ,ghc-hjsmin) + ("ghc-http-types" ,ghc-http-types) + ("ghc-memory" ,ghc-memory) + ("ghc-mime-types" ,ghc-mime-types) + ("ghc-unix-compat" ,ghc-unix-compat) + ("ghc-unordered-containers" ,ghc-unordered-containers) + ("ghc-wai" ,ghc-wai) + ("ghc-wai-app-static" ,ghc-wai-app-static) + ("ghc-yesod-core" ,ghc-yesod-core))) + (native-inputs + `(("ghc-hspec" ,ghc-hspec) + ("ghc-yesod-test" ,ghc-yesod-test) + ("ghc-wai-extra" ,ghc-wai-extra) + ("ghc-hunit" ,ghc-hunit) + ("ghc-rio" ,ghc-rio))) + (home-page "https://www.yesodweb.com/") + (synopsis "Static file serving subsite for Yesod") + (description "This package provides a static file serving subsite +for the Yesod Web Framework.") + (license license:expat))) + +(define-public ghc-wai-handler-launch + (package + (name "ghc-wai-handler-launch") + (version "3.0.3.1") + (source + (origin + (method url-fetch) + (uri (string-append "https://hackage.haskell.org/package/" + "wai-handler-launch/wai-handler-launch-" + version ".tar.gz")) + (sha256 + (base32 + "1ifqgyc1ccig5angh5l1iq7vyms4lvi8wzvysg5dw82nml49n02m")))) + (build-system haskell-build-system) + (inputs + `(("ghc-wai" ,ghc-wai) + ("ghc-warp" ,ghc-warp) + ("ghc-http-types" ,ghc-http-types) + ("ghc-streaming-commons" ,ghc-streaming-commons) + ("ghc-async" ,ghc-async))) + (home-page "https://hackage.haskell.org/package/wai-handler-launch") + (synopsis "Launch a Web application in the default browser") + (description "This package handles cross-platform Web browser +launching and inserts JavaScript code to ping the server. When the +server no longer receives pings, it shuts down.") + (license license:expat))) + +(define-public ghc-wai-cors + (package + (name "ghc-wai-cors") + (version "0.2.7") + (source + (origin + (method url-fetch) + (uri (string-append "https://hackage.haskell.org/package/" + "wai-cors/wai-cors-" version ".tar.gz")) + (sha256 + (base32 + "10gv3jjlkcb13031frr818p56v2s0qf6dqjsfpwlhwdxdssvx5r5")))) + (build-system haskell-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + ;; As of version 0.2.7, there are two test suites: "unit-tests" + ;; and "phantomjs". Since we do not have a PhantomJS package, + ;; we only run the unit tests. + (replace 'check + (lambda _ + (invoke "runhaskell" "Setup.hs" "test" "unit-tests")))))) + (inputs + `(("ghc-attoparsec" ,ghc-attoparsec) + ("ghc-base-unicode-symbols" ,ghc-base-unicode-symbols) + ("ghc-case-insensitive" ,ghc-case-insensitive) + ("ghc-http-types" ,ghc-http-types) + ("ghc-wai" ,ghc-wai))) + (native-inputs + `(("ghc-network" ,ghc-network) + ("ghc-wai-websockets" ,ghc-wai-websockets) + ("ghc-warp" ,ghc-warp) + ("ghc-websockets" ,ghc-websockets) + ("ghc-tasty" ,ghc-tasty) + ("ghc-tasty-hunit" ,ghc-tasty-hunit) + ("ghc-wai-extra" ,ghc-wai-extra) + ("ghc-wai-websockets" ,ghc-wai-websockets) + ("ghc-warp" ,ghc-warp) + ("ghc-websockets" ,ghc-websockets))) + (home-page "https://github.com/larskuhtz/wai-cors") + (synopsis "Cross-Origin Resource Sharing (CORS) for WAI") + (description "This package provides an implementation of Cross-Origin +Resource Sharing (CORS) for the Web Application Framework (WAI) that +aims to be compliant with @url{https://www.w3.org/TR/cors}.") + (license license:expat)))