base-encoding 0.1.0.0 → 0.2.0.0
raw patch · 5 files changed
+364/−22 lines, 5 filesdep ~basedep ~base16-bytestringdep ~base64-bytestringsetup-changedPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: base, base16-bytestring, base64-bytestring, bytestring, text
API changes (from Hackage documentation)
+ Codec.Base64Url.Unpadded: class Decode txt bin
+ Codec.Base64Url.Unpadded: class Encode bin txt
+ Codec.Base64Url.Unpadded: decode :: Decode txt bin => txt -> Either String bin
+ Codec.Base64Url.Unpadded: encode :: Encode bin txt => bin -> txt
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Decode Data.ByteString.Builder.Internal.Builder Data.ByteString.Builder.Internal.Builder
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Decode Data.ByteString.Builder.Internal.Builder Data.ByteString.Internal.ByteString
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Decode Data.ByteString.Builder.Internal.Builder Data.ByteString.Lazy.Internal.ByteString
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Decode Data.ByteString.Builder.Internal.Builder Data.ByteString.Short.Internal.ShortByteString
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Decode Data.ByteString.Internal.ByteString Data.ByteString.Builder.Internal.Builder
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Decode Data.ByteString.Internal.ByteString Data.ByteString.Internal.ByteString
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Decode Data.ByteString.Internal.ByteString Data.ByteString.Lazy.Internal.ByteString
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Decode Data.ByteString.Internal.ByteString Data.ByteString.Short.Internal.ShortByteString
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Decode Data.ByteString.Lazy.Internal.ByteString Data.ByteString.Builder.Internal.Builder
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Decode Data.ByteString.Lazy.Internal.ByteString Data.ByteString.Internal.ByteString
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Decode Data.ByteString.Lazy.Internal.ByteString Data.ByteString.Lazy.Internal.ByteString
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Decode Data.ByteString.Lazy.Internal.ByteString Data.ByteString.Short.Internal.ShortByteString
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Decode Data.ByteString.Short.Internal.ShortByteString Data.ByteString.Builder.Internal.Builder
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Decode Data.ByteString.Short.Internal.ShortByteString Data.ByteString.Internal.ByteString
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Decode Data.ByteString.Short.Internal.ShortByteString Data.ByteString.Lazy.Internal.ByteString
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Decode Data.ByteString.Short.Internal.ShortByteString Data.ByteString.Short.Internal.ShortByteString
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Decode Data.Text.Internal.Builder.Builder Data.ByteString.Builder.Internal.Builder
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Decode Data.Text.Internal.Builder.Builder Data.ByteString.Internal.ByteString
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Decode Data.Text.Internal.Builder.Builder Data.ByteString.Lazy.Internal.ByteString
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Decode Data.Text.Internal.Builder.Builder Data.ByteString.Short.Internal.ShortByteString
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Decode Data.Text.Internal.Lazy.Text Data.ByteString.Builder.Internal.Builder
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Decode Data.Text.Internal.Lazy.Text Data.ByteString.Internal.ByteString
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Decode Data.Text.Internal.Lazy.Text Data.ByteString.Lazy.Internal.ByteString
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Decode Data.Text.Internal.Lazy.Text Data.ByteString.Short.Internal.ShortByteString
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Decode Data.Text.Internal.Text Data.ByteString.Builder.Internal.Builder
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Decode Data.Text.Internal.Text Data.ByteString.Internal.ByteString
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Decode Data.Text.Internal.Text Data.ByteString.Lazy.Internal.ByteString
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Decode Data.Text.Internal.Text Data.ByteString.Short.Internal.ShortByteString
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Encode Data.ByteString.Builder.Internal.Builder Data.ByteString.Builder.Internal.Builder
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Encode Data.ByteString.Builder.Internal.Builder Data.ByteString.Internal.ByteString
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Encode Data.ByteString.Builder.Internal.Builder Data.ByteString.Lazy.Internal.ByteString
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Encode Data.ByteString.Builder.Internal.Builder Data.ByteString.Short.Internal.ShortByteString
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Encode Data.ByteString.Builder.Internal.Builder Data.Text.Internal.Builder.Builder
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Encode Data.ByteString.Builder.Internal.Builder Data.Text.Internal.Lazy.Text
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Encode Data.ByteString.Builder.Internal.Builder Data.Text.Internal.Text
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Encode Data.ByteString.Internal.ByteString Data.ByteString.Builder.Internal.Builder
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Encode Data.ByteString.Internal.ByteString Data.ByteString.Internal.ByteString
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Encode Data.ByteString.Internal.ByteString Data.ByteString.Lazy.Internal.ByteString
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Encode Data.ByteString.Internal.ByteString Data.ByteString.Short.Internal.ShortByteString
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Encode Data.ByteString.Internal.ByteString Data.Text.Internal.Builder.Builder
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Encode Data.ByteString.Internal.ByteString Data.Text.Internal.Lazy.Text
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Encode Data.ByteString.Internal.ByteString Data.Text.Internal.Text
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Encode Data.ByteString.Lazy.Internal.ByteString Data.ByteString.Builder.Internal.Builder
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Encode Data.ByteString.Lazy.Internal.ByteString Data.ByteString.Internal.ByteString
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Encode Data.ByteString.Lazy.Internal.ByteString Data.ByteString.Lazy.Internal.ByteString
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Encode Data.ByteString.Lazy.Internal.ByteString Data.ByteString.Short.Internal.ShortByteString
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Encode Data.ByteString.Lazy.Internal.ByteString Data.Text.Internal.Builder.Builder
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Encode Data.ByteString.Lazy.Internal.ByteString Data.Text.Internal.Lazy.Text
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Encode Data.ByteString.Lazy.Internal.ByteString Data.Text.Internal.Text
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Encode Data.ByteString.Short.Internal.ShortByteString Data.ByteString.Builder.Internal.Builder
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Encode Data.ByteString.Short.Internal.ShortByteString Data.ByteString.Internal.ByteString
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Encode Data.ByteString.Short.Internal.ShortByteString Data.ByteString.Lazy.Internal.ByteString
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Encode Data.ByteString.Short.Internal.ShortByteString Data.ByteString.Short.Internal.ShortByteString
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Encode Data.ByteString.Short.Internal.ShortByteString Data.Text.Internal.Builder.Builder
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Encode Data.ByteString.Short.Internal.ShortByteString Data.Text.Internal.Lazy.Text
+ Codec.Base64Url.Unpadded: instance Codec.Base64Url.Unpadded.Encode Data.ByteString.Short.Internal.ShortByteString Data.Text.Internal.Text
Files
- ChangeLog.md +14/−0
- Setup.hs +0/−2
- base-encoding.cabal +17/−13
- src/Codec/Base64Url.hs +7/−7
- src/Codec/Base64Url/Unpadded.hs +326/−0
+ ChangeLog.md view
@@ -0,0 +1,14 @@+See also http://pvp.haskell.org/faq++# 0.2.0.0++* Semantic change: Switch to `base64-bytestring-0.2.0` which+ provides stricter Base64 decoding semantics regarding padding.++* Add support for encoding/decoding to/from unpadded `base64url`.++----++# 0.1.0.0++* First version. Released on an unsuspecting world.
− Setup.hs
@@ -1,2 +0,0 @@-import Distribution.Simple-main = defaultMain
base-encoding.cabal view
@@ -1,15 +1,14 @@-cabal-version: 1.12+cabal-version: 2.2 name: base-encoding-version: 0.1.0.0+version: 0.2.0.0 synopsis: Binary-to-text encodings (e.g. base64)-license: BSD3+license: BSD-3-Clause license-file: LICENSE author: Herbert Valerio Riedel bug-reports: https://github.com/hvr/base-encoding/issues maintainer: hvr@gnu.org-category: Text-build-type: Simple+category: Codec, Text description: This package provides a simple and convenient API to encode and decode binary data in the popular binary-to-text \"base\" encoding@@ -17,10 +16,14 @@ . Currently, the following encodings are supported: .- - base16 (RFC4648)- - base64 (RFC4648)- - base64url (RFC4648)+ - (unpadded) @base16@ (RFC4648)+ - (padded) @base64@ (RFC4648)+ - padded @base64url@ (RFC4648)+ - unpadded @base64url@ (RFC4648)+ . +extra-source-files: ChangeLog.md+ source-repository head type: git location: https://github.com/hvr/base-encoding@@ -32,6 +35,7 @@ Codec.Base16 Codec.Base64 Codec.Base64Url+ Codec.Base64Url.Unpadded other-modules: Internal@@ -45,11 +49,11 @@ ghc-options: -fno-warn-trustworthy-safe build-depends:- base >=4.3 && <4.12- , base16-bytestring >=0.1.1.6 && <0.2- , base64-bytestring >=1.0.0.1 && <1.1+ , base >=4.3 && <4.15+ , base16-bytestring ^>=0.1.1.6+ , base64-bytestring ^>=1.1.0.0 - , bytestring >=0.9.1 && <0.11- , text >=1.2.3 && <1.3+ , bytestring ^>=0.9.1 || ^>= 0.10.0+ , text ^>=1.2.3 ghc-options: -Wall
src/Codec/Base64Url.hs view
@@ -1,7 +1,7 @@ {-# LANGUAGE CPP #-} {-# LANGUAGE MultiParamTypeClasses #-} --- | This module provides access to the \"base64url\" binary-to-text encoding as defined by [RFC 4648](https://tools.ietf.org/html/rfc4648).+-- | This module provides access to the /padded/ \"base64url\" binary-to-text encoding as defined by [RFC 4648](https://tools.ietf.org/html/rfc4648). See also "Codec.Base64Url.Unpadded" for the /unpadded/ encoding variant. -- -- This module is intended to be imported @qualified@, e.g. --@@ -56,10 +56,10 @@ -- primitives decodeBs2Bs :: BS.ByteString -> Either String BS.ByteString-decodeBs2Bs = B64.decode+decodeBs2Bs = B64.decodePadded decodeBsL2BsL :: BS.L.ByteString -> Either String BS.L.ByteString-decodeBsL2BsL = B64.L.decode+decodeBsL2BsL = B64.L.decodePadded encodeBs2Bs :: BS.ByteString -> BS.ByteString encodeBs2Bs = B64.encode@@ -70,14 +70,14 @@ ---------------------------------------------------------------------------- -- exposed API --- | Typeclass representing types for which a binary-to-text @base64url@ encoding is defined+-- | Typeclass representing types for which a binary-to-text /padded/ @base64url@ encoding is defined class Encode bin txt where- -- | Encode binary data using @base64url@ text encoding+ -- | Encode binary data using /padded/ @base64url@ text encoding encode :: bin -> txt --- | Typeclass representing types for which a text-to-binary @base64url@ decoding is defined+-- | Typeclass representing types for which a text-to-binary /padded/ @base64url@ decoding is defined class Decode txt bin where- -- | Decode binary data encoded textually as @base64url@+ -- | Decode binary data encoded textually as /padded/ @base64url@ decode :: txt -> Either String bin ----------------------------------------------------------------------------
+ src/Codec/Base64Url/Unpadded.hs view
@@ -0,0 +1,326 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE MultiParamTypeClasses #-}++-- | This module provides access to the /unpadded/ \"base64url\" binary-to-text encoding as defined by [RFC 4648](https://tools.ietf.org/html/rfc4648). See also "Codec.Base64Url" for the /padded/ encoding variant.+--+-- This module is intended to be imported @qualified@, e.g.+--+-- > import qualified Codec.Base64Url.Unpadded as B64+--+-- If you want to explictly specify which 'Encode' and 'Decode' typeclass instance is used, you can use plain Haskell2010 type-signature annotations, e.g.+--+-- >>> (B64.encode :: ByteString -> Text) "\x00\x00"+-- "AAA"+--+-- >>> (B64.decode :: Text -> Either String ShortByteString) "NDoyMA"+-- Right "4:20"+--+-- Alternatively, starting with GHC 8.0.1, you can also use the [TypeApplications language extension](https://downloads.haskell.org/~ghc/8.4.1/docs/html/users_guide/glasgow_exts.html#ghc-flag--XTypeApplications):+--+-- >>> B64.encode @ShortByteString @Text "\xFF\239"+-- "_-8"+--+-- >>> B64.decode @Text @ShortByteString "_-8"+-- Right "\255\239"+--+-- @since 0.2.0.0+module Codec.Base64Url.Unpadded+ ( Encode(encode)+ , Decode(decode)+ ) where++import qualified Data.ByteString.Base64.URL as B64+import qualified Data.ByteString.Base64.URL.Lazy as B64.L++import qualified Data.ByteString as BS+#if MIN_VERSION_bytestring(0,10,2)+import qualified Data.ByteString.Builder as BB+#elif MIN_VERSION_bytestring(0,10,0)+import qualified Data.ByteString.Lazy.Builder as BB+#endif+import qualified Data.ByteString.Lazy as BS.L+#if MIN_VERSION_bytestring(0,10,4)+import qualified Data.ByteString.Short as SBS+#endif++import qualified Data.Text as T (Text)+import qualified Data.Text.Encoding as T (decodeLatin1, encodeUtf8)+import qualified Data.Text.Lazy as T.L (Text, fromStrict)+import qualified Data.Text.Lazy.Builder as TB (Builder, fromLazyText,+ fromText, toLazyText)+import qualified Data.Text.Lazy.Encoding as T.L (decodeLatin1,+ encodeUtf8)++import Internal++-- primitives++decodeBs2Bs :: BS.ByteString -> Either String BS.ByteString+decodeBs2Bs = B64.decodeUnpadded++decodeBsL2BsL :: BS.L.ByteString -> Either String BS.L.ByteString+decodeBsL2BsL = B64.L.decodeUnpadded++encodeBs2Bs :: BS.ByteString -> BS.ByteString+encodeBs2Bs = B64.encodeUnpadded++encodeBsL2BsL :: BS.L.ByteString -> BS.L.ByteString+encodeBsL2BsL = B64.L.encodeUnpadded++----------------------------------------------------------------------------+-- exposed API++-- | Typeclass representing types for which a binary-to-text /unpadded/ @base64url@ encoding is defined+--+-- @since 0.2.0.0+class Encode bin txt where+ -- | Encode binary data using /unpadded/ @base64url@ text encoding+ --+ -- @since 0.2.0.0+ encode :: bin -> txt++-- | Typeclass representing types for which a text-to-binary /unpadded/ @base64url@ decoding is defined+--+-- @since 0.2.0.0+class Decode txt bin where+ -- | Decode binary data encoded textually as /unpadded/ @base64url@+ --+ -- @since 0.2.0.0+ decode :: txt -> Either String bin++----------------------------------------------------------------------------+-- instance matrix++---- lazy BS -> *++-- PRIMITIVE+instance Encode BS.L.ByteString BS.L.ByteString where+ encode = encodeBsL2BsL++instance Encode BS.L.ByteString BS.ByteString where+ encode = bsToStrict . encode++#if MIN_VERSION_bytestring(0,10,0)+instance Encode BS.L.ByteString BB.Builder where+ encode = BB.lazyByteString . encode+#endif++#if MIN_VERSION_bytestring(0,10,4)+instance Encode BS.L.ByteString SBS.ShortByteString where+ encode = SBS.toShort . encode+#endif++instance Encode BS.L.ByteString T.Text where+ encode = T.decodeLatin1 . encode++instance Encode BS.L.ByteString T.L.Text where+ encode = T.L.decodeLatin1 . encode++instance Encode BS.L.ByteString TB.Builder where+ encode = TB.fromLazyText . encode++---- strict BS -> *++-- PRIMITIVE+instance Encode BS.ByteString BS.ByteString where+ encode = encodeBs2Bs++instance Encode BS.ByteString BS.L.ByteString where+ encode = bsFromStrict . encode++#if MIN_VERSION_bytestring(0,10,0)+instance Encode BS.ByteString BB.Builder where+ encode = BB.byteString . encode+#endif++#if MIN_VERSION_bytestring(0,10,4)+instance Encode BS.ByteString SBS.ShortByteString where+ encode = SBS.toShort . encode+#endif++instance Encode BS.ByteString T.Text where+ encode = T.decodeLatin1 . encode++instance Encode BS.ByteString T.L.Text where+ encode = T.L.fromStrict . T.decodeLatin1 . encode++instance Encode BS.ByteString TB.Builder where+ encode = TB.fromText . encode++---- short BS -> *++#if MIN_VERSION_bytestring(0,10,4)+instance Encode SBS.ShortByteString SBS.ShortByteString where+ encode = SBS.toShort . encode . SBS.fromShort++instance Encode SBS.ShortByteString BS.ByteString where+ encode = encode . SBS.fromShort++instance Encode SBS.ShortByteString BS.L.ByteString where+ encode = encode . SBS.fromShort++instance Encode SBS.ShortByteString BB.Builder where+ encode = encode . SBS.fromShort++instance Encode SBS.ShortByteString T.Text where+ encode = T.decodeLatin1 . encode++instance Encode SBS.ShortByteString T.L.Text where+ encode = T.L.fromStrict . T.decodeLatin1 . encode++instance Encode SBS.ShortByteString TB.Builder where+ encode = TB.fromText . encode+#endif++---- BB -> *++#if MIN_VERSION_bytestring(0,10,4)+instance Encode BB.Builder SBS.ShortByteString where+ encode = encode . BB.toLazyByteString+#endif++#if MIN_VERSION_bytestring(0,10,0)+instance Encode BB.Builder BB.Builder where+ encode = encode . BB.toLazyByteString++instance Encode BB.Builder BS.ByteString where+ encode = encode . BB.toLazyByteString++instance Encode BB.Builder BS.L.ByteString where+ encode = encode . BB.toLazyByteString++instance Encode BB.Builder T.Text where+ encode = T.decodeLatin1 . encode++instance Encode BB.Builder T.L.Text where+ encode = T.L.decodeLatin1 . encode++instance Encode BB.Builder TB.Builder where+ encode = TB.fromLazyText . encode+#endif++------------------------------------------------------------------------------++-- PRIMITIVE+instance Decode BS.ByteString BS.ByteString where+ decode = decodeBs2Bs++instance Decode BS.ByteString BS.L.ByteString where+ decode = fmap bsFromStrict . decode++#if MIN_VERSION_bytestring(0,10,4)+instance Decode BS.ByteString SBS.ShortByteString where+ decode = fmap SBS.toShort . decode+#endif++#if MIN_VERSION_bytestring(0,10,0)+instance Decode BS.ByteString BB.Builder where+ decode = fmap BB.byteString . decode+#endif++----++-- PRIMITIVE+instance Decode BS.L.ByteString BS.L.ByteString where+ decode = decodeBsL2BsL++instance Decode BS.L.ByteString BS.ByteString where+ decode = fmap bsToStrict . decode++#if MIN_VERSION_bytestring(0,10,4)+instance Decode BS.L.ByteString SBS.ShortByteString where+ decode = fmap SBS.toShort . decode+#endif++#if MIN_VERSION_bytestring(0,10,0)+instance Decode BS.L.ByteString BB.Builder where+ decode = fmap BB.byteString . decode+#endif++----++#if MIN_VERSION_bytestring(0,10,4)+instance Decode SBS.ShortByteString SBS.ShortByteString where+ decode = fmap SBS.toShort . decode . SBS.fromShort++instance Decode SBS.ShortByteString BS.ByteString where+ decode = decode . SBS.fromShort++instance Decode SBS.ShortByteString BS.L.ByteString where+ decode = decode . SBS.fromShort++instance Decode SBS.ShortByteString BB.Builder where+ decode = decode . SBS.fromShort+#endif++----++#if MIN_VERSION_bytestring(0,10,4)+instance Decode BB.Builder SBS.ShortByteString where+ decode = decode . BB.toLazyByteString+#endif++#if MIN_VERSION_bytestring(0,10,0)+instance Decode BB.Builder BS.L.ByteString where+ decode = decode . BB.toLazyByteString++instance Decode BB.Builder BS.ByteString where+ decode = decode . BB.toLazyByteString++instance Decode BB.Builder BB.Builder where+ decode = decode . BB.toLazyByteString+#endif++----++instance Decode T.Text BS.ByteString where+ decode = decode . T.encodeUtf8++instance Decode T.Text BS.L.ByteString where+ decode = decode . T.encodeUtf8++#if MIN_VERSION_bytestring(0,10,4)+instance Decode T.Text SBS.ShortByteString where+ decode = decode . T.encodeUtf8+#endif++#if MIN_VERSION_bytestring(0,10,0)+instance Decode T.Text BB.Builder where+ decode = decode . T.encodeUtf8+#endif++----++instance Decode T.L.Text BS.ByteString where+ decode = decode . T.L.encodeUtf8++instance Decode T.L.Text BS.L.ByteString where+ decode = decode . T.L.encodeUtf8++#if MIN_VERSION_bytestring(0,10,4)+instance Decode T.L.Text SBS.ShortByteString where+ decode = decode . T.L.encodeUtf8+#endif++#if MIN_VERSION_bytestring(0,10,0)+instance Decode T.L.Text BB.Builder where+ decode = decode . T.L.encodeUtf8+#endif++----++instance Decode TB.Builder BS.ByteString where+ decode = decode . TB.toLazyText++instance Decode TB.Builder BS.L.ByteString where+ decode = decode . TB.toLazyText++#if MIN_VERSION_bytestring(0,10,4)+instance Decode TB.Builder SBS.ShortByteString where+ decode = decode . TB.toLazyText+#endif++#if MIN_VERSION_bytestring(0,10,0)+instance Decode TB.Builder BB.Builder where+ decode = decode . TB.toLazyText+#endif