graphql-spice 1.0.6.0 → 1.0.7.0
raw patch · 3 files changed
+60/−82 lines, 3 filesdep ~aesondep ~basedep ~containersPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: aeson, base, containers, time
API changes (from Hackage documentation)
- Language.GraphQL.Class: gql :: QuasiQuoter
+ Language.GraphQL.Class: instance Language.GraphQL.Class.FromGraphQL GHC.Base.String
+ Language.GraphQL.Class: instance Language.GraphQL.Class.ToGraphQL GHC.Base.String
- Language.GraphQL.Resolver: argument :: (MonadCatch m, FromGraphQL a) => Name -> ReaderT Context m a
+ Language.GraphQL.Resolver: argument :: forall (m :: Type -> Type) a. (MonadCatch m, FromGraphQL a) => Name -> ReaderT Context m a
- Language.GraphQL.Resolver: defaultResolver :: MonadCatch m => Name -> Resolve m
+ Language.GraphQL.Resolver: defaultResolver :: forall (m :: Type -> Type). MonadCatch m => Name -> Resolve m
- Test.Hspec.GraphQL: shouldResolve :: (MonadCatch m, Serialize b) => (Text -> IO (Either (ResponseEventStream m b) (Response b))) -> Text -> Expectation
+ Test.Hspec.GraphQL: shouldResolve :: forall (m :: Type -> Type) b. (MonadCatch m, Serialize b) => (Text -> IO (Either (ResponseEventStream m b) (Response b))) -> Text -> Expectation
- Test.Hspec.GraphQL: shouldResolveTo :: (MonadCatch m, Serialize b, Eq b, Show b) => Either (ResponseEventStream m b) (Response b) -> b -> Expectation
+ Test.Hspec.GraphQL: shouldResolveTo :: forall (m :: Type -> Type) b. (MonadCatch m, Serialize b, Eq b, Show b) => Either (ResponseEventStream m b) (Response b) -> b -> Expectation
Files
- CHANGELOG.md +8/−0
- graphql-spice.cabal +43/−42
- src/Language/GraphQL/Class.hs +9/−40
CHANGELOG.md view
@@ -6,6 +6,13 @@ and this project adheres to [Haskell Package Versioning Policy](https://pvp.haskell.org/). +## [1.0.7.0] - 2026-01-25+### Removed+- Deprecated `Language.GraphQL.Class.gql` (moved to `Language.GraphQL.TH`).++### Added+- `String` instances from `ToGraphQL` and `FromGraphQL`.+ ## [1.0.6.0] - 2024-12-06 ### Added - `Language.GraphQL.Class.gql` is moved to `Language.GraphQL.TH` where it was@@ -46,6 +53,7 @@ - JSON serialization. - Test helpers. +[1.0.7.0]: https://git.caraus.tech/OSS/graphql-spice/compare/v1.0.6.0...v1.0.7.0 [1.0.6.0]: https://git.caraus.tech/OSS/graphql-spice/compare/v1.0.5.0...v1.0.6.0 [1.0.5.0]: https://git.caraus.tech/OSS/graphql-spice/compare/v1.0.4.0...v1.0.5.0 [1.0.4.0]: https://git.caraus.tech/OSS/graphql-spice/compare/v1.0.3.0...v1.0.4.0
graphql-spice.cabal view
@@ -1,54 +1,55 @@-cabal-version: 3.0+cabal-version: 3.0 -name: graphql-spice-version: 1.0.6.0-synopsis: GraphQL with batteries-description: Various extensions and convenience functions for the core- graphql package.-category: Language-homepage: https://git.caraus.tech/OSS/graphql-spice-bug-reports: https://git.caraus.tech/OSS/graphql-spice/issues-author: Eugen Wissner <belka@caraus.de>-maintainer: belka@caraus.de-copyright: (c) 2021-2024 Eugen Wissner-license: MPL-2.0-license-files: LICENSE-build-type: Simple+name: graphql-spice+version: 1.0.7.0+synopsis: GraphQL with batteries+description: Various extensions and convenience functions for the core+ graphql package.+category: Language+homepage: https://git.caraus.tech/OSS/graphql-spice+bug-reports: https://issues.caraus.tech/projects/graphql/issues+author: Eugen Wissner <belka@caraus.de>+maintainer: belka@caraus.de+copyright: (c) 2021-2026 Eugen Wissner+license: MPL-2.0+license-files: LICENSE+build-type: Simple extra-source-files: CHANGELOG.md tested-with:- GHC == 9.8.2+ GHC == 9.12.2,+ GHC == 9.14.1 source-repository head type: git location: https://git.caraus.tech/OSS/graphql-spice.git library- exposed-modules:- Language.GraphQL.Class- Language.GraphQL.JSON- Language.GraphQL.Resolver- Language.GraphQL.TH- Test.Hspec.GraphQL- other-modules:- hs-source-dirs: src- ghc-options: -Wall- build-depends:- aeson >= 2.0.3 && < 2.3,- base >= 4.7 && < 5,- conduit ^>= 1.3.4,- containers >= 0.6 && < 0.8,- exceptions ^>= 0.10.4,- hspec-expectations >= 0.8.2 && < 0.9,- graphql ^>= 1.5.0,- megaparsec >= 9.0 && < 10,- scientific ^>= 0.3.7,- template-haskell >= 2.16 && < 3,- text >= 1.2 && < 3,- time >= 1.12.2 && < 1.15,- transformers >= 0.5.6 && < 0.7,- vector >= 0.12 && < 0.14,- unordered-containers ^>= 0.2.16- default-language: Haskell2010+ exposed-modules:+ Language.GraphQL.Class+ Language.GraphQL.JSON+ Language.GraphQL.Resolver+ Language.GraphQL.TH+ Test.Hspec.GraphQL+ other-modules:+ hs-source-dirs: src+ ghc-options: -Wall+ build-depends:+ aeson >= 2.0.3 && < 2.3,+ base >= 4.15 && < 5,+ conduit ^>= 1.3.4,+ containers >= 0.6 && < 0.9,+ exceptions ^>= 0.10.4,+ hspec-expectations >= 0.8.2 && < 0.9,+ graphql ^>= 1.5.0,+ megaparsec >= 9.0 && < 10,+ scientific ^>= 0.3.7,+ template-haskell >= 2.16 && < 3,+ text >= 1.2 && < 3,+ time >= 1.12.2 && < 1.16,+ transformers >= 0.5.6 && < 0.7,+ vector >= 0.12 && < 0.14,+ unordered-containers ^>= 0.2.16+ default-language: Haskell2010 test-suite graphql-test type: exitcode-stdio-1.0
src/Language/GraphQL/Class.hs view
@@ -14,7 +14,6 @@ , ToGraphQL(..) , deriveFromGraphQL , deriveToGraphQL- , gql ) where import Data.Int (Int8, Int16, Int32, Int64)@@ -47,7 +46,6 @@ , Dec(..) , Exp(..) , Info(..)- , Lit(..) , Quote(..) , Name , Q@@ -75,7 +73,6 @@ , litP , wildP )-import Language.Haskell.TH.Quote (QuasiQuoter(..)) import Data.Foldable (Foldable(..)) import qualified Data.HashMap.Strict as HashMap import qualified Language.GraphQL.Type as Type@@ -110,6 +107,10 @@ where toGraphQL = Type.String +instance ToGraphQL String+ where+ toGraphQL = Type.String . Text.pack+ instance ToGraphQL Int where toGraphQL = Type.Int . fromIntegral@@ -222,6 +223,11 @@ fromGraphQL (Type.String value) = Just value fromGraphQL _ = Nothing +instance FromGraphQL String+ where+ fromGraphQL (Type.String value) = Just $ Text.unpack value+ fromGraphQL _ = Nothing+ instance FromGraphQL Int where fromGraphQL = fromGraphQLToIntegral@@ -459,40 +465,3 @@ [ litE (stringL $ nameBase name') , [|toGraphQL $(varE alias)|] ]--stripIndentation :: String -> String-stripIndentation code = reverse- $ dropWhile isLineBreak- $ reverse- $ unlines- $ indent spaces <$> lines' withoutLeadingNewlines- where- indent 0 xs = xs- indent count (' ' : xs) = indent (count - 1) xs- indent _ xs = xs- withoutLeadingNewlines = dropWhile isLineBreak code- spaces = length $ takeWhile (== ' ') withoutLeadingNewlines- lines' "" = []- lines' string =- let (line, rest) = break isLineBreak string- reminder =- case rest of- [] -> []- '\r' : '\n' : strippedString -> lines' strippedString- _ : strippedString -> lines' strippedString- in line : reminder- isLineBreak = flip any ['\n', '\r'] . (==)---- | Removes leading and trailing newlines. Indentation of the first line is--- removed from each line of the string.-{-# DEPRECATED gql "Use Language.GraphQL.TH.gql instead" #-}-gql :: QuasiQuoter-gql = QuasiQuoter- { quoteExp = pure . LitE . StringL . stripIndentation- , quotePat = const- $ fail "Illegal gql QuasiQuote (allowed as expression only, used as a pattern)"- , quoteType = const- $ fail "Illegal gql QuasiQuote (allowed as expression only, used as a type)"- , quoteDec = const- $ fail "Illegal gql QuasiQuote (allowed as expression only, used as a declaration)"- }