-var _ = require('lodash');
-
-var irc_numerics = {
- RPL_WELCOME: '001',
- RPL_MYINFO: '004',
- RPL_ISUPPORT: '005',
- RPL_WHOISREGNICK: '307',
- RPL_WHOISUSER: '311',
- RPL_WHOISSERVER: '312',
- RPL_WHOISOPERATOR: '313',
- RPL_WHOISIDLE: '317',
- RPL_ENDOFWHOIS: '318',
- RPL_WHOISCHANNELS: '319',
- RPL_LISTSTART: '321',
- RPL_LIST: '322',
- RPL_LISTEND: '323',
- RPL_NOTOPIC: '331',
- RPL_TOPIC: '332',
- RPL_TOPICWHOTIME: '333',
- RPL_NAMEREPLY: '353',
- RPL_ENDOFNAMES: '366',
- RPL_BANLIST: '367',
- RPL_ENDOFBANLIST: '368',
- RPL_MOTD: '372',
- RPL_MOTDSTART: '375',
- RPL_ENDOFMOTD: '376',
- RPL_WHOISMODES: '379',
- ERR_NOSUCHNICK: '401',
- ERR_CANNOTSENDTOCHAN: '404',
- ERR_TOOMANYCHANNELS: '405',
- ERR_NICKNAMEINUSE: '433',
- ERR_USERNOTINCHANNEL: '441',
- ERR_NOTONCHANNEL: '442',
- ERR_NOTREGISTERED: '451',
- ERR_LINKCHANNEL: '470',
- ERR_CHANNELISFULL: '471',
- ERR_INVITEONLYCHAN: '473',
- ERR_BANNEDFROMCHAN: '474',
- ERR_BADCHANNELKEY: '475',
- ERR_CHANOPRIVSNEEDED: '482',
- RPL_STARTTLS: '670',
- RPL_SASLAUTHENTICATED: '900',
- RPL_SASLLOGGEDIN: '903',
- ERR_SASLNOTAUTHORISED: '904',
- ERR_SASLABORTED: '906',
- ERR_SASLALREADYAUTHED: '907'
-
+var _ = require('lodash'),
+ irc_numerics,
+ IrcCommands,
+ handlers,
+ unknownCommand;
+
+irc_numerics = {
+ '001': 'RPL_WELCOME',
+ '004': 'RPL_MYINFO',
+ '005': 'RPL_ISUPPORT',
+ '006': 'RPL_MAPMORE',
+ '007': 'RPL_MAPEND',
+ '250': 'RPL_STATSCONN',
+ '251': 'RPL_LUSERCLIENT',
+ '252': 'RPL_LUSEROP',
+ '253': 'RPL_LUSERUNKNOWN',
+ '254': 'RPL_LUSERCHANNELS',
+ '255': 'RPL_LUSERME',
+ '265': 'RPL_LOCALUSERS',
+ '266': 'RPL_GLOBALUSERS',
+ '301': 'RPL_AWAY',
+ '307': 'RPL_WHOISREGNICK',
+ '311': 'RPL_WHOISUSER',
+ '312': 'RPL_WHOISSERVER',
+ '313': 'RPL_WHOISOPERATOR',
+ '314': 'RPL_WHOWASUSER',
+ '315': 'RPL_ENDOFWHO',
+ '317': 'RPL_WHOISIDLE',
+ '318': 'RPL_ENDOFWHOIS',
+ '319': 'RPL_WHOISCHANNELS',
+ '321': 'RPL_LISTSTART',
+ '322': 'RPL_LIST',
+ '323': 'RPL_LISTEND',
+ '324': 'RPL_CHANNELMODEIS',
+ '328': 'RPL_CHANNEL_URL',
+ '329': 'RPL_CREATIONTIME',
+ '330': 'RPL_WHOISACCOUNT',
+ '331': 'RPL_NOTOPIC',
+ '332': 'RPL_TOPIC',
+ '333': 'RPL_TOPICWHOTIME',
+ '341': 'RPL_INVITING',
+ '352': 'RPL_WHOREPLY',
+ '353': 'RPL_NAMEREPLY',
+ '364': 'RPL_LINKS',
+ '365': 'RPL_ENDOFLINKS',
+ '366': 'RPL_ENDOFNAMES',
+ '367': 'RPL_BANLIST',
+ '368': 'RPL_ENDOFBANLIST',
+ '369': 'RPL_ENDOFWHOWAS',
+ '372': 'RPL_MOTD',
+ '375': 'RPL_MOTDSTART',
+ '376': 'RPL_ENDOFMOTD',
+ '378': 'RPL_WHOISHOST',
+ '379': 'RPL_WHOISMODES',
+ '401': 'ERR_NOSUCHNICK',
+ '404': 'ERR_CANNOTSENDTOCHAN',
+ '405': 'ERR_TOOMANYCHANNELS',
+ '406': 'ERR_WASNOSUCHNICK',
+ '421': 'ERR_UNKNOWNCOMMAND',
+ '422': 'ERR_NOMOTD',
+ '432': 'ERR_ERRONEUSNICKNAME',
+ '433': 'ERR_NICKNAMEINUSE',
+ '441': 'ERR_USERNOTINCHANNEL',
+ '442': 'ERR_NOTONCHANNEL',
+ '443': 'ERR_USERONCHANNEL',
+ '451': 'ERR_NOTREGISTERED',
+ '464': 'ERR_PASSWDMISMATCH',
+ '470': 'ERR_LINKCHANNEL',
+ '471': 'ERR_CHANNELISFULL',
+ '473': 'ERR_INVITEONLYCHAN',
+ '474': 'ERR_BANNEDFROMCHAN',
+ '475': 'ERR_BADCHANNELKEY',
+ '481': 'ERR_NOPRIVILEGES',
+ '482': 'ERR_CHANOPRIVSNEEDED',
+ '670': 'RPL_STARTTLS',
+ '671': 'RPL_WHOISSECURE',
+ '900': 'RPL_SASLAUTHENTICATED',
+ '903': 'RPL_SASLLOGGEDIN',
+ '904': 'ERR_SASLNOTAUTHORISED',
+ '906': 'ERR_SASLABORTED',
+ '907': 'ERR_SASLALREADYAUTHED'