yesod-core 1.6.5 → 1.6.6
raw patch · 18 files changed
+103/−207 lines, 18 filesdep +riodep −QuickCheckdep −deepseq-genericsdep −directorydep ~template-haskelldep ~transformersdep ~wai
Dependencies added: rio
Dependencies removed: QuickCheck, deepseq-generics, directory, old-locale, primitive, safe, semigroups
Dependency ranges changed: template-haskell, transformers, wai, warp
Files
- ChangeLog.md +4/−0
- Yesod/Core/Class/Handler.hs +0/−3
- Yesod/Core/Class/Yesod.hs +8/−4
- Yesod/Core/Content.hs +0/−4
- Yesod/Core/Dispatch.hs +2/−6
- Yesod/Core/Handler.hs +2/−8
- Yesod/Core/Internal/LiteApp.hs +0/−3
- Yesod/Core/Internal/Run.hs +0/−7
- Yesod/Core/Internal/TH.hs +0/−17
- Yesod/Core/Types.hs +1/−8
- Yesod/Core/Unsafe.hs +0/−4
- Yesod/Core/Widget.hs +0/−4
- Yesod/Routes/TH/ParseRoute.hs +0/−5
- Yesod/Routes/TH/RenderRoute.hs +2/−26
- Yesod/Routes/TH/RouteAttrs.hs +0/−8
- test/YesodCoreTest.hs +7/−0
- test/YesodCoreTest/RawResponse.hs +26/−43
- yesod-core.cabal +51/−57
ChangeLog.md view
@@ -1,3 +1,7 @@+## 1.6.6++* `defaultErrorHandler` handles text/plain requests [#1522](https://github.com/yesodweb/yesod/pull/1520)+ ## 1.6.5 * Add `fileSourceByteString` [#1503](https://github.com/yesodweb/yesod/pull/1503)
Yesod/Core/Class/Handler.hs view
@@ -16,9 +16,6 @@ import Control.Monad.Logger (MonadLogger) import Control.Monad.Trans.Resource (MonadResource) import Control.Monad.Trans.Class (lift)-#if __GLASGOW_HASKELL__ < 710-import Data.Monoid (Monoid)-#endif import Data.Conduit.Internal (Pipe, ConduitM) import Control.Monad.Trans.Identity ( IdentityT)
Yesod/Core/Class/Yesod.hs view
@@ -2,7 +2,6 @@ {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE TemplateHaskell #-}-{-# LANGUAGE CPP #-} module Yesod.Core.Class.Yesod where import Yesod.Core.Content@@ -14,9 +13,6 @@ import Data.Text.Encoding (encodeUtf8Builder) import Control.Arrow ((***), second) import Control.Exception (bracket)-#if __GLASGOW_HASKELL__ < 710-import Control.Applicative ((<$>))-#endif import Control.Monad (forM, when, void) import Control.Monad.IO.Class (MonadIO (liftIO)) import Control.Monad.Logger (LogLevel (LevelInfo, LevelOther),@@ -615,6 +611,7 @@ let path' = TE.decodeUtf8With TEE.lenientDecode $ W.rawPathInfo r defaultMessageWidget "Not Found" [hamlet|<p>#{path'}|] provideRep $ return $ object ["message" .= ("Not Found" :: Text)]+ provideRep $ return $ ("Not Found" :: Text) -- For API requests. -- For a user with a browser,@@ -638,6 +635,7 @@ let apair u = ["authentication_url" .= rend u] content = maybe [] apair (authRoute site) return $ object $ ("message" .= ("Not logged in"::Text)):content+ provideRep $ return $ ("Not logged in" :: Text) defaultErrorHandler (PermissionDenied msg) = selectRep $ do provideRep $ defaultLayout $ defaultMessageWidget@@ -645,6 +643,7 @@ [hamlet|<p>#{msg}|] provideRep $ return $ object ["message" .= ("Permission Denied. " <> msg)]+ provideRep $ return $ "Permission Denied. " <> msg defaultErrorHandler (InvalidArgs ia) = selectRep $ do provideRep $ defaultLayout $ defaultMessageWidget@@ -655,6 +654,8 @@ <li>#{msg} |] provideRep $ return $ object ["message" .= ("Invalid Arguments" :: Text), "errors" .= ia]+ provideRep $ return $ ("Invalid Arguments: " <> T.intercalate " " ia)+ defaultErrorHandler (InternalError e) = do $logErrorS "yesod-core" e selectRep $ do@@ -662,11 +663,14 @@ "Internal Server Error" [hamlet|<pre>#{e}|] provideRep $ return $ object ["message" .= ("Internal Server Error" :: Text), "error" .= e]+ provideRep $ return $ "Internal Server Error: " <> e+ defaultErrorHandler (BadMethod m) = selectRep $ do provideRep $ defaultLayout $ defaultMessageWidget "Method Not Supported" [hamlet|<p>Method <code>#{S8.unpack m}</code> not supported|] provideRep $ return $ object ["message" .= ("Bad method" :: Text), "method" .= TE.decodeUtf8With TEE.lenientDecode m]+ provideRep $ return $ "Bad Method " <> TE.decodeUtf8With TEE.lenientDecode m asyncHelper :: (url -> [x] -> Text) -> [Script url]
Yesod/Core/Content.hs view
@@ -4,7 +4,6 @@ {-# LANGUAGE TypeSynonymInstances #-} {-# LANGUAGE Rank2Types #-} {-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE CPP #-} module Yesod.Core.Content ( -- * Content Content (..)@@ -56,9 +55,6 @@ import Data.Text.Encoding (encodeUtf8Builder) import qualified Data.Text.Lazy as TL import Data.ByteString.Builder (Builder, byteString, lazyByteString, stringUtf8)-#if __GLASGOW_HASKELL__ < 710-import Data.Monoid (mempty)-#endif import Text.Hamlet (Html) import Text.Blaze.Html.Renderer.Utf8 (renderHtmlBuilder) import Data.Conduit (Flush (Chunk), SealedConduitT, mapOutput)
Yesod/Core/Dispatch.hs view
@@ -3,7 +3,6 @@ {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE CPP #-} module Yesod.Core.Dispatch ( -- * Quasi-quoted routing parseRoutes@@ -48,9 +47,6 @@ import Data.ByteString.Lazy.Char8 () import Data.Text (Text)-#if __GLASGOW_HASKELL__ < 710-import Data.Monoid (mappend)-#endif import qualified Data.ByteString as S import qualified Data.ByteString.Lazy as BL import qualified Data.ByteString.Char8 as S8@@ -61,7 +57,7 @@ import Yesod.Core.Class.Yesod import Yesod.Core.Class.Dispatch import Yesod.Core.Internal.Run-import Safe (readMay)+import Text.Read (readMaybe) import System.Environment (getEnvironment) import qualified System.Random as Random import Control.AutoUpdate (mkAutoUpdate, defaultUpdateSettings, updateAction, updateFreq)@@ -243,7 +239,7 @@ case lookup "PORT" env of Nothing -> error "warpEnv: no PORT environment variable found" Just portS ->- case readMay portS of+ case readMaybe portS of Nothing -> error $ "warpEnv: invalid PORT environment variable: " ++ show portS Just port -> warp port site
Yesod/Core/Handler.hs view
@@ -1,4 +1,3 @@-{-# LANGUAGE CPP #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE FlexibleInstances #-}@@ -195,10 +194,6 @@ mkFileInfoLBS, mkFileInfoSource) -#if __GLASGOW_HASKELL__ < 710-import Control.Applicative ((<$>))-import Data.Monoid (mempty, mappend)-#endif import Control.Applicative ((<|>)) import qualified Data.CaseInsensitive as CI import Control.Exception (evaluate, SomeException, throwIO)@@ -249,7 +244,6 @@ import Yesod.Core.Types import Yesod.Routes.Class (Route) import Data.ByteString.Builder (Builder)-import Safe (headMay) import Data.CaseInsensitive (CI, original) import qualified Data.Conduit.List as CL import Control.Monad.Trans.Resource (MonadResource, InternalState, runResourceT, withInternalState, getInternalState, liftResourceT, resourceForkIO)@@ -606,7 +600,7 @@ -- | Gets just the last message in the user's session, -- discards the rest and the status getMessage :: MonadHandler m => m (Maybe Html)-getMessage = fmap (fmap snd . headMay) getMessages+getMessage = fmap (fmap snd . listToMaybe) getMessages -- | Bypass remaining handler code and output the given file. --@@ -1322,7 +1316,7 @@ tryAccept ct = if subType == "*" then if mainType == "*"- then headMay reps+ then listToMaybe reps else Map.lookup mainType mainTypeMap else lookupAccept ct where
Yesod/Core/Internal/LiteApp.hs view
@@ -1,9 +1,6 @@ {-# LANGUAGE TypeFamilies, PatternGuards, CPP #-} module Yesod.Core.Internal.LiteApp where -#if __GLASGOW_HASKELL__ < 710-import Data.Monoid-#endif #if !(MIN_VERSION_base(4,11,0)) import Data.Semigroup (Semigroup(..)) #endif
Yesod/Core/Internal/Run.hs view
@@ -1,4 +1,3 @@-{-# LANGUAGE CPP #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE PatternGuards #-} {-# LANGUAGE RankNTypes #-}@@ -9,10 +8,6 @@ module Yesod.Core.Internal.Run where -#if __GLASGOW_HASKELL__ < 710-import Data.Monoid (Monoid, mempty)-import Control.Applicative ((<$>))-#endif import Yesod.Core.Internal.Response import Data.ByteString.Builder (toLazyByteString) import qualified Data.ByteString.Lazy as BL@@ -287,10 +282,8 @@ , vault = mempty , requestBodyLength = KnownLength 0 , requestHeaderRange = Nothing-#if MIN_VERSION_wai(3,2,0) , requestHeaderReferer = Nothing , requestHeaderUserAgent = Nothing-#endif } fakeRequest = YesodRequest
Yesod/Core/Internal/TH.hs view
@@ -3,7 +3,6 @@ {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE CPP #-} {-# LANGUAGE FlexibleContexts #-} module Yesod.Core.Internal.TH where @@ -17,9 +16,6 @@ import Data.ByteString.Lazy.Char8 () import Data.List (foldl')-#if __GLASGOW_HASKELL__ < 710-import Control.Applicative ((<$>))-#endif import Control.Monad (replicateM, void) import Text.Parsec (parse, many1, many, eof, try, option, sepBy1) import Text.ParserCombinators.Parsec.Char (alphaNum, spaces, string, char)@@ -126,11 +122,7 @@ -> Q([Dec],[Dec]) mkYesodGeneral appCxt' namestr mtys isSub f resS = do let appCxt = fmap (\(c:rest) -> -#if MIN_VERSION_template_haskell(2,10,0) foldl' (\acc v -> acc `AppT` nameToType v) (ConT $ mkName c) rest-#else- ClassP (mkName c) $ fmap nameToType rest-#endif ) appCxt' mname <- lookupTypeName namestr arity <- case mname of@@ -140,13 +132,8 @@ case info of TyConI dec -> case dec of-#if MIN_VERSION_template_haskell(2,11,0) DataD _ _ vs _ _ _ -> length vs NewtypeD _ _ vs _ _ _ -> length vs-#else- DataD _ _ vs _ _ -> length vs- NewtypeD _ _ vs _ _ -> length vs-#endif TySynD _ vs _ -> length vs _ -> 0 _ -> 0@@ -230,8 +217,4 @@ return $ LetE [fun] (VarE helper) instanceD :: Cxt -> Type -> [Dec] -> Dec-#if MIN_VERSION_template_haskell(2,11,0) instanceD = InstanceD Nothing-#else-instanceD = InstanceD-#endif
Yesod/Core/Types.hs view
@@ -11,11 +11,6 @@ module Yesod.Core.Types where import qualified Data.ByteString.Builder as BB-#if __GLASGOW_HASKELL__ < 710-import Control.Applicative (Applicative (..))-import Control.Applicative ((<$>))-import Data.Monoid (Monoid (..))-#endif import Control.Arrow (first) import Control.Exception (Exception) import Control.Monad (ap)@@ -57,7 +52,6 @@ import Yesod.Routes.Class (RenderRoute (..), ParseRoute (..)) import Control.Monad.Reader (MonadReader (..)) import Control.DeepSeq (NFData (rnf))-import Control.DeepSeq.Generics (genericRnf) import Yesod.Core.TypeCache (TypeMap, KeyedTypeMap) import Control.Monad.Logger (MonadLoggerIO (..)) import UnliftIO (MonadUnliftIO (..), UnliftIO (..))@@ -323,8 +317,7 @@ | PermissionDenied !Text | BadMethod !H.Method deriving (Show, Eq, Typeable, Generic)-instance NFData ErrorResponse where- rnf = genericRnf+instance NFData ErrorResponse ----- header stuff -- | Headers to be added to a 'Result'.
Yesod/Core/Unsafe.hs view
@@ -1,4 +1,3 @@-{-# LANGUAGE CPP #-} -- | This is designed to be used as -- -- > import qualified Yesod.Core.Unsafe as Unsafe@@ -10,9 +9,6 @@ import Yesod.Core.Types import Yesod.Core.Class.Yesod-#if __GLASGOW_HASKELL__ < 710-import Data.Monoid (mempty, mappend)-#endif import Control.Monad.IO.Class (MonadIO) -- | designed to be used as
Yesod/Core/Widget.hs view
@@ -8,7 +8,6 @@ {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE TypeSynonymInstances #-} {-# LANGUAGE UndecidableInstances #-}-{-# LANGUAGE CPP #-} -- | Widgets combine HTML with JS and CSS dependencies with a unique identifier -- generator, allowing you to create truly modular HTML components. module Yesod.Core.Widget@@ -57,9 +56,6 @@ import Text.Julius import Yesod.Routes.Class import Yesod.Core.Handler (getMessageRender, getUrlRenderParams)-#if __GLASGOW_HASKELL__ < 710-import Control.Applicative ((<$>))-#endif import Text.Shakespeare.I18N (RenderMessage) import Data.Text (Text) import qualified Data.Map as Map
Yesod/Routes/TH/ParseRoute.hs view
@@ -1,4 +1,3 @@-{-# LANGUAGE CPP #-} {-# LANGUAGE TemplateHaskell #-} module Yesod.Routes.TH.ParseRoute ( -- ** ParseRoute@@ -45,8 +44,4 @@ fixDispatch x = x instanceD :: Cxt -> Type -> [Dec] -> Dec-#if MIN_VERSION_template_haskell(2,11,0) instanceD = InstanceD Nothing-#else-instanceD = InstanceD-#endif
Yesod/Routes/TH/RenderRoute.hs view
@@ -7,22 +7,14 @@ ) where import Yesod.Routes.TH.Types-#if MIN_VERSION_template_haskell(2,11,0) import Language.Haskell.TH (conT)-#endif import Language.Haskell.TH.Syntax-#if MIN_VERSION_template_haskell(2,11,0) import Data.Bits (xor)-#endif import Data.Maybe (maybeToList) import Control.Monad (replicateM) import Data.Text (pack) import Web.PathPieces (PathPiece (..), PathMultiPiece (..)) import Yesod.Routes.Class-#if __GLASGOW_HASKELL__ < 710-import Control.Applicative ((<$>))-import Data.Monoid (mconcat)-#endif -- | Generate the constructors of a route data type. mkRouteCons :: [ResourceTree Type] -> Q ([Con], [Dec])@@ -50,10 +42,8 @@ (cons, decs) <- mkRouteCons children #if MIN_VERSION_template_haskell(2,12,0) dec <- DataD [] (mkName name) [] Nothing cons <$> fmap (pure . DerivClause Nothing) (mapM conT [''Show, ''Read, ''Eq])-#elif MIN_VERSION_template_haskell(2,11,0)- dec <- DataD [] (mkName name) [] Nothing cons <$> mapM conT [''Show, ''Read, ''Eq] #else- let dec = DataD [] (mkName name) [] cons [''Show, ''Read, ''Eq]+ dec <- DataD [] (mkName name) [] Nothing cons <$> mapM conT [''Show, ''Read, ''Eq] #endif return ([con], dec : decs) where@@ -154,12 +144,9 @@ #if MIN_VERSION_template_haskell(2,12,0) did <- DataInstD [] ''Route [typ] Nothing cons <$> fmap (pure . DerivClause Nothing) (mapM conT (clazzes False)) let sds = fmap (\t -> StandaloneDerivD Nothing cxt $ ConT t `AppT` ( ConT ''Route `AppT` typ)) (clazzes True)-#elif MIN_VERSION_template_haskell(2,11,0)+#else did <- DataInstD [] ''Route [typ] Nothing cons <$> mapM conT (clazzes False) let sds = fmap (\t -> StandaloneDerivD cxt $ ConT t `AppT` ( ConT ''Route `AppT` typ)) (clazzes True)-#else- let did = DataInstD [] ''Route [typ] cons clazzes'- let sds = [] #endif return $ instanceD cxt (ConT ''RenderRoute `AppT` typ) [ did@@ -167,25 +154,14 @@ ] : sds ++ decs where-#if MIN_VERSION_template_haskell(2,11,0) clazzes standalone = if standalone `xor` null cxt then clazzes' else []-#endif clazzes' = [''Show, ''Eq, ''Read] -#if MIN_VERSION_template_haskell(2,11,0) notStrict :: Bang notStrict = Bang NoSourceUnpackedness NoSourceStrictness-#else-notStrict :: Strict-notStrict = NotStrict-#endif instanceD :: Cxt -> Type -> [Dec] -> Dec-#if MIN_VERSION_template_haskell(2,11,0) instanceD = InstanceD Nothing-#else-instanceD = InstanceD-#endif
Yesod/Routes/TH/RouteAttrs.hs view
@@ -1,4 +1,3 @@-{-# LANGUAGE CPP #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE RecordWildCards #-} module Yesod.Routes.TH.RouteAttrs@@ -10,9 +9,6 @@ import Language.Haskell.TH.Syntax import Data.Set (fromList) import Data.Text (pack)-#if __GLASGOW_HASKELL__ < 710-import Control.Applicative ((<$>))-#endif mkRouteAttrsInstance :: Cxt -> Type -> [ResourceTree a] -> Q Dec mkRouteAttrsInstance cxt typ ress = do@@ -42,8 +38,4 @@ toText s = VarE 'pack `AppE` LitE (StringL s) instanceD :: Cxt -> Type -> [Dec] -> Dec-#if MIN_VERSION_template_haskell(2,11,0) instanceD = InstanceD Nothing-#else-instanceD = InstanceD-#endif
test/YesodCoreTest.hs view
@@ -16,7 +16,12 @@ import qualified YesodCoreTest.JsLoader as JsLoader import qualified YesodCoreTest.RequestBodySize as RequestBodySize import qualified YesodCoreTest.Json as Json++-- Skip on Windows, see https://github.com/yesodweb/yesod/issues/1523#issuecomment-398278450+#if !WINDOWS import qualified YesodCoreTest.RawResponse as RawResponse+#endif+ import qualified YesodCoreTest.Streaming as Streaming import qualified YesodCoreTest.Reps as Reps import qualified YesodCoreTest.Auth as Auth@@ -43,7 +48,9 @@ JsLoader.specs RequestBodySize.specs Json.specs+#if !WINDOWS RawResponse.specs+#endif Streaming.specs Reps.specs Auth.specs
test/YesodCoreTest/RawResponse.hs view
@@ -13,15 +13,13 @@ import Data.Conduit import qualified Data.Conduit.Binary as CB import Data.Char (toUpper)-import Control.Exception (try, IOException) import Data.Conduit.Network-import Network.Socket (close) import Control.Concurrent (threadDelay)-import Control.Concurrent.Async (withAsync)+import Control.Concurrent.Async (race) import Control.Monad.Trans.Resource (register) import Data.IORef-import Data.Streaming.Network (bindPortTCP) import Network.HTTP.Types (status200)+import Network.Wai.Handler.Warp (testWithApplication) mkYesod "App" [parseRoutes| / HomeR GET@@ -56,53 +54,38 @@ flush send " world" -getFreePort :: IO Int-getFreePort = do- loop 43124- where- loop port = do- esocket <- try $ bindPortTCP port "*"- case esocket of- Left (_ :: IOException) -> loop (succ port)- Right socket -> do- close socket- return port+allowFiveSeconds :: IO a -> IO a+allowFiveSeconds = fmap (either id id) . race (threadDelay 5000000 >> error "timed out") specs :: Spec specs = do describe "RawResponse" $ do- it "works" $ do- port <- getFreePort- withAsync (warp port App) $ \_ -> do- threadDelay 100000- runTCPClient (clientSettings port "127.0.0.1") $ \ad -> do- runConduit $ yield "GET / HTTP/1.1\r\n\r\nhello" .| appSink ad- runConduit (appSource ad .| CB.take 6) >>= (`shouldBe` "0HELLO")- runConduit $ yield "WORLd" .| appSink ad- runConduit (appSource ad .| await) >>= (`shouldBe` Just "WORLD")+ it "works" $ allowFiveSeconds $ testWithApplication (toWaiApp App) $ \port -> do+ runTCPClient (clientSettings port "127.0.0.1") $ \ad -> do+ runConduit $ yield "GET / HTTP/1.1\r\n\r\nhello" .| appSink ad+ runConduit (appSource ad .| CB.take 6) >>= (`shouldBe` "0HELLO")+ runConduit $ yield "WORLd" .| appSink ad+ runConduit (appSource ad .| await) >>= (`shouldBe` Just "WORLD") - let body req = do- port <- getFreePort- withAsync (warp port App) $ \_ -> do- threadDelay 100000- runTCPClient (clientSettings port "127.0.0.1") $ \ad -> do- runConduit $ yield req .| appSink ad- runConduit $ appSource ad .| CB.lines .| do- let loop = do- x <- await- case x of- Nothing -> return ()- Just "\r" -> return ()- _ -> loop- loop+ let body req = allowFiveSeconds $ testWithApplication (toWaiApp App) $ \port -> do+ runTCPClient (clientSettings port "127.0.0.1") $ \ad -> do+ runConduit $ yield req .| appSink ad+ runConduit $ appSource ad .| CB.lines .| do+ let loop = do+ x <- await+ case x of+ Nothing -> return ()+ Just "\r" -> return ()+ _ -> loop+ loop - Just "0005\r" <- await- Just "hello\r" <- await+ Just "0005\r" <- await+ Just "hello\r" <- await - Just "0006\r" <- await- Just " world\r" <- await+ Just "0006\r" <- await+ Just " world\r" <- await - return ()+ return () it "sendWaiResponse + responseStream" $ do body "GET /wai-stream HTTP/1.1\r\n\r\n" it "sendWaiApplication + responseStream" $ do
yesod-core.cabal view
@@ -1,5 +1,5 @@ name: yesod-core-version: 1.6.5+version: 1.6.6 license: MIT license-file: LICENSE author: Michael Snoyman <michael@snoyman.com>@@ -22,48 +22,43 @@ library build-depends: base >= 4.9 && < 5- , time >= 1.5- , wai >= 3.0- , wai-extra >= 3.0.7+ , aeson >= 1.0+ , auto-update+ , blaze-html >= 0.5+ , blaze-markup >= 0.7.1+ , byteable , bytestring >= 0.10.2- , text >= 0.7- , template-haskell- , path-pieces >= 0.1.2 && < 0.3- , shakespeare >= 2.0- , transformers >= 0.4- , mtl- , clientsession >= 0.9.1 && < 0.10- , random >= 1.0.0.2 && < 1.2+ , case-insensitive >= 0.2 , cereal >= 0.3- , old-locale >= 1.0.0.2 && < 1.1+ , clientsession >= 0.9.1 && < 0.10+ , conduit >= 1.3+ , conduit-extra , containers >= 0.2- , unordered-containers >= 0.2 , cookie >= 0.4.3 && < 0.5+ , deepseq >= 1.3+ , fast-logger >= 2.2 , http-types >= 0.7- , case-insensitive >= 0.2+ , monad-logger >= 0.3.10 && < 0.4+ , mtl , parsec >= 2 && < 3.2- , directory >= 1+ , path-pieces >= 0.1.2 && < 0.3+ , random >= 1.0.0.2 && < 1.2+ , resourcet >= 1.2+ , rio+ , shakespeare >= 2.0+ , template-haskell >= 2.11+ , text >= 0.7+ , time >= 1.5+ , transformers >= 0.4+ , unix-compat+ , unliftio+ , unordered-containers >= 0.2 , vector >= 0.9 && < 0.13- , aeson >= 1.0- , fast-logger >= 2.2+ , wai >= 3.2+ , wai-extra >= 3.0.7 , wai-logger >= 0.2- , monad-logger >= 0.3.10 && < 0.4- , conduit >= 1.3- , resourcet >= 1.2- , blaze-html >= 0.5- , blaze-markup >= 0.7.1- , safe , warp >= 3.0.2- , unix-compat- , conduit-extra- , deepseq >= 1.3- , deepseq-generics- , primitive , word8- , auto-update- , semigroups- , byteable- , unliftio exposed-modules: Yesod.Core Yesod.Core.Content@@ -173,44 +168,43 @@ YesodCoreTest.YesodTest cpp-options: -DTEST- build-depends: base- ,hspec >= 1.3- ,hspec-expectations- ,clientsession- ,wai >= 3.0- ,yesod-core- ,bytestring- ,text- ,http-types- , random- ,HUnit- ,QuickCheck >= 2 && < 3- ,transformers+ if os(windows)+ cpp-options: -DWINDOWS+ build-depends: base+ , async+ , bytestring+ , clientsession , conduit+ , conduit-extra , containers- , resourcet+ , cookie >= 0.4.1 && < 0.5+ , hspec >= 1.3+ , hspec-expectations+ , http-types , network- , async- , conduit-extra+ , random+ , resourcet , shakespeare , streaming-commons- , wai-extra- , cookie >= 0.4.1 && < 0.5+ , text+ , transformers , unliftio- ghc-options: -Wall+ , wai >= 3.0+ , wai-extra+ , warp+ , yesod-core+ ghc-options: -Wall -threaded extensions: TemplateHaskell benchmark widgets type: exitcode-stdio-1.0 hs-source-dirs: bench build-depends: base- , gauge- , bytestring- , text- , transformers- , yesod-core , blaze-html+ , bytestring+ , gauge , shakespeare+ , text main-is: widget.hs ghc-options: -Wall -O2