packages feed

irc-core 1.1.0.1 → 1.1.1

raw patch · 5 files changed

+65/−18 lines, 5 filesdep +regex-tdfaPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies added: regex-tdfa

API changes (from Hackage documentation)

- Irc.Core: [Account] :: UserInfo -> (Maybe ByteString) -> MsgFromServer
- Irc.Core: [Authenticate] :: ByteString -> MsgFromServer
- Irc.Core: [Away] :: UserInfo -> (Maybe ByteString) -> MsgFromServer
- Irc.Core: [Cap] :: ByteString -> ByteString -> MsgFromServer
- Irc.Core: [ErrAcceptExist] :: IrcError
- Irc.Core: [ErrAcceptFull] :: IrcError
- Irc.Core: [ErrAcceptNot] :: IrcError
- Irc.Core: [ErrAlreadyRegistered] :: IrcError
- Irc.Core: [ErrBadChanName] :: ByteString -> IrcError
- Irc.Core: [ErrBadChannelKey] :: IrcError
- Irc.Core: [ErrBanListFull] :: Char -> IrcError
- Irc.Core: [ErrBanNickChange] :: IrcError
- Irc.Core: [ErrBannedFromChan] :: IrcError
- Irc.Core: [ErrCannotSendToChan] :: IrcError
- Irc.Core: [ErrCantKillServer] :: IrcError
- Irc.Core: [ErrChanOpPrivsNeeded] :: IrcError
- Irc.Core: [ErrChanOpen] :: IrcError
- Irc.Core: [ErrChannelFull] :: IrcError
- Irc.Core: [ErrErroneousNickname] :: ByteString -> IrcError
- Irc.Core: [ErrHelpNotFound] :: ByteString -> IrcError
- Irc.Core: [ErrInviteOnlyChan] :: IrcError
- Irc.Core: [ErrIsChanService] :: Identifier -> IrcError
- Irc.Core: [ErrKnockOnChan] :: IrcError
- Irc.Core: [ErrLinkChannel] :: Identifier -> IrcError
- Irc.Core: [ErrMlockRestricted] :: Char -> ByteString -> IrcError
- Irc.Core: [ErrNeedMoreParams] :: ByteString -> IrcError
- Irc.Core: [ErrNeedReggedNick] :: IrcError
- Irc.Core: [ErrNickTooFast] :: IrcError
- Irc.Core: [ErrNicknameInUse] :: Identifier -> IrcError
- Irc.Core: [ErrNoAdminInfo] :: ByteString -> IrcError
- Irc.Core: [ErrNoMotd] :: IrcError
- Irc.Core: [ErrNoNicknameGiven] :: IrcError
- Irc.Core: [ErrNoNonReg] :: IrcError
- Irc.Core: [ErrNoOperHost] :: IrcError
- Irc.Core: [ErrNoOrigin] :: IrcError
- Irc.Core: [ErrNoPermForHost] :: IrcError
- Irc.Core: [ErrNoPrivileges] :: IrcError
- Irc.Core: [ErrNoPrivs] :: ByteString -> IrcError
- Irc.Core: [ErrNoRecipient] :: IrcError
- Irc.Core: [ErrNoSuchChannel] :: IrcError
- Irc.Core: [ErrNoSuchNick] :: IrcError
- Irc.Core: [ErrNoSuchServer] :: ByteString -> IrcError
- Irc.Core: [ErrNoTextToSend] :: IrcError
- Irc.Core: [ErrNotOnChannel] :: IrcError
- Irc.Core: [ErrNotRegistered] :: IrcError
- Irc.Core: [ErrOwnMode] :: IrcError
- Irc.Core: [ErrPasswordMismatch] :: IrcError
- Irc.Core: [ErrServicesDown] :: IrcError
- Irc.Core: [ErrTargUmodeG] :: IrcError
- Irc.Core: [ErrThrottle] :: IrcError
- Irc.Core: [ErrTooManyChannels] :: IrcError
- Irc.Core: [ErrTooManyKnocks] :: IrcError
- Irc.Core: [ErrTooManyTargets] :: IrcError
- Irc.Core: [ErrUnavailResource] :: IrcError
- Irc.Core: [ErrUnknownCommand] :: ByteString -> IrcError
- Irc.Core: [ErrUnknownMode] :: Char -> IrcError
- Irc.Core: [ErrUnknownUmodeFlag] :: Char -> IrcError
- Irc.Core: [ErrUserNotInChannel] :: Identifier -> IrcError
- Irc.Core: [ErrUserOnChannel] :: Identifier -> IrcError
- Irc.Core: [ErrUsersDontMatch] :: IrcError
- Irc.Core: [ErrVoiceNeeded] :: IrcError
- Irc.Core: [ErrWasNoSuchNick] :: IrcError
- Irc.Core: [ErrYoureBannedCreep] :: IrcError
- Irc.Core: [Err] :: Identifier -> IrcError -> MsgFromServer
- Irc.Core: [Error] :: ByteString -> MsgFromServer
- Irc.Core: [ExtJoin] :: UserInfo -> Identifier -> (Maybe ByteString) -> ByteString -> MsgFromServer
- Irc.Core: [Invite] :: UserInfo -> Identifier -> MsgFromServer
- Irc.Core: [Join] :: UserInfo -> Identifier -> MsgFromServer
- Irc.Core: [Kick] :: UserInfo -> Identifier -> Identifier -> ByteString -> MsgFromServer
- Irc.Core: [Mode] :: UserInfo -> Identifier -> [ByteString] -> MsgFromServer
- Irc.Core: [Nick] :: UserInfo -> Identifier -> MsgFromServer
- Irc.Core: [Notice] :: UserInfo -> Identifier -> ByteString -> MsgFromServer
- Irc.Core: [Part] :: UserInfo -> Identifier -> ByteString -> MsgFromServer
- Irc.Core: [Ping] :: ByteString -> MsgFromServer
- Irc.Core: [Pong] :: ByteString -> (Maybe ByteString) -> MsgFromServer
- Irc.Core: [PrivMsg] :: UserInfo -> Identifier -> ByteString -> MsgFromServer
- Irc.Core: [Quit] :: UserInfo -> ByteString -> MsgFromServer
- Irc.Core: [RplAcceptList] :: Identifier -> MsgFromServer
- Irc.Core: [RplAway] :: Identifier -> ByteString -> MsgFromServer
- Irc.Core: [RplBanList] :: Identifier -> ByteString -> ByteString -> UTCTime -> MsgFromServer
- Irc.Core: [RplChannelModeIs] :: Identifier -> ByteString -> [ByteString] -> MsgFromServer
- Irc.Core: [RplChannelUrl] :: Identifier -> ByteString -> MsgFromServer
- Irc.Core: [RplCreated] :: ByteString -> MsgFromServer
- Irc.Core: [RplCreationTime] :: Identifier -> UTCTime -> MsgFromServer
- Irc.Core: [RplEndOfAccept] :: MsgFromServer
- Irc.Core: [RplEndOfBanList] :: Identifier -> MsgFromServer
- Irc.Core: [RplEndOfExceptionList] :: Identifier -> MsgFromServer
- Irc.Core: [RplEndOfHelp] :: ByteString -> MsgFromServer
- Irc.Core: [RplEndOfInfo] :: MsgFromServer
- Irc.Core: [RplEndOfInviteList] :: Identifier -> MsgFromServer
- Irc.Core: [RplEndOfLinks] :: ByteString -> MsgFromServer
- Irc.Core: [RplEndOfMotd] :: MsgFromServer
- Irc.Core: [RplEndOfNames] :: Identifier -> MsgFromServer
- Irc.Core: [RplEndOfQuietList] :: Identifier -> Char -> MsgFromServer
- Irc.Core: [RplEndOfStats] :: Char -> MsgFromServer
- Irc.Core: [RplEndOfWhoWas] :: Identifier -> MsgFromServer
- Irc.Core: [RplEndOfWho] :: Identifier -> MsgFromServer
- Irc.Core: [RplEndOfWhois] :: Identifier -> MsgFromServer
- Irc.Core: [RplExceptionList] :: Identifier -> ByteString -> ByteString -> UTCTime -> MsgFromServer
- Irc.Core: [RplGlobalUsers] :: [ByteString] -> MsgFromServer
- Irc.Core: [RplHelpStart] :: ByteString -> ByteString -> MsgFromServer
- Irc.Core: [RplHelp] :: ByteString -> ByteString -> MsgFromServer
- Irc.Core: [RplHostHidden] :: ByteString -> MsgFromServer
- Irc.Core: [RplISupport] :: [(ByteString, ByteString)] -> MsgFromServer
- Irc.Core: [RplInfo] :: ByteString -> MsgFromServer
- Irc.Core: [RplInviteList] :: Identifier -> ByteString -> ByteString -> UTCTime -> MsgFromServer
- Irc.Core: [RplInviting] :: Identifier -> Identifier -> MsgFromServer
- Irc.Core: [RplIsOn] :: [Identifier] -> MsgFromServer
- Irc.Core: [RplKnockDelivered] :: Identifier -> MsgFromServer
- Irc.Core: [RplKnock] :: Identifier -> UserInfo -> MsgFromServer
- Irc.Core: [RplLinks] :: ByteString -> ByteString -> ByteString -> MsgFromServer
- Irc.Core: [RplListEnd] :: MsgFromServer
- Irc.Core: [RplListStart] :: MsgFromServer
- Irc.Core: [RplList] :: Identifier -> Integer -> ByteString -> MsgFromServer
- Irc.Core: [RplLoadTooHigh] :: ByteString -> MsgFromServer
- Irc.Core: [RplLocalUsers] :: [ByteString] -> MsgFromServer
- Irc.Core: [RplLoggedIn] :: ByteString -> MsgFromServer
- Irc.Core: [RplLoggedOut] :: MsgFromServer
- Irc.Core: [RplLuserAdminEmail] :: ByteString -> MsgFromServer
- Irc.Core: [RplLuserAdminLoc1] :: ByteString -> MsgFromServer
- Irc.Core: [RplLuserAdminLoc2] :: ByteString -> MsgFromServer
- Irc.Core: [RplLuserAdminMe] :: ByteString -> MsgFromServer
- Irc.Core: [RplLuserChannels] :: ByteString -> MsgFromServer
- Irc.Core: [RplLuserClient] :: ByteString -> MsgFromServer
- Irc.Core: [RplLuserMe] :: ByteString -> MsgFromServer
- Irc.Core: [RplLuserOp] :: ByteString -> MsgFromServer
- Irc.Core: [RplLuserUnknown] :: ByteString -> MsgFromServer
- Irc.Core: [RplMotdStart] :: MsgFromServer
- Irc.Core: [RplMotd] :: ByteString -> MsgFromServer
- Irc.Core: [RplMyInfo] :: ByteString -> ByteString -> [ByteString] -> MsgFromServer
- Irc.Core: [RplNameReply] :: ChannelType -> Identifier -> [ByteString] -> MsgFromServer
- Irc.Core: [RplNickLocked] :: MsgFromServer
- Irc.Core: [RplNoTopicSet] :: Identifier -> MsgFromServer
- Irc.Core: [RplNowAway] :: MsgFromServer
- Irc.Core: [RplPrivs] :: ByteString -> MsgFromServer
- Irc.Core: [RplQuietList] :: Identifier -> Char -> ByteString -> ByteString -> UTCTime -> MsgFromServer
- Irc.Core: [RplSaslAborted] :: MsgFromServer
- Irc.Core: [RplSaslAlready] :: MsgFromServer
- Irc.Core: [RplSaslFail] :: MsgFromServer
- Irc.Core: [RplSaslMechs] :: ByteString -> MsgFromServer
- Irc.Core: [RplSaslSuccess] :: MsgFromServer
- Irc.Core: [RplSaslTooLong] :: MsgFromServer
- Irc.Core: [RplSnoMask] :: ByteString -> MsgFromServer
- Irc.Core: [RplStatsCLine] :: [ByteString] -> MsgFromServer
- Irc.Core: [RplStatsCommands] :: [ByteString] -> MsgFromServer
- Irc.Core: [RplStatsConn] :: ByteString -> MsgFromServer
- Irc.Core: [RplStatsDLine] :: [ByteString] -> MsgFromServer
- Irc.Core: [RplStatsDebug] :: [ByteString] -> MsgFromServer
- Irc.Core: [RplStatsHLine] :: [ByteString] -> MsgFromServer
- Irc.Core: [RplStatsILine] :: [ByteString] -> MsgFromServer
- Irc.Core: [RplStatsKLine] :: [ByteString] -> MsgFromServer
- Irc.Core: [RplStatsLLine] :: [ByteString] -> MsgFromServer
- Irc.Core: [RplStatsLinkInfo] :: [ByteString] -> MsgFromServer
- Irc.Core: [RplStatsNLine] :: [ByteString] -> MsgFromServer
- Irc.Core: [RplStatsOLine] :: [ByteString] -> MsgFromServer
- Irc.Core: [RplStatsPLine] :: [ByteString] -> MsgFromServer
- Irc.Core: [RplStatsPing] :: [ByteString] -> MsgFromServer
- Irc.Core: [RplStatsQLine] :: [ByteString] -> MsgFromServer
- Irc.Core: [RplStatsSLine] :: [ByteString] -> MsgFromServer
- Irc.Core: [RplStatsULine] :: [ByteString] -> MsgFromServer
- Irc.Core: [RplStatsUptime] :: ByteString -> MsgFromServer
- Irc.Core: [RplStatsVLine] :: [ByteString] -> MsgFromServer
- Irc.Core: [RplStatsXLine] :: [ByteString] -> MsgFromServer
- Irc.Core: [RplStatsYLine] :: [ByteString] -> MsgFromServer
- Irc.Core: [RplSyntax] :: ByteString -> MsgFromServer
- Irc.Core: [RplTargNotify] :: Identifier -> MsgFromServer
- Irc.Core: [RplTime] :: ByteString -> ByteString -> MsgFromServer
- Irc.Core: [RplTopicWhoTime] :: Identifier -> ByteString -> UTCTime -> MsgFromServer
- Irc.Core: [RplTopic] :: Identifier -> ByteString -> MsgFromServer
- Irc.Core: [RplUmodeGMsg] :: Identifier -> ByteString -> MsgFromServer
- Irc.Core: [RplUmodeIs] :: ByteString -> [ByteString] -> MsgFromServer
- Irc.Core: [RplUnAway] :: MsgFromServer
- Irc.Core: [RplUserHost] :: [ByteString] -> MsgFromServer
- Irc.Core: [RplVersion] :: [ByteString] -> MsgFromServer
- Irc.Core: [RplWelcome] :: ByteString -> MsgFromServer
- Irc.Core: [RplWhoReply] :: Identifier -> ByteString -> ByteString -> ByteString -> Identifier -> ByteString -> ByteString -> MsgFromServer
- Irc.Core: [RplWhoWasUser] :: Identifier -> ByteString -> ByteString -> ByteString -> MsgFromServer
- Irc.Core: [RplWhoisAccount] :: Identifier -> ByteString -> MsgFromServer
- Irc.Core: [RplWhoisCertFp] :: Identifier -> ByteString -> MsgFromServer
- Irc.Core: [RplWhoisChannels] :: Identifier -> ByteString -> MsgFromServer
- Irc.Core: [RplWhoisHost] :: Identifier -> ByteString -> MsgFromServer
- Irc.Core: [RplWhoisIdle] :: Identifier -> Integer -> (Maybe UTCTime) -> MsgFromServer
- Irc.Core: [RplWhoisModes] :: Identifier -> ByteString -> [ByteString] -> MsgFromServer
- Irc.Core: [RplWhoisOperator] :: Identifier -> ByteString -> MsgFromServer
- Irc.Core: [RplWhoisSecure] :: Identifier -> MsgFromServer
- Irc.Core: [RplWhoisServer] :: Identifier -> ByteString -> ByteString -> MsgFromServer
- Irc.Core: [RplWhoisUser] :: Identifier -> ByteString -> ByteString -> ByteString -> MsgFromServer
- Irc.Core: [RplYourHost] :: ByteString -> MsgFromServer
- Irc.Core: [RplYourId] :: ByteString -> MsgFromServer
- Irc.Core: [RplYoureOper] :: ByteString -> MsgFromServer
- Irc.Core: [Topic] :: UserInfo -> Identifier -> ByteString -> MsgFromServer
- Irc.Core: instance Read ChannelType
- Irc.Core: instance Read IrcError
- Irc.Core: instance Read MsgFromServer
- Irc.Core: instance Show ChannelType
- Irc.Core: instance Show IrcError
- Irc.Core: instance Show MsgFromServer
- Irc.Format: [RawIrcMsg] :: Maybe UTCTime -> Maybe UserInfo -> ByteString -> [ByteString] -> RawIrcMsg
- Irc.Format: [UserInfo] :: Identifier -> Maybe ByteString -> Maybe ByteString -> UserInfo
- Irc.Format: instance Eq Identifier
- Irc.Format: instance IsString Identifier
- Irc.Format: instance Ord Identifier
- Irc.Format: instance Read Identifier
- Irc.Format: instance Read RawIrcMsg
- Irc.Format: instance Read UserInfo
- Irc.Format: instance Show Identifier
- Irc.Format: instance Show RawIrcMsg
- Irc.Format: instance Show UserInfo
- Irc.Message: [ActionMsgType] :: Text -> IrcMessageType
- Irc.Message: [AwayMsgType] :: Text -> IrcMessageType
- Irc.Message: [CallerIdDeliveredMsgType] :: IrcMessageType
- Irc.Message: [CallerIdMsgType] :: IrcMessageType
- Irc.Message: [CtcpReqMsgType] :: ByteString -> ByteString -> IrcMessageType
- Irc.Message: [CtcpRspMsgType] :: ByteString -> ByteString -> IrcMessageType
- Irc.Message: [ErrMsgType] :: IrcError -> IrcMessageType
- Irc.Message: [ErrorMsgType] :: Text -> IrcMessageType
- Irc.Message: [InviteMsgType] :: IrcMessageType
- Irc.Message: [IrcMessage] :: !IrcMessageType -> !UserInfo -> !UTCTime -> !Bool -> String -> String -> IrcMessage
- Irc.Message: [JoinMsgType] :: IrcMessageType
- Irc.Message: [KickMsgType] :: Identifier -> Text -> IrcMessageType
- Irc.Message: [KnockMsgType] :: IrcMessageType
- Irc.Message: [ModeMsgType] :: Bool -> Char -> ByteString -> IrcMessageType
- Irc.Message: [NickMsgType] :: Identifier -> IrcMessageType
- Irc.Message: [NoticeMsgType] :: Text -> IrcMessageType
- Irc.Message: [PartMsgType] :: Text -> IrcMessageType
- Irc.Message: [PrivMsgType] :: Text -> IrcMessageType
- Irc.Message: [QuitMsgType] :: Text -> IrcMessageType
- Irc.Message: [TopicMsgType] :: Text -> IrcMessageType
- Irc.Message: instance Read IrcMessage
- Irc.Message: instance Read IrcMessageType
- Irc.Message: instance Show IrcMessage
- Irc.Message: instance Show IrcMessageType
- Irc.Model: [ActivePhase] :: Phase
- Irc.Model: [Emit] :: ByteString -> r -> LogicOp r
- Irc.Model: [Expect] :: (MsgFromServer -> r) -> LogicOp r
- Irc.Model: [IrcChannel] :: Maybe (Maybe (Text, ByteString, UTCTime)) -> !(Map Identifier String) -> Maybe (Map Char ByteString) -> Maybe UTCTime -> Map Char [IrcMaskEntry] -> Maybe ByteString -> IrcChannel
- Irc.Model: [IrcConnection] :: !Identifier -> !(Map Identifier IrcChannel) -> Maybe ByteString -> [Char] -> [Char] -> !Bool -> !Int -> Maybe Char -> Maybe Char -> !(Map Identifier IrcUser) -> !ModeTypes -> !ModeTypes -> !Int -> !Int -> Maybe (ByteString, ByteString) -> Maybe (ByteString, ByteString) -> !ByteString -> !ByteString -> !Phase -> IrcConnection
- Irc.Model: [IrcMaskEntry] :: ByteString -> ByteString -> UTCTime -> IrcMaskEntry
- Irc.Model: [IrcUser] :: !Bool -> !(Maybe ByteString) -> !(Maybe ByteString) -> IrcUser
- Irc.Model: [ModeTypes] :: String -> String -> String -> String -> [(Char, Char)] -> ModeTypes
- Irc.Model: [Record] :: Identifier -> IrcMessage -> r -> LogicOp r
- Irc.Model: [RegistrationPhase] :: Phase
- Irc.Model: [SaslPhase] :: Phase
- Irc.Model: instance Applicative Logic
- Irc.Model: instance Eq Phase
- Irc.Model: instance Functor Logic
- Irc.Model: instance Functor LogicOp
- Irc.Model: instance Monad Logic
- Irc.Model: instance Read IrcChannel
- Irc.Model: instance Read IrcConnection
- Irc.Model: instance Read IrcMaskEntry
- Irc.Model: instance Read IrcUser
- Irc.Model: instance Read ModeTypes
- Irc.Model: instance Read Phase
- Irc.Model: instance Read a => Read (Fuzzy a)
- Irc.Model: instance Show IrcChannel
- Irc.Model: instance Show IrcConnection
- Irc.Model: instance Show IrcMaskEntry
- Irc.Model: instance Show IrcUser
- Irc.Model: instance Show ModeTypes
- Irc.Model: instance Show Phase
- Irc.Model: instance Show a => Show (Fuzzy a)
+ Irc.Core: Account :: UserInfo -> (Maybe ByteString) -> MsgFromServer
+ Irc.Core: Authenticate :: ByteString -> MsgFromServer
+ Irc.Core: Away :: UserInfo -> (Maybe ByteString) -> MsgFromServer
+ Irc.Core: Cap :: ByteString -> ByteString -> MsgFromServer
+ Irc.Core: Err :: Identifier -> IrcError -> MsgFromServer
+ Irc.Core: ErrAcceptExist :: IrcError
+ Irc.Core: ErrAcceptFull :: IrcError
+ Irc.Core: ErrAcceptNot :: IrcError
+ Irc.Core: ErrAlreadyRegistered :: IrcError
+ Irc.Core: ErrBadChanName :: ByteString -> IrcError
+ Irc.Core: ErrBadChannelKey :: IrcError
+ Irc.Core: ErrBanListFull :: Char -> IrcError
+ Irc.Core: ErrBanNickChange :: IrcError
+ Irc.Core: ErrBannedFromChan :: IrcError
+ Irc.Core: ErrCannotSendToChan :: IrcError
+ Irc.Core: ErrCantKillServer :: IrcError
+ Irc.Core: ErrChanOpPrivsNeeded :: IrcError
+ Irc.Core: ErrChanOpen :: IrcError
+ Irc.Core: ErrChannelFull :: IrcError
+ Irc.Core: ErrErroneousNickname :: ByteString -> IrcError
+ Irc.Core: ErrHelpNotFound :: ByteString -> IrcError
+ Irc.Core: ErrInviteOnlyChan :: IrcError
+ Irc.Core: ErrIsChanService :: Identifier -> IrcError
+ Irc.Core: ErrKnockOnChan :: IrcError
+ Irc.Core: ErrLinkChannel :: Identifier -> IrcError
+ Irc.Core: ErrMlockRestricted :: Char -> ByteString -> IrcError
+ Irc.Core: ErrNeedMoreParams :: ByteString -> IrcError
+ Irc.Core: ErrNeedReggedNick :: IrcError
+ Irc.Core: ErrNickTooFast :: IrcError
+ Irc.Core: ErrNicknameInUse :: Identifier -> IrcError
+ Irc.Core: ErrNoAdminInfo :: ByteString -> IrcError
+ Irc.Core: ErrNoMotd :: IrcError
+ Irc.Core: ErrNoNicknameGiven :: IrcError
+ Irc.Core: ErrNoNonReg :: IrcError
+ Irc.Core: ErrNoOperHost :: IrcError
+ Irc.Core: ErrNoOrigin :: IrcError
+ Irc.Core: ErrNoPermForHost :: IrcError
+ Irc.Core: ErrNoPrivileges :: IrcError
+ Irc.Core: ErrNoPrivs :: ByteString -> IrcError
+ Irc.Core: ErrNoRecipient :: IrcError
+ Irc.Core: ErrNoSuchChannel :: IrcError
+ Irc.Core: ErrNoSuchNick :: IrcError
+ Irc.Core: ErrNoSuchServer :: ByteString -> IrcError
+ Irc.Core: ErrNoTextToSend :: IrcError
+ Irc.Core: ErrNotOnChannel :: IrcError
+ Irc.Core: ErrNotRegistered :: IrcError
+ Irc.Core: ErrOwnMode :: IrcError
+ Irc.Core: ErrPasswordMismatch :: IrcError
+ Irc.Core: ErrServicesDown :: IrcError
+ Irc.Core: ErrTargUmodeG :: IrcError
+ Irc.Core: ErrThrottle :: IrcError
+ Irc.Core: ErrTooManyChannels :: IrcError
+ Irc.Core: ErrTooManyKnocks :: IrcError
+ Irc.Core: ErrTooManyTargets :: IrcError
+ Irc.Core: ErrUnavailResource :: IrcError
+ Irc.Core: ErrUnknownCommand :: ByteString -> IrcError
+ Irc.Core: ErrUnknownMode :: Char -> IrcError
+ Irc.Core: ErrUnknownUmodeFlag :: Char -> IrcError
+ Irc.Core: ErrUserNotInChannel :: Identifier -> IrcError
+ Irc.Core: ErrUserOnChannel :: Identifier -> IrcError
+ Irc.Core: ErrUsersDontMatch :: IrcError
+ Irc.Core: ErrVoiceNeeded :: IrcError
+ Irc.Core: ErrWasNoSuchNick :: IrcError
+ Irc.Core: ErrYoureBannedCreep :: IrcError
+ Irc.Core: Error :: ByteString -> MsgFromServer
+ Irc.Core: ExtJoin :: UserInfo -> Identifier -> (Maybe ByteString) -> ByteString -> MsgFromServer
+ Irc.Core: Invite :: UserInfo -> Identifier -> MsgFromServer
+ Irc.Core: Join :: UserInfo -> Identifier -> MsgFromServer
+ Irc.Core: Kick :: UserInfo -> Identifier -> Identifier -> ByteString -> MsgFromServer
+ Irc.Core: Mode :: UserInfo -> Identifier -> [ByteString] -> MsgFromServer
+ Irc.Core: Nick :: UserInfo -> Identifier -> MsgFromServer
+ Irc.Core: Notice :: UserInfo -> Identifier -> ByteString -> MsgFromServer
+ Irc.Core: Part :: UserInfo -> Identifier -> ByteString -> MsgFromServer
+ Irc.Core: Ping :: ByteString -> MsgFromServer
+ Irc.Core: Pong :: ByteString -> (Maybe ByteString) -> MsgFromServer
+ Irc.Core: PrivMsg :: UserInfo -> Identifier -> ByteString -> MsgFromServer
+ Irc.Core: Quit :: UserInfo -> ByteString -> MsgFromServer
+ Irc.Core: RplAcceptList :: Identifier -> MsgFromServer
+ Irc.Core: RplAway :: Identifier -> ByteString -> MsgFromServer
+ Irc.Core: RplBanList :: Identifier -> ByteString -> ByteString -> UTCTime -> MsgFromServer
+ Irc.Core: RplChannelModeIs :: Identifier -> ByteString -> [ByteString] -> MsgFromServer
+ Irc.Core: RplChannelUrl :: Identifier -> ByteString -> MsgFromServer
+ Irc.Core: RplCreated :: ByteString -> MsgFromServer
+ Irc.Core: RplCreationTime :: Identifier -> UTCTime -> MsgFromServer
+ Irc.Core: RplEndOfAccept :: MsgFromServer
+ Irc.Core: RplEndOfBanList :: Identifier -> MsgFromServer
+ Irc.Core: RplEndOfExceptionList :: Identifier -> MsgFromServer
+ Irc.Core: RplEndOfHelp :: ByteString -> MsgFromServer
+ Irc.Core: RplEndOfInfo :: MsgFromServer
+ Irc.Core: RplEndOfInviteList :: Identifier -> MsgFromServer
+ Irc.Core: RplEndOfLinks :: ByteString -> MsgFromServer
+ Irc.Core: RplEndOfMotd :: MsgFromServer
+ Irc.Core: RplEndOfNames :: Identifier -> MsgFromServer
+ Irc.Core: RplEndOfQuietList :: Identifier -> Char -> MsgFromServer
+ Irc.Core: RplEndOfStats :: Char -> MsgFromServer
+ Irc.Core: RplEndOfWho :: Identifier -> MsgFromServer
+ Irc.Core: RplEndOfWhoWas :: Identifier -> MsgFromServer
+ Irc.Core: RplEndOfWhois :: Identifier -> MsgFromServer
+ Irc.Core: RplExceptionList :: Identifier -> ByteString -> ByteString -> UTCTime -> MsgFromServer
+ Irc.Core: RplGlobalUsers :: [ByteString] -> MsgFromServer
+ Irc.Core: RplHelp :: ByteString -> ByteString -> MsgFromServer
+ Irc.Core: RplHelpStart :: ByteString -> ByteString -> MsgFromServer
+ Irc.Core: RplHostHidden :: ByteString -> MsgFromServer
+ Irc.Core: RplISupport :: [(ByteString, ByteString)] -> MsgFromServer
+ Irc.Core: RplInfo :: ByteString -> MsgFromServer
+ Irc.Core: RplInviteList :: Identifier -> ByteString -> ByteString -> UTCTime -> MsgFromServer
+ Irc.Core: RplInviting :: Identifier -> Identifier -> MsgFromServer
+ Irc.Core: RplIsOn :: [Identifier] -> MsgFromServer
+ Irc.Core: RplKnock :: Identifier -> UserInfo -> MsgFromServer
+ Irc.Core: RplKnockDelivered :: Identifier -> MsgFromServer
+ Irc.Core: RplLinks :: ByteString -> ByteString -> ByteString -> MsgFromServer
+ Irc.Core: RplList :: Identifier -> Integer -> ByteString -> MsgFromServer
+ Irc.Core: RplListEnd :: MsgFromServer
+ Irc.Core: RplListStart :: MsgFromServer
+ Irc.Core: RplLoadTooHigh :: ByteString -> MsgFromServer
+ Irc.Core: RplLocalUsers :: [ByteString] -> MsgFromServer
+ Irc.Core: RplLoggedIn :: ByteString -> MsgFromServer
+ Irc.Core: RplLoggedOut :: MsgFromServer
+ Irc.Core: RplLuserAdminEmail :: ByteString -> MsgFromServer
+ Irc.Core: RplLuserAdminLoc1 :: ByteString -> MsgFromServer
+ Irc.Core: RplLuserAdminLoc2 :: ByteString -> MsgFromServer
+ Irc.Core: RplLuserAdminMe :: ByteString -> MsgFromServer
+ Irc.Core: RplLuserChannels :: ByteString -> MsgFromServer
+ Irc.Core: RplLuserClient :: ByteString -> MsgFromServer
+ Irc.Core: RplLuserMe :: ByteString -> MsgFromServer
+ Irc.Core: RplLuserOp :: ByteString -> MsgFromServer
+ Irc.Core: RplLuserUnknown :: ByteString -> MsgFromServer
+ Irc.Core: RplMotd :: ByteString -> MsgFromServer
+ Irc.Core: RplMotdStart :: MsgFromServer
+ Irc.Core: RplMyInfo :: ByteString -> ByteString -> [ByteString] -> MsgFromServer
+ Irc.Core: RplNameReply :: ChannelType -> Identifier -> [ByteString] -> MsgFromServer
+ Irc.Core: RplNickLocked :: MsgFromServer
+ Irc.Core: RplNoTopicSet :: Identifier -> MsgFromServer
+ Irc.Core: RplNowAway :: MsgFromServer
+ Irc.Core: RplPrivs :: ByteString -> MsgFromServer
+ Irc.Core: RplQuietList :: Identifier -> Char -> ByteString -> ByteString -> UTCTime -> MsgFromServer
+ Irc.Core: RplSaslAborted :: MsgFromServer
+ Irc.Core: RplSaslAlready :: MsgFromServer
+ Irc.Core: RplSaslFail :: MsgFromServer
+ Irc.Core: RplSaslMechs :: ByteString -> MsgFromServer
+ Irc.Core: RplSaslSuccess :: MsgFromServer
+ Irc.Core: RplSaslTooLong :: MsgFromServer
+ Irc.Core: RplSnoMask :: ByteString -> MsgFromServer
+ Irc.Core: RplStatsCLine :: [ByteString] -> MsgFromServer
+ Irc.Core: RplStatsCommands :: [ByteString] -> MsgFromServer
+ Irc.Core: RplStatsConn :: ByteString -> MsgFromServer
+ Irc.Core: RplStatsDLine :: [ByteString] -> MsgFromServer
+ Irc.Core: RplStatsDebug :: [ByteString] -> MsgFromServer
+ Irc.Core: RplStatsHLine :: [ByteString] -> MsgFromServer
+ Irc.Core: RplStatsILine :: [ByteString] -> MsgFromServer
+ Irc.Core: RplStatsKLine :: [ByteString] -> MsgFromServer
+ Irc.Core: RplStatsLLine :: [ByteString] -> MsgFromServer
+ Irc.Core: RplStatsLinkInfo :: [ByteString] -> MsgFromServer
+ Irc.Core: RplStatsNLine :: [ByteString] -> MsgFromServer
+ Irc.Core: RplStatsOLine :: [ByteString] -> MsgFromServer
+ Irc.Core: RplStatsPLine :: [ByteString] -> MsgFromServer
+ Irc.Core: RplStatsPing :: [ByteString] -> MsgFromServer
+ Irc.Core: RplStatsQLine :: [ByteString] -> MsgFromServer
+ Irc.Core: RplStatsSLine :: [ByteString] -> MsgFromServer
+ Irc.Core: RplStatsULine :: [ByteString] -> MsgFromServer
+ Irc.Core: RplStatsUptime :: ByteString -> MsgFromServer
+ Irc.Core: RplStatsVLine :: [ByteString] -> MsgFromServer
+ Irc.Core: RplStatsXLine :: [ByteString] -> MsgFromServer
+ Irc.Core: RplStatsYLine :: [ByteString] -> MsgFromServer
+ Irc.Core: RplSyntax :: ByteString -> MsgFromServer
+ Irc.Core: RplTargNotify :: Identifier -> MsgFromServer
+ Irc.Core: RplTime :: ByteString -> ByteString -> MsgFromServer
+ Irc.Core: RplTopic :: Identifier -> ByteString -> MsgFromServer
+ Irc.Core: RplTopicWhoTime :: Identifier -> ByteString -> UTCTime -> MsgFromServer
+ Irc.Core: RplUmodeGMsg :: Identifier -> ByteString -> MsgFromServer
+ Irc.Core: RplUmodeIs :: ByteString -> [ByteString] -> MsgFromServer
+ Irc.Core: RplUnAway :: MsgFromServer
+ Irc.Core: RplUserHost :: [ByteString] -> MsgFromServer
+ Irc.Core: RplVersion :: [ByteString] -> MsgFromServer
+ Irc.Core: RplWelcome :: ByteString -> MsgFromServer
+ Irc.Core: RplWhoReply :: Identifier -> ByteString -> ByteString -> ByteString -> Identifier -> ByteString -> ByteString -> MsgFromServer
+ Irc.Core: RplWhoWasUser :: Identifier -> ByteString -> ByteString -> ByteString -> MsgFromServer
+ Irc.Core: RplWhoisAccount :: Identifier -> ByteString -> MsgFromServer
+ Irc.Core: RplWhoisCertFp :: Identifier -> ByteString -> MsgFromServer
+ Irc.Core: RplWhoisChannels :: Identifier -> ByteString -> MsgFromServer
+ Irc.Core: RplWhoisHost :: Identifier -> ByteString -> MsgFromServer
+ Irc.Core: RplWhoisIdle :: Identifier -> Integer -> (Maybe UTCTime) -> MsgFromServer
+ Irc.Core: RplWhoisModes :: Identifier -> ByteString -> [ByteString] -> MsgFromServer
+ Irc.Core: RplWhoisOperator :: Identifier -> ByteString -> MsgFromServer
+ Irc.Core: RplWhoisSecure :: Identifier -> MsgFromServer
+ Irc.Core: RplWhoisServer :: Identifier -> ByteString -> ByteString -> MsgFromServer
+ Irc.Core: RplWhoisUser :: Identifier -> ByteString -> ByteString -> ByteString -> MsgFromServer
+ Irc.Core: RplYourHost :: ByteString -> MsgFromServer
+ Irc.Core: RplYourId :: ByteString -> MsgFromServer
+ Irc.Core: RplYoureOper :: ByteString -> MsgFromServer
+ Irc.Core: Topic :: UserInfo -> Identifier -> ByteString -> MsgFromServer
+ Irc.Core: instance GHC.Read.Read Irc.Core.ChannelType
+ Irc.Core: instance GHC.Read.Read Irc.Core.IrcError
+ Irc.Core: instance GHC.Read.Read Irc.Core.MsgFromServer
+ Irc.Core: instance GHC.Show.Show Irc.Core.ChannelType
+ Irc.Core: instance GHC.Show.Show Irc.Core.IrcError
+ Irc.Core: instance GHC.Show.Show Irc.Core.MsgFromServer
+ Irc.Format: RawIrcMsg :: Maybe UTCTime -> Maybe UserInfo -> ByteString -> [ByteString] -> RawIrcMsg
+ Irc.Format: UserInfo :: Identifier -> Maybe ByteString -> Maybe ByteString -> UserInfo
+ Irc.Format: instance Data.String.IsString Irc.Format.Identifier
+ Irc.Format: instance GHC.Classes.Eq Irc.Format.Identifier
+ Irc.Format: instance GHC.Classes.Ord Irc.Format.Identifier
+ Irc.Format: instance GHC.Read.Read Irc.Format.Identifier
+ Irc.Format: instance GHC.Read.Read Irc.Format.RawIrcMsg
+ Irc.Format: instance GHC.Read.Read Irc.Format.UserInfo
+ Irc.Format: instance GHC.Show.Show Irc.Format.Identifier
+ Irc.Format: instance GHC.Show.Show Irc.Format.RawIrcMsg
+ Irc.Format: instance GHC.Show.Show Irc.Format.UserInfo
+ Irc.Message: ActionMsgType :: Text -> IrcMessageType
+ Irc.Message: AwayMsgType :: Text -> IrcMessageType
+ Irc.Message: CallerIdDeliveredMsgType :: IrcMessageType
+ Irc.Message: CallerIdMsgType :: IrcMessageType
+ Irc.Message: CtcpReqMsgType :: ByteString -> ByteString -> IrcMessageType
+ Irc.Message: CtcpRspMsgType :: ByteString -> ByteString -> IrcMessageType
+ Irc.Message: ErrMsgType :: IrcError -> IrcMessageType
+ Irc.Message: ErrorMsgType :: Text -> IrcMessageType
+ Irc.Message: InviteMsgType :: IrcMessageType
+ Irc.Message: IrcMessage :: !IrcMessageType -> !UserInfo -> !UTCTime -> !Bool -> String -> String -> IrcMessage
+ Irc.Message: JoinMsgType :: IrcMessageType
+ Irc.Message: KickMsgType :: Identifier -> Text -> IrcMessageType
+ Irc.Message: KnockMsgType :: IrcMessageType
+ Irc.Message: ModeMsgType :: Bool -> Char -> ByteString -> IrcMessageType
+ Irc.Message: NickMsgType :: Identifier -> IrcMessageType
+ Irc.Message: NoticeMsgType :: Text -> IrcMessageType
+ Irc.Message: PartMsgType :: Text -> IrcMessageType
+ Irc.Message: PrivMsgType :: Text -> IrcMessageType
+ Irc.Message: QuitMsgType :: Text -> IrcMessageType
+ Irc.Message: TopicMsgType :: Text -> IrcMessageType
+ Irc.Message: instance GHC.Read.Read Irc.Message.IrcMessage
+ Irc.Message: instance GHC.Read.Read Irc.Message.IrcMessageType
+ Irc.Message: instance GHC.Show.Show Irc.Message.IrcMessage
+ Irc.Message: instance GHC.Show.Show Irc.Message.IrcMessageType
+ Irc.Model: ActivePhase :: Phase
+ Irc.Model: Emit :: ByteString -> r -> LogicOp r
+ Irc.Model: Expect :: (MsgFromServer -> r) -> LogicOp r
+ Irc.Model: IrcChannel :: Maybe (Maybe (Text, ByteString, UTCTime)) -> !(Map Identifier String) -> Maybe (Map Char ByteString) -> Maybe UTCTime -> Map Char [IrcMaskEntry] -> Maybe ByteString -> IrcChannel
+ Irc.Model: IrcConnection :: !Identifier -> !(Map Identifier IrcChannel) -> Maybe ByteString -> [Char] -> [Char] -> !Bool -> !Int -> Maybe Char -> Maybe Char -> !(Map Identifier IrcUser) -> !ModeTypes -> !ModeTypes -> !Int -> !Int -> Maybe (ByteString, ByteString) -> Maybe (ByteString, ByteString) -> !ByteString -> !ByteString -> !Phase -> IrcConnection
+ Irc.Model: IrcMaskEntry :: ByteString -> ByteString -> UTCTime -> IrcMaskEntry
+ Irc.Model: IrcUser :: !Bool -> !(Maybe ByteString) -> !(Maybe ByteString) -> IrcUser
+ Irc.Model: ModeTypes :: String -> String -> String -> String -> [(Char, Char)] -> ModeTypes
+ Irc.Model: Record :: Identifier -> IrcMessage -> r -> LogicOp r
+ Irc.Model: RegistrationPhase :: Phase
+ Irc.Model: SaslPhase :: Phase
+ Irc.Model: instance GHC.Base.Applicative Irc.Model.Logic
+ Irc.Model: instance GHC.Base.Functor Irc.Model.Logic
+ Irc.Model: instance GHC.Base.Functor Irc.Model.LogicOp
+ Irc.Model: instance GHC.Base.Monad Irc.Model.Logic
+ Irc.Model: instance GHC.Classes.Eq Irc.Model.Phase
+ Irc.Model: instance GHC.Read.Read Irc.Model.IrcChannel
+ Irc.Model: instance GHC.Read.Read Irc.Model.IrcConnection
+ Irc.Model: instance GHC.Read.Read Irc.Model.IrcMaskEntry
+ Irc.Model: instance GHC.Read.Read Irc.Model.IrcUser
+ Irc.Model: instance GHC.Read.Read Irc.Model.ModeTypes
+ Irc.Model: instance GHC.Read.Read Irc.Model.Phase
+ Irc.Model: instance GHC.Read.Read a => GHC.Read.Read (Irc.Model.Fuzzy a)
+ Irc.Model: instance GHC.Show.Show Irc.Model.IrcChannel
+ Irc.Model: instance GHC.Show.Show Irc.Model.IrcConnection
+ Irc.Model: instance GHC.Show.Show Irc.Model.IrcMaskEntry
+ Irc.Model: instance GHC.Show.Show Irc.Model.IrcUser
+ Irc.Model: instance GHC.Show.Show Irc.Model.ModeTypes
+ Irc.Model: instance GHC.Show.Show Irc.Model.Phase
+ Irc.Model: instance GHC.Show.Show a => GHC.Show.Show (Irc.Model.Fuzzy a)

Files

CHANGELOG.md view
@@ -1,3 +1,7 @@+1.1.1+-----+* Add `/grep` filter command+ 1.1.0.1 ------- * Fix setting default nick in configuration file
README.md view
@@ -150,6 +150,11 @@ * `/invite <nick>` - Invite the given user to the current channel * `/reconnect` - Reconnect to the current server +Filters++* `/filter` - Filter chat messages by nickname+* `/grep` - Filter chat messages using a regular expression on the message+ Keyboard Shortcuts ================== 
driver/Main.hs view
@@ -27,7 +27,7 @@ import Graphics.Vty import Network.Connection import System.IO-import System.IO.Error (isEOFError)+import System.IO.Error (isEOFError, ioeGetErrorString) import qualified Config import qualified Config.Lens as C import qualified Data.ByteString as B@@ -568,9 +568,14 @@          recvChan = view clientRecvChan st          hErr     = view clientErrors st          config   = view clientConfig st-     server0' <- startIrcConnection config recvChan settings hErr-     let st' = set clientServer0 server0' st-     return st'+     res <- try (startIrcConnection config recvChan settings hErr)+     case res of+       Right server0' -> return (set clientServer0 server0' st)+       Left e -> do+         now <- getCurrentTime+         let eUtf8 = Text.encodeUtf8 (Text.pack (ioeGetErrorString e))+         atomically (writeTChan recvChan (now, Error eUtf8))+         return st  doNick ::   ClientState ->
driver/Views/Channel.hs view
@@ -1,17 +1,21 @@ {-# LANGUAGE CPP #-} {-# LANGUAGE BangPatterns #-} {-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE ViewPatterns #-} module Views.Channel (channelImage) where  import Control.Lens import Data.Monoid+import Data.Maybe (fromMaybe) import Data.Foldable (toList) import Data.List (stripPrefix, intersperse) import Data.Text (Text)+import Data.Text.Encoding (decodeUtf8) import Data.Time (TimeZone, UTCTime, formatTime, utcToZonedTime) import Graphics.Vty.Image import qualified Data.ByteString.Char8 as BS8 import qualified Data.Text as Text+import Text.Regex.TDFA  #if MIN_VERSION_time(1,5,0) import Data.Time (defaultTimeLocale)@@ -88,13 +92,40 @@  activeMessages :: ClientState -> [(IrcMessage,Image)] activeMessages st =-  case stripPrefix "/filter " (clientInput st) of-    Nothing -> toList msgs-    Just nick -> filter (nickFilter (BS8.pack nick) . fst) (toList msgs)+  case clientInputFilter st of+    FilterNick nick -> filter (nickFilter (BS8.pack nick) . fst) (toList msgs)+    FilterBody text -> filter (bodyFilter text . fst) (toList msgs)+    NoFilter        -> toList msgs   where   msgs = view (clientMessages . ix (focusedName st) . mlMessages) st   nickFilter nick msg     = views mesgSender userNick msg == mkId nick+  bodyFilter :: String -> IrcMessage -> Bool+  bodyFilter re msg+    = fromMaybe False (textOfMessage msg =~~ re)++textOfMessage :: IrcMessage -> String+textOfMessage mesg =+    let f n = (BS8.unpack $ idBytes $ views mesgSender userNick mesg) <> ": " <> Text.unpack n+    in f (case mesg ^. mesgType of+             PrivMsgType   t -> t+             NoticeMsgType t -> t+             ActionMsgType t -> t+             KickMsgType _ t -> t+             PartMsgType   t -> t+             QuitMsgType   t -> t+             TopicMsgType  t -> t+             ErrorMsgType  t -> t+             _               -> "")++data InputFilter = FilterNick String | FilterBody String | NoFilter++clientInputFilter :: ClientState -> InputFilter+clientInputFilter st = go (clientInput st)+ where+     go (splitAt 8 -> ("/filter ",nick)) = FilterNick nick+     go (splitAt 6 -> ("/grep ",   txt)) = FilterBody txt+     go  _                               = NoFilter  compressedImageForState :: ClientState -> [Image] compressedImageForState !st = renderOne (activeMessages st)
irc-core.cabal view
@@ -1,5 +1,5 @@ name:                irc-core-version:             1.1.0.1+version:             1.1.1 homepage:            https://github.com/glguy/irc-core bug-reports:         https://github.com/glguy/irc-core/issues license:             BSD3@@ -96,9 +96,10 @@                        base64-bytestring>= 1.0.0.1  && < 1.1,                        containers       >= 0.5      && < 0.6,                        free             >= 4.11     && < 4.13,-                       lens             >= 4.7      && < 4.11,+                       lens             >= 4.7      && < 4.13,                        text             >= 1.2.0.4  && < 1.3,-                       transformers     >= 0.2      && < 0.5+                       transformers     >= 0.2      && < 0.5,+                       regex-tdfa       >= 1.2      && < 1.3    if flag(time15)     build-depends:     time             >= 1.5      && < 1.6@@ -129,12 +130,12 @@   build-depends: irc-core,                   connection       >= 0.2.4    && < 0.3,-                 tls              >= 1.2.16   && < 1.3,+                 tls              >= 1.2.16   && < 1.4,                  data-default-class >= 0.0.1  && < 0.1,-                 x509             >= 1.5.0.1  && < 1.6,-                 x509-system      >= 1.5.0    && < 1.6,-                 x509-store       >= 1.5.0    && < 1.6,-                 x509-validation  >= 1.5.1    && < 1.6,+                 x509             >= 1.5.0.1  && < 1.7,+                 x509-system      >= 1.5.0    && < 1.7,+                 x509-store       >= 1.5.0    && < 1.7,+                 x509-validation  >= 1.5.1    && < 1.7,                   array            >= 0.5      && < 0.6,                  base             >= 4.7      && < 4.9,@@ -144,16 +145,17 @@                  deepseq          >= 1.3.0.2  && < 1.5,                  directory        >= 1.2.1.0  && < 1.3,                  filepath         >= 1.3.0.2  && < 1.5,-                 lens             >= 4.7      && < 4.11,+                 lens             >= 4.7      && < 4.13,                  network          >= 2.6.0.2  && < 2.7,                  old-locale       >= 1.0.0.6  && < 1.1,                  split            >= 0.2.2    && < 0.3,                  stm              >= 2.4.4    && < 2.5,                  text             >= 1.2.0.4  && < 1.3,                  time             >= 1.4.2    && < 1.6,-                 vty              >= 5.2.7    && < 5.3,+                 vty              >= 5.2.7    && < 5.5,                  haskell-lexer    >= 1.0      && < 1.1,-                 transformers     >= 0.2      && < 0.5+                 transformers     >= 0.2      && < 0.5,+                 regex-tdfa       >= 1.2      && < 1.3   default-language:    Haskell2010  source-repository head