packages feed

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 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)