packages feed

datastar-hs 1.1.0.0 → 1.1.0.1

raw patch · 5 files changed

+42/−3 lines, 5 filesdep ~aesonPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: aeson

API changes (from Hackage documentation)

- Hypermedia.Datastar.ExecuteScript: instance GHC.Show.Show Hypermedia.Datastar.ExecuteScript.ExecuteScript
- Hypermedia.Datastar.PatchElements: instance GHC.Show.Show Hypermedia.Datastar.PatchElements.PatchElements
- Hypermedia.Datastar.PatchSignals: instance GHC.Show.Show Hypermedia.Datastar.PatchSignals.PatchSignals
- Hypermedia.Datastar.Types: instance GHC.Show.Show Hypermedia.Datastar.Types.ElementNamespace
- Hypermedia.Datastar.Types: instance GHC.Show.Show Hypermedia.Datastar.Types.ElementPatchMode
- Hypermedia.Datastar.Types: instance GHC.Show.Show Hypermedia.Datastar.Types.EventType
- Hypermedia.Datastar.WAI: instance GHC.Show.Show Hypermedia.Datastar.WAI.CompressionStrategy
+ Hypermedia.Datastar.ExecuteScript: instance GHC.Internal.Show.Show Hypermedia.Datastar.ExecuteScript.ExecuteScript
+ Hypermedia.Datastar.PatchElements: instance GHC.Internal.Show.Show Hypermedia.Datastar.PatchElements.PatchElements
+ Hypermedia.Datastar.PatchSignals: instance GHC.Internal.Show.Show Hypermedia.Datastar.PatchSignals.PatchSignals
+ Hypermedia.Datastar.Types: instance GHC.Internal.Show.Show Hypermedia.Datastar.Types.ElementNamespace
+ Hypermedia.Datastar.Types: instance GHC.Internal.Show.Show Hypermedia.Datastar.Types.ElementPatchMode
+ Hypermedia.Datastar.Types: instance GHC.Internal.Show.Show Hypermedia.Datastar.Types.EventType
+ Hypermedia.Datastar.WAI: instance GHC.Internal.Show.Show Hypermedia.Datastar.WAI.CompressionStrategy

Files

CHANGELOG.md view
@@ -1,5 +1,18 @@ # Changelog +## 1.1.0.1++All changes contributed by [@sectore](https://github.com/sectore) — thanks!++* Fix double URL-decoding of the `datastar` query parameter in `readSignals`+  (GET/DELETE requests). `WAI.queryString` is already decoded, so the extra+  decode corrupted signal values containing literal `+` or `%` characters+  ([#8](https://github.com/starfederation/datastar-haskell/pull/8))+* Fix GHC warnings in the add-on packages' test suites+  ([#6](https://github.com/starfederation/datastar-haskell/pull/6))+* Add a `haskell-flake` based Nix flake for development+  ([#7](https://github.com/starfederation/datastar-haskell/pull/7))+ ## 1.1.0.0  * **Breaking**: the compressor modules moved to add-on packages so that the
datastar-hs.cabal view
@@ -1,6 +1,6 @@ cabal-version:   3.0 name:            datastar-hs-version:         1.1.0.0+version:         1.1.0.1 synopsis:        Haskell bindings for Datastar description:   Server-side SDK for building real-time hypermedia applications with@@ -98,8 +98,10 @@     Hypermedia.Datastar.NegotiationSpec     Hypermedia.Datastar.PatchElementsSpec     Hypermedia.Datastar.PatchSignalsSpec+    Hypermedia.Datastar.ReadSignalsSpec     Hypermedia.Datastar.SSESpec   build-depends:+    , aeson     , base     , bytestring     , datastar-hs
src/Hypermedia/Datastar/WAI.hs view
@@ -274,8 +274,7 @@ parseFromQuery :: (FromJSON a) => WAI.Request -> Either String a parseFromQuery req =   case lookup "datastar" (WAI.queryString req) of-    (Just (Just val)) ->-      A.eitherDecodeStrict $ WAI.urlDecode True val+    (Just (Just val)) -> A.eitherDecodeStrict val     _ -> Left "missing 'datastar' query parameter"  parseFromBody :: (FromJSON a) => WAI.Request -> IO (Either String a)
+ test/Hypermedia/Datastar/ReadSignalsSpec.hs view
@@ -0,0 +1,23 @@+module Hypermedia.Datastar.ReadSignalsSpec (spec) where++import Test.Hspec++import Data.Aeson (FromJSON (..), withObject, (.:))+import Data.Text (Text)++import Network.Wai (defaultRequest, queryString, requestMethod)++import Hypermedia.Datastar.WAI (readSignals)++newtype Msg = Msg Text deriving (Eq, Show)++instance FromJSON Msg where+  parseJSON = withObject "Msg" $ \o -> Msg <$> o .: "msg"++spec :: Spec+spec = describe "readSignals" $ do+  let req q = defaultRequest{requestMethod = "GET", queryString = [("datastar", Just q)]}++  it "decodes JSON signals from the query string exactly as sent" $ do+    result <- readSignals (req "{\"msg\":\"a+b\"}")+    result `shouldBe` Right (Msg "a+b")
test/Main.hs view
@@ -6,6 +6,7 @@ import Hypermedia.Datastar.NegotiationSpec qualified import Hypermedia.Datastar.PatchElementsSpec qualified import Hypermedia.Datastar.PatchSignalsSpec qualified+import Hypermedia.Datastar.ReadSignalsSpec qualified import Hypermedia.Datastar.SSESpec qualified  main :: IO ()@@ -14,4 +15,5 @@   Hypermedia.Datastar.NegotiationSpec.spec   Hypermedia.Datastar.PatchElementsSpec.spec   Hypermedia.Datastar.PatchSignalsSpec.spec+  Hypermedia.Datastar.ReadSignalsSpec.spec   Hypermedia.Datastar.SSESpec.spec