datastar-hs-brotli 1.0.0.0 → 1.0.1.0
raw patch · 4 files changed
+15/−5 lines, 4 filesdep +http-typesPVP ok
version bump matches the API change (PVP)
Dependencies added: http-types
API changes (from Hackage documentation)
Files
- CHANGELOG.md +8/−0
- datastar-hs-brotli.cabal +3/−2
- src/Hypermedia/Datastar/Compression/Brotli.hs +2/−2
- test/Hypermedia/Datastar/Compression/BrotliSpec.hs +2/−1
CHANGELOG.md view
@@ -1,5 +1,13 @@ # Revision history for datastar-hs-brotli +## 1.0.1.0 -- 2026-11-11++* Change `defaultBrotliParams` (and so `brotli`) to use less memory per open+ stream: the window drops from 24 bits (16 MB) to 22 bits (4 MB), and the+ quality goes from 5 to 6. The mode stays `CompressionModeText`. Use+ `brotliWith` to choose other settings+ ([#10](https://github.com/starfederation/datastar-haskell/issues/10)).+ ## 1.0.0.0 -- 2026-07-04 * First release. `Hypermedia.Datastar.Compression.Brotli`, split out of
datastar-hs-brotli.cabal view
@@ -1,12 +1,12 @@ cabal-version: 3.0 name: datastar-hs-brotli-version: 1.0.0.0+version: 1.0.1.0 synopsis: Brotli compressor for datastar-hs description: @br@ (Brotli) @Content-Encoding@ compressor for <https://hackage.haskell.org/package/datastar-hs datastar-hs> SSE streams. Brotli compresses extremely well on SSE streams that repeatedly patch- similar HTML fragments.+ similar HTML elements. . Links against the system Brotli C library: @brew install brotli@ on macOS, @apt-get install libbrotli-dev pkg-config@ on Debian/Ubuntu.@@ -63,6 +63,7 @@ , datastar-hs , datastar-hs-brotli , hspec+ , http-types , wai default-language: Haskell2010 default-extensions:
src/Hypermedia/Datastar/Compression/Brotli.hs view
@@ -62,6 +62,6 @@ defaultBrotliParams = B.defaultCompressParams { B.compressMode = B.CompressionModeText- , B.compressLevel = B.CompressionLevel5- , B.compressWindowSize = B.CompressionWindowBits24+ , B.compressLevel = B.CompressionLevel6+ , B.compressWindowSize = B.CompressionWindowBits22 }
test/Hypermedia/Datastar/Compression/BrotliSpec.hs view
@@ -7,17 +7,18 @@ import Data.ByteString.Lazy qualified as BL import Data.IORef +import Network.HTTP.Types (ResponseHeaders) import Network.Wai (defaultRequest, requestHeaders) import Network.Wai.Internal (Response (..)) import Hypermedia.Datastar import Hypermedia.Datastar.Compression.Brotli (brotli)-import Hypermedia.Datastar.Logger (nullLogger) import Hypermedia.Datastar.WAI (compressorWrap) {- | Drive a streaming WAI response to completion, returning its response headers and the full raw body. -}+runStream :: Response -> IO (ResponseHeaders, BL.ByteString) runStream (ResponseStream _status headers body) = do ref <- newIORef mempty body (\chunk -> modifyIORef' ref (<> chunk)) (pure ())