-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | A web interface to the notmuch email indexer
--   
--   An email client for the notmuch email indexer
--   (<a>http://notmuchmail.org</a>), built using Yesod. This project
--   implements a web server and uses bootstrap and jquery for the UI. The
--   client is fully functional, with searching, viewing, and composing
--   email messages. See
--   <a>https://bitbucket.org/wuzzeb/notmuch-web/src/tip/ChangeLog</a> for
--   recent changes.
@package notmuch-web
@version 0.2.0

module StaticFileGenerators

-- | Compress javascript
compressJs :: Bool -> ByteString -> IO ByteString
compressPjax :: ByteString -> IO ByteString

module NotmuchCmd
newtype ThreadID
ThreadID :: String -> ThreadID

-- | A single entry returned from the notmuch search command.
data SearchResult
SearchResult :: ThreadID -> UTCTime -> Text -> Text -> Text -> [Text] -> Int -> Int -> SearchResult
searchThread :: SearchResult -> ThreadID
searchTime :: SearchResult -> UTCTime
searchDateRel :: SearchResult -> Text
searchSubject :: SearchResult -> Text
searchAuthors :: SearchResult -> Text
searchTags :: SearchResult -> [Text]
searchMatched :: SearchResult -> Int
searchTotal :: SearchResult -> Int

-- | The notmuch search command.
notmuchSearch :: MonadIO m => String -> m [SearchResult]
newtype MessageID
MessageID :: String -> MessageID
unMessageID :: MessageID -> String
type MessageHeaders = Map (CI Text) Text
data MessageContent
ContentText :: Text -> MessageContent
ContentMultipart :: [MessagePart] -> MessageContent
ContentMsgRFC822 :: [(MessageHeaders, [MessagePart])] -> MessageContent
data MessagePart
MessagePart :: Int -> CI Text -> Maybe (CI Text) -> Maybe Text -> MessageContent -> MessagePart
partID :: MessagePart -> Int
partContentType :: MessagePart -> CI Text
partContentCharset :: MessagePart -> Maybe (CI Text)
partContentFilename :: MessagePart -> Maybe Text
partContent :: MessagePart -> MessageContent
data Message
Message :: MessageID -> Text -> UTCTime -> MessageHeaders -> [MessagePart] -> Bool -> Bool -> [Text] -> FilePath -> Message
messageId :: Message -> MessageID
messageDateRel :: Message -> Text
messageTime :: Message -> UTCTime
messageHeaders :: Message -> MessageHeaders
messageBody :: Message -> [MessagePart]
messageExcluded :: Message -> Bool
messageMatch :: Message -> Bool
messageTags :: Message -> [Text]
messageFilename :: Message -> FilePath
messageSubject :: Message -> Text
messageFrom :: Message -> Text
data Thread
Thread :: Forest Message -> Thread
threadForest :: Thread -> Forest Message

-- | The notmuch show command.
notmuchShow :: MonadIO m => ThreadID -> m Thread
notmuchMessagePart :: (MonadIO m, MonadResource m') => MessageID -> Int -> (m MessagePart, Source m' ByteString)
notmuchTagMessage :: MonadIO m => [String] -> [String] -> MessageID -> m ()
notmuchTagThread :: MonadIO m => [String] -> [String] -> ThreadID -> m ()
data Reply
Reply :: Map (CI Text) Text -> Message -> Reply
replyHeaders :: Reply -> Map (CI Text) Text
replyOriginal :: Reply -> Message
data ReplyTo
ReplyAll :: ReplyTo
ReplySender :: ReplyTo
notmuchReply :: MonadIO m => MessageID -> ReplyTo -> m Reply

-- | Run a raw notmuch command.
notmuchRaw :: MonadIO m => [String] -> m (ExitCode, String, String)

-- | A helper function to run notmuch and parse the result from json. For
--   this to work, the arguments must include '--format=json'.
notmuchJson :: (MonadIO m, FromJSON a) => [String] -> m a

-- | The version of notmuch
notmuchVersion :: MonadIO m => m Version
instance Typeable NotmuchError
instance Show NotmuchError
instance Show ThreadID
instance Read ThreadID
instance Eq ThreadID
instance PathPiece ThreadID
instance FromJSON ThreadID
instance ToJSON ThreadID
instance Show SearchResult
instance Eq SearchResult
instance Show MessagePart
instance Eq MessagePart
instance Show MessageContent
instance Eq MessageContent
instance Show MessageID
instance Read MessageID
instance Eq MessageID
instance PathPiece MessageID
instance FromJSON MessageID
instance Show Message
instance Eq Message
instance Show Thread
instance Show Reply
instance Eq Reply
instance Eq ReplyTo
instance Show ReplyTo
instance FromJSON Reply
instance FromJSON Thread
instance FromJSON Message
instance FromJSON MessagePart
instance ToJSON SearchResult
instance FromJSON SearchResult
instance ToMarkup ThreadID
instance Exception NotmuchError

module StaticFiles
js_jquery_pjax_js :: Route EmbeddedStatic
js_select2_js :: Route EmbeddedStatic
js_bootstrap_js :: Route EmbeddedStatic
js_jquery_js :: Route EmbeddedStatic
css_select2x2_png :: Route EmbeddedStatic
css_bootstrap_min_css :: Route EmbeddedStatic
css_select2_spinner_gif :: Route EmbeddedStatic
css_bootstrap_responsive_min_css :: Route EmbeddedStatic
css_select2_png :: Route EmbeddedStatic
css_select2_css :: Route EmbeddedStatic
img_vline_png :: Route EmbeddedStatic
img_glyphicons_halflings_png :: Route EmbeddedStatic
img_glyphicons_halflings_white_png :: Route EmbeddedStatic
img_node_png :: Route EmbeddedStatic
img_lastnode_png :: Route EmbeddedStatic
embStatic :: EmbeddedStatic

module Settings
widgetFileSettings :: WidgetFileSettings
widgetFile :: String -> Q Exp
data RetagEntry
RetagEntry :: Text -> Text -> [String] -> [String] -> RetagEntry
retagName :: RetagEntry -> Text
retagIcon :: RetagEntry -> Text
retagAdd :: RetagEntry -> [String]
retagRemove :: RetagEntry -> [String]
data Extra
Extra :: ByteString -> [(Text, String)] -> [RetagEntry] -> [Text] -> Maybe FilePath -> Text -> Maybe Text -> Text -> [FilePath] -> Extra
extraHashedPwd :: Extra -> ByteString
extraFolders :: Extra -> [(Text, String)]
extraRetag :: Extra -> [RetagEntry]
extraFromAddresses :: Extra -> [Text]
extraSentBox :: Extra -> Maybe FilePath
extraMessageIDDomain :: Extra -> Text
extraGoogleClientId :: Extra -> Maybe Text
extraSourceLink :: Extra -> Text
extraSendmailPaths :: Extra -> [FilePath]
parseExtra :: DefaultEnv -> Object -> Parser Extra
parseFolder :: Object -> Parser (Text, String)
development :: Bool
production :: Bool
instance Show RetagEntry
instance Show Extra
instance FromJSON RetagEntry
instance ToJSON RetagEntry

module Foundation
data App
App :: AppConfig DefaultEnv Extra -> EmbeddedStatic -> Manager -> ByteString -> App
settings :: App -> AppConfig DefaultEnv Extra
getStatic :: App -> EmbeddedStatic
httpManager :: App -> Manager

-- | hashed password from <a>Crypto.PasswordStore</a>
passwordHash :: App -> ByteString
data AppMessage
MsgCompose :: AppMessage
MsgRaw :: AppMessage
MsgPassword :: AppMessage
MsgFolders :: AppMessage
MsgLogin :: AppMessage
MsgLogout :: AppMessage
MsgDate :: AppMessage
MsgNum :: AppMessage
MsgSubject :: AppMessage
MsgBody :: AppMessage
MsgAuthors :: AppMessage
MsgAttach :: AppMessage
MsgTags :: AppMessage
MsgRawWarning :: AppMessage
MsgRunCmd :: AppMessage
MsgExitCode :: AppMessage
MsgStdOut :: AppMessage
MsgStdErr :: AppMessage
MsgSend :: AppMessage
MsgExtraHeader :: AppMessage
MsgSent :: AppMessage
MsgInPager :: Text -> AppMessage
appMessageFolder :: AppMessage -> Text
MsgViewInPager :: AppMessage
MsgCheckNew :: AppMessage
MsgMessageRetagging :: AppMessage
MsgSepTagsBySpace :: AppMessage
MsgClose :: AppMessage
MsgRetag :: AppMessage
MsgTagsToAdd :: AppMessage
MsgTagsToRemove :: AppMessage
MsgBodyFormat :: AppMessage
MsgPreview :: AppMessage
MsgAddrBookType :: AppMessage
MsgNoAddressBook :: AppMessage
MsgAbook :: AppMessage
MsgGoogle :: AppMessage
MsgGoogleAuth :: AppMessage
MsgAddrHelpTitle :: AppMessage
MsgAddrHelp :: AppMessage
type Handler = HandlerT App IO
type Widget = WidgetT App IO ()
resourcesApp :: [ResourceTree String]
type Form x = Html -> MForm (HandlerT App IO) (FormResult x, Widget)

-- | Get the <a>Extra</a> value, used to hold data from the settings.yml
--   file.
getExtra :: (MonadHandler m, HandlerSite m ~ App) => m Extra

-- | Checks if the request comes from pjax
isPjax :: (MonadHandler m, HandlerSite m ~ App) => m Bool
loginForm :: AForm (HandlerT App IO) ByteString
passwordPlugin :: AuthPlugin App
instance Show (Route App)
instance Eq (Route App)
instance Read (Route App)
instance YesodAuth App
instance RenderMessage App FormMessage
instance Yesod App
instance RouteAttrs App
instance RenderRoute App
instance ParseRoute App
instance RenderMessage App AppMessage

module Import

module Handler.Abook

-- | Query abook for the given string
getAbookQueryR :: Handler Value

module Handler.Raw
getRawCommandR :: Handler Html
postRawCommandR :: Handler Html

module Handler.Tags

-- | A widget that contains the support elements for retagging, including
--   the forms and javascript. This widget must be included only ONCE in
--   the page. A notmuch:retag event is raised after a successful retag.
tagHeader :: Widget

-- | A widget consisting of the retag buttons followed by the current tag
--   list.
tagWidget :: Either SearchResult Message -> WidgetT App IO ()
postRetagThreadR :: ThreadID -> Text -> Handler Value
postRetagMessageR :: MessageID -> Text -> Handler Value
postCustomRetagThreadR :: ThreadID -> Handler Value
postCustomRetagMessageR :: MessageID -> Handler Value

module Handler.Home

-- | The GET handler for the home page
getHomeR :: Handler Html

-- | The GET handler for the search page
getSearchR :: String -> Handler Html

-- | The POST handler for the search box on the navbar, just redirects to
--   the search route.
postSearchPostR :: Handler ()
getOpenSearchR :: Handler RepXml

module FilterHtml

-- | Filter Html
filterHtml :: Text -> Text

module Handler.View
threadWidget :: ThreadID -> Widget

-- | The header code for displaying threads, should only be included once
--   in the page
threadHeader :: Widget
getThreadR :: ThreadID -> Handler Html
getMessagePartR :: MessageID -> Int -> Handler TypedContent

module Handler.Pager
getThreadPagerR :: String -> Handler Html

module Handler.ComposeFields
addressField :: Field (HandlerT App IO) [Address]

-- | Parse a single address
parseAddress :: Text -> Either (SomeMessage App) Address

-- | Parse a list of addresses separated by commas
parseAddresses :: Text -> Either (SomeMessage App) [Address]
showAddress :: Address -> Text
headerField :: Field (HandlerT App IO) [(ByteString, Text)]
multiFile :: Field (HandlerT master IO) [FileInfo]

module Handler.Compose
getComposeR :: Handler Html
postComposeR :: Handler Html
getReplyR :: MessageID -> Handler Html
getReplyAllR :: MessageID -> Handler Html
postPreviewMessageR :: Handler Html
instance Eq EmailBodyFormat
instance Enum EmailBodyFormat
instance Bounded EmailBodyFormat
instance Show EmailBodyFormat
instance Eq Address

module Application
makeApplication :: AppConfig DefaultEnv Extra -> IO Application
getApplicationDev :: IO (Int, Application)
makeFoundation :: AppConfig DefaultEnv Extra -> IO App
instance YesodDispatch App
