-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Common types for IRC related packages -- -- This library provides types useful to programs and libraries working -- with Internet Relay Chat (IRC). It allows basic IRC concepts like -- channel, nickname, message and so on to be used by IRC parsers and IRC -- clients and IRC servers without unnecessary duplication of type -- definitions. -- -- Note that the library possibly doesn't yet fully handle all the types -- related to the various IRC messages types, for example user and -- channel modes. These are added gradually, and patches are welcome. -- -- All the text based types use strict Data.Text.Text. This allows -- efficient processing of message text while supporting character-based -- operations that require recognizing Unicode. -- -- If you are writing a simple IRC client module, you can probably use -- Network.Irc.Types.Base, which contains the subset you'll likely -- need. But if you're writing an IRC message parser or serializer, -- you'll probably want to use Network.Irc.Types, which contains -- all the types. @package irc-fun-types @version 0.2 module Network.Irc.Types.Base -- | IRC server hostname, e.g. orwell.freenode.net newtype Hostname Hostname :: Text -> Hostname [unHostname] :: Hostname -> Text -- | An IRC service name. newtype ServiceName ServiceName :: Text -> ServiceName [unServiceName] :: ServiceName -> Text -- | System user name, i.e. the first part of user@host.tld newtype Username Username :: Text -> Username [unUsername] :: Username -> Text -- | IRC nickname newtype Nickname Nickname :: Text -> Nickname [unNickname] :: Nickname -> Text -- | IRC channel name (including the prefix character), e.g. -- #freepost newtype Channel Channel :: Text -> Channel [unChannel] :: Channel -> Text -- | IRC protocol command name, i.e. PRIVMSG newtype CmdName CmdName :: Text -> CmdName [unCmdName] :: CmdName -> Text -- | IRC protocol numeric command number newtype CmdNumber CmdNumber :: Int -> CmdNumber [unCmdNumber] :: CmdNumber -> Int -- | IRC message parameter, e.g. second word in JOIN #freepost type Parameter = Text -- | Chat message content, i.e. a message or a part of a text message meant -- to be sent or received between people through IRC. newtype MsgContent MsgContent :: Text -> MsgContent [unMsgContent] :: MsgContent -> Text -- | IRC connection password. newtype Password Password :: Text -> Password [unPassword] :: Password -> Text -- | IRC channel password. newtype ChannelKey ChannelKey :: Text -> ChannelKey [unChannelKey] :: ChannelKey -> Text -- | IRC channel topic line. newtype ChannelTopic ChannelTopic :: Text -> ChannelTopic [unChannelTopic] :: ChannelTopic -> Text -- | A user's "real name" as kept by the IRC server. newtype RealName RealName :: Text -> RealName [unRealName] :: RealName -> Text -- | An optional comment used by several IRC commands, e.g. a part message, -- which is a line shown when a user leaves a channel. newtype Comment Comment :: Text -> Comment [unComment] :: Comment -> Text -- | Network port number. newtype PortNumber PortNumber :: Int -> PortNumber [unPortNumber] :: PortNumber -> Int -- | IRC privilege status for a user in the context of a specific channel. data Privilege Regular :: Privilege Voice :: Privilege Operator :: Privilege -- | IRC channel privacy settings. data ChannelPrivacy Secret :: ChannelPrivacy Private :: ChannelPrivacy Public :: ChannelPrivacy instance GHC.Show.Show Network.Irc.Types.Base.ChannelPrivacy instance GHC.Classes.Eq Network.Irc.Types.Base.ChannelPrivacy instance GHC.Show.Show Network.Irc.Types.Base.Privilege instance GHC.Classes.Eq Network.Irc.Types.Base.Privilege instance GHC.Show.Show Network.Irc.Types.Base.PortNumber instance GHC.Classes.Eq Network.Irc.Types.Base.PortNumber instance GHC.Show.Show Network.Irc.Types.Base.Comment instance GHC.Show.Show Network.Irc.Types.Base.RealName instance GHC.Show.Show Network.Irc.Types.Base.ChannelTopic instance GHC.Show.Show Network.Irc.Types.Base.ChannelKey instance GHC.Classes.Eq Network.Irc.Types.Base.ChannelKey instance GHC.Show.Show Network.Irc.Types.Base.Password instance GHC.Classes.Eq Network.Irc.Types.Base.Password instance Data.String.IsString Network.Irc.Types.Base.MsgContent instance GHC.Base.Monoid Network.Irc.Types.Base.MsgContent instance GHC.Show.Show Network.Irc.Types.Base.MsgContent instance GHC.Show.Show Network.Irc.Types.Base.CmdNumber instance GHC.Classes.Eq Network.Irc.Types.Base.CmdNumber instance GHC.Show.Show Network.Irc.Types.Base.CmdName instance GHC.Classes.Eq Network.Irc.Types.Base.CmdName instance Data.Hashable.Class.Hashable Network.Irc.Types.Base.Channel instance GHC.Show.Show Network.Irc.Types.Base.Channel instance GHC.Classes.Eq Network.Irc.Types.Base.Channel instance Data.Hashable.Class.Hashable Network.Irc.Types.Base.Nickname instance GHC.Show.Show Network.Irc.Types.Base.Nickname instance GHC.Classes.Eq Network.Irc.Types.Base.Nickname instance GHC.Show.Show Network.Irc.Types.Base.Username instance GHC.Classes.Eq Network.Irc.Types.Base.Username instance GHC.Show.Show Network.Irc.Types.Base.ServiceName instance GHC.Classes.Eq Network.Irc.Types.Base.ServiceName instance GHC.Show.Show Network.Irc.Types.Base.Hostname instance GHC.Classes.Eq Network.Irc.Types.Base.Hostname module Network.Irc.Types -- | IRC message prefix. data Prefix -- | The server which sends the message PrefixServer :: Hostname -> Prefix -- | The user which sends the message (if the message comes from a user) PrefixNick :: Nickname -> (Maybe Username) -> (Maybe Host) -> Prefix -- | User address containing a name part (as in "user") and an optional -- host part (as in "user@host"). data UserAddress UserAddress :: Username -> (Maybe Host) -> UserAddress -- | Some IRC commands operate on a target, that is either a single user or -- an entire IRC server. data Target NickTarget :: Nickname -> Target ServerTarget :: Hostname -> Target -- | An IP address. data Address IPv4 :: Text -> Address IPv6 :: Text -> Address -- | A host, either a hostname (e.g. irc.freenode.net) or an IP -- address, or a cloak assigned by the server. data Host HostByName :: Hostname -> Host HostByAddr :: Address -> Host HostCloak :: Text -> Host -- | An IRC command code. Either a named command, or a numeric one. data Command NamedCmd :: CmdName -> Command NumericCmd :: CmdNumber -> Command -- | Part of a Mask. data MaskPart -- | A literal character. MaskChar :: Char -> MaskPart -- | A wildcard which matches a single character. MaskWildOne :: MaskPart -- | A wildcard which matches zero or more characters. MaskWildMany :: MaskPart -- | A pattern for matching host and server names. A mask in the protocol -- is a string which consists of literal characters and wildcards. There -- are two wildcards: ?, which matches a single -- character; *, which matches any number of characters -- (zero or more). newtype Mask Mask :: [MaskPart] -> Mask -- | Some IRC command parameters are targets, and one way to specify a -- target is using a Mask. data TargetMask -- | Host mask, prefixed with # in the protocol. Selects -- all the users whose host matches the mask. HostMask :: Mask -> TargetMask -- | Server mask, prefixed with $ in the protocol. Selects -- all the users connected to a server which matches the mask. ServerMask :: Mask -> TargetMask -- | A generic IRC message. It consists of a sender prefix, command name -- (string or numeric) and optionally a list of parameters. data GenericMessage GenericMessage :: Maybe Prefix -> Command -> [Text] -> GenericMessage [gmPrefix] :: GenericMessage -> Maybe Prefix [gmCommand] :: GenericMessage -> Command [gmParams] :: GenericMessage -> [Text] -- | An IRC message of a specific type. This includes only messages whose -- command is a name. Messages with a numeric command are handled in the -- Network.IRC.Fun.Messages.Reply module. data SpecificMessage SpecificMessage :: (Maybe Prefix) -> Message -> SpecificMessage -- | Some IRC commands have targets. For example, to which channel to send -- a given text message. Targets are specified as parameters in IRC -- messages. data MessageTarget -- | An IRC channel. ChannelTarget :: Channel -> MessageTarget -- | An IRC user. Possible combinations in the protocol are: -- -- UserTarget :: (Maybe Nickname) -> (Maybe UserAddress) -> (Maybe Hostname) -> MessageTarget -- | A mask which matches the server or host of the users to whom the -- message should be sent. MaskTarget :: TargetMask -> MessageTarget -- | A server query. Can be sent through a StatsMessage. data Query -- | TODO Connections :: Query -- | TODO CommandUsage :: Query -- | TODO PrivilegedUsers :: Query -- | TODO Uptime :: Query -- | TODO OtherQuery :: Char -> Query -- | An IRC message of specific type (excluding the optional sender prefix, -- see SpecificMessage). data Message PassMessage :: Password -> Message NickMessage :: Nickname -> Message -- | first bool = whether invisible, second bool = whether sees wallops UserMessage :: Username -> Bool -> Bool -> RealName -> Message OperMessage :: Username -> Password -> Message -- | first list: modes to remove (-), second list: modes to add (+) UserModeMessage :: Nickname -> [UserMode] -> [UserMode] -> Message ServiceMessage :: Nickname -> Mask -> Text -> Message QuitMessage :: (Maybe Comment) -> Message SQuitMessage :: Hostname -> Comment -> Message JoinMessage :: (Maybe ([Channel], [ChannelKey])) -> Message PartMessage :: [Channel] -> (Maybe Comment) -> Message ChannelModeMessage :: [ChannelMode] -> [ChannelMode] -> Message TopicMessage :: Channel -> (Maybe ChannelTopic) -> Message NamesMessage :: [Channel] -> (Maybe Hostname) -> Message ListMessage :: [Channel] -> (Maybe Hostname) -> Message InviteMessage :: Nickname -> Channel -> Message KickMessage :: [Channel] -> [Username] -> (Maybe Comment) -> Message PrivMsgMessage :: MessageTarget -> MsgContent -> Message PrivActionMessage :: MessageTarget -> MsgContent -> Message NoticeMessage :: MessageTarget -> MsgContent -> Message MotdMessage :: (Maybe Hostname) -> Message LusersMessage :: (Maybe (Mask, Maybe Hostname)) -> Message VersionMessage :: (Maybe (Either Hostname Mask)) -> Message StatsMessage :: (Maybe (Query, Maybe (Either Hostname Mask))) -> Message LinksMessage :: (Maybe (Maybe (Either Hostname Mask), Mask)) -> Message TimeMessage :: (Maybe (Either Hostname Mask)) -> Message ConnectMessage :: Hostname -> PortNumber -> (Either Hostname Mask) -> Message TraceMessage :: (Maybe Target) -> Message AdminMessage :: (Maybe Target) -> Message InfoMessage :: (Maybe Target) -> Message ServlistMessage :: (Maybe (Mask, Maybe Text)) -> Message SQueryMessage :: ServiceName -> MsgContent -> Message WhoMessage :: (Maybe (Mask, Bool)) -> Message WhoisMessage :: (Maybe Hostname) -> [Mask] -> Message WhowasMessage :: [Nickname] -> (Maybe (Int, Maybe Hostname)) -> Message KillMessage :: Nickname -> Comment -> Message PingMessage :: Hostname -> (Maybe Hostname) -> Message PongMessage :: Hostname -> (Maybe Hostname) -> Message ErrorMessage :: Text -> Message AwayMessage :: (Maybe MsgContent) -> Message RehashMessage :: Message DieMessage :: Message RestartMessage :: Message SummonMessage :: Username -> (Maybe (Hostname, Maybe Channel)) -> Message UsersMessage :: (Maybe Hostname) -> Message WallopsMessage :: MsgContent -> Message UserhostMessage :: [Nickname] -> Message IsonMessage :: [Nickname] -> Message -- | An error occuring while analyzing a parsed IRC protocol message into a -- specific message type, such as JoinMessage. data AnalysisError WrongNumArgs :: Int -> (Maybe ArgSpec) -> AnalysisError InvalidArg :: (Maybe Int) -> (Maybe Text) -> (Maybe Text) -> AnalysisError OtherError :: Text -> AnalysisError -- | Specifies the number of parameter a certain IRC message type accepts. data ArgSpec Exactly :: Int -> ArgSpec AtLeast :: Int -> ArgSpec AtMost :: Int -> ArgSpec Between :: Int -> Int -> ArgSpec OneOf :: [Int] -> ArgSpec -- | TODO data UserMode UModeInvisible :: UserMode UModeCallerID :: UserMode UModeSeeWallops :: UserMode UModeDeaf :: UserMode UModeNoForwarding :: UserMode UModeBlockUnidentified :: UserMode UModeConnectedViaSSL :: UserMode UModeAway :: UserMode UModeRestricted :: UserMode UModeOperator :: UserMode UModeLocalOperator :: UserMode UModeSeeNotices :: UserMode UModeOther :: Char -> UserMode -- | TODO data ChannelMode CModeCreator :: ChannelMode CModeOperator :: ChannelMode CModeVoice :: ChannelMode CModeAnonymous :: ChannelMode CModeInviteOnly :: ChannelMode CModeModerated :: ChannelMode CModeNoMessagesFromOutside :: ChannelMode CModeQuiet :: ChannelMode CModePrivate :: ChannelMode CModeSecret :: ChannelMode CModeServerReop :: ChannelMode CModeTopicSettableByChannelOpOnly :: ChannelMode CModeKey :: (Maybe ChannelKey) -> ChannelMode CModeUserLimit :: (Maybe Int) -> ChannelMode CModeBanMask :: (Maybe Mask) -> ChannelMode CModeExceptionMask :: (Maybe Mask) -> ChannelMode CModeInvitationMask :: (Maybe Mask) -> ChannelMode CModeOther :: Char -> [Text] -> ChannelMode CModeFreenodeQuiet :: (Maybe Mask) -> ChannelMode data ChannelModeType ModeTypeList :: ChannelModeType ModeTypeSetting :: ChannelModeType ModeTypeMaybeSetting :: ChannelModeType ModeTypeFlag :: ChannelModeType -- | TODO data GenericReply GenericReply :: Hostname -> CmdNumber -> Target -> [Parameter] -> GenericReply [grSender] :: GenericReply -> Hostname [grCode] :: GenericReply -> CmdNumber [grTarget] :: GenericReply -> Target [grParams] :: GenericReply -> [Parameter] -- | TODO data Reply -- | TODO WelcomeReply :: Reply -- | TODO YourHostReply :: Reply -- | TODO CreatedReply :: Reply -- | TODO MyInfoReply :: Reply -- | TODO BounceReply :: Reply -- | TODO ISupportReply :: Reply -- | TODO UserHostReply :: Reply -- | TODO IsOnReply :: Reply -- | TODO AwayReply :: Reply -- | TODO UnAwayReply :: Reply -- | TODO NoAwayReply :: Reply -- | TODO WhoIsUserReply :: Reply -- | TODO WhoIsServerReply :: Reply -- | TODO WhoIsOperatorReply :: Reply -- | TODO WhoIsIdleReply :: Reply -- | TODO EndOfWhoIsReply :: Reply -- | TODO WhoIsChannelsReply :: Reply -- | TODO WhoWasUserReply :: Reply -- | TODO EndOfWhoWasReply :: Reply -- | TODO ListStartReply :: Reply -- | TODO ListReply :: Reply -- | TODO ListEndReply :: Reply -- | TODO UniqueOpIsReply :: Reply -- | TODO ChannelModeIsReply :: Reply -- | TODO NoTopicReply :: Reply -- | TODO TopicReply :: Reply -- | TODO InvitingReply :: Reply -- | TODO SummoningReply :: Reply -- | TODO InviteListReply :: Reply -- | TODO EndOfInviteListReply :: Reply -- | TODO ExceptListReply :: Reply -- | TODO EndOfExceptListReply :: Reply -- | TODO VersionReply :: Reply -- | TODO WhoReply :: Reply -- | TODO EndOfWhoReply :: Reply -- | Lists members of IRC channels. Sent when JOINing a channel to list the -- users in that channel, or as a response to the NAMES command. NamesReply :: ChannelPrivacy -> Channel -> [(Privilege, Nickname)] -> Reply -- | Sent after a sequence of 0 or more NameReplys, to signal that -- the list transmission is finished. EndOfNamesReply :: Reply -- | TODO LinksReply :: Reply -- | TODO EndOfLinksReply :: Reply -- | TODO BanListReply :: Reply -- | TODO EndOfBanListReply :: Reply -- | TODO InfoReply :: Reply -- | TODO EndOfInfoReply :: Reply -- | TODO MotdStartReply :: Reply -- | TODO MessageOfTheDayReply :: Reply -- | TODO EndOfMessageOfTheDayReply :: Reply -- | TODO YoureOperReply :: Reply -- | TODO RehashingReply :: Reply -- | TODO YoureServiceReply :: Reply -- | TODO TimeReply :: Reply -- | TODO UsersStartReply :: Reply -- | TODO UsersReply :: Reply -- | TODO EndOfUsersReply :: Reply -- | TODO NoUsersReply :: Reply -- | TODO TraceLinkReply :: Reply -- | TODO TraceConnectingReply :: Reply -- | TODO TraceHandshakeReply :: Reply -- | TODO TraceUnknownReply :: Reply -- | TODO TraceOperatorReply :: Reply -- | TODO TraceUserReply :: Reply -- | TODO TraceServerReply :: Reply -- | TODO TraceServiceReply :: Reply -- | TODO TraceNewTypeReply :: Reply -- | TODO TraceClassReply :: Reply -- | TODO TraceReconnectReply :: Reply -- | TODO TraceLogReply :: Reply -- | TODO TraceEndReply :: Reply -- | TODO StatsLinkInfoReply :: Reply -- | TODO StatsCommandsReply :: Reply -- | TODO EndOfStatsReply :: Reply -- | TODO StatsUptimeReply :: Reply -- | TODO StatsOLineReply :: Reply -- | TODO UModeIsReply :: Reply -- | TODO ServListReply :: Reply -- | TODO ServListEndReply :: Reply -- | TODO LuserClientReply :: Reply -- | TODO LuserOpReply :: Reply -- | TODO LuserUnknownReply :: Reply -- | TODO LuserChannelsReply :: Reply -- | TODO LuserMeReply :: Reply -- | TODO AdminMeReply :: Reply -- | TODO AdminLocation1Reply :: Reply -- | TODO AdminLocation2Reply :: Reply -- | TODO AdminEmailReply :: Reply -- | TODO TryAgainReply :: Reply -- | An IRC server numeric reply of a specific type. data SpecificReply SpecificReply :: Hostname -> Target -> Reply -> SpecificReply instance GHC.Show.Show Network.Irc.Types.AnalysisError instance GHC.Show.Show Network.Irc.Types.ArgSpec instance GHC.Show.Show Network.Irc.Types.SpecificReply instance GHC.Show.Show Network.Irc.Types.Reply instance GHC.Classes.Eq Network.Irc.Types.Reply instance GHC.Show.Show Network.Irc.Types.GenericReply instance GHC.Show.Show Network.Irc.Types.ReservedErrorCode instance GHC.Classes.Eq Network.Irc.Types.ReservedErrorCode instance GHC.Show.Show Network.Irc.Types.ReservedReplyCode instance GHC.Classes.Eq Network.Irc.Types.ReservedReplyCode instance GHC.Show.Show Network.Irc.Types.ErrorReplyCode instance GHC.Classes.Eq Network.Irc.Types.ErrorReplyCode instance GHC.Show.Show Network.Irc.Types.CommandResponseCode instance GHC.Classes.Eq Network.Irc.Types.CommandResponseCode instance GHC.Show.Show Network.Irc.Types.SpecificMessage instance GHC.Show.Show Network.Irc.Types.Message instance GHC.Show.Show Network.Irc.Types.ChannelMode instance GHC.Classes.Eq Network.Irc.Types.ChannelMode instance GHC.Show.Show Network.Irc.Types.UserMode instance GHC.Classes.Eq Network.Irc.Types.UserMode instance GHC.Show.Show Network.Irc.Types.Query instance GHC.Show.Show Network.Irc.Types.MessageTarget instance GHC.Show.Show Network.Irc.Types.GenericMessage instance GHC.Show.Show Network.Irc.Types.TargetMask instance GHC.Classes.Eq Network.Irc.Types.TargetMask instance GHC.Show.Show Network.Irc.Types.Mask instance GHC.Classes.Eq Network.Irc.Types.Mask instance GHC.Show.Show Network.Irc.Types.MaskPart instance GHC.Classes.Eq Network.Irc.Types.MaskPart instance GHC.Show.Show Network.Irc.Types.Command instance GHC.Classes.Eq Network.Irc.Types.Command instance GHC.Show.Show Network.Irc.Types.Prefix instance GHC.Classes.Eq Network.Irc.Types.Prefix instance GHC.Show.Show Network.Irc.Types.UserAddress instance GHC.Classes.Eq Network.Irc.Types.UserAddress instance GHC.Show.Show Network.Irc.Types.Host instance GHC.Classes.Eq Network.Irc.Types.Host instance GHC.Show.Show Network.Irc.Types.Address instance GHC.Classes.Eq Network.Irc.Types.Address instance GHC.Show.Show Network.Irc.Types.Target instance GHC.Classes.Eq Network.Irc.Types.Target