packages feed

servant-htmx 0.1.0.0 → 0.1.0.1

raw patch · 6 files changed

+90/−77 lines, 6 filesdep −servantPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies removed: servant

API changes (from Hackage documentation)

- Lib: someFunc :: IO ()
- Servant.HTMX: exampleApp :: Application
- Servant.HTMX: exampleServer :: Server ExampleAPI
- Servant.HTMX: type ExampleAPI = HXRequest :> Get '[JSON] Text :<|> HXTriggerId :> Post '[JSON] Text :<|> "somePath" :> Get '[JSON] (Headers '[HXPush, HXRedirect] Text)
- Servant.HTMX: type HXPrompt = Header "HX-Prompt" Text
- Servant.HTMX: type HXPush = Header "HX-Push" Text
- Servant.HTMX: type HXRedirect = Header "HX-Redirect" Text
- Servant.HTMX: type HXRefresh = Header "HX-Refresh" Text
- Servant.HTMX: type HXRequest = Header "HX-Request" Text
- Servant.HTMX: type HXTarget = Header "HX-Target" Text
- Servant.HTMX: type HXTrigger = Header "HX-Trigger" Text
- Servant.HTMX: type HXTriggerAfterSettle = Header "HX-Trigger-After-Settle" Text
- Servant.HTMX: type HXTriggerAfterSwap = Header "HX-Trigger-After-Swap" Text
- Servant.HTMX: type HXTriggerId = Header "HX-Trigger" Text
- Servant.HTMX: type HXTriggerName = Header "HX-Trigger-Name" Text
+ Servant.Htmx: type HXPrompt = Header "HX-Prompt" Text
+ Servant.Htmx: type HXPush = Header "HX-Push" Text
+ Servant.Htmx: type HXRedirect = Header "HX-Redirect" Text
+ Servant.Htmx: type HXRefresh = Header "HX-Refresh" Text
+ Servant.Htmx: type HXRequest = Header "HX-Request" Text
+ Servant.Htmx: type HXTarget = Header "HX-Target" Text
+ Servant.Htmx: type HXTrigger = Header "HX-Trigger" Text
+ Servant.Htmx: type HXTriggerAfterSettle = Header "HX-Trigger-After-Settle" Text
+ Servant.Htmx: type HXTriggerAfterSwap = Header "HX-Trigger-After-Swap" Text
+ Servant.Htmx: type HXTriggerId = Header "HX-Trigger" Text
+ Servant.Htmx: type HXTriggerName = Header "HX-Trigger-Name" Text

Files

LICENSE view
@@ -1,4 +1,4 @@-Copyright Author name here (c) 2022+Copyright 2022 Monadic Systems LLC  All rights reserved. @@ -13,7 +13,7 @@       disclaimer in the documentation and/or other materials provided       with the distribution. -    * Neither the name of Author name here nor the names of other+    * Neither the name of Monadic Systems LLC nor the names of other       contributors may be used to endorse or promote products derived       from this software without specific prior written permission. 
app/Main.hs view
@@ -1,6 +1,4 @@ module Main where -import Lib- main :: IO ()-main = someFunc+main = print "Use servant and htmx"
servant-htmx.cabal view
@@ -1,16 +1,16 @@ cabal-version:      1.12 name:               servant-htmx-version:            0.1.0.0+version:            0.1.0.1 license:            BSD3 license-file:       LICENSE-copyright:          2022 Author name here-maintainer:         example@example.com-author:             Author name here-homepage:           https://github.com/githubuser/servant-htmx#readme-bug-reports:        https://github.com/githubuser/servant-htmx/issues+copyright:          2022 Monadic Systems LLC+maintainer:         tech@monadic.systems+author:             Monadic Systems LLC+homepage:           https://github.com/MonadicSystems/servant-htmx#readme+bug-reports:        https://github.com/MonadicSystems/servant-htmx/issues synopsis:           A library for using htmx with servant description:-    Please see the README on GitHub at <https://github.com/githubuser/servant-htmx#readme>+    Please see the README on GitHub at <https://github.com/MonadicSystems/servant-htmx#readme>  category:           Web build-type:         Simple@@ -20,19 +20,15 @@  source-repository head     type:     git-    location: https://github.com/githubuser/servant-htmx+    location: https://github.com/MonadicSystems/servant-htmx  library-    exposed-modules:-        Lib-        Servant.HTMX-+    exposed-modules:  Servant.Htmx     hs-source-dirs:   src     other-modules:    Paths_servant_htmx     default-language: Haskell2010     build-depends:         base >=4.7 && <5,-        servant >=0.18.3 && <0.19,         servant-server >=0.18.3 && <0.19,         text >=1.2.4.1 && <1.3 @@ -44,7 +40,6 @@     ghc-options:      -threaded -rtsopts -with-rtsopts=-N     build-depends:         base >=4.7 && <5,-        servant >=0.18.3 && <0.19,         servant-htmx -any,         servant-server >=0.18.3 && <0.19,         text >=1.2.4.1 && <1.3@@ -58,7 +53,6 @@     ghc-options:      -threaded -rtsopts -with-rtsopts=-N     build-depends:         base >=4.7 && <5,-        servant >=0.18.3 && <0.19,         servant-htmx -any,         servant-server >=0.18.3 && <0.19,         text >=1.2.4.1 && <1.3
− src/Lib.hs
@@ -1,6 +0,0 @@-module Lib-    ( someFunc-    ) where--someFunc :: IO ()-someFunc = putStrLn "someFunc"
− src/Servant/HTMX.hs
@@ -1,51 +0,0 @@-{-# LANGUAGE DataKinds #-}-{-# LANGUAGE TypeOperators #-}-{-# LANGUAGE OverloadedStrings #-}--module Servant.HTMX where--import Data.Text-import Servant-import Servant.API-import Servant.Server---- | Request headers (sent by the client to the server)-type HXRequest = Header "HX-Request" Text-type HXTriggerId = Header "HX-Trigger" Text-type HXTriggerName = Header "HX-Trigger-Name" Text-type HXTarget = Header "HX-Target" Text-type HXPrompt = Header "HX-Prompt" Text---- | Response headers (sent by the server to the client)-type HXPush = Header "HX-Push" Text -- use safelinks-type HXRedirect = Header "HX-Redirect" Text -- use safelinks-type HXRefresh = Header "HX-Refresh" Text -type HXTrigger = Header "HX-Trigger" Text-type HXTriggerAfterSwap = Header "HX-Trigger-After-Swap" Text-type HXTriggerAfterSettle = Header "HX-Trigger-After-Settle" Text---- | Example usage of htmx header types-type ExampleAPI = HXRequest :> Get '[JSON] Text-                :<|> HXTriggerId :> Post '[JSON] Text-                :<|> "somePath" :> Get '[JSON] (Headers '[HXPush, HXRedirect] Text)--exampleServer :: Server ExampleAPI-exampleServer = exampleGetHandler-              :<|> examplePostHandler-              :<|> exampleSomePathHandler-  where-    exampleGetHandler :: Maybe Text -> Handler Text-    exampleGetHandler mb = case mb of-      Just "true" -> pure "The request was sent to the server by htmx" -      _ -> pure "The request wasn't sent to the server by htmx" --    examplePostHandler :: Maybe Text -> Handler Text-    examplePostHandler mb = case mb of-      Just "adminPanel" -> pure "The request was triggered by the admin panel" -      _ -> pure "The request wasn't triggered by the admin panel" --    exampleSomePathHandler :: Handler (Headers '[HXPush, HXRedirect] Text)-    exampleSomePathHandler = pure $ noHeader $ addHeader "someURLForRedirect" "This response has htmx headers" --exampleApp :: Application-exampleApp = serve (Proxy :: Proxy ExampleAPI) exampleServer
+ src/Servant/Htmx.hs view
@@ -0,0 +1,78 @@+{-# LANGUAGE DataKinds #-}++-- | See <https://htmx.org/reference/#request_headers> and <https://htmx.org/reference/#response_headers>+-- to see all htmx request and response headers, and how to use them.+--+-- Example Servant API:+--+-- @+-- module MyServer where+--+-- import Servant.API+-- import Servant.Server+--+-- -- | Example usage of htmx header types+-- type ExampleAPI = HXRequest :> Get '[JSON] Text+--                :<|> HXTriggerId :> Post '[JSON] Text+--                :<|> "somePath" :> Get '[JSON] (Headers '[HXPush, HXRedirect] Text)+--+-- exampleServer :: Server ExampleAPI+-- exampleServer = exampleGetHandler+--              :<|> examplePostHandler+--              :<|> exampleSomePathHandler+--  where+--    exampleGetHandler :: Maybe Text -> Handler Text+--    exampleGetHandler mb = case mb of+--      Just "true" -> pure "The request was sent to the server by htmx"+--      _ -> pure "The request wasn't sent to the server by htmx"+--+--    examplePostHandler :: Maybe Text -> Handler Text+--    examplePostHandler mb = case mb of+--      Just "adminPanel" -> pure "The request was triggered by the admin panel"+--      _ -> pure "The request wasn't triggered by the admin panel"+--+--    exampleSomePathHandler :: Handler (Headers '[HXPush, HXRedirect] Text)+--    exampleSomePathHandler = pure $ noHeader $ addHeader "someURLForRedirect" "This response has htmx headers"+--+-- exampleApp :: Application+-- exampleApp = serve (Proxy :: Proxy ExampleAPI) exampleServer+-- @+module Servant.Htmx+  ( HXRequest,+    HXTriggerId,+    HXTriggerName,+    HXTarget,+    HXPrompt,+    HXPush,+    HXRedirect,+    HXRefresh,+    HXTrigger,+    HXTriggerAfterSwap,+    HXTriggerAfterSettle,+  )+where++import Data.Text (Text)+import Servant (Header)++type HXRequest = Header "HX-Request" Text++type HXTriggerId = Header "HX-Trigger" Text++type HXTriggerName = Header "HX-Trigger-Name" Text++type HXTarget = Header "HX-Target" Text++type HXPrompt = Header "HX-Prompt" Text++type HXPush = Header "HX-Push" Text++type HXRedirect = Header "HX-Redirect" Text++type HXRefresh = Header "HX-Refresh" Text++type HXTrigger = Header "HX-Trigger" Text++type HXTriggerAfterSwap = Header "HX-Trigger-After-Swap" Text++type HXTriggerAfterSettle = Header "HX-Trigger-After-Settle" Text