irc-fun-types 0.1.0.0 → 0.2
raw patch · 6 files changed
+962/−935 lines, 6 filesdep +hashablePVP ok
version bump matches the API change (PVP)
Dependencies added: hashable
API changes (from Hackage documentation)
- Network.IRC.Fun.Types: AdminEmailReply :: Reply
- Network.IRC.Fun.Types: AdminLocation1Reply :: Reply
- Network.IRC.Fun.Types: AdminLocation2Reply :: Reply
- Network.IRC.Fun.Types: AdminMeReply :: Reply
- Network.IRC.Fun.Types: AdminMessage :: (Maybe Target) -> Message
- Network.IRC.Fun.Types: AtLeast :: Int -> ArgSpec
- Network.IRC.Fun.Types: AtMost :: Int -> ArgSpec
- Network.IRC.Fun.Types: AwayMessage :: (Maybe MsgContent) -> Message
- Network.IRC.Fun.Types: AwayReply :: Reply
- Network.IRC.Fun.Types: BanListReply :: Reply
- Network.IRC.Fun.Types: Between :: Int -> Int -> ArgSpec
- Network.IRC.Fun.Types: BounceReply :: Reply
- Network.IRC.Fun.Types: CModeAnonymous :: ChannelMode
- Network.IRC.Fun.Types: CModeBanMask :: (Maybe Mask) -> ChannelMode
- Network.IRC.Fun.Types: CModeCreator :: ChannelMode
- Network.IRC.Fun.Types: CModeExceptionMask :: (Maybe Mask) -> ChannelMode
- Network.IRC.Fun.Types: CModeFreenodeQuiet :: (Maybe Mask) -> ChannelMode
- Network.IRC.Fun.Types: CModeInvitationMask :: (Maybe Mask) -> ChannelMode
- Network.IRC.Fun.Types: CModeInviteOnly :: ChannelMode
- Network.IRC.Fun.Types: CModeKey :: (Maybe ChannelKey) -> ChannelMode
- Network.IRC.Fun.Types: CModeModerated :: ChannelMode
- Network.IRC.Fun.Types: CModeNoMessagesFromOutside :: ChannelMode
- Network.IRC.Fun.Types: CModeOperator :: ChannelMode
- Network.IRC.Fun.Types: CModeOther :: Char -> [Text] -> ChannelMode
- Network.IRC.Fun.Types: CModePrivate :: ChannelMode
- Network.IRC.Fun.Types: CModeQuiet :: ChannelMode
- Network.IRC.Fun.Types: CModeSecret :: ChannelMode
- Network.IRC.Fun.Types: CModeServerReop :: ChannelMode
- Network.IRC.Fun.Types: CModeTopicSettableByChannelOpOnly :: ChannelMode
- Network.IRC.Fun.Types: CModeUserLimit :: (Maybe Int) -> ChannelMode
- Network.IRC.Fun.Types: CModeVoice :: ChannelMode
- Network.IRC.Fun.Types: ChannelModeIsReply :: Reply
- Network.IRC.Fun.Types: ChannelModeMessage :: [ChannelMode] -> [ChannelMode] -> Message
- Network.IRC.Fun.Types: ChannelTarget :: Channel -> MessageTarget
- Network.IRC.Fun.Types: CommandUsage :: Query
- Network.IRC.Fun.Types: ConnectMessage :: Hostname -> PortNumber -> (Either Hostname Mask) -> Message
- Network.IRC.Fun.Types: Connections :: Query
- Network.IRC.Fun.Types: CreatedReply :: Reply
- Network.IRC.Fun.Types: DieMessage :: Message
- Network.IRC.Fun.Types: EndOfBanListReply :: Reply
- Network.IRC.Fun.Types: EndOfExceptListReply :: Reply
- Network.IRC.Fun.Types: EndOfInfoReply :: Reply
- Network.IRC.Fun.Types: EndOfInviteListReply :: Reply
- Network.IRC.Fun.Types: EndOfLinksReply :: Reply
- Network.IRC.Fun.Types: EndOfMessageOfTheDayReply :: Reply
- Network.IRC.Fun.Types: EndOfNamesReply :: Reply
- Network.IRC.Fun.Types: EndOfStatsReply :: Reply
- Network.IRC.Fun.Types: EndOfUsersReply :: Reply
- Network.IRC.Fun.Types: EndOfWhoIsReply :: Reply
- Network.IRC.Fun.Types: EndOfWhoReply :: Reply
- Network.IRC.Fun.Types: EndOfWhoWasReply :: Reply
- Network.IRC.Fun.Types: ErrorMessage :: Text -> Message
- Network.IRC.Fun.Types: Exactly :: Int -> ArgSpec
- Network.IRC.Fun.Types: ExceptListReply :: Reply
- Network.IRC.Fun.Types: GenericMessage :: Maybe Prefix -> Command -> [Text] -> GenericMessage
- Network.IRC.Fun.Types: GenericReply :: Hostname -> CmdNumber -> Target -> [Parameter] -> GenericReply
- Network.IRC.Fun.Types: HostByAddr :: Address -> Host
- Network.IRC.Fun.Types: HostByName :: Hostname -> Host
- Network.IRC.Fun.Types: HostCloak :: Text -> Host
- Network.IRC.Fun.Types: HostMask :: Mask -> TargetMask
- Network.IRC.Fun.Types: IPv4 :: Text -> Address
- Network.IRC.Fun.Types: IPv6 :: Text -> Address
- Network.IRC.Fun.Types: ISupportReply :: Reply
- Network.IRC.Fun.Types: InfoMessage :: (Maybe Target) -> Message
- Network.IRC.Fun.Types: InfoReply :: Reply
- Network.IRC.Fun.Types: InvalidArg :: (Maybe Int) -> (Maybe Text) -> (Maybe Text) -> AnalysisError
- Network.IRC.Fun.Types: InviteListReply :: Reply
- Network.IRC.Fun.Types: InviteMessage :: Nickname -> Channel -> Message
- Network.IRC.Fun.Types: InvitingReply :: Reply
- Network.IRC.Fun.Types: IsOnReply :: Reply
- Network.IRC.Fun.Types: IsonMessage :: [Nickname] -> Message
- Network.IRC.Fun.Types: JoinMessage :: (Maybe ([Channel], [ChannelKey])) -> Message
- Network.IRC.Fun.Types: KickMessage :: [Channel] -> [Username] -> (Maybe Comment) -> Message
- Network.IRC.Fun.Types: KillMessage :: Nickname -> Comment -> Message
- Network.IRC.Fun.Types: LinksMessage :: (Maybe (Maybe (Either Hostname Mask), Mask)) -> Message
- Network.IRC.Fun.Types: LinksReply :: Reply
- Network.IRC.Fun.Types: ListEndReply :: Reply
- Network.IRC.Fun.Types: ListMessage :: [Channel] -> (Maybe Hostname) -> Message
- Network.IRC.Fun.Types: ListReply :: Reply
- Network.IRC.Fun.Types: ListStartReply :: Reply
- Network.IRC.Fun.Types: LuserChannelsReply :: Reply
- Network.IRC.Fun.Types: LuserClientReply :: Reply
- Network.IRC.Fun.Types: LuserMeReply :: Reply
- Network.IRC.Fun.Types: LuserOpReply :: Reply
- Network.IRC.Fun.Types: LuserUnknownReply :: Reply
- Network.IRC.Fun.Types: LusersMessage :: (Maybe (Mask, Maybe Hostname)) -> Message
- Network.IRC.Fun.Types: Mask :: [MaskPart] -> Mask
- Network.IRC.Fun.Types: MaskChar :: Char -> MaskPart
- Network.IRC.Fun.Types: MaskTarget :: TargetMask -> MessageTarget
- Network.IRC.Fun.Types: MaskWildMany :: MaskPart
- Network.IRC.Fun.Types: MaskWildOne :: MaskPart
- Network.IRC.Fun.Types: MessageOfTheDayReply :: Reply
- Network.IRC.Fun.Types: ModeTypeFlag :: ChannelModeType
- Network.IRC.Fun.Types: ModeTypeList :: ChannelModeType
- Network.IRC.Fun.Types: ModeTypeMaybeSetting :: ChannelModeType
- Network.IRC.Fun.Types: ModeTypeSetting :: ChannelModeType
- Network.IRC.Fun.Types: MotdMessage :: (Maybe Hostname) -> Message
- Network.IRC.Fun.Types: MotdStartReply :: Reply
- Network.IRC.Fun.Types: MyInfoReply :: Reply
- Network.IRC.Fun.Types: NamedCmd :: CmdName -> Command
- Network.IRC.Fun.Types: NamesMessage :: [Channel] -> (Maybe Hostname) -> Message
- Network.IRC.Fun.Types: NamesReply :: ChannelPrivacy -> Channel -> [(Privilege, Nickname)] -> Reply
- Network.IRC.Fun.Types: NickMessage :: Nickname -> Message
- Network.IRC.Fun.Types: NickTarget :: Nickname -> Target
- Network.IRC.Fun.Types: NoAwayReply :: Reply
- Network.IRC.Fun.Types: NoTopicReply :: Reply
- Network.IRC.Fun.Types: NoUsersReply :: Reply
- Network.IRC.Fun.Types: NoticeMessage :: MessageTarget -> MsgContent -> Message
- Network.IRC.Fun.Types: NumericCmd :: CmdNumber -> Command
- Network.IRC.Fun.Types: OneOf :: [Int] -> ArgSpec
- Network.IRC.Fun.Types: OperMessage :: Username -> Password -> Message
- Network.IRC.Fun.Types: OtherError :: Text -> AnalysisError
- Network.IRC.Fun.Types: OtherQuery :: Char -> Query
- Network.IRC.Fun.Types: PartMessage :: [Channel] -> (Maybe Comment) -> Message
- Network.IRC.Fun.Types: PassMessage :: Password -> Message
- Network.IRC.Fun.Types: PingMessage :: Hostname -> (Maybe Hostname) -> Message
- Network.IRC.Fun.Types: PongMessage :: Hostname -> (Maybe Hostname) -> Message
- Network.IRC.Fun.Types: PrefixNick :: Nickname -> (Maybe Username) -> (Maybe Host) -> Prefix
- Network.IRC.Fun.Types: PrefixServer :: Hostname -> Prefix
- Network.IRC.Fun.Types: PrivActionMessage :: MessageTarget -> MsgContent -> Message
- Network.IRC.Fun.Types: PrivMsgMessage :: MessageTarget -> MsgContent -> Message
- Network.IRC.Fun.Types: PrivilegedUsers :: Query
- Network.IRC.Fun.Types: QuitMessage :: (Maybe Comment) -> Message
- Network.IRC.Fun.Types: RehashMessage :: Message
- Network.IRC.Fun.Types: RehashingReply :: Reply
- Network.IRC.Fun.Types: RestartMessage :: Message
- Network.IRC.Fun.Types: SQueryMessage :: ServiceName -> MsgContent -> Message
- Network.IRC.Fun.Types: SQuitMessage :: Hostname -> Comment -> Message
- Network.IRC.Fun.Types: ServListEndReply :: Reply
- Network.IRC.Fun.Types: ServListReply :: Reply
- Network.IRC.Fun.Types: ServerMask :: Mask -> TargetMask
- Network.IRC.Fun.Types: ServerTarget :: Hostname -> Target
- Network.IRC.Fun.Types: ServiceMessage :: Nickname -> Mask -> Text -> Message
- Network.IRC.Fun.Types: ServlistMessage :: (Maybe (Mask, Maybe Text)) -> Message
- Network.IRC.Fun.Types: SpecificMessage :: (Maybe Prefix) -> Message -> SpecificMessage
- Network.IRC.Fun.Types: SpecificReply :: Hostname -> Target -> Reply -> SpecificReply
- Network.IRC.Fun.Types: StatsCommandsReply :: Reply
- Network.IRC.Fun.Types: StatsLinkInfoReply :: Reply
- Network.IRC.Fun.Types: StatsMessage :: (Maybe (Query, Maybe (Either Hostname Mask))) -> Message
- Network.IRC.Fun.Types: StatsOLineReply :: Reply
- Network.IRC.Fun.Types: StatsUptimeReply :: Reply
- Network.IRC.Fun.Types: SummonMessage :: Username -> (Maybe (Hostname, Maybe Channel)) -> Message
- Network.IRC.Fun.Types: SummoningReply :: Reply
- Network.IRC.Fun.Types: TimeMessage :: (Maybe (Either Hostname Mask)) -> Message
- Network.IRC.Fun.Types: TimeReply :: Reply
- Network.IRC.Fun.Types: TopicMessage :: Channel -> (Maybe ChannelTopic) -> Message
- Network.IRC.Fun.Types: TopicReply :: Reply
- Network.IRC.Fun.Types: TraceClassReply :: Reply
- Network.IRC.Fun.Types: TraceConnectingReply :: Reply
- Network.IRC.Fun.Types: TraceEndReply :: Reply
- Network.IRC.Fun.Types: TraceHandshakeReply :: Reply
- Network.IRC.Fun.Types: TraceLinkReply :: Reply
- Network.IRC.Fun.Types: TraceLogReply :: Reply
- Network.IRC.Fun.Types: TraceMessage :: (Maybe Target) -> Message
- Network.IRC.Fun.Types: TraceNewTypeReply :: Reply
- Network.IRC.Fun.Types: TraceOperatorReply :: Reply
- Network.IRC.Fun.Types: TraceReconnectReply :: Reply
- Network.IRC.Fun.Types: TraceServerReply :: Reply
- Network.IRC.Fun.Types: TraceServiceReply :: Reply
- Network.IRC.Fun.Types: TraceUnknownReply :: Reply
- Network.IRC.Fun.Types: TraceUserReply :: Reply
- Network.IRC.Fun.Types: TryAgainReply :: Reply
- Network.IRC.Fun.Types: UModeAway :: UserMode
- Network.IRC.Fun.Types: UModeBlockUnidentified :: UserMode
- Network.IRC.Fun.Types: UModeCallerID :: UserMode
- Network.IRC.Fun.Types: UModeConnectedViaSSL :: UserMode
- Network.IRC.Fun.Types: UModeDeaf :: UserMode
- Network.IRC.Fun.Types: UModeInvisible :: UserMode
- Network.IRC.Fun.Types: UModeIsReply :: Reply
- Network.IRC.Fun.Types: UModeLocalOperator :: UserMode
- Network.IRC.Fun.Types: UModeNoForwarding :: UserMode
- Network.IRC.Fun.Types: UModeOperator :: UserMode
- Network.IRC.Fun.Types: UModeOther :: Char -> UserMode
- Network.IRC.Fun.Types: UModeRestricted :: UserMode
- Network.IRC.Fun.Types: UModeSeeNotices :: UserMode
- Network.IRC.Fun.Types: UModeSeeWallops :: UserMode
- Network.IRC.Fun.Types: UnAwayReply :: Reply
- Network.IRC.Fun.Types: UniqueOpIsReply :: Reply
- Network.IRC.Fun.Types: Uptime :: Query
- Network.IRC.Fun.Types: UserAddress :: Username -> (Maybe Host) -> UserAddress
- Network.IRC.Fun.Types: UserHostReply :: Reply
- Network.IRC.Fun.Types: UserMessage :: Username -> Bool -> Bool -> RealName -> Message
- Network.IRC.Fun.Types: UserModeMessage :: Nickname -> [UserMode] -> [UserMode] -> Message
- Network.IRC.Fun.Types: UserTarget :: (Maybe Nickname) -> (Maybe UserAddress) -> (Maybe Hostname) -> MessageTarget
- Network.IRC.Fun.Types: UserhostMessage :: [Nickname] -> Message
- Network.IRC.Fun.Types: UsersMessage :: (Maybe Hostname) -> Message
- Network.IRC.Fun.Types: UsersReply :: Reply
- Network.IRC.Fun.Types: UsersStartReply :: Reply
- Network.IRC.Fun.Types: VersionMessage :: (Maybe (Either Hostname Mask)) -> Message
- Network.IRC.Fun.Types: VersionReply :: Reply
- Network.IRC.Fun.Types: WallopsMessage :: MsgContent -> Message
- Network.IRC.Fun.Types: WelcomeReply :: Reply
- Network.IRC.Fun.Types: WhoIsChannelsReply :: Reply
- Network.IRC.Fun.Types: WhoIsIdleReply :: Reply
- Network.IRC.Fun.Types: WhoIsOperatorReply :: Reply
- Network.IRC.Fun.Types: WhoIsServerReply :: Reply
- Network.IRC.Fun.Types: WhoIsUserReply :: Reply
- Network.IRC.Fun.Types: WhoMessage :: (Maybe (Mask, Bool)) -> Message
- Network.IRC.Fun.Types: WhoReply :: Reply
- Network.IRC.Fun.Types: WhoWasUserReply :: Reply
- Network.IRC.Fun.Types: WhoisMessage :: (Maybe Hostname) -> [Mask] -> Message
- Network.IRC.Fun.Types: WhowasMessage :: [Nickname] -> (Maybe (Int, Maybe Hostname)) -> Message
- Network.IRC.Fun.Types: WrongNumArgs :: Int -> (Maybe ArgSpec) -> AnalysisError
- Network.IRC.Fun.Types: YourHostReply :: Reply
- Network.IRC.Fun.Types: YoureOperReply :: Reply
- Network.IRC.Fun.Types: YoureServiceReply :: Reply
- Network.IRC.Fun.Types: [gmCommand] :: GenericMessage -> Command
- Network.IRC.Fun.Types: [gmParams] :: GenericMessage -> [Text]
- Network.IRC.Fun.Types: [gmPrefix] :: GenericMessage -> Maybe Prefix
- Network.IRC.Fun.Types: [grCode] :: GenericReply -> CmdNumber
- Network.IRC.Fun.Types: [grParams] :: GenericReply -> [Parameter]
- Network.IRC.Fun.Types: [grSender] :: GenericReply -> Hostname
- Network.IRC.Fun.Types: [grTarget] :: GenericReply -> Target
- Network.IRC.Fun.Types: data Address
- Network.IRC.Fun.Types: data AnalysisError
- Network.IRC.Fun.Types: data ArgSpec
- Network.IRC.Fun.Types: data ChannelMode
- Network.IRC.Fun.Types: data ChannelModeType
- Network.IRC.Fun.Types: data Command
- Network.IRC.Fun.Types: data GenericMessage
- Network.IRC.Fun.Types: data GenericReply
- Network.IRC.Fun.Types: data Host
- Network.IRC.Fun.Types: data MaskPart
- Network.IRC.Fun.Types: data Message
- Network.IRC.Fun.Types: data MessageTarget
- Network.IRC.Fun.Types: data Prefix
- Network.IRC.Fun.Types: data Query
- Network.IRC.Fun.Types: data Reply
- Network.IRC.Fun.Types: data SpecificMessage
- Network.IRC.Fun.Types: data SpecificReply
- Network.IRC.Fun.Types: data Target
- Network.IRC.Fun.Types: data TargetMask
- Network.IRC.Fun.Types: data UserAddress
- Network.IRC.Fun.Types: data UserMode
- Network.IRC.Fun.Types: instance GHC.Classes.Eq Network.IRC.Fun.Types.Address
- Network.IRC.Fun.Types: instance GHC.Classes.Eq Network.IRC.Fun.Types.ChannelMode
- Network.IRC.Fun.Types: instance GHC.Classes.Eq Network.IRC.Fun.Types.Command
- Network.IRC.Fun.Types: instance GHC.Classes.Eq Network.IRC.Fun.Types.CommandResponseCode
- Network.IRC.Fun.Types: instance GHC.Classes.Eq Network.IRC.Fun.Types.ErrorReplyCode
- Network.IRC.Fun.Types: instance GHC.Classes.Eq Network.IRC.Fun.Types.Host
- Network.IRC.Fun.Types: instance GHC.Classes.Eq Network.IRC.Fun.Types.Mask
- Network.IRC.Fun.Types: instance GHC.Classes.Eq Network.IRC.Fun.Types.MaskPart
- Network.IRC.Fun.Types: instance GHC.Classes.Eq Network.IRC.Fun.Types.Prefix
- Network.IRC.Fun.Types: instance GHC.Classes.Eq Network.IRC.Fun.Types.Reply
- Network.IRC.Fun.Types: instance GHC.Classes.Eq Network.IRC.Fun.Types.ReservedErrorCode
- Network.IRC.Fun.Types: instance GHC.Classes.Eq Network.IRC.Fun.Types.ReservedReplyCode
- Network.IRC.Fun.Types: instance GHC.Classes.Eq Network.IRC.Fun.Types.Target
- Network.IRC.Fun.Types: instance GHC.Classes.Eq Network.IRC.Fun.Types.TargetMask
- Network.IRC.Fun.Types: instance GHC.Classes.Eq Network.IRC.Fun.Types.UserAddress
- Network.IRC.Fun.Types: instance GHC.Classes.Eq Network.IRC.Fun.Types.UserMode
- Network.IRC.Fun.Types: instance GHC.Show.Show Network.IRC.Fun.Types.Address
- Network.IRC.Fun.Types: instance GHC.Show.Show Network.IRC.Fun.Types.AnalysisError
- Network.IRC.Fun.Types: instance GHC.Show.Show Network.IRC.Fun.Types.ArgSpec
- Network.IRC.Fun.Types: instance GHC.Show.Show Network.IRC.Fun.Types.ChannelMode
- Network.IRC.Fun.Types: instance GHC.Show.Show Network.IRC.Fun.Types.Command
- Network.IRC.Fun.Types: instance GHC.Show.Show Network.IRC.Fun.Types.CommandResponseCode
- Network.IRC.Fun.Types: instance GHC.Show.Show Network.IRC.Fun.Types.ErrorReplyCode
- Network.IRC.Fun.Types: instance GHC.Show.Show Network.IRC.Fun.Types.GenericMessage
- Network.IRC.Fun.Types: instance GHC.Show.Show Network.IRC.Fun.Types.GenericReply
- Network.IRC.Fun.Types: instance GHC.Show.Show Network.IRC.Fun.Types.Host
- Network.IRC.Fun.Types: instance GHC.Show.Show Network.IRC.Fun.Types.Mask
- Network.IRC.Fun.Types: instance GHC.Show.Show Network.IRC.Fun.Types.MaskPart
- Network.IRC.Fun.Types: instance GHC.Show.Show Network.IRC.Fun.Types.Message
- Network.IRC.Fun.Types: instance GHC.Show.Show Network.IRC.Fun.Types.MessageTarget
- Network.IRC.Fun.Types: instance GHC.Show.Show Network.IRC.Fun.Types.Prefix
- Network.IRC.Fun.Types: instance GHC.Show.Show Network.IRC.Fun.Types.Query
- Network.IRC.Fun.Types: instance GHC.Show.Show Network.IRC.Fun.Types.Reply
- Network.IRC.Fun.Types: instance GHC.Show.Show Network.IRC.Fun.Types.ReservedErrorCode
- Network.IRC.Fun.Types: instance GHC.Show.Show Network.IRC.Fun.Types.ReservedReplyCode
- Network.IRC.Fun.Types: instance GHC.Show.Show Network.IRC.Fun.Types.SpecificMessage
- Network.IRC.Fun.Types: instance GHC.Show.Show Network.IRC.Fun.Types.SpecificReply
- Network.IRC.Fun.Types: instance GHC.Show.Show Network.IRC.Fun.Types.Target
- Network.IRC.Fun.Types: instance GHC.Show.Show Network.IRC.Fun.Types.TargetMask
- Network.IRC.Fun.Types: instance GHC.Show.Show Network.IRC.Fun.Types.UserAddress
- Network.IRC.Fun.Types: instance GHC.Show.Show Network.IRC.Fun.Types.UserMode
- Network.IRC.Fun.Types: newtype Mask
- Network.IRC.Fun.Types.Base: Channel :: Text -> Channel
- Network.IRC.Fun.Types.Base: ChannelKey :: Text -> ChannelKey
- Network.IRC.Fun.Types.Base: ChannelTopic :: Text -> ChannelTopic
- Network.IRC.Fun.Types.Base: CmdName :: Text -> CmdName
- Network.IRC.Fun.Types.Base: CmdNumber :: Int -> CmdNumber
- Network.IRC.Fun.Types.Base: Comment :: Text -> Comment
- Network.IRC.Fun.Types.Base: Hostname :: Text -> Hostname
- Network.IRC.Fun.Types.Base: MsgContent :: Text -> MsgContent
- Network.IRC.Fun.Types.Base: Nickname :: Text -> Nickname
- Network.IRC.Fun.Types.Base: Operator :: Privilege
- Network.IRC.Fun.Types.Base: Password :: Text -> Password
- Network.IRC.Fun.Types.Base: PortNumber :: Int -> PortNumber
- Network.IRC.Fun.Types.Base: Private :: ChannelPrivacy
- Network.IRC.Fun.Types.Base: Public :: ChannelPrivacy
- Network.IRC.Fun.Types.Base: RealName :: Text -> RealName
- Network.IRC.Fun.Types.Base: Regular :: Privilege
- Network.IRC.Fun.Types.Base: Secret :: ChannelPrivacy
- Network.IRC.Fun.Types.Base: ServiceName :: Text -> ServiceName
- Network.IRC.Fun.Types.Base: Username :: Text -> Username
- Network.IRC.Fun.Types.Base: Voice :: Privilege
- Network.IRC.Fun.Types.Base: [unChannelKey] :: ChannelKey -> Text
- Network.IRC.Fun.Types.Base: [unChannelTopic] :: ChannelTopic -> Text
- Network.IRC.Fun.Types.Base: [unChannel] :: Channel -> Text
- Network.IRC.Fun.Types.Base: [unCmdName] :: CmdName -> Text
- Network.IRC.Fun.Types.Base: [unCmdNumber] :: CmdNumber -> Int
- Network.IRC.Fun.Types.Base: [unComment] :: Comment -> Text
- Network.IRC.Fun.Types.Base: [unHostname] :: Hostname -> Text
- Network.IRC.Fun.Types.Base: [unMsgContent] :: MsgContent -> Text
- Network.IRC.Fun.Types.Base: [unNickname] :: Nickname -> Text
- Network.IRC.Fun.Types.Base: [unPassword] :: Password -> Text
- Network.IRC.Fun.Types.Base: [unPortNumber] :: PortNumber -> Int
- Network.IRC.Fun.Types.Base: [unRealName] :: RealName -> Text
- Network.IRC.Fun.Types.Base: [unServiceName] :: ServiceName -> Text
- Network.IRC.Fun.Types.Base: [unUsername] :: Username -> Text
- Network.IRC.Fun.Types.Base: data ChannelPrivacy
- Network.IRC.Fun.Types.Base: data Privilege
- Network.IRC.Fun.Types.Base: instance Data.String.IsString Network.IRC.Fun.Types.Base.MsgContent
- Network.IRC.Fun.Types.Base: instance GHC.Base.Monoid Network.IRC.Fun.Types.Base.MsgContent
- Network.IRC.Fun.Types.Base: instance GHC.Classes.Eq Network.IRC.Fun.Types.Base.Channel
- Network.IRC.Fun.Types.Base: instance GHC.Classes.Eq Network.IRC.Fun.Types.Base.ChannelKey
- Network.IRC.Fun.Types.Base: instance GHC.Classes.Eq Network.IRC.Fun.Types.Base.ChannelPrivacy
- Network.IRC.Fun.Types.Base: instance GHC.Classes.Eq Network.IRC.Fun.Types.Base.CmdName
- Network.IRC.Fun.Types.Base: instance GHC.Classes.Eq Network.IRC.Fun.Types.Base.CmdNumber
- Network.IRC.Fun.Types.Base: instance GHC.Classes.Eq Network.IRC.Fun.Types.Base.Hostname
- Network.IRC.Fun.Types.Base: instance GHC.Classes.Eq Network.IRC.Fun.Types.Base.Nickname
- Network.IRC.Fun.Types.Base: instance GHC.Classes.Eq Network.IRC.Fun.Types.Base.Password
- Network.IRC.Fun.Types.Base: instance GHC.Classes.Eq Network.IRC.Fun.Types.Base.PortNumber
- Network.IRC.Fun.Types.Base: instance GHC.Classes.Eq Network.IRC.Fun.Types.Base.Privilege
- Network.IRC.Fun.Types.Base: instance GHC.Classes.Eq Network.IRC.Fun.Types.Base.ServiceName
- Network.IRC.Fun.Types.Base: instance GHC.Classes.Eq Network.IRC.Fun.Types.Base.Username
- Network.IRC.Fun.Types.Base: instance GHC.Show.Show Network.IRC.Fun.Types.Base.Channel
- Network.IRC.Fun.Types.Base: instance GHC.Show.Show Network.IRC.Fun.Types.Base.ChannelKey
- Network.IRC.Fun.Types.Base: instance GHC.Show.Show Network.IRC.Fun.Types.Base.ChannelPrivacy
- Network.IRC.Fun.Types.Base: instance GHC.Show.Show Network.IRC.Fun.Types.Base.ChannelTopic
- Network.IRC.Fun.Types.Base: instance GHC.Show.Show Network.IRC.Fun.Types.Base.CmdName
- Network.IRC.Fun.Types.Base: instance GHC.Show.Show Network.IRC.Fun.Types.Base.CmdNumber
- Network.IRC.Fun.Types.Base: instance GHC.Show.Show Network.IRC.Fun.Types.Base.Comment
- Network.IRC.Fun.Types.Base: instance GHC.Show.Show Network.IRC.Fun.Types.Base.Hostname
- Network.IRC.Fun.Types.Base: instance GHC.Show.Show Network.IRC.Fun.Types.Base.MsgContent
- Network.IRC.Fun.Types.Base: instance GHC.Show.Show Network.IRC.Fun.Types.Base.Nickname
- Network.IRC.Fun.Types.Base: instance GHC.Show.Show Network.IRC.Fun.Types.Base.Password
- Network.IRC.Fun.Types.Base: instance GHC.Show.Show Network.IRC.Fun.Types.Base.PortNumber
- Network.IRC.Fun.Types.Base: instance GHC.Show.Show Network.IRC.Fun.Types.Base.Privilege
- Network.IRC.Fun.Types.Base: instance GHC.Show.Show Network.IRC.Fun.Types.Base.RealName
- Network.IRC.Fun.Types.Base: instance GHC.Show.Show Network.IRC.Fun.Types.Base.ServiceName
- Network.IRC.Fun.Types.Base: instance GHC.Show.Show Network.IRC.Fun.Types.Base.Username
- Network.IRC.Fun.Types.Base: newtype Channel
- Network.IRC.Fun.Types.Base: newtype ChannelKey
- Network.IRC.Fun.Types.Base: newtype ChannelTopic
- Network.IRC.Fun.Types.Base: newtype CmdName
- Network.IRC.Fun.Types.Base: newtype CmdNumber
- Network.IRC.Fun.Types.Base: newtype Comment
- Network.IRC.Fun.Types.Base: newtype Hostname
- Network.IRC.Fun.Types.Base: newtype MsgContent
- Network.IRC.Fun.Types.Base: newtype Nickname
- Network.IRC.Fun.Types.Base: newtype Password
- Network.IRC.Fun.Types.Base: newtype PortNumber
- Network.IRC.Fun.Types.Base: newtype RealName
- Network.IRC.Fun.Types.Base: newtype ServiceName
- Network.IRC.Fun.Types.Base: newtype Username
- Network.IRC.Fun.Types.Base: type Parameter = Text
+ Network.Irc.Types: AdminEmailReply :: Reply
+ Network.Irc.Types: AdminLocation1Reply :: Reply
+ Network.Irc.Types: AdminLocation2Reply :: Reply
+ Network.Irc.Types: AdminMeReply :: Reply
+ Network.Irc.Types: AdminMessage :: (Maybe Target) -> Message
+ Network.Irc.Types: AtLeast :: Int -> ArgSpec
+ Network.Irc.Types: AtMost :: Int -> ArgSpec
+ Network.Irc.Types: AwayMessage :: (Maybe MsgContent) -> Message
+ Network.Irc.Types: AwayReply :: Reply
+ Network.Irc.Types: BanListReply :: Reply
+ Network.Irc.Types: Between :: Int -> Int -> ArgSpec
+ Network.Irc.Types: BounceReply :: Reply
+ Network.Irc.Types: CModeAnonymous :: ChannelMode
+ Network.Irc.Types: CModeBanMask :: (Maybe Mask) -> ChannelMode
+ Network.Irc.Types: CModeCreator :: ChannelMode
+ Network.Irc.Types: CModeExceptionMask :: (Maybe Mask) -> ChannelMode
+ Network.Irc.Types: CModeFreenodeQuiet :: (Maybe Mask) -> ChannelMode
+ Network.Irc.Types: CModeInvitationMask :: (Maybe Mask) -> ChannelMode
+ Network.Irc.Types: CModeInviteOnly :: ChannelMode
+ Network.Irc.Types: CModeKey :: (Maybe ChannelKey) -> ChannelMode
+ Network.Irc.Types: CModeModerated :: ChannelMode
+ Network.Irc.Types: CModeNoMessagesFromOutside :: ChannelMode
+ Network.Irc.Types: CModeOperator :: ChannelMode
+ Network.Irc.Types: CModeOther :: Char -> [Text] -> ChannelMode
+ Network.Irc.Types: CModePrivate :: ChannelMode
+ Network.Irc.Types: CModeQuiet :: ChannelMode
+ Network.Irc.Types: CModeSecret :: ChannelMode
+ Network.Irc.Types: CModeServerReop :: ChannelMode
+ Network.Irc.Types: CModeTopicSettableByChannelOpOnly :: ChannelMode
+ Network.Irc.Types: CModeUserLimit :: (Maybe Int) -> ChannelMode
+ Network.Irc.Types: CModeVoice :: ChannelMode
+ Network.Irc.Types: ChannelModeIsReply :: Reply
+ Network.Irc.Types: ChannelModeMessage :: [ChannelMode] -> [ChannelMode] -> Message
+ Network.Irc.Types: ChannelTarget :: Channel -> MessageTarget
+ Network.Irc.Types: CommandUsage :: Query
+ Network.Irc.Types: ConnectMessage :: Hostname -> PortNumber -> (Either Hostname Mask) -> Message
+ Network.Irc.Types: Connections :: Query
+ Network.Irc.Types: CreatedReply :: Reply
+ Network.Irc.Types: DieMessage :: Message
+ Network.Irc.Types: EndOfBanListReply :: Reply
+ Network.Irc.Types: EndOfExceptListReply :: Reply
+ Network.Irc.Types: EndOfInfoReply :: Reply
+ Network.Irc.Types: EndOfInviteListReply :: Reply
+ Network.Irc.Types: EndOfLinksReply :: Reply
+ Network.Irc.Types: EndOfMessageOfTheDayReply :: Reply
+ Network.Irc.Types: EndOfNamesReply :: Reply
+ Network.Irc.Types: EndOfStatsReply :: Reply
+ Network.Irc.Types: EndOfUsersReply :: Reply
+ Network.Irc.Types: EndOfWhoIsReply :: Reply
+ Network.Irc.Types: EndOfWhoReply :: Reply
+ Network.Irc.Types: EndOfWhoWasReply :: Reply
+ Network.Irc.Types: ErrorMessage :: Text -> Message
+ Network.Irc.Types: Exactly :: Int -> ArgSpec
+ Network.Irc.Types: ExceptListReply :: Reply
+ Network.Irc.Types: GenericMessage :: Maybe Prefix -> Command -> [Text] -> GenericMessage
+ Network.Irc.Types: GenericReply :: Hostname -> CmdNumber -> Target -> [Parameter] -> GenericReply
+ Network.Irc.Types: HostByAddr :: Address -> Host
+ Network.Irc.Types: HostByName :: Hostname -> Host
+ Network.Irc.Types: HostCloak :: Text -> Host
+ Network.Irc.Types: HostMask :: Mask -> TargetMask
+ Network.Irc.Types: IPv4 :: Text -> Address
+ Network.Irc.Types: IPv6 :: Text -> Address
+ Network.Irc.Types: ISupportReply :: Reply
+ Network.Irc.Types: InfoMessage :: (Maybe Target) -> Message
+ Network.Irc.Types: InfoReply :: Reply
+ Network.Irc.Types: InvalidArg :: (Maybe Int) -> (Maybe Text) -> (Maybe Text) -> AnalysisError
+ Network.Irc.Types: InviteListReply :: Reply
+ Network.Irc.Types: InviteMessage :: Nickname -> Channel -> Message
+ Network.Irc.Types: InvitingReply :: Reply
+ Network.Irc.Types: IsOnReply :: Reply
+ Network.Irc.Types: IsonMessage :: [Nickname] -> Message
+ Network.Irc.Types: JoinMessage :: (Maybe ([Channel], [ChannelKey])) -> Message
+ Network.Irc.Types: KickMessage :: [Channel] -> [Username] -> (Maybe Comment) -> Message
+ Network.Irc.Types: KillMessage :: Nickname -> Comment -> Message
+ Network.Irc.Types: LinksMessage :: (Maybe (Maybe (Either Hostname Mask), Mask)) -> Message
+ Network.Irc.Types: LinksReply :: Reply
+ Network.Irc.Types: ListEndReply :: Reply
+ Network.Irc.Types: ListMessage :: [Channel] -> (Maybe Hostname) -> Message
+ Network.Irc.Types: ListReply :: Reply
+ Network.Irc.Types: ListStartReply :: Reply
+ Network.Irc.Types: LuserChannelsReply :: Reply
+ Network.Irc.Types: LuserClientReply :: Reply
+ Network.Irc.Types: LuserMeReply :: Reply
+ Network.Irc.Types: LuserOpReply :: Reply
+ Network.Irc.Types: LuserUnknownReply :: Reply
+ Network.Irc.Types: LusersMessage :: (Maybe (Mask, Maybe Hostname)) -> Message
+ Network.Irc.Types: Mask :: [MaskPart] -> Mask
+ Network.Irc.Types: MaskChar :: Char -> MaskPart
+ Network.Irc.Types: MaskTarget :: TargetMask -> MessageTarget
+ Network.Irc.Types: MaskWildMany :: MaskPart
+ Network.Irc.Types: MaskWildOne :: MaskPart
+ Network.Irc.Types: MessageOfTheDayReply :: Reply
+ Network.Irc.Types: ModeTypeFlag :: ChannelModeType
+ Network.Irc.Types: ModeTypeList :: ChannelModeType
+ Network.Irc.Types: ModeTypeMaybeSetting :: ChannelModeType
+ Network.Irc.Types: ModeTypeSetting :: ChannelModeType
+ Network.Irc.Types: MotdMessage :: (Maybe Hostname) -> Message
+ Network.Irc.Types: MotdStartReply :: Reply
+ Network.Irc.Types: MyInfoReply :: Reply
+ Network.Irc.Types: NamedCmd :: CmdName -> Command
+ Network.Irc.Types: NamesMessage :: [Channel] -> (Maybe Hostname) -> Message
+ Network.Irc.Types: NamesReply :: ChannelPrivacy -> Channel -> [(Privilege, Nickname)] -> Reply
+ Network.Irc.Types: NickMessage :: Nickname -> Message
+ Network.Irc.Types: NickTarget :: Nickname -> Target
+ Network.Irc.Types: NoAwayReply :: Reply
+ Network.Irc.Types: NoTopicReply :: Reply
+ Network.Irc.Types: NoUsersReply :: Reply
+ Network.Irc.Types: NoticeMessage :: MessageTarget -> MsgContent -> Message
+ Network.Irc.Types: NumericCmd :: CmdNumber -> Command
+ Network.Irc.Types: OneOf :: [Int] -> ArgSpec
+ Network.Irc.Types: OperMessage :: Username -> Password -> Message
+ Network.Irc.Types: OtherError :: Text -> AnalysisError
+ Network.Irc.Types: OtherQuery :: Char -> Query
+ Network.Irc.Types: PartMessage :: [Channel] -> (Maybe Comment) -> Message
+ Network.Irc.Types: PassMessage :: Password -> Message
+ Network.Irc.Types: PingMessage :: Hostname -> (Maybe Hostname) -> Message
+ Network.Irc.Types: PongMessage :: Hostname -> (Maybe Hostname) -> Message
+ Network.Irc.Types: PrefixNick :: Nickname -> (Maybe Username) -> (Maybe Host) -> Prefix
+ Network.Irc.Types: PrefixServer :: Hostname -> Prefix
+ Network.Irc.Types: PrivActionMessage :: MessageTarget -> MsgContent -> Message
+ Network.Irc.Types: PrivMsgMessage :: MessageTarget -> MsgContent -> Message
+ Network.Irc.Types: PrivilegedUsers :: Query
+ Network.Irc.Types: QuitMessage :: (Maybe Comment) -> Message
+ Network.Irc.Types: RehashMessage :: Message
+ Network.Irc.Types: RehashingReply :: Reply
+ Network.Irc.Types: RestartMessage :: Message
+ Network.Irc.Types: SQueryMessage :: ServiceName -> MsgContent -> Message
+ Network.Irc.Types: SQuitMessage :: Hostname -> Comment -> Message
+ Network.Irc.Types: ServListEndReply :: Reply
+ Network.Irc.Types: ServListReply :: Reply
+ Network.Irc.Types: ServerMask :: Mask -> TargetMask
+ Network.Irc.Types: ServerTarget :: Hostname -> Target
+ Network.Irc.Types: ServiceMessage :: Nickname -> Mask -> Text -> Message
+ Network.Irc.Types: ServlistMessage :: (Maybe (Mask, Maybe Text)) -> Message
+ Network.Irc.Types: SpecificMessage :: (Maybe Prefix) -> Message -> SpecificMessage
+ Network.Irc.Types: SpecificReply :: Hostname -> Target -> Reply -> SpecificReply
+ Network.Irc.Types: StatsCommandsReply :: Reply
+ Network.Irc.Types: StatsLinkInfoReply :: Reply
+ Network.Irc.Types: StatsMessage :: (Maybe (Query, Maybe (Either Hostname Mask))) -> Message
+ Network.Irc.Types: StatsOLineReply :: Reply
+ Network.Irc.Types: StatsUptimeReply :: Reply
+ Network.Irc.Types: SummonMessage :: Username -> (Maybe (Hostname, Maybe Channel)) -> Message
+ Network.Irc.Types: SummoningReply :: Reply
+ Network.Irc.Types: TimeMessage :: (Maybe (Either Hostname Mask)) -> Message
+ Network.Irc.Types: TimeReply :: Reply
+ Network.Irc.Types: TopicMessage :: Channel -> (Maybe ChannelTopic) -> Message
+ Network.Irc.Types: TopicReply :: Reply
+ Network.Irc.Types: TraceClassReply :: Reply
+ Network.Irc.Types: TraceConnectingReply :: Reply
+ Network.Irc.Types: TraceEndReply :: Reply
+ Network.Irc.Types: TraceHandshakeReply :: Reply
+ Network.Irc.Types: TraceLinkReply :: Reply
+ Network.Irc.Types: TraceLogReply :: Reply
+ Network.Irc.Types: TraceMessage :: (Maybe Target) -> Message
+ Network.Irc.Types: TraceNewTypeReply :: Reply
+ Network.Irc.Types: TraceOperatorReply :: Reply
+ Network.Irc.Types: TraceReconnectReply :: Reply
+ Network.Irc.Types: TraceServerReply :: Reply
+ Network.Irc.Types: TraceServiceReply :: Reply
+ Network.Irc.Types: TraceUnknownReply :: Reply
+ Network.Irc.Types: TraceUserReply :: Reply
+ Network.Irc.Types: TryAgainReply :: Reply
+ Network.Irc.Types: UModeAway :: UserMode
+ Network.Irc.Types: UModeBlockUnidentified :: UserMode
+ Network.Irc.Types: UModeCallerID :: UserMode
+ Network.Irc.Types: UModeConnectedViaSSL :: UserMode
+ Network.Irc.Types: UModeDeaf :: UserMode
+ Network.Irc.Types: UModeInvisible :: UserMode
+ Network.Irc.Types: UModeIsReply :: Reply
+ Network.Irc.Types: UModeLocalOperator :: UserMode
+ Network.Irc.Types: UModeNoForwarding :: UserMode
+ Network.Irc.Types: UModeOperator :: UserMode
+ Network.Irc.Types: UModeOther :: Char -> UserMode
+ Network.Irc.Types: UModeRestricted :: UserMode
+ Network.Irc.Types: UModeSeeNotices :: UserMode
+ Network.Irc.Types: UModeSeeWallops :: UserMode
+ Network.Irc.Types: UnAwayReply :: Reply
+ Network.Irc.Types: UniqueOpIsReply :: Reply
+ Network.Irc.Types: Uptime :: Query
+ Network.Irc.Types: UserAddress :: Username -> (Maybe Host) -> UserAddress
+ Network.Irc.Types: UserHostReply :: Reply
+ Network.Irc.Types: UserMessage :: Username -> Bool -> Bool -> RealName -> Message
+ Network.Irc.Types: UserModeMessage :: Nickname -> [UserMode] -> [UserMode] -> Message
+ Network.Irc.Types: UserTarget :: (Maybe Nickname) -> (Maybe UserAddress) -> (Maybe Hostname) -> MessageTarget
+ Network.Irc.Types: UserhostMessage :: [Nickname] -> Message
+ Network.Irc.Types: UsersMessage :: (Maybe Hostname) -> Message
+ Network.Irc.Types: UsersReply :: Reply
+ Network.Irc.Types: UsersStartReply :: Reply
+ Network.Irc.Types: VersionMessage :: (Maybe (Either Hostname Mask)) -> Message
+ Network.Irc.Types: VersionReply :: Reply
+ Network.Irc.Types: WallopsMessage :: MsgContent -> Message
+ Network.Irc.Types: WelcomeReply :: Reply
+ Network.Irc.Types: WhoIsChannelsReply :: Reply
+ Network.Irc.Types: WhoIsIdleReply :: Reply
+ Network.Irc.Types: WhoIsOperatorReply :: Reply
+ Network.Irc.Types: WhoIsServerReply :: Reply
+ Network.Irc.Types: WhoIsUserReply :: Reply
+ Network.Irc.Types: WhoMessage :: (Maybe (Mask, Bool)) -> Message
+ Network.Irc.Types: WhoReply :: Reply
+ Network.Irc.Types: WhoWasUserReply :: Reply
+ Network.Irc.Types: WhoisMessage :: (Maybe Hostname) -> [Mask] -> Message
+ Network.Irc.Types: WhowasMessage :: [Nickname] -> (Maybe (Int, Maybe Hostname)) -> Message
+ Network.Irc.Types: WrongNumArgs :: Int -> (Maybe ArgSpec) -> AnalysisError
+ Network.Irc.Types: YourHostReply :: Reply
+ Network.Irc.Types: YoureOperReply :: Reply
+ Network.Irc.Types: YoureServiceReply :: Reply
+ Network.Irc.Types: [gmCommand] :: GenericMessage -> Command
+ Network.Irc.Types: [gmParams] :: GenericMessage -> [Text]
+ Network.Irc.Types: [gmPrefix] :: GenericMessage -> Maybe Prefix
+ Network.Irc.Types: [grCode] :: GenericReply -> CmdNumber
+ Network.Irc.Types: [grParams] :: GenericReply -> [Parameter]
+ Network.Irc.Types: [grSender] :: GenericReply -> Hostname
+ Network.Irc.Types: [grTarget] :: GenericReply -> Target
+ Network.Irc.Types: data Address
+ Network.Irc.Types: data AnalysisError
+ Network.Irc.Types: data ArgSpec
+ Network.Irc.Types: data ChannelMode
+ Network.Irc.Types: data ChannelModeType
+ Network.Irc.Types: data Command
+ Network.Irc.Types: data GenericMessage
+ Network.Irc.Types: data GenericReply
+ Network.Irc.Types: data Host
+ Network.Irc.Types: data MaskPart
+ Network.Irc.Types: data Message
+ Network.Irc.Types: data MessageTarget
+ Network.Irc.Types: data Prefix
+ Network.Irc.Types: data Query
+ Network.Irc.Types: data Reply
+ Network.Irc.Types: data SpecificMessage
+ Network.Irc.Types: data SpecificReply
+ Network.Irc.Types: data Target
+ Network.Irc.Types: data TargetMask
+ Network.Irc.Types: data UserAddress
+ Network.Irc.Types: data UserMode
+ Network.Irc.Types: instance GHC.Classes.Eq Network.Irc.Types.Address
+ Network.Irc.Types: instance GHC.Classes.Eq Network.Irc.Types.ChannelMode
+ Network.Irc.Types: instance GHC.Classes.Eq Network.Irc.Types.Command
+ Network.Irc.Types: instance GHC.Classes.Eq Network.Irc.Types.CommandResponseCode
+ Network.Irc.Types: instance GHC.Classes.Eq Network.Irc.Types.ErrorReplyCode
+ Network.Irc.Types: instance GHC.Classes.Eq Network.Irc.Types.Host
+ Network.Irc.Types: instance GHC.Classes.Eq Network.Irc.Types.Mask
+ Network.Irc.Types: instance GHC.Classes.Eq Network.Irc.Types.MaskPart
+ Network.Irc.Types: instance GHC.Classes.Eq Network.Irc.Types.Prefix
+ Network.Irc.Types: instance GHC.Classes.Eq Network.Irc.Types.Reply
+ Network.Irc.Types: instance GHC.Classes.Eq Network.Irc.Types.ReservedErrorCode
+ Network.Irc.Types: instance GHC.Classes.Eq Network.Irc.Types.ReservedReplyCode
+ Network.Irc.Types: instance GHC.Classes.Eq Network.Irc.Types.Target
+ Network.Irc.Types: instance GHC.Classes.Eq Network.Irc.Types.TargetMask
+ Network.Irc.Types: instance GHC.Classes.Eq Network.Irc.Types.UserAddress
+ Network.Irc.Types: instance GHC.Classes.Eq Network.Irc.Types.UserMode
+ Network.Irc.Types: instance GHC.Show.Show Network.Irc.Types.Address
+ Network.Irc.Types: instance GHC.Show.Show Network.Irc.Types.AnalysisError
+ Network.Irc.Types: instance GHC.Show.Show Network.Irc.Types.ArgSpec
+ Network.Irc.Types: instance GHC.Show.Show Network.Irc.Types.ChannelMode
+ Network.Irc.Types: instance GHC.Show.Show Network.Irc.Types.Command
+ Network.Irc.Types: instance GHC.Show.Show Network.Irc.Types.CommandResponseCode
+ Network.Irc.Types: instance GHC.Show.Show Network.Irc.Types.ErrorReplyCode
+ Network.Irc.Types: instance GHC.Show.Show Network.Irc.Types.GenericMessage
+ Network.Irc.Types: instance GHC.Show.Show Network.Irc.Types.GenericReply
+ Network.Irc.Types: instance GHC.Show.Show Network.Irc.Types.Host
+ Network.Irc.Types: instance GHC.Show.Show Network.Irc.Types.Mask
+ Network.Irc.Types: instance GHC.Show.Show Network.Irc.Types.MaskPart
+ Network.Irc.Types: instance GHC.Show.Show Network.Irc.Types.Message
+ Network.Irc.Types: instance GHC.Show.Show Network.Irc.Types.MessageTarget
+ Network.Irc.Types: instance GHC.Show.Show Network.Irc.Types.Prefix
+ Network.Irc.Types: instance GHC.Show.Show Network.Irc.Types.Query
+ Network.Irc.Types: instance GHC.Show.Show Network.Irc.Types.Reply
+ Network.Irc.Types: instance GHC.Show.Show Network.Irc.Types.ReservedErrorCode
+ Network.Irc.Types: instance GHC.Show.Show Network.Irc.Types.ReservedReplyCode
+ Network.Irc.Types: instance GHC.Show.Show Network.Irc.Types.SpecificMessage
+ Network.Irc.Types: instance GHC.Show.Show Network.Irc.Types.SpecificReply
+ Network.Irc.Types: instance GHC.Show.Show Network.Irc.Types.Target
+ Network.Irc.Types: instance GHC.Show.Show Network.Irc.Types.TargetMask
+ Network.Irc.Types: instance GHC.Show.Show Network.Irc.Types.UserAddress
+ Network.Irc.Types: instance GHC.Show.Show Network.Irc.Types.UserMode
+ Network.Irc.Types: newtype Mask
+ Network.Irc.Types.Base: Channel :: Text -> Channel
+ Network.Irc.Types.Base: ChannelKey :: Text -> ChannelKey
+ Network.Irc.Types.Base: ChannelTopic :: Text -> ChannelTopic
+ Network.Irc.Types.Base: CmdName :: Text -> CmdName
+ Network.Irc.Types.Base: CmdNumber :: Int -> CmdNumber
+ Network.Irc.Types.Base: Comment :: Text -> Comment
+ Network.Irc.Types.Base: Hostname :: Text -> Hostname
+ Network.Irc.Types.Base: MsgContent :: Text -> MsgContent
+ Network.Irc.Types.Base: Nickname :: Text -> Nickname
+ Network.Irc.Types.Base: Operator :: Privilege
+ Network.Irc.Types.Base: Password :: Text -> Password
+ Network.Irc.Types.Base: PortNumber :: Int -> PortNumber
+ Network.Irc.Types.Base: Private :: ChannelPrivacy
+ Network.Irc.Types.Base: Public :: ChannelPrivacy
+ Network.Irc.Types.Base: RealName :: Text -> RealName
+ Network.Irc.Types.Base: Regular :: Privilege
+ Network.Irc.Types.Base: Secret :: ChannelPrivacy
+ Network.Irc.Types.Base: ServiceName :: Text -> ServiceName
+ Network.Irc.Types.Base: Username :: Text -> Username
+ Network.Irc.Types.Base: Voice :: Privilege
+ Network.Irc.Types.Base: [unChannelKey] :: ChannelKey -> Text
+ Network.Irc.Types.Base: [unChannelTopic] :: ChannelTopic -> Text
+ Network.Irc.Types.Base: [unChannel] :: Channel -> Text
+ Network.Irc.Types.Base: [unCmdName] :: CmdName -> Text
+ Network.Irc.Types.Base: [unCmdNumber] :: CmdNumber -> Int
+ Network.Irc.Types.Base: [unComment] :: Comment -> Text
+ Network.Irc.Types.Base: [unHostname] :: Hostname -> Text
+ Network.Irc.Types.Base: [unMsgContent] :: MsgContent -> Text
+ Network.Irc.Types.Base: [unNickname] :: Nickname -> Text
+ Network.Irc.Types.Base: [unPassword] :: Password -> Text
+ Network.Irc.Types.Base: [unPortNumber] :: PortNumber -> Int
+ Network.Irc.Types.Base: [unRealName] :: RealName -> Text
+ Network.Irc.Types.Base: [unServiceName] :: ServiceName -> Text
+ Network.Irc.Types.Base: [unUsername] :: Username -> Text
+ Network.Irc.Types.Base: data ChannelPrivacy
+ Network.Irc.Types.Base: data Privilege
+ Network.Irc.Types.Base: instance Data.Hashable.Class.Hashable Network.Irc.Types.Base.Channel
+ Network.Irc.Types.Base: instance Data.Hashable.Class.Hashable Network.Irc.Types.Base.Nickname
+ Network.Irc.Types.Base: instance Data.String.IsString Network.Irc.Types.Base.MsgContent
+ Network.Irc.Types.Base: instance GHC.Base.Monoid Network.Irc.Types.Base.MsgContent
+ Network.Irc.Types.Base: instance GHC.Classes.Eq Network.Irc.Types.Base.Channel
+ Network.Irc.Types.Base: instance GHC.Classes.Eq Network.Irc.Types.Base.ChannelKey
+ Network.Irc.Types.Base: instance GHC.Classes.Eq Network.Irc.Types.Base.ChannelPrivacy
+ Network.Irc.Types.Base: instance GHC.Classes.Eq Network.Irc.Types.Base.CmdName
+ Network.Irc.Types.Base: instance GHC.Classes.Eq Network.Irc.Types.Base.CmdNumber
+ Network.Irc.Types.Base: instance GHC.Classes.Eq Network.Irc.Types.Base.Hostname
+ Network.Irc.Types.Base: instance GHC.Classes.Eq Network.Irc.Types.Base.Nickname
+ Network.Irc.Types.Base: instance GHC.Classes.Eq Network.Irc.Types.Base.Password
+ Network.Irc.Types.Base: instance GHC.Classes.Eq Network.Irc.Types.Base.PortNumber
+ Network.Irc.Types.Base: instance GHC.Classes.Eq Network.Irc.Types.Base.Privilege
+ Network.Irc.Types.Base: instance GHC.Classes.Eq Network.Irc.Types.Base.ServiceName
+ Network.Irc.Types.Base: instance GHC.Classes.Eq Network.Irc.Types.Base.Username
+ Network.Irc.Types.Base: instance GHC.Show.Show Network.Irc.Types.Base.Channel
+ Network.Irc.Types.Base: instance GHC.Show.Show Network.Irc.Types.Base.ChannelKey
+ Network.Irc.Types.Base: instance GHC.Show.Show Network.Irc.Types.Base.ChannelPrivacy
+ Network.Irc.Types.Base: instance GHC.Show.Show Network.Irc.Types.Base.ChannelTopic
+ Network.Irc.Types.Base: instance GHC.Show.Show Network.Irc.Types.Base.CmdName
+ Network.Irc.Types.Base: instance GHC.Show.Show Network.Irc.Types.Base.CmdNumber
+ Network.Irc.Types.Base: instance GHC.Show.Show Network.Irc.Types.Base.Comment
+ Network.Irc.Types.Base: instance GHC.Show.Show Network.Irc.Types.Base.Hostname
+ Network.Irc.Types.Base: instance GHC.Show.Show Network.Irc.Types.Base.MsgContent
+ Network.Irc.Types.Base: instance GHC.Show.Show Network.Irc.Types.Base.Nickname
+ Network.Irc.Types.Base: instance GHC.Show.Show Network.Irc.Types.Base.Password
+ Network.Irc.Types.Base: instance GHC.Show.Show Network.Irc.Types.Base.PortNumber
+ Network.Irc.Types.Base: instance GHC.Show.Show Network.Irc.Types.Base.Privilege
+ Network.Irc.Types.Base: instance GHC.Show.Show Network.Irc.Types.Base.RealName
+ Network.Irc.Types.Base: instance GHC.Show.Show Network.Irc.Types.Base.ServiceName
+ Network.Irc.Types.Base: instance GHC.Show.Show Network.Irc.Types.Base.Username
+ Network.Irc.Types.Base: newtype Channel
+ Network.Irc.Types.Base: newtype ChannelKey
+ Network.Irc.Types.Base: newtype ChannelTopic
+ Network.Irc.Types.Base: newtype CmdName
+ Network.Irc.Types.Base: newtype CmdNumber
+ Network.Irc.Types.Base: newtype Comment
+ Network.Irc.Types.Base: newtype Hostname
+ Network.Irc.Types.Base: newtype MsgContent
+ Network.Irc.Types.Base: newtype Nickname
+ Network.Irc.Types.Base: newtype Password
+ Network.Irc.Types.Base: newtype PortNumber
+ Network.Irc.Types.Base: newtype RealName
+ Network.Irc.Types.Base: newtype ServiceName
+ Network.Irc.Types.Base: newtype Username
+ Network.Irc.Types.Base: type Parameter = Text
Files
- NEWS.md +24/−0
- irc-fun-types.cabal +7/−6
- src/Network/IRC/Fun/Types.hs +0/−833
- src/Network/IRC/Fun/Types/Base.hs +0/−96
- src/Network/Irc/Types.hs +833/−0
- src/Network/Irc/Types/Base.hs +98/−0
NEWS.md view
@@ -3,6 +3,30 @@ +irc-fun-types 0.2 2016-09-05+===================================++General, build and documentation changes:++* Change module names+* Build with stack++New APIs, features and enhancements:++* Nickname and Channel are now Hashable instances++Bug fixes:++* (None)++Dependency changes:++* (None)+++++ irc-fun-types 0.1.0.0 -- 2016-01-27 ===================================
irc-fun-types.cabal view
@@ -1,5 +1,5 @@ name: irc-fun-types-version: 0.1.0.0+version: 0.2 synopsis: Common types for IRC related packages description: This library provides types useful to programs and libraries working with@@ -16,9 +16,9 @@ require recognizing Unicode. . If you are writing a simple IRC client module, you can probably use- "Network.IRC.Fun.Types.Base", which contains the subset you'll likely need.+ "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.Fun.Types", which contains all the types.+ want to use "Network.Irc.Types", which contains all the types. homepage: http://hub.darcs.net/fr33domlover/irc-fun-types bug-reports: https://notabug.org/fr33domlover/funbot/issues license: PublicDomain@@ -41,11 +41,12 @@ location: http://hub.darcs.net/fr33domlover/irc-fun-types library- exposed-modules: Network.IRC.Fun.Types- , Network.IRC.Fun.Types.Base+ exposed-modules: Network.Irc.Types+ , Network.Irc.Types.Base -- other-modules: -- other-extensions: - build-depends: base >=4.7 && <5+ build-depends: base >= 4.7 && < 5+ , hashable , text hs-source-dirs: src default-language: Haskell2010
− src/Network/IRC/Fun/Types.hs
@@ -1,833 +0,0 @@-{- This file is part of irc-fun-types.- -- - Written in 2015, 2016 by fr33domlover <fr33domlover@riseup.net>.- -- - ♡ Copying is an act of love. Please copy, reuse and share.- -- - The author(s) have dedicated all copyright and related and neighboring- - rights to this software to the public domain worldwide. This software is- - distributed without any warranty.- -- - You should have received a copy of the CC0 Public Domain Dedication along- - with this software. If not, see- - <http://creativecommons.org/publicdomain/zero/1.0/>.- -}--module Network.IRC.Fun.Types- ( -- * Type Aliases, Newtypes, Other Basics- module Network.IRC.Fun.Types.Base- -- * Message Parts- , Prefix (..)- , UserAddress (..)- , Target (..)- , Address (..)- , Host (..)- , Command (..)- -- * Mask- , MaskPart (..)- , Mask (..)- , TargetMask (..)- -- * Message- , GenericMessage (..)- , SpecificMessage (..)- , MessageTarget (..)- , Query (..)- , Message (..)- , AnalysisError (..)- , ArgSpec (..)- -- * Modes- , UserMode (..)- , ChannelMode (..)- , ChannelModeType (..)- -- * Reply- , GenericReply (..)- , Reply (..)- , SpecificReply (..)- )-where--import Data.Text (Text)-import Network.IRC.Fun.Types.Base------------------------------------------------------------------------------------ Message Parts------------------------------------------------------------------------------------ | IRC message prefix.-data Prefix- -- | The server which sends the message- = PrefixServer Hostname- -- | The user which sends the message (if the message comes from a user)- | PrefixNick Nickname (Maybe Username) (Maybe Host)- deriving (Eq, Show)---- | User address containing a name part (as in "user") and an optional host--- part (as in "user@host").-data UserAddress = UserAddress Username (Maybe Host) deriving (Eq, Show)---- | Some IRC commands operate on a target, that is either a single user or an--- entire IRC server.-data Target = NickTarget Nickname | ServerTarget Hostname deriving (Eq, Show)---- | An IP address.-data Address = IPv4 Text | IPv6 Text deriving (Eq, Show)---- | 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 | HostByAddr Address | HostCloak Text- deriving (Eq, Show)---- | An IRC command code. Either a named command, or a numeric one.-data Command = NamedCmd CmdName | NumericCmd CmdNumber- deriving (Eq, Show)------------------------------------------------------------------------------------ Masks------------------------------------------------------------------------------------ | Part of a 'Mask'.-data MaskPart- -- | A literal character.- = MaskChar Char- -- | A wildcard which matches a single character.- | MaskWildOne- -- | A wildcard which matches zero or more characters.- | MaskWildMany- deriving (Eq, Show)---- | 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] deriving (Eq, Show)---- | 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- -- | Server mask, prefixed with @'$'@ in the protocol. Selects all the- -- users connected to a server which matches the mask.- | ServerMask Mask- deriving (Eq, Show)------------------------------------------------------------------------------------ Message------------------------------------------------------------------------------------ | A generic IRC message. It consists of a sender prefix, command name--- (string or numeric) and optionally a list of parameters.-data GenericMessage = GenericMessage- { gmPrefix :: Maybe Prefix- , gmCommand :: Command- , gmParams :: [Text]- }- deriving Show---- | 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 deriving Show---- | 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- -- | An IRC user. Possible combinations in the protocol are:- --- -- * Address (address host is required)- -- * Address and server (address host is optional)- -- * Nickname- -- * Nickname and address (address host is required)- | UserTarget (Maybe Nickname) (Maybe UserAddress) (Maybe Hostname)- -- | A mask which matches the server or host of the users to whom the- -- message should be sent.- | MaskTarget TargetMask- deriving Show---- | A server query. Can be sent through a 'StatsMessage'.-data Query- -- | TODO- = Connections- -- | TODO- | CommandUsage- -- | TODO- | PrivilegedUsers- -- | TODO- | Uptime- -- | TODO- | OtherQuery Char- deriving Show---- TODO in all the either-servername-mask occurences, make sure in the RFC--- that they are "<target> may contain wildcards" cases, and replace them with--- plain Hostname - let's treat mask as a user mask (for bans etc.)--- TODO in all the <target> cases, do they mean a user can be specified too,--- to mean "the server this user is connected to"? try with some IRC servers--- over telnet, and change Hostname to Target if yes. Note that servername--- has '.' chars while a nickname can't, so that's how one tells which is which--- Also compare with existing irc packages, how they model these messages---- | An IRC message of specific type (excluding the optional sender prefix, see--- 'SpecificMessage').-data Message--- Connection registration- = PassMessage Password- | NickMessage Nickname- -- | first bool = whether invisible, second bool = whether sees wallops- | UserMessage Username Bool Bool RealName- | OperMessage Username Password- -- | first list: modes to remove (-), second list: modes to add (+)- | UserModeMessage Nickname [UserMode] [UserMode]- | ServiceMessage Nickname Mask Text- | QuitMessage (Maybe Comment)- | SQuitMessage Hostname Comment--- Channel operations- | JoinMessage (Maybe ([Channel], [ChannelKey]))- | PartMessage [Channel] (Maybe Comment)- -- first: remove (-), second: add/set (+)- | ChannelModeMessage [ChannelMode] [ChannelMode]- | TopicMessage Channel (Maybe ChannelTopic)- | NamesMessage [Channel] (Maybe Hostname)- | ListMessage [Channel] (Maybe Hostname)- | InviteMessage Nickname Channel- | KickMessage [Channel] [Username] (Maybe Comment)--- Sending messages- | PrivMsgMessage MessageTarget MsgContent- | PrivActionMessage MessageTarget MsgContent- | NoticeMessage MessageTarget MsgContent--- Server queries and commands- | MotdMessage (Maybe Hostname)- | LusersMessage (Maybe (Mask, Maybe Hostname))- | VersionMessage (Maybe (Either Hostname Mask))- | StatsMessage (Maybe (Query, Maybe (Either Hostname Mask)))- | LinksMessage (Maybe (Maybe (Either Hostname Mask), Mask))- | TimeMessage (Maybe (Either Hostname Mask))- | ConnectMessage Hostname PortNumber (Either Hostname Mask)- | TraceMessage (Maybe Target)- | AdminMessage (Maybe Target)- | InfoMessage (Maybe Target)--- Service query and commands- | ServlistMessage (Maybe (Mask, Maybe Text))- | SQueryMessage ServiceName MsgContent--- User based queries- | WhoMessage (Maybe (Mask, Bool))- | WhoisMessage (Maybe Hostname) [Mask]- | WhowasMessage [Nickname] (Maybe (Int, Maybe Hostname))--- Miscellaneous messages- | KillMessage Nickname Comment- | PingMessage Hostname (Maybe Hostname)- | PongMessage Hostname (Maybe Hostname)- | ErrorMessage Text--- Optional features- | AwayMessage (Maybe MsgContent)- | RehashMessage- | DieMessage- | RestartMessage- | SummonMessage Username (Maybe (Hostname, Maybe Channel))- | UsersMessage (Maybe Hostname)- | WallopsMessage MsgContent- | UserhostMessage [Nickname]- | IsonMessage [Nickname]- deriving Show------------------------------------------------------------------------------------ Modes------------------------------------------------------------------------------------ | TODO-data UserMode- -- http://toxin.jottit.com/freenode_user_modes- = UModeInvisible- | UModeCallerID- | UModeSeeWallops- | UModeDeaf- | UModeNoForwarding- | UModeBlockUnidentified- | UModeConnectedViaSSL- -- from the irc rfc, MODE message (section 3.1.5)- | UModeAway- | UModeRestricted- | UModeOperator- | UModeLocalOperator- | UModeSeeNotices- | UModeOther Char- deriving (Eq, Show)---- | TODO-data ChannelMode- = CModeCreator- | CModeOperator- | CModeVoice- | CModeAnonymous- | CModeInviteOnly- | CModeModerated- | CModeNoMessagesFromOutside- | CModeQuiet- | CModePrivate- | CModeSecret- | CModeServerReop- | CModeTopicSettableByChannelOpOnly- | CModeKey (Maybe ChannelKey)- | CModeUserLimit (Maybe Int)- | CModeBanMask (Maybe Mask)- | CModeExceptionMask (Maybe Mask)- | CModeInvitationMask (Maybe Mask)- | CModeOther Char [Text]- | CModeFreenodeQuiet (Maybe Mask)- deriving (Eq, Show)--data ChannelModeType- = ModeTypeList- | ModeTypeSetting- | ModeTypeMaybeSetting- | ModeTypeFlag------------------------------------------------------------------------------------ Reply------------------------------------------------------------------------------------ | TODO-data CommandResponseCode- -- | TODO- = ReplyWelcome- -- | TODO- | ReplyYourHost- -- | TODO- | ReplyCreated- -- | TODO- | ReplyMyInfo- -- | TODO- | ReplyBounce- -- | TODO- | ReplyUserHost- -- | TODO- | ReplyIsOn- -- | TODO- | ReplyAway- -- | TODO- | ReplyUnAway- -- | TODO- | ReplyNoAway- -- | TODO- | ReplyWhoIsUser- -- | TODO- | ReplyWhoIsServer- -- | TODO- | ReplyWhoIsOperator- -- | TODO- | ReplyWhoIsIdle- -- | TODO- | ReplyEndOfWhoIs- -- | TODO- | ReplyWhoIsChannels- -- | TODO- | ReplyWhoWasUser- -- | TODO- | ReplyEndOfWhoWas- -- | TODO- | ReplyListStart- -- | TODO- | ReplyList- -- | TODO- | ReplyListEnd- -- | TODO- | ReplyUniqueOpIs- -- | TODO- | ReplyChannelModeIs- -- | TODO- | ReplyNoTopic- -- | TODO- | ReplyTopic- -- | TODO- | ReplyInviting- -- | TODO- | ReplySummoning- -- | TODO- | ReplyInviteList- -- | TODO- | ReplyEndOfInviteList- -- | TODO- | ReplyExceptList- -- | TODO- | ReplyEndOfExceptList- -- | TODO- | ReplyVersion- -- | TODO- | ReplyWhoReply- -- | TODO- | ReplyEndOfWho- -- | TODO- | ReplyNameReply- -- | TODO- | ReplyEndOfNames- -- | TODO- | ReplyLinks- -- | TODO- | ReplyEndOfLinks- -- | TODO- | ReplyBanList- -- | TODO- | ReplyEndOfBanList- -- | TODO- | ReplyInfo- -- | TODO- | ReplyEndOfInfo- -- | TODO- | ReplyMotdStart- -- | TODO- | ReplyMessageOfTheDay- -- | TODO- | ReplyEndOfMessageOfTheDay- -- | TODO- | ReplyYoureOper- -- | TODO- | ReplyRehashing- -- | TODO- | ReplyYoureService- -- | TODO- | ReplyTime- -- | TODO- | ReplyUsersStart- -- | TODO- | ReplyUsers- -- | TODO- | ReplyEndOfUsers- -- | TODO- | ReplyNoUsers- -- | TODO- | ReplyTraceLink- -- | TODO- | ReplyTraceConnecting- -- | TODO- | ReplyTraceHandshake- -- | TODO- | ReplyTraceUnknown- -- | TODO- | ReplyTraceOperator- -- | TODO- | ReplyTraceUser- -- | TODO- | ReplyTraceServer- -- | TODO- | ReplyTraceService- -- | TODO- | ReplyTraceNewType- -- | TODO- | ReplyTraceClass- -- | TODO- | ReplyTraceReconnect- -- | TODO- | ReplyTraceLog- -- | TODO- | ReplyTraceEnd- -- | TODO- | ReplyStatsLinkInfo- -- | TODO- | ReplyStatsCommands- -- | TODO- | ReplyEndOfStats- -- | TODO- | ReplyStatsUptime- -- | TODO- | ReplyStatsOLine- -- | TODO- | ReplyUModeIs- -- | TODO- | ReplyServList- -- | TODO- | ReplyServListEnd- -- | TODO- | ReplyLuserClient- -- | TODO- | ReplyLuserOp- -- | TODO- | ReplyLuserUnknown- -- | TODO- | ReplyLuserChannels- -- | TODO- | ReplyLuserMe- -- | TODO- | ReplyAdminMe- -- | TODO- | ReplyAdminLocation1- -- | TODO- | ReplyAdminLocation2- -- | TODO- | ReplyAdminEmail- -- | TODO- | ReplyTryAgain- -- | TODO- | ReplyFreenodeISupport- deriving (Eq, Show)--data ErrorReplyCode- -- | TODO- = ErrorNoSuchNick- -- | TODO- | ErrorNoSuchServer- -- | TODO- | ErrorNoSuchChannel- -- | TODO- | ErrorCannotSendToChannel- -- | TODO- | ErrorTooManyChannels- -- | TODO- | ErrorWasNoSuchNick- -- | TODO- | ErrorTooManyTargets- -- | TODO- | ErrorNoSuchService- -- | TODO- | ErrorNoOrigin- -- | TODO- | ErrorNoRecipient- -- | TODO- | ErrorNoTextToSend- -- | TODO- | ErrorNoTopLevel- -- | TODO- | ErrorWildTopLevel- -- | TODO- | ErrorBadMask- -- | TODO- | ErrorUnknownCommand- -- | TODO- | ErrorNoMessageOfTheDay- -- | TODO- | ErrorNoAdminInfo- -- | TODO- | ErrorFileError- -- | TODO- | ErrorNoNicknameGiven- -- | TODO- | ErrorErroneousNickname- -- | TODO- | ErrorNicknameInUse- -- | TODO- | ErrorNickCollision- -- | TODO- | ErrorUnavailableResource- -- | TODO- | ErrorUserNotInChannel- -- | TODO- | ErrorNotOnChannel- -- | TODO- | ErrorUserOnChannel- -- | TODO- | ErrorNoLogin- -- | TODO- | ErrorSummonDisabled- -- | TODO- | ErrorUsersDisabled- -- | TODO- | ErrorNotRegistered- -- | TODO- | ErrorNeedMoreParams- -- | TODO- | ErrorAlreadyRegistered- -- | TODO- | ErrorNoPermissionForHost- -- | TODO- | ErrorPasswordMismatch- -- | TODO- | ErrorYoureBannedCreep- -- | TODO- | ErrorYouWillBeBanned- -- | TODO- | ErrorKeySet- -- | TODO- | ErrorChannelIsFull- -- | TODO- | ErrorUnknownMode- -- | TODO- | ErrorInviteOnlyChannel- -- | TODO- | ErrorBannedFromChannel- -- | TODO- | ErrorBadChannelKey- -- | TODO- | ErrorBadChannelMask- -- | TODO- | ErrorNoChannelModes- -- | TODO- | ErrorBanListFull- -- | TODO- | ErrorNoPrivileges- -- | TODO- | ErrorChannelOpPrivilegesNeeded- -- | TODO- | ErrorCantKillServer- -- | TODO- | ErrorRestricted- -- | TODO- | ErrorUniqueOpPrivilegesNeeded- -- | TODO- | ErrorNoOperHost- -- | TODO- | ErrorUModeUnknownFlag- -- | TODO- | ErrorUsersDontMatch- deriving (Eq, Show)--data ReservedReplyCode- -- | TODO- = ReservedReplyServiceInfo- -- | TODO- | ReservedReplyEndOfServices- -- | TODO- | ReservedReplyService- -- | TODO- | ReservedReplyNone- -- | TODO- | ReservedReplyWhoIsChannelOp- -- | TODO- | ReservedReplyKillDone- -- | TODO- | ReservedReplyClosing- -- | TODO- | ReservedReplyCloseEnd- -- | TODO- | ReservedReplyInfoStart- -- | TODO- | ReservedReplyMyPortIs- -- | TODO- | ReservedReplyStatsCLine- -- | TODO- | ReservedReplyStatsNLine- -- | TODO- | ReservedReplyStatsILine- -- | TODO- | ReservedReplyStatsKLine- -- | TODO- | ReservedReplyStatsQLine- -- | TODO- | ReservedReplyStatsYLine- -- | TODO- | ReservedReplyStatsVLine- -- | TODO- | ReservedReplyStatsLLine- -- | TODO- | ReservedReplyStatsHLine- -- | TODO- | ReservedReplyStatsSLine- -- | TODO- | ReservedReplyStatsPing- -- | TODO- | ReservedReplyStatsBLine- -- | TODO- | ReservedReplyStatsDLine- deriving (Eq, Show)---- | TODO-data ReservedErrorCode- -- | TODO- = ReservedErrorNoServiceHost- deriving (Eq, Show)---- | TODO-data GenericReply = GenericReply- { grSender :: Hostname- , grCode :: CmdNumber- , grTarget :: Target- , grParams :: [Parameter]- }- deriving Show---- | TODO-data Reply- -- | TODO- = WelcomeReply- -- | TODO- | YourHostReply- -- | TODO- | CreatedReply- -- | TODO- | MyInfoReply- -- | TODO- | BounceReply- -- | TODO- | ISupportReply- -- | TODO- | UserHostReply- -- | TODO- | IsOnReply- -- | TODO- | AwayReply- -- | TODO- | UnAwayReply- -- | TODO- | NoAwayReply- -- | TODO- | WhoIsUserReply- -- | TODO- | WhoIsServerReply- -- | TODO- | WhoIsOperatorReply- -- | TODO- | WhoIsIdleReply- -- | TODO- | EndOfWhoIsReply- -- | TODO- | WhoIsChannelsReply- -- | TODO- | WhoWasUserReply- -- | TODO- | EndOfWhoWasReply- -- | TODO- | ListStartReply- -- | TODO- | ListReply- -- | TODO- | ListEndReply- -- | TODO- | UniqueOpIsReply- -- | TODO- | ChannelModeIsReply- -- | TODO- | NoTopicReply- -- | TODO- | TopicReply- -- | TODO- | InvitingReply- -- | TODO- | SummoningReply- -- | TODO- | InviteListReply- -- | TODO- | EndOfInviteListReply- -- | TODO- | ExceptListReply- -- | TODO- | EndOfExceptListReply- -- | TODO- | VersionReply- -- | TODO- | WhoReply- -- | TODO- | EndOfWhoReply- -- | 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)]- -- | Sent after a sequence of 0 or more 'NameReply's, to signal that the- -- list transmission is finished.- | EndOfNamesReply- -- | TODO- | LinksReply- -- | TODO- | EndOfLinksReply- -- | TODO- | BanListReply- -- | TODO- | EndOfBanListReply- -- | TODO- | InfoReply- -- | TODO- | EndOfInfoReply- -- | TODO- | MotdStartReply- -- | TODO- | MessageOfTheDayReply- -- | TODO- | EndOfMessageOfTheDayReply- -- | TODO- | YoureOperReply- -- | TODO- | RehashingReply- -- | TODO- | YoureServiceReply- -- | TODO- | TimeReply- -- | TODO- | UsersStartReply- -- | TODO- | UsersReply- -- | TODO- | EndOfUsersReply- -- | TODO- | NoUsersReply- -- | TODO- | TraceLinkReply- -- | TODO- | TraceConnectingReply- -- | TODO- | TraceHandshakeReply- -- | TODO- | TraceUnknownReply- -- | TODO- | TraceOperatorReply- -- | TODO- | TraceUserReply- -- | TODO- | TraceServerReply- -- | TODO- | TraceServiceReply- -- | TODO- | TraceNewTypeReply- -- | TODO- | TraceClassReply- -- | TODO- | TraceReconnectReply- -- | TODO- | TraceLogReply- -- | TODO- | TraceEndReply- -- | TODO- | StatsLinkInfoReply- -- | TODO- | StatsCommandsReply- -- | TODO- | EndOfStatsReply- -- | TODO- | StatsUptimeReply- -- | TODO- | StatsOLineReply- -- | TODO- | UModeIsReply- -- | TODO- | ServListReply- -- | TODO- | ServListEndReply- -- | TODO- | LuserClientReply- -- | TODO- | LuserOpReply- -- | TODO- | LuserUnknownReply- -- | TODO- | LuserChannelsReply- -- | TODO- | LuserMeReply- -- | TODO- | AdminMeReply- -- | TODO- | AdminLocation1Reply- -- | TODO- | AdminLocation2Reply- -- | TODO- | AdminEmailReply- -- | TODO- | TryAgainReply- deriving (Eq, Show)---- | An IRC server numeric reply of a specific type.-data SpecificReply = SpecificReply Hostname Target Reply deriving Show---- | Specifies the number of parameter a certain IRC message type accepts.-data ArgSpec- = Exactly Int- | AtLeast Int- | AtMost Int- | Between Int Int- | OneOf [Int]- deriving (Show)---- | An error occuring while analyzing a parsed IRC protocol message into a--- specific message type, such as 'JoinMessage'.-data AnalysisError- = WrongNumArgs Int (Maybe ArgSpec)- | InvalidArg (Maybe Int) (Maybe Text) (Maybe Text)- | OtherError Text- deriving (Show)
− src/Network/IRC/Fun/Types/Base.hs
@@ -1,96 +0,0 @@-{- This file is part of irc-fun-types.- -- - Written in 2015, 2016 by fr33domlover <fr33domlover@riseup.net>.- -- - ♡ Copying is an act of love. Please copy, reuse and share.- -- - The author(s) have dedicated all copyright and related and neighboring- - rights to this software to the public domain worldwide. This software is- - distributed without any warranty.- -- - You should have received a copy of the CC0 Public Domain Dedication along- - with this software. If not, see- - <http://creativecommons.org/publicdomain/zero/1.0/>.- -}---- For deriving trivial no-op instances for newtypes-{-# LANGUAGE GeneralizedNewtypeDeriving #-}--module Network.IRC.Fun.Types.Base- ( Hostname (..)- , ServiceName (..)- , Username (..)- , Nickname (..)- , Channel (..)- , CmdName (..)- , CmdNumber (..)- , Parameter- , MsgContent (..)- , Password (..)- , ChannelKey (..)- , ChannelTopic (..)- , RealName (..)- , Comment (..)- , PortNumber (..)- , Privilege (..)- , ChannelPrivacy (..)- )-where--import Data.Monoid (Monoid)-import Data.String (IsString)-import Data.Text (Text)---- | IRC server hostname, e.g. @orwell.freenode.net@-newtype Hostname = Hostname { unHostname :: Text } deriving (Eq, Show)---- | An IRC service name.-newtype ServiceName = ServiceName { unServiceName :: Text } deriving (Eq, Show)---- | System user name, i.e. the first part of user\@host.tld-newtype Username = Username { unUsername :: Text } deriving (Eq, Show)---- | IRC nickname-newtype Nickname = Nickname { unNickname :: Text } deriving (Eq, Show)---- | IRC channel name (including the prefix character), e.g. @#freepost@-newtype Channel = Channel { unChannel :: Text } deriving (Eq, Show)---- | IRC protocol command name, i.e. @PRIVMSG@-newtype CmdName = CmdName { unCmdName :: Text } deriving (Eq, Show)---- | IRC protocol numeric command number-newtype CmdNumber = CmdNumber { unCmdNumber :: Int } deriving (Eq, Show)---- | 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 { unMsgContent :: Text }- deriving (Show, Monoid, IsString)---- | IRC connection password.-newtype Password = Password { unPassword :: Text } deriving (Eq, Show)---- | IRC channel password.-newtype ChannelKey = ChannelKey { unChannelKey :: Text } deriving (Eq, Show)---- | IRC channel topic line.-newtype ChannelTopic = ChannelTopic { unChannelTopic :: Text } deriving Show---- | A user's \"real name\" as kept by the IRC server.-newtype RealName = RealName { unRealName :: Text } deriving Show---- | 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 { unComment :: Text } deriving Show---- | Network port number.-newtype PortNumber = PortNumber { unPortNumber :: Int } deriving (Eq, Show)---- | IRC privilege status for a user in the context of a specific channel.-data Privilege = Regular | Voice | Operator deriving (Eq, Show)---- | IRC channel privacy settings.-data ChannelPrivacy = Secret | Private | Public deriving (Eq, Show)
+ src/Network/Irc/Types.hs view
@@ -0,0 +1,833 @@+{- This file is part of irc-fun-types.+ -+ - Written in 2015, 2016 by fr33domlover <fr33domlover@riseup.net>.+ -+ - ♡ Copying is an act of love. Please copy, reuse and share.+ -+ - The author(s) have dedicated all copyright and related and neighboring+ - rights to this software to the public domain worldwide. This software is+ - distributed without any warranty.+ -+ - You should have received a copy of the CC0 Public Domain Dedication along+ - with this software. If not, see+ - <http://creativecommons.org/publicdomain/zero/1.0/>.+ -}++module Network.Irc.Types+ ( -- * Type Aliases, Newtypes, Other Basics+ module Network.Irc.Types.Base+ -- * Message Parts+ , Prefix (..)+ , UserAddress (..)+ , Target (..)+ , Address (..)+ , Host (..)+ , Command (..)+ -- * Mask+ , MaskPart (..)+ , Mask (..)+ , TargetMask (..)+ -- * Message+ , GenericMessage (..)+ , SpecificMessage (..)+ , MessageTarget (..)+ , Query (..)+ , Message (..)+ , AnalysisError (..)+ , ArgSpec (..)+ -- * Modes+ , UserMode (..)+ , ChannelMode (..)+ , ChannelModeType (..)+ -- * Reply+ , GenericReply (..)+ , Reply (..)+ , SpecificReply (..)+ )+where++import Data.Text (Text)+import Network.Irc.Types.Base++-------------------------------------------------------------------------------+-- Message Parts+-------------------------------------------------------------------------------++-- | IRC message prefix.+data Prefix+ -- | The server which sends the message+ = PrefixServer Hostname+ -- | The user which sends the message (if the message comes from a user)+ | PrefixNick Nickname (Maybe Username) (Maybe Host)+ deriving (Eq, Show)++-- | User address containing a name part (as in "user") and an optional host+-- part (as in "user@host").+data UserAddress = UserAddress Username (Maybe Host) deriving (Eq, Show)++-- | Some IRC commands operate on a target, that is either a single user or an+-- entire IRC server.+data Target = NickTarget Nickname | ServerTarget Hostname deriving (Eq, Show)++-- | An IP address.+data Address = IPv4 Text | IPv6 Text deriving (Eq, Show)++-- | 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 | HostByAddr Address | HostCloak Text+ deriving (Eq, Show)++-- | An IRC command code. Either a named command, or a numeric one.+data Command = NamedCmd CmdName | NumericCmd CmdNumber+ deriving (Eq, Show)++-------------------------------------------------------------------------------+-- Masks+-------------------------------------------------------------------------------++-- | Part of a 'Mask'.+data MaskPart+ -- | A literal character.+ = MaskChar Char+ -- | A wildcard which matches a single character.+ | MaskWildOne+ -- | A wildcard which matches zero or more characters.+ | MaskWildMany+ deriving (Eq, Show)++-- | 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] deriving (Eq, Show)++-- | 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+ -- | Server mask, prefixed with @'$'@ in the protocol. Selects all the+ -- users connected to a server which matches the mask.+ | ServerMask Mask+ deriving (Eq, Show)++-------------------------------------------------------------------------------+-- Message+-------------------------------------------------------------------------------++-- | A generic IRC message. It consists of a sender prefix, command name+-- (string or numeric) and optionally a list of parameters.+data GenericMessage = GenericMessage+ { gmPrefix :: Maybe Prefix+ , gmCommand :: Command+ , gmParams :: [Text]+ }+ deriving Show++-- | 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 deriving Show++-- | 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+ -- | An IRC user. Possible combinations in the protocol are:+ --+ -- * Address (address host is required)+ -- * Address and server (address host is optional)+ -- * Nickname+ -- * Nickname and address (address host is required)+ | UserTarget (Maybe Nickname) (Maybe UserAddress) (Maybe Hostname)+ -- | A mask which matches the server or host of the users to whom the+ -- message should be sent.+ | MaskTarget TargetMask+ deriving Show++-- | A server query. Can be sent through a 'StatsMessage'.+data Query+ -- | TODO+ = Connections+ -- | TODO+ | CommandUsage+ -- | TODO+ | PrivilegedUsers+ -- | TODO+ | Uptime+ -- | TODO+ | OtherQuery Char+ deriving Show++-- TODO in all the either-servername-mask occurences, make sure in the RFC+-- that they are "<target> may contain wildcards" cases, and replace them with+-- plain Hostname - let's treat mask as a user mask (for bans etc.)+-- TODO in all the <target> cases, do they mean a user can be specified too,+-- to mean "the server this user is connected to"? try with some IRC servers+-- over telnet, and change Hostname to Target if yes. Note that servername+-- has '.' chars while a nickname can't, so that's how one tells which is which+-- Also compare with existing irc packages, how they model these messages++-- | An IRC message of specific type (excluding the optional sender prefix, see+-- 'SpecificMessage').+data Message+-- Connection registration+ = PassMessage Password+ | NickMessage Nickname+ -- | first bool = whether invisible, second bool = whether sees wallops+ | UserMessage Username Bool Bool RealName+ | OperMessage Username Password+ -- | first list: modes to remove (-), second list: modes to add (+)+ | UserModeMessage Nickname [UserMode] [UserMode]+ | ServiceMessage Nickname Mask Text+ | QuitMessage (Maybe Comment)+ | SQuitMessage Hostname Comment+-- Channel operations+ | JoinMessage (Maybe ([Channel], [ChannelKey]))+ | PartMessage [Channel] (Maybe Comment)+ -- first: remove (-), second: add/set (+)+ | ChannelModeMessage [ChannelMode] [ChannelMode]+ | TopicMessage Channel (Maybe ChannelTopic)+ | NamesMessage [Channel] (Maybe Hostname)+ | ListMessage [Channel] (Maybe Hostname)+ | InviteMessage Nickname Channel+ | KickMessage [Channel] [Username] (Maybe Comment)+-- Sending messages+ | PrivMsgMessage MessageTarget MsgContent+ | PrivActionMessage MessageTarget MsgContent+ | NoticeMessage MessageTarget MsgContent+-- Server queries and commands+ | MotdMessage (Maybe Hostname)+ | LusersMessage (Maybe (Mask, Maybe Hostname))+ | VersionMessage (Maybe (Either Hostname Mask))+ | StatsMessage (Maybe (Query, Maybe (Either Hostname Mask)))+ | LinksMessage (Maybe (Maybe (Either Hostname Mask), Mask))+ | TimeMessage (Maybe (Either Hostname Mask))+ | ConnectMessage Hostname PortNumber (Either Hostname Mask)+ | TraceMessage (Maybe Target)+ | AdminMessage (Maybe Target)+ | InfoMessage (Maybe Target)+-- Service query and commands+ | ServlistMessage (Maybe (Mask, Maybe Text))+ | SQueryMessage ServiceName MsgContent+-- User based queries+ | WhoMessage (Maybe (Mask, Bool))+ | WhoisMessage (Maybe Hostname) [Mask]+ | WhowasMessage [Nickname] (Maybe (Int, Maybe Hostname))+-- Miscellaneous messages+ | KillMessage Nickname Comment+ | PingMessage Hostname (Maybe Hostname)+ | PongMessage Hostname (Maybe Hostname)+ | ErrorMessage Text+-- Optional features+ | AwayMessage (Maybe MsgContent)+ | RehashMessage+ | DieMessage+ | RestartMessage+ | SummonMessage Username (Maybe (Hostname, Maybe Channel))+ | UsersMessage (Maybe Hostname)+ | WallopsMessage MsgContent+ | UserhostMessage [Nickname]+ | IsonMessage [Nickname]+ deriving Show++-------------------------------------------------------------------------------+-- Modes+-------------------------------------------------------------------------------++-- | TODO+data UserMode+ -- http://toxin.jottit.com/freenode_user_modes+ = UModeInvisible+ | UModeCallerID+ | UModeSeeWallops+ | UModeDeaf+ | UModeNoForwarding+ | UModeBlockUnidentified+ | UModeConnectedViaSSL+ -- from the irc rfc, MODE message (section 3.1.5)+ | UModeAway+ | UModeRestricted+ | UModeOperator+ | UModeLocalOperator+ | UModeSeeNotices+ | UModeOther Char+ deriving (Eq, Show)++-- | TODO+data ChannelMode+ = CModeCreator+ | CModeOperator+ | CModeVoice+ | CModeAnonymous+ | CModeInviteOnly+ | CModeModerated+ | CModeNoMessagesFromOutside+ | CModeQuiet+ | CModePrivate+ | CModeSecret+ | CModeServerReop+ | CModeTopicSettableByChannelOpOnly+ | CModeKey (Maybe ChannelKey)+ | CModeUserLimit (Maybe Int)+ | CModeBanMask (Maybe Mask)+ | CModeExceptionMask (Maybe Mask)+ | CModeInvitationMask (Maybe Mask)+ | CModeOther Char [Text]+ | CModeFreenodeQuiet (Maybe Mask)+ deriving (Eq, Show)++data ChannelModeType+ = ModeTypeList+ | ModeTypeSetting+ | ModeTypeMaybeSetting+ | ModeTypeFlag++-------------------------------------------------------------------------------+-- Reply+-------------------------------------------------------------------------------++-- | TODO+data CommandResponseCode+ -- | TODO+ = ReplyWelcome+ -- | TODO+ | ReplyYourHost+ -- | TODO+ | ReplyCreated+ -- | TODO+ | ReplyMyInfo+ -- | TODO+ | ReplyBounce+ -- | TODO+ | ReplyUserHost+ -- | TODO+ | ReplyIsOn+ -- | TODO+ | ReplyAway+ -- | TODO+ | ReplyUnAway+ -- | TODO+ | ReplyNoAway+ -- | TODO+ | ReplyWhoIsUser+ -- | TODO+ | ReplyWhoIsServer+ -- | TODO+ | ReplyWhoIsOperator+ -- | TODO+ | ReplyWhoIsIdle+ -- | TODO+ | ReplyEndOfWhoIs+ -- | TODO+ | ReplyWhoIsChannels+ -- | TODO+ | ReplyWhoWasUser+ -- | TODO+ | ReplyEndOfWhoWas+ -- | TODO+ | ReplyListStart+ -- | TODO+ | ReplyList+ -- | TODO+ | ReplyListEnd+ -- | TODO+ | ReplyUniqueOpIs+ -- | TODO+ | ReplyChannelModeIs+ -- | TODO+ | ReplyNoTopic+ -- | TODO+ | ReplyTopic+ -- | TODO+ | ReplyInviting+ -- | TODO+ | ReplySummoning+ -- | TODO+ | ReplyInviteList+ -- | TODO+ | ReplyEndOfInviteList+ -- | TODO+ | ReplyExceptList+ -- | TODO+ | ReplyEndOfExceptList+ -- | TODO+ | ReplyVersion+ -- | TODO+ | ReplyWhoReply+ -- | TODO+ | ReplyEndOfWho+ -- | TODO+ | ReplyNameReply+ -- | TODO+ | ReplyEndOfNames+ -- | TODO+ | ReplyLinks+ -- | TODO+ | ReplyEndOfLinks+ -- | TODO+ | ReplyBanList+ -- | TODO+ | ReplyEndOfBanList+ -- | TODO+ | ReplyInfo+ -- | TODO+ | ReplyEndOfInfo+ -- | TODO+ | ReplyMotdStart+ -- | TODO+ | ReplyMessageOfTheDay+ -- | TODO+ | ReplyEndOfMessageOfTheDay+ -- | TODO+ | ReplyYoureOper+ -- | TODO+ | ReplyRehashing+ -- | TODO+ | ReplyYoureService+ -- | TODO+ | ReplyTime+ -- | TODO+ | ReplyUsersStart+ -- | TODO+ | ReplyUsers+ -- | TODO+ | ReplyEndOfUsers+ -- | TODO+ | ReplyNoUsers+ -- | TODO+ | ReplyTraceLink+ -- | TODO+ | ReplyTraceConnecting+ -- | TODO+ | ReplyTraceHandshake+ -- | TODO+ | ReplyTraceUnknown+ -- | TODO+ | ReplyTraceOperator+ -- | TODO+ | ReplyTraceUser+ -- | TODO+ | ReplyTraceServer+ -- | TODO+ | ReplyTraceService+ -- | TODO+ | ReplyTraceNewType+ -- | TODO+ | ReplyTraceClass+ -- | TODO+ | ReplyTraceReconnect+ -- | TODO+ | ReplyTraceLog+ -- | TODO+ | ReplyTraceEnd+ -- | TODO+ | ReplyStatsLinkInfo+ -- | TODO+ | ReplyStatsCommands+ -- | TODO+ | ReplyEndOfStats+ -- | TODO+ | ReplyStatsUptime+ -- | TODO+ | ReplyStatsOLine+ -- | TODO+ | ReplyUModeIs+ -- | TODO+ | ReplyServList+ -- | TODO+ | ReplyServListEnd+ -- | TODO+ | ReplyLuserClient+ -- | TODO+ | ReplyLuserOp+ -- | TODO+ | ReplyLuserUnknown+ -- | TODO+ | ReplyLuserChannels+ -- | TODO+ | ReplyLuserMe+ -- | TODO+ | ReplyAdminMe+ -- | TODO+ | ReplyAdminLocation1+ -- | TODO+ | ReplyAdminLocation2+ -- | TODO+ | ReplyAdminEmail+ -- | TODO+ | ReplyTryAgain+ -- | TODO+ | ReplyFreenodeISupport+ deriving (Eq, Show)++data ErrorReplyCode+ -- | TODO+ = ErrorNoSuchNick+ -- | TODO+ | ErrorNoSuchServer+ -- | TODO+ | ErrorNoSuchChannel+ -- | TODO+ | ErrorCannotSendToChannel+ -- | TODO+ | ErrorTooManyChannels+ -- | TODO+ | ErrorWasNoSuchNick+ -- | TODO+ | ErrorTooManyTargets+ -- | TODO+ | ErrorNoSuchService+ -- | TODO+ | ErrorNoOrigin+ -- | TODO+ | ErrorNoRecipient+ -- | TODO+ | ErrorNoTextToSend+ -- | TODO+ | ErrorNoTopLevel+ -- | TODO+ | ErrorWildTopLevel+ -- | TODO+ | ErrorBadMask+ -- | TODO+ | ErrorUnknownCommand+ -- | TODO+ | ErrorNoMessageOfTheDay+ -- | TODO+ | ErrorNoAdminInfo+ -- | TODO+ | ErrorFileError+ -- | TODO+ | ErrorNoNicknameGiven+ -- | TODO+ | ErrorErroneousNickname+ -- | TODO+ | ErrorNicknameInUse+ -- | TODO+ | ErrorNickCollision+ -- | TODO+ | ErrorUnavailableResource+ -- | TODO+ | ErrorUserNotInChannel+ -- | TODO+ | ErrorNotOnChannel+ -- | TODO+ | ErrorUserOnChannel+ -- | TODO+ | ErrorNoLogin+ -- | TODO+ | ErrorSummonDisabled+ -- | TODO+ | ErrorUsersDisabled+ -- | TODO+ | ErrorNotRegistered+ -- | TODO+ | ErrorNeedMoreParams+ -- | TODO+ | ErrorAlreadyRegistered+ -- | TODO+ | ErrorNoPermissionForHost+ -- | TODO+ | ErrorPasswordMismatch+ -- | TODO+ | ErrorYoureBannedCreep+ -- | TODO+ | ErrorYouWillBeBanned+ -- | TODO+ | ErrorKeySet+ -- | TODO+ | ErrorChannelIsFull+ -- | TODO+ | ErrorUnknownMode+ -- | TODO+ | ErrorInviteOnlyChannel+ -- | TODO+ | ErrorBannedFromChannel+ -- | TODO+ | ErrorBadChannelKey+ -- | TODO+ | ErrorBadChannelMask+ -- | TODO+ | ErrorNoChannelModes+ -- | TODO+ | ErrorBanListFull+ -- | TODO+ | ErrorNoPrivileges+ -- | TODO+ | ErrorChannelOpPrivilegesNeeded+ -- | TODO+ | ErrorCantKillServer+ -- | TODO+ | ErrorRestricted+ -- | TODO+ | ErrorUniqueOpPrivilegesNeeded+ -- | TODO+ | ErrorNoOperHost+ -- | TODO+ | ErrorUModeUnknownFlag+ -- | TODO+ | ErrorUsersDontMatch+ deriving (Eq, Show)++data ReservedReplyCode+ -- | TODO+ = ReservedReplyServiceInfo+ -- | TODO+ | ReservedReplyEndOfServices+ -- | TODO+ | ReservedReplyService+ -- | TODO+ | ReservedReplyNone+ -- | TODO+ | ReservedReplyWhoIsChannelOp+ -- | TODO+ | ReservedReplyKillDone+ -- | TODO+ | ReservedReplyClosing+ -- | TODO+ | ReservedReplyCloseEnd+ -- | TODO+ | ReservedReplyInfoStart+ -- | TODO+ | ReservedReplyMyPortIs+ -- | TODO+ | ReservedReplyStatsCLine+ -- | TODO+ | ReservedReplyStatsNLine+ -- | TODO+ | ReservedReplyStatsILine+ -- | TODO+ | ReservedReplyStatsKLine+ -- | TODO+ | ReservedReplyStatsQLine+ -- | TODO+ | ReservedReplyStatsYLine+ -- | TODO+ | ReservedReplyStatsVLine+ -- | TODO+ | ReservedReplyStatsLLine+ -- | TODO+ | ReservedReplyStatsHLine+ -- | TODO+ | ReservedReplyStatsSLine+ -- | TODO+ | ReservedReplyStatsPing+ -- | TODO+ | ReservedReplyStatsBLine+ -- | TODO+ | ReservedReplyStatsDLine+ deriving (Eq, Show)++-- | TODO+data ReservedErrorCode+ -- | TODO+ = ReservedErrorNoServiceHost+ deriving (Eq, Show)++-- | TODO+data GenericReply = GenericReply+ { grSender :: Hostname+ , grCode :: CmdNumber+ , grTarget :: Target+ , grParams :: [Parameter]+ }+ deriving Show++-- | TODO+data Reply+ -- | TODO+ = WelcomeReply+ -- | TODO+ | YourHostReply+ -- | TODO+ | CreatedReply+ -- | TODO+ | MyInfoReply+ -- | TODO+ | BounceReply+ -- | TODO+ | ISupportReply+ -- | TODO+ | UserHostReply+ -- | TODO+ | IsOnReply+ -- | TODO+ | AwayReply+ -- | TODO+ | UnAwayReply+ -- | TODO+ | NoAwayReply+ -- | TODO+ | WhoIsUserReply+ -- | TODO+ | WhoIsServerReply+ -- | TODO+ | WhoIsOperatorReply+ -- | TODO+ | WhoIsIdleReply+ -- | TODO+ | EndOfWhoIsReply+ -- | TODO+ | WhoIsChannelsReply+ -- | TODO+ | WhoWasUserReply+ -- | TODO+ | EndOfWhoWasReply+ -- | TODO+ | ListStartReply+ -- | TODO+ | ListReply+ -- | TODO+ | ListEndReply+ -- | TODO+ | UniqueOpIsReply+ -- | TODO+ | ChannelModeIsReply+ -- | TODO+ | NoTopicReply+ -- | TODO+ | TopicReply+ -- | TODO+ | InvitingReply+ -- | TODO+ | SummoningReply+ -- | TODO+ | InviteListReply+ -- | TODO+ | EndOfInviteListReply+ -- | TODO+ | ExceptListReply+ -- | TODO+ | EndOfExceptListReply+ -- | TODO+ | VersionReply+ -- | TODO+ | WhoReply+ -- | TODO+ | EndOfWhoReply+ -- | 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)]+ -- | Sent after a sequence of 0 or more 'NameReply's, to signal that the+ -- list transmission is finished.+ | EndOfNamesReply+ -- | TODO+ | LinksReply+ -- | TODO+ | EndOfLinksReply+ -- | TODO+ | BanListReply+ -- | TODO+ | EndOfBanListReply+ -- | TODO+ | InfoReply+ -- | TODO+ | EndOfInfoReply+ -- | TODO+ | MotdStartReply+ -- | TODO+ | MessageOfTheDayReply+ -- | TODO+ | EndOfMessageOfTheDayReply+ -- | TODO+ | YoureOperReply+ -- | TODO+ | RehashingReply+ -- | TODO+ | YoureServiceReply+ -- | TODO+ | TimeReply+ -- | TODO+ | UsersStartReply+ -- | TODO+ | UsersReply+ -- | TODO+ | EndOfUsersReply+ -- | TODO+ | NoUsersReply+ -- | TODO+ | TraceLinkReply+ -- | TODO+ | TraceConnectingReply+ -- | TODO+ | TraceHandshakeReply+ -- | TODO+ | TraceUnknownReply+ -- | TODO+ | TraceOperatorReply+ -- | TODO+ | TraceUserReply+ -- | TODO+ | TraceServerReply+ -- | TODO+ | TraceServiceReply+ -- | TODO+ | TraceNewTypeReply+ -- | TODO+ | TraceClassReply+ -- | TODO+ | TraceReconnectReply+ -- | TODO+ | TraceLogReply+ -- | TODO+ | TraceEndReply+ -- | TODO+ | StatsLinkInfoReply+ -- | TODO+ | StatsCommandsReply+ -- | TODO+ | EndOfStatsReply+ -- | TODO+ | StatsUptimeReply+ -- | TODO+ | StatsOLineReply+ -- | TODO+ | UModeIsReply+ -- | TODO+ | ServListReply+ -- | TODO+ | ServListEndReply+ -- | TODO+ | LuserClientReply+ -- | TODO+ | LuserOpReply+ -- | TODO+ | LuserUnknownReply+ -- | TODO+ | LuserChannelsReply+ -- | TODO+ | LuserMeReply+ -- | TODO+ | AdminMeReply+ -- | TODO+ | AdminLocation1Reply+ -- | TODO+ | AdminLocation2Reply+ -- | TODO+ | AdminEmailReply+ -- | TODO+ | TryAgainReply+ deriving (Eq, Show)++-- | An IRC server numeric reply of a specific type.+data SpecificReply = SpecificReply Hostname Target Reply deriving Show++-- | Specifies the number of parameter a certain IRC message type accepts.+data ArgSpec+ = Exactly Int+ | AtLeast Int+ | AtMost Int+ | Between Int Int+ | OneOf [Int]+ deriving (Show)++-- | An error occuring while analyzing a parsed IRC protocol message into a+-- specific message type, such as 'JoinMessage'.+data AnalysisError+ = WrongNumArgs Int (Maybe ArgSpec)+ | InvalidArg (Maybe Int) (Maybe Text) (Maybe Text)+ | OtherError Text+ deriving (Show)
+ src/Network/Irc/Types/Base.hs view
@@ -0,0 +1,98 @@+{- This file is part of irc-fun-types.+ -+ - Written in 2015, 2016 by fr33domlover <fr33domlover@riseup.net>.+ -+ - ♡ Copying is an act of love. Please copy, reuse and share.+ -+ - The author(s) have dedicated all copyright and related and neighboring+ - rights to this software to the public domain worldwide. This software is+ - distributed without any warranty.+ -+ - You should have received a copy of the CC0 Public Domain Dedication along+ - with this software. If not, see+ - <http://creativecommons.org/publicdomain/zero/1.0/>.+ -}++-- For deriving trivial no-op instances for newtypes+{-# LANGUAGE GeneralizedNewtypeDeriving #-}++module Network.Irc.Types.Base+ ( Hostname (..)+ , ServiceName (..)+ , Username (..)+ , Nickname (..)+ , Channel (..)+ , CmdName (..)+ , CmdNumber (..)+ , Parameter+ , MsgContent (..)+ , Password (..)+ , ChannelKey (..)+ , ChannelTopic (..)+ , RealName (..)+ , Comment (..)+ , PortNumber (..)+ , Privilege (..)+ , ChannelPrivacy (..)+ )+where++import Data.Hashable (Hashable)+import Data.Monoid (Monoid)+import Data.String (IsString)+import Data.Text (Text)++-- | IRC server hostname, e.g. @orwell.freenode.net@+newtype Hostname = Hostname { unHostname :: Text } deriving (Eq, Show)++-- | An IRC service name.+newtype ServiceName = ServiceName { unServiceName :: Text } deriving (Eq, Show)++-- | System user name, i.e. the first part of user\@host.tld+newtype Username = Username { unUsername :: Text } deriving (Eq, Show)++-- | IRC nickname+newtype Nickname = Nickname { unNickname :: Text }+ deriving (Eq, Show, Hashable)++-- | IRC channel name (including the prefix character), e.g. @#freepost@+newtype Channel = Channel { unChannel :: Text } deriving (Eq, Show, Hashable)++-- | IRC protocol command name, i.e. @PRIVMSG@+newtype CmdName = CmdName { unCmdName :: Text } deriving (Eq, Show)++-- | IRC protocol numeric command number+newtype CmdNumber = CmdNumber { unCmdNumber :: Int } deriving (Eq, Show)++-- | 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 { unMsgContent :: Text }+ deriving (Show, Monoid, IsString)++-- | IRC connection password.+newtype Password = Password { unPassword :: Text } deriving (Eq, Show)++-- | IRC channel password.+newtype ChannelKey = ChannelKey { unChannelKey :: Text } deriving (Eq, Show)++-- | IRC channel topic line.+newtype ChannelTopic = ChannelTopic { unChannelTopic :: Text } deriving Show++-- | A user's \"real name\" as kept by the IRC server.+newtype RealName = RealName { unRealName :: Text } deriving Show++-- | 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 { unComment :: Text } deriving Show++-- | Network port number.+newtype PortNumber = PortNumber { unPortNumber :: Int } deriving (Eq, Show)++-- | IRC privilege status for a user in the context of a specific channel.+data Privilege = Regular | Voice | Operator deriving (Eq, Show)++-- | IRC channel privacy settings.+data ChannelPrivacy = Secret | Private | Public deriving (Eq, Show)