diff --git a/espial.cabal b/espial.cabal index 6b24c17..b460eb0 100644 --- a/espial.cabal +++ b/espial.cabal @@ -4,7 +4,7 @@ cabal-version: 1.12 -- -- see: https://github.com/sol/hpack -- --- hash: 1a0707be00fc3010695ab3d7f1d1d1fcb6d5039e47d101b2a6919332eb864f83 +-- hash: b6f4cdc1abf4e7a6b5bbc1382963c22cc62bbbe8c4ae5e5394cf6fe5fc1ff9cb name: espial version: 0.0.8 @@ -123,7 +123,7 @@ library Paths_espial hs-source-dirs: src - default-extensions: BangPatterns CPP ConstraintKinds DataKinds DeriveDataTypeable DeriveGeneric EmptyDataDecls FlexibleContexts FlexibleInstances GADTs GeneralizedNewtypeDeriving InstanceSigs KindSignatures LambdaCase MultiParamTypeClasses MultiWayIf NoImplicitPrelude OverloadedStrings PolyKinds PolymorphicComponents QuasiQuotes Rank2Types RankNTypes RecordWildCards ScopedTypeVariables StandaloneDeriving TemplateHaskell TupleSections TypeApplications TypeFamilies TypeOperators TypeSynonymInstances ViewPatterns + default-extensions: BangPatterns CPP ConstraintKinds DataKinds DeriveDataTypeable DeriveGeneric DerivingStrategies EmptyDataDecls FlexibleContexts FlexibleInstances GADTs GeneralizedNewtypeDeriving InstanceSigs KindSignatures LambdaCase MultiParamTypeClasses MultiWayIf NoImplicitPrelude OverloadedStrings PolyKinds PolymorphicComponents QuasiQuotes Rank2Types RankNTypes RecordWildCards ScopedTypeVariables StandaloneDeriving TemplateHaskell TupleSections TypeApplications TypeFamilies TypeOperators TypeSynonymInstances UndecidableInstances ViewPatterns build-depends: aeson >=1.4 , attoparsec @@ -141,7 +141,7 @@ library , directory >=1.1 && <1.4 , entropy , esqueleto - , fast-logger >=2.2 && <2.5 + , fast-logger >=2.2 && <4 , file-embed , foreign-store , hjsmin >=0.1 && <0.3 @@ -157,7 +157,7 @@ library , monad-logger >=0.3 && <0.4 , mtl , parser-combinators - , persistent >=2.8 && <2.10 + , persistent >=2.8 && <2.11 , persistent-sqlite >=2.6.2 , persistent-template >=2.5 && <2.9 , pretty-show @@ -194,7 +194,7 @@ executable espial Paths_espial hs-source-dirs: app - default-extensions: BangPatterns CPP ConstraintKinds DataKinds DeriveDataTypeable DeriveGeneric EmptyDataDecls FlexibleContexts FlexibleInstances GADTs GeneralizedNewtypeDeriving InstanceSigs KindSignatures LambdaCase MultiParamTypeClasses MultiWayIf NoImplicitPrelude OverloadedStrings PolyKinds PolymorphicComponents QuasiQuotes Rank2Types RankNTypes RecordWildCards ScopedTypeVariables StandaloneDeriving TemplateHaskell TupleSections TypeApplications TypeFamilies TypeOperators TypeSynonymInstances ViewPatterns + default-extensions: BangPatterns CPP ConstraintKinds DataKinds DeriveDataTypeable DeriveGeneric DerivingStrategies EmptyDataDecls FlexibleContexts FlexibleInstances GADTs GeneralizedNewtypeDeriving InstanceSigs KindSignatures LambdaCase MultiParamTypeClasses MultiWayIf NoImplicitPrelude OverloadedStrings PolyKinds PolymorphicComponents QuasiQuotes Rank2Types RankNTypes RecordWildCards ScopedTypeVariables StandaloneDeriving TemplateHaskell TupleSections TypeApplications TypeFamilies TypeOperators TypeSynonymInstances UndecidableInstances ViewPatterns ghc-options: -threaded -rtsopts -with-rtsopts=-N build-depends: aeson >=1.4 @@ -214,7 +214,7 @@ executable espial , entropy , espial , esqueleto - , fast-logger >=2.2 && <2.5 + , fast-logger >=2.2 && <4 , file-embed , foreign-store , hjsmin >=0.1 && <0.3 @@ -230,7 +230,7 @@ executable espial , monad-logger >=0.3 && <0.4 , mtl , parser-combinators - , persistent >=2.8 && <2.10 + , persistent >=2.8 && <2.11 , persistent-sqlite >=2.6.2 , persistent-template >=2.5 && <2.9 , pretty-show @@ -263,7 +263,7 @@ executable migration Paths_espial hs-source-dirs: app/migration - default-extensions: BangPatterns CPP ConstraintKinds DataKinds DeriveDataTypeable DeriveGeneric EmptyDataDecls FlexibleContexts FlexibleInstances GADTs GeneralizedNewtypeDeriving InstanceSigs KindSignatures LambdaCase MultiParamTypeClasses MultiWayIf NoImplicitPrelude OverloadedStrings PolyKinds PolymorphicComponents QuasiQuotes Rank2Types RankNTypes RecordWildCards ScopedTypeVariables StandaloneDeriving TemplateHaskell TupleSections TypeApplications TypeFamilies TypeOperators TypeSynonymInstances ViewPatterns + default-extensions: BangPatterns CPP ConstraintKinds DataKinds DeriveDataTypeable DeriveGeneric DerivingStrategies EmptyDataDecls FlexibleContexts FlexibleInstances GADTs GeneralizedNewtypeDeriving InstanceSigs KindSignatures LambdaCase MultiParamTypeClasses MultiWayIf NoImplicitPrelude OverloadedStrings PolyKinds PolymorphicComponents QuasiQuotes Rank2Types RankNTypes RecordWildCards ScopedTypeVariables StandaloneDeriving TemplateHaskell TupleSections TypeApplications TypeFamilies TypeOperators TypeSynonymInstances UndecidableInstances ViewPatterns ghc-options: -threaded -rtsopts -with-rtsopts=-N build-depends: aeson >=1.4 @@ -283,7 +283,7 @@ executable migration , entropy , espial , esqueleto - , fast-logger >=2.2 && <2.5 + , fast-logger >=2.2 && <4 , file-embed , foreign-store , hjsmin >=0.1 && <0.3 @@ -300,7 +300,7 @@ executable migration , mtl , optparse-generic >=1.2.3 , parser-combinators - , persistent >=2.8 && <2.10 + , persistent >=2.8 && <2.11 , persistent-sqlite >=2.6.2 , persistent-template >=2.5 && <2.9 , pretty-show @@ -337,7 +337,7 @@ test-suite test Paths_espial hs-source-dirs: test - default-extensions: BangPatterns CPP ConstraintKinds DataKinds DeriveDataTypeable DeriveGeneric EmptyDataDecls FlexibleContexts FlexibleInstances GADTs GeneralizedNewtypeDeriving InstanceSigs KindSignatures LambdaCase MultiParamTypeClasses MultiWayIf NoImplicitPrelude OverloadedStrings PolyKinds PolymorphicComponents QuasiQuotes Rank2Types RankNTypes RecordWildCards ScopedTypeVariables StandaloneDeriving TemplateHaskell TupleSections TypeApplications TypeFamilies TypeOperators TypeSynonymInstances ViewPatterns + default-extensions: BangPatterns CPP ConstraintKinds DataKinds DeriveDataTypeable DeriveGeneric DerivingStrategies EmptyDataDecls FlexibleContexts FlexibleInstances GADTs GeneralizedNewtypeDeriving InstanceSigs KindSignatures LambdaCase MultiParamTypeClasses MultiWayIf NoImplicitPrelude OverloadedStrings PolyKinds PolymorphicComponents QuasiQuotes Rank2Types RankNTypes RecordWildCards ScopedTypeVariables StandaloneDeriving TemplateHaskell TupleSections TypeApplications TypeFamilies TypeOperators TypeSynonymInstances UndecidableInstances ViewPatterns ghc-options: -Wall build-depends: aeson >=1.4 @@ -357,7 +357,7 @@ test-suite test , entropy , espial , esqueleto - , fast-logger >=2.2 && <2.5 + , fast-logger >=2.2 && <4 , file-embed , foreign-store , hjsmin >=0.1 && <0.3 @@ -374,7 +374,7 @@ test-suite test , monad-logger >=0.3 && <0.4 , mtl , parser-combinators - , persistent >=2.8 && <2.10 + , persistent >=2.8 && <2.11 , persistent-sqlite >=2.6.2 , persistent-template >=2.5 && <2.9 , pretty-show diff --git a/package.yaml b/package.yaml index ece7f47..bc7993b 100644 --- a/package.yaml +++ b/package.yaml @@ -47,6 +47,7 @@ default-extensions: - DataKinds - DeriveDataTypeable - DeriveGeneric +- DerivingStrategies - EmptyDataDecls - FlexibleContexts - FlexibleInstances @@ -73,6 +74,7 @@ default-extensions: - TypeFamilies - TypeOperators - TypeSynonymInstances +- UndecidableInstances - ViewPatterns dependencies: @@ -92,7 +94,7 @@ dependencies: - classy-prelude-yesod >=1.4 && <1.6 - bytestring >=0.9 && <0.11 - text >=0.11 && <2.0 -- persistent >=2.8 && <2.10 +- persistent >=2.8 && <2.11 # - persistent-postgresql >=2.8 && <2.9 - blaze-html >= 0.9 && < 1.0 - persistent-template >=2.5 && <2.9 @@ -110,7 +112,7 @@ dependencies: # - aeson >=0.6 && <1.4 - conduit >=1.0 && <2.0 - monad-logger >=0.3 && <0.4 -- fast-logger >=2.2 && <2.5 +- fast-logger >=2.2 && <4 - wai-logger >=2.2 && <2.4 - file-embed - safe diff --git a/src/Application.hs b/src/Application.hs index 1c72965..43a735a 100644 --- a/src/Application.hs +++ b/src/Application.hs @@ -28,7 +28,6 @@ import Network.Wai.Middleware.Gzip import Network.Wai.Middleware.MethodOverride import Network.Wai.Middleware.RequestLogger (Destination(Logger), IPAddrSource(..), OutputFormat(..), destination, mkRequestLogger, outputFormat) import System.Log.FastLogger (defaultBufSize, newStdoutLoggerSet, toLogStr) -import Yesod.Auth (getAuth) -- import qualified Control.Monad.Metrics as MM -- import qualified Network.Wai.Metrics as WM diff --git a/src/Handler/Notes.hs b/src/Handler/Notes.hs index 2b4fa00..a34076a 100644 --- a/src/Handler/Notes.hs +++ b/src/Handler/Notes.hs @@ -6,7 +6,6 @@ import Handler.Common (lookupPagingParams) import qualified Data.Aeson as A import qualified Data.Text as T import Yesod.RssFeed -import Text.Blaze.Html (toHtml) import qualified Text.Blaze.Html5 as H getNotesR :: UserNameP -> Handler Html diff --git a/src/Handler/User.hs b/src/Handler/User.hs index 5966616..09c4013 100644 --- a/src/Handler/User.hs +++ b/src/Handler/User.hs @@ -4,7 +4,6 @@ module Handler.User where import qualified Data.Text as T import Handler.Common import Import -import Text.Blaze.Html (toHtml) import qualified Text.Blaze.Html5 as H import Yesod.RssFeed import qualified Database.Esqueleto as E diff --git a/src/Model.hs b/src/Model.hs index db096a0..929cd2a 100644 --- a/src/Model.hs +++ b/src/Model.hs @@ -3,7 +3,9 @@ module Model where import qualified ClassyPrelude.Yesod as CP +import Control.Monad.Fail (MonadFail) import qualified Data.Aeson as A +import qualified Data.Aeson.Types as A (parseFail) import qualified Data.Attoparsec.Text as P import qualified Control.Monad.Combinators as PC import qualified Data.List.NonEmpty as NE @@ -245,7 +247,7 @@ parseSearchQuery toExpr = quotedTerm = PC.between (P.char '"') (P.char '"') (P.takeWhile1 (/= '"')) simpleTerm = P.takeWhile1 (\c -> not (isSpace c) && c /= ':' && c /= '|') -parseTimeText :: (TI.ParseTime t, Monad m, Alternative m) => Text -> m t +parseTimeText :: (TI.ParseTime t, MonadFail m, Alternative m) => Text -> m t parseTimeText t = asum $ flip (parseTimeM True defaultTimeLocale) (unpack t) <$> @@ -426,8 +428,8 @@ instance FromJSON TagCloudMode where Just (String "lowerBound") -> TagCloudModeLowerBound <$> o .: "expanded" <*> o .: "value" Just (String "related") -> TagCloudModeRelated <$> o .: "expanded" <*> (fmap words (o .: "value")) Just (String "none") -> pure TagCloudModeNone - _ -> fail "bad parse" - parseJSON _ = fail "bad parse" + _ -> A.parseFail "bad parse" + parseJSON _ = A.parseFail "bad parse" instance ToJSON TagCloudMode where toJSON (TagCloudModeTop e i) = @@ -635,9 +637,9 @@ upsertBookmark userId mbid bm tags = do get bid >>= \case Just prev_bm -> do when (userId /= bookmarkUserId prev_bm) - (fail "unauthorized") + (throwString "unauthorized") replaceBookmark bid prev_bm - _ -> fail "not found" + _ -> throwString "not found" Nothing -> do getBy (UniqueUserHref (bookmarkUserId bm) (bookmarkHref bm)) >>= \case Just (Entity bid prev_bm) -> replaceBookmark bid prev_bm @@ -672,10 +674,10 @@ upsertNote userId mnid note = do get nid >>= \case Just note' -> do when (userId /= (noteUserId note')) - (fail "unauthorized") + (throwString "unauthorized") replace nid note pure (Updated, nid) - _ -> fail "not found" + _ -> throwString "not found" Nothing -> do (Created,) <$> insert note @@ -702,7 +704,7 @@ instance FromJSON FileBookmark where (o A..:? "selected") <*> (o A..:? "archive_url") <*> (o .: "tags") - parseJSON _ = fail "bad parse" + parseJSON _ = A.parseFail "bad parse" instance ToJSON FileBookmark where toJSON (FileBookmark {..}) = @@ -743,7 +745,7 @@ instance FromJSON FileNote where o .: "length" <*> (readFileNoteTime =<< o .: "created_at") <*> (readFileNoteTime =<< o .: "updated_at") - parseJSON _ = fail "bad parse" + parseJSON _ = A.parseFail "bad parse" instance ToJSON FileNote where toJSON (FileNote {..}) = @@ -757,7 +759,7 @@ instance ToJSON FileNote where ] readFileNoteTime - :: Monad m + :: MonadFail m => String -> m UTCTime readFileNoteTime = parseTimeM True defaultTimeLocale "%F %T" diff --git a/stack.yaml b/stack.yaml index 11f4019..15ed6c8 100644 --- a/stack.yaml +++ b/stack.yaml @@ -1,4 +1,4 @@ -resolver: lts-14.27 +resolver: nightly-2020-03-29 # allow-newer: true packages: - '.' diff --git a/stack.yaml.lock b/stack.yaml.lock index 60ba1c0..a93266f 100644 --- a/stack.yaml.lock +++ b/stack.yaml.lock @@ -41,7 +41,7 @@ packages: hackage: yesod-newsfeed-1.7.0.0 snapshots: - completed: - size: 524996 - url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/14/27.yaml - sha256: 7ea31a280c56bf36ff591a7397cc384d0dff622e7f9e4225b47d8980f019a0f0 - original: lts-14.27 + size: 507788 + url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/nightly/2020/3/29.yaml + sha256: f5cfc0452d1dc9d3058dcf389278d1cfb72ebc91b1a9bd48e8dde399c9479999 + original: nightly-2020-03-29