{"version":"0.2.0","files":{"/home/spion/Documents/ircee/test.js":{"nodes":{"0":{"index":0,"count":1},"1":{"index":1,"count":1},"2":{"index":2,"count":1},"3":{"index":3,"count":1}},"blocks":{},"hash":"5d0bc9a0b02698f96fd5d5fc319083b2","instrumentor":{"blockCounter":0,"nodeCounter":4,"source":"\nvar reporter = require('nodeunit').reporters.default;\nreporter.run(['test']);","nodes":{"0":{"loc":{"start":{"line":2,"column":0},"end":{"line":2,"column":53}},"id":0},"1":{"loc":{"start":{"line":2,"column":22},"end":{"line":2,"column":34}},"id":1},"2":{"loc":{"start":{"line":3,"column":0},"end":{"line":3,"column":23}},"id":2},"3":{"loc":{"start":{"line":3,"column":0},"end":{"line":3,"column":22}},"id":3}}}},"/home/spion/Documents/ircee/test/irc.js":{"nodes":{"0":{"index":0,"count":1},"1":{"index":1,"count":1},"2":{"index":2,"count":1},"3":{"index":3,"count":1},"4":{"index":4,"count":1},"5":{"index":5,"count":4},"6":{"index":6,"count":4},"7":{"index":7,"count":4},"8":{"index":8,"count":3},"9":{"index":9,"count":3},"10":{"index":10,"count":3},"11":{"index":11,"count":3},"12":{"index":12,"count":2},"13":{"index":13,"count":2},"14":{"index":14,"count":2},"15":{"index":15,"count":2},"16":{"index":16,"count":3},"17":{"index":17,"count":1},"18":{"index":18,"count":1},"19":{"index":19,"count":1},"20":{"index":20,"count":1},"21":{"index":21,"count":1},"22":{"index":22,"count":1},"23":{"index":23,"count":1},"24":{"index":24,"count":1},"25":{"index":25,"count":1},"26":{"index":26,"count":1},"27":{"index":27,"count":1},"28":{"index":28,"count":1},"29":{"index":29,"count":1},"30":{"index":30,"count":1},"31":{"index":31,"count":1},"32":{"index":32,"count":1},"33":{"index":33,"count":1},"34":{"index":34,"count":1},"35":{"index":35,"count":1},"36":{"index":36,"count":1},"37":{"index":37,"count":1},"38":{"index":38,"count":1},"39":{"index":39,"count":1},"40":{"index":40,"count":1},"41":{"index":41,"count":1},"42":{"index":42,"count":1},"43":{"index":43,"count":1},"44":{"index":44,"count":1},"45":{"index":45,"count":1},"46":{"index":46,"count":1},"47":{"index":47,"count":1},"48":{"index":48,"count":1},"49":{"index":49,"count":1},"50":{"index":50,"count":1},"51":{"index":51,"count":1},"52":{"index":52,"count":1},"53":{"index":53,"count":1},"54":{"index":54,"count":1},"55":{"index":55,"count":1},"56":{"index":56,"count":1},"57":{"index":57,"count":1},"58":{"index":58,"count":1},"59":{"index":59,"count":1},"60":{"index":60,"count":1},"61":{"index":61,"count":1},"62":{"index":62,"count":1},"63":{"index":63,"count":1},"64":{"index":64,"count":1},"65":{"index":65,"count":1},"66":{"index":66,"count":1},"67":{"index":67,"count":1},"68":{"index":68,"count":1},"69":{"index":69,"count":1},"70":{"index":70,"count":1},"71":{"index":71,"count":1},"72":{"index":72,"count":1},"73":{"index":73,"count":1},"74":{"index":74,"count":1},"75":{"index":75,"count":1},"76":{"index":76,"count":1},"77":{"index":77,"count":1},"78":{"index":78,"count":1},"79":{"index":79,"count":1},"80":{"index":80,"count":1},"81":{"index":81,"count":1},"82":{"index":82,"count":1},"83":{"index":83,"count":1},"84":{"index":84,"count":1},"85":{"index":85,"count":1},"86":{"index":86,"count":1},"87":{"index":87,"count":1},"88":{"index":88,"count":1}},"blocks":{"0":{"index":0,"count":4},"1":{"index":1,"count":3},"2":{"index":2,"count":2},"3":{"index":3,"count":1},"4":{"index":4,"count":1},"5":{"index":5,"count":1},"6":{"index":6,"count":1},"7":{"index":7,"count":1},"8":{"index":8,"count":1},"9":{"index":9,"count":1},"10":{"index":10,"count":1},"11":{"index":11,"count":1}},"hash":"982a8e89d555b4435893244d29163598","instrumentor":{"blockCounter":12,"nodeCounter":89,"source":"var Stream = require('stream'),\n    IRC = require('../index.js'),\n    duplex = require('duplexer'),\n    split = require('split');\n\nfunction fakeSocket() {\n    return {i:split(), o: split() };\n}\n\nfunction client() {\n    var irc = IRC();\n    irc.on('connect', function() {\n        irc.use(require('../core')).login({\n            nick: 'test', user: 'test', name: 'test'\n        });\n    });\n    return irc;\n}\n\nexports.ping_pong = function(t) {\n   var irc = client(), s = fakeSocket();\n   t.expect(2);\n   s.o.once('data', function(d) {\n        t.ok(true, \"nick and user data received\");\n        process.nextTick(function() {\n            s.o.once('data', function(d) {\n                t.equals(d, 'pong :test', 'receive pong');\n                t.done();\n            });\n            s.i.emit('data', 'ping :test\\n');\n        });\n    });\n    s.i.pipe(irc).pipe(s.o);\n    s.i.emit('connect');\n}\n\nexports.reconnect = function(t) {\n   var irc = client(), s = fakeSocket();\n   t.expect(2);\n   s.o.once('data', function() {\n       t.ok(true, \"connect\");\n       s.i.end('432 :Error\\n');\n       s.i.destroy();\n       var sx = fakeSocket();\n       sx.o.once('data', function(d) {\n           t.ok(true, \"reconnect success\");\n           t.done();\n       });\n       sx.i.pipe(irc).pipe(sx.o);\n   });    \n   s.i.pipe(irc).pipe(s.o);\n   s.i.emit('connect');\n}\n\nexports.safe_events = function(t) {\n    t.expect(1);\n\n    var irc = client(), s = fakeSocket();\n    irc.once('irc-close', function() {\n        t.ok(true, 'received safe close event');\n        t.done();\n    });\n    s.i.pipe(irc).pipe(s.o);\n    s.i.emit('data', ':nick!user@host close #channel :some text\\n');\n    \n}","nodes":{"0":{"loc":{"start":{"line":1,"column":0},"end":{"line":4,"column":29}},"id":0},"1":{"loc":{"start":{"line":1,"column":13},"end":{"line":1,"column":30}},"id":1},"2":{"loc":{"start":{"line":2,"column":10},"end":{"line":2,"column":32}},"id":2},"3":{"loc":{"start":{"line":3,"column":13},"end":{"line":3,"column":32}},"id":3},"4":{"loc":{"start":{"line":4,"column":12},"end":{"line":4,"column":28}},"id":4},"5":{"loc":{"start":{"line":7,"column":4},"end":{"line":7,"column":36}},"id":5},"6":{"loc":{"start":{"line":7,"column":14},"end":{"line":7,"column":21}},"id":6},"7":{"loc":{"start":{"line":7,"column":26},"end":{"line":7,"column":33}},"id":7},"8":{"loc":{"start":{"line":11,"column":4},"end":{"line":11,"column":20}},"id":8},"9":{"loc":{"start":{"line":11,"column":14},"end":{"line":11,"column":19}},"id":9},"10":{"loc":{"start":{"line":12,"column":4},"end":{"line":16,"column":7}},"id":10},"11":{"loc":{"start":{"line":12,"column":4},"end":{"line":16,"column":6}},"id":11},"12":{"loc":{"start":{"line":13,"column":8},"end":{"line":15,"column":11}},"id":12},"13":{"loc":{"start":{"line":13,"column":8},"end":{"line":15,"column":10}},"id":13},"14":{"loc":{"start":{"line":13,"column":15},"end":{"line":13,"column":35}},"id":14},"15":{"loc":{"start":{"line":13,"column":16},"end":{"line":13,"column":34}},"id":15},"16":{"loc":{"start":{"line":17,"column":4},"end":{"line":17,"column":15}},"id":16},"17":{"loc":{"start":{"line":20,"column":0},"end":{"line":37,"column":0}},"id":17},"18":{"loc":{"start":{"line":21,"column":3},"end":{"line":21,"column":40}},"id":18},"19":{"loc":{"start":{"line":21,"column":13},"end":{"line":21,"column":21}},"id":19},"20":{"loc":{"start":{"line":21,"column":27},"end":{"line":21,"column":39}},"id":20},"21":{"loc":{"start":{"line":22,"column":3},"end":{"line":22,"column":15}},"id":21},"22":{"loc":{"start":{"line":22,"column":3},"end":{"line":22,"column":14}},"id":22},"23":{"loc":{"start":{"line":23,"column":3},"end":{"line":32,"column":7}},"id":23},"24":{"loc":{"start":{"line":23,"column":3},"end":{"line":32,"column":6}},"id":24},"25":{"loc":{"start":{"line":24,"column":8},"end":{"line":24,"column":50}},"id":25},"26":{"loc":{"start":{"line":24,"column":8},"end":{"line":24,"column":49}},"id":26},"27":{"loc":{"start":{"line":25,"column":8},"end":{"line":31,"column":11}},"id":27},"28":{"loc":{"start":{"line":25,"column":8},"end":{"line":31,"column":10}},"id":28},"29":{"loc":{"start":{"line":26,"column":12},"end":{"line":29,"column":15}},"id":29},"30":{"loc":{"start":{"line":26,"column":12},"end":{"line":29,"column":14}},"id":30},"31":{"loc":{"start":{"line":27,"column":16},"end":{"line":27,"column":58}},"id":31},"32":{"loc":{"start":{"line":27,"column":16},"end":{"line":27,"column":57}},"id":32},"33":{"loc":{"start":{"line":28,"column":16},"end":{"line":28,"column":25}},"id":33},"34":{"loc":{"start":{"line":28,"column":16},"end":{"line":28,"column":24}},"id":34},"35":{"loc":{"start":{"line":30,"column":12},"end":{"line":30,"column":45}},"id":35},"36":{"loc":{"start":{"line":30,"column":12},"end":{"line":30,"column":44}},"id":36},"37":{"loc":{"start":{"line":33,"column":4},"end":{"line":33,"column":28}},"id":37},"38":{"loc":{"start":{"line":33,"column":4},"end":{"line":33,"column":27}},"id":38},"39":{"loc":{"start":{"line":33,"column":12},"end":{"line":33,"column":17}},"id":39},"40":{"loc":{"start":{"line":34,"column":4},"end":{"line":34,"column":24}},"id":40},"41":{"loc":{"start":{"line":34,"column":4},"end":{"line":34,"column":23}},"id":41},"42":{"loc":{"start":{"line":37,"column":0},"end":{"line":55,"column":0}},"id":42},"43":{"loc":{"start":{"line":38,"column":3},"end":{"line":38,"column":40}},"id":43},"44":{"loc":{"start":{"line":38,"column":13},"end":{"line":38,"column":21}},"id":44},"45":{"loc":{"start":{"line":38,"column":27},"end":{"line":38,"column":39}},"id":45},"46":{"loc":{"start":{"line":39,"column":3},"end":{"line":39,"column":15}},"id":46},"47":{"loc":{"start":{"line":39,"column":3},"end":{"line":39,"column":14}},"id":47},"48":{"loc":{"start":{"line":40,"column":3},"end":{"line":50,"column":6}},"id":48},"49":{"loc":{"start":{"line":40,"column":3},"end":{"line":50,"column":5}},"id":49},"50":{"loc":{"start":{"line":41,"column":7},"end":{"line":41,"column":29}},"id":50},"51":{"loc":{"start":{"line":41,"column":7},"end":{"line":41,"column":28}},"id":51},"52":{"loc":{"start":{"line":42,"column":7},"end":{"line":42,"column":31}},"id":52},"53":{"loc":{"start":{"line":42,"column":7},"end":{"line":42,"column":30}},"id":53},"54":{"loc":{"start":{"line":43,"column":7},"end":{"line":43,"column":21}},"id":54},"55":{"loc":{"start":{"line":43,"column":7},"end":{"line":43,"column":20}},"id":55},"56":{"loc":{"start":{"line":44,"column":7},"end":{"line":44,"column":29}},"id":56},"57":{"loc":{"start":{"line":44,"column":16},"end":{"line":44,"column":28}},"id":57},"58":{"loc":{"start":{"line":45,"column":7},"end":{"line":48,"column":10}},"id":58},"59":{"loc":{"start":{"line":45,"column":7},"end":{"line":48,"column":9}},"id":59},"60":{"loc":{"start":{"line":46,"column":11},"end":{"line":46,"column":43}},"id":60},"61":{"loc":{"start":{"line":46,"column":11},"end":{"line":46,"column":42}},"id":61},"62":{"loc":{"start":{"line":47,"column":11},"end":{"line":47,"column":20}},"id":62},"63":{"loc":{"start":{"line":47,"column":11},"end":{"line":47,"column":19}},"id":63},"64":{"loc":{"start":{"line":49,"column":7},"end":{"line":49,"column":33}},"id":64},"65":{"loc":{"start":{"line":49,"column":7},"end":{"line":49,"column":32}},"id":65},"66":{"loc":{"start":{"line":49,"column":16},"end":{"line":49,"column":21}},"id":66},"67":{"loc":{"start":{"line":51,"column":3},"end":{"line":51,"column":27}},"id":67},"68":{"loc":{"start":{"line":51,"column":3},"end":{"line":51,"column":26}},"id":68},"69":{"loc":{"start":{"line":51,"column":11},"end":{"line":51,"column":16}},"id":69},"70":{"loc":{"start":{"line":52,"column":3},"end":{"line":52,"column":23}},"id":70},"71":{"loc":{"start":{"line":52,"column":3},"end":{"line":52,"column":22}},"id":71},"72":{"loc":{"start":{"line":55,"column":0},"end":{"line":67,"column":0}},"id":72},"73":{"loc":{"start":{"line":56,"column":4},"end":{"line":56,"column":16}},"id":73},"74":{"loc":{"start":{"line":56,"column":4},"end":{"line":56,"column":15}},"id":74},"75":{"loc":{"start":{"line":58,"column":4},"end":{"line":58,"column":41}},"id":75},"76":{"loc":{"start":{"line":58,"column":14},"end":{"line":58,"column":22}},"id":76},"77":{"loc":{"start":{"line":58,"column":28},"end":{"line":58,"column":40}},"id":77},"78":{"loc":{"start":{"line":59,"column":4},"end":{"line":62,"column":7}},"id":78},"79":{"loc":{"start":{"line":59,"column":4},"end":{"line":62,"column":6}},"id":79},"80":{"loc":{"start":{"line":60,"column":8},"end":{"line":60,"column":48}},"id":80},"81":{"loc":{"start":{"line":60,"column":8},"end":{"line":60,"column":47}},"id":81},"82":{"loc":{"start":{"line":61,"column":8},"end":{"line":61,"column":17}},"id":82},"83":{"loc":{"start":{"line":61,"column":8},"end":{"line":61,"column":16}},"id":83},"84":{"loc":{"start":{"line":63,"column":4},"end":{"line":63,"column":28}},"id":84},"85":{"loc":{"start":{"line":63,"column":4},"end":{"line":63,"column":27}},"id":85},"86":{"loc":{"start":{"line":63,"column":12},"end":{"line":63,"column":17}},"id":86},"87":{"loc":{"start":{"line":64,"column":4},"end":{"line":64,"column":68}},"id":87},"88":{"loc":{"start":{"line":64,"column":4},"end":{"line":64,"column":67}},"id":88}}}},"/home/spion/Documents/ircee/index.js":{"nodes":{"0":{"index":0,"count":1},"1":{"index":1,"count":1}},"blocks":{},"hash":"1ec072b80cd4c2e3d1ab4137a1d8d378","instrumentor":{"blockCounter":0,"nodeCounter":2,"source":"module.exports = require('./lib/ircee');","nodes":{"0":{"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":40}},"id":0},"1":{"loc":{"start":{"line":1,"column":17},"end":{"line":1,"column":39}},"id":1}}}},"/home/spion/Documents/ircee/lib/ircee.js":{"nodes":{"0":{"index":0,"count":1},"1":{"index":1,"count":1},"2":{"index":2,"count":1},"3":{"index":3,"count":1},"4":{"index":4,"count":1},"5":{"index":5,"count":1},"6":{"index":6,"count":4},"7":{"index":7,"count":4},"8":{"index":8,"count":4},"9":{"index":9,"count":4},"10":{"index":10,"count":4},"11":{"index":11,"count":4},"12":{"index":12,"count":5},"13":{"index":13,"count":5},"14":{"index":14,"count":5},"15":{"index":15,"count":5},"16":{"index":16,"count":4},"17":{"index":17,"count":4},"18":{"index":18,"count":4},"19":{"index":19,"count":4},"20":{"index":20,"count":4},"21":{"index":21,"count":4},"22":{"index":22,"count":2},"23":{"index":23,"count":2},"24":{"index":24,"count":4},"25":{"index":25,"count":4},"26":{"index":26,"count":3},"27":{"index":27,"count":3},"28":{"index":28,"count":3},"29":{"index":29,"count":3},"30":{"index":30,"count":3},"31":{"index":31,"count":1},"32":{"index":32,"count":1},"33":{"index":33,"count":3},"34":{"index":34,"count":3},"35":{"index":35,"count":3},"36":{"index":36,"count":3},"37":{"index":37,"count":4},"38":{"index":38,"count":4},"39":{"index":39,"count":4},"40":{"index":40,"count":4},"41":{"index":41,"count":4},"42":{"index":42,"count":1},"43":{"index":43,"count":3},"44":{"index":44,"count":3},"45":{"index":45,"count":3},"46":{"index":46,"count":3},"47":{"index":47,"count":3},"48":{"index":48,"count":3},"49":{"index":49,"count":3},"50":{"index":50,"count":4}},"blocks":{"0":{"index":0,"count":4},"1":{"index":1,"count":5},"2":{"index":2,"count":4},"3":{"index":3,"count":2},"4":{"index":4,"count":3},"5":{"index":5,"count":1},"6":{"index":6,"count":4},"7":{"index":7,"count":1}},"hash":"a100ecef0b2b41942cf348901bbc7f41","instrumentor":{"blockCounter":8,"nodeCounter":51,"source":"var split = require('split'),\n    Stream = require('stream'),\n    duplex = require('duplexer'),\n    protocol = require('./protocol');\n\n\nmodule.exports = function(opt) {\n    var out = new Stream(), inp = split();\n    var self = duplex(inp, out);\n    \n    out.readable = true;\n\n    self.send = function irc_send() {\n        out.emit('data', protocol.construct(arguments));\n        return self;\n    }\n    self.send.raw = out.emit.bind(out, 'data');\n\n    self.on('pipe', function(src) {\n        src.on('connect', function() {\n            self.emit('connect', src)\n        });\n    });\n\n    inp.on('data', function(line) {\n        var data = protocol.parse(line);\n        var evt = data.cmd.toLowerCase();\n        if (~['data', 'drain', 'end', 'error', 'close', 'pipe'].indexOf(evt))\n            evt = 'irc-' + data.cmd;\n        self.emit('event', data);\n        self.emit(evt, data);\n    });\n    \n    var modules = { exports: [], used: [] }\n    self.use = function(f) {\n        var moduleId = modules.used.indexOf(f);\n        if (moduleId != -1) \n            return modules.exports[moduleId];\n        var instance = f(self);\n        modules.exports.push(instance);\n        modules.used.push(f);\n        return instance;\n    }\n    return self;\n};","nodes":{"0":{"loc":{"start":{"line":1,"column":0},"end":{"line":4,"column":37}},"id":0},"1":{"loc":{"start":{"line":1,"column":12},"end":{"line":1,"column":28}},"id":1},"2":{"loc":{"start":{"line":2,"column":13},"end":{"line":2,"column":30}},"id":2},"3":{"loc":{"start":{"line":3,"column":13},"end":{"line":3,"column":32}},"id":3},"4":{"loc":{"start":{"line":4,"column":15},"end":{"line":4,"column":36}},"id":4},"5":{"loc":{"start":{"line":7,"column":0},"end":{"line":45,"column":2}},"id":5},"6":{"loc":{"start":{"line":8,"column":4},"end":{"line":8,"column":42}},"id":6},"7":{"loc":{"start":{"line":8,"column":34},"end":{"line":8,"column":41}},"id":7},"8":{"loc":{"start":{"line":9,"column":4},"end":{"line":9,"column":32}},"id":8},"9":{"loc":{"start":{"line":9,"column":15},"end":{"line":9,"column":31}},"id":9},"10":{"loc":{"start":{"line":11,"column":4},"end":{"line":11,"column":24}},"id":10},"11":{"loc":{"start":{"line":13,"column":4},"end":{"line":17,"column":4}},"id":11},"12":{"loc":{"start":{"line":14,"column":8},"end":{"line":14,"column":56}},"id":12},"13":{"loc":{"start":{"line":14,"column":8},"end":{"line":14,"column":55}},"id":13},"14":{"loc":{"start":{"line":14,"column":25},"end":{"line":14,"column":54}},"id":14},"15":{"loc":{"start":{"line":15,"column":8},"end":{"line":15,"column":20}},"id":15},"16":{"loc":{"start":{"line":17,"column":4},"end":{"line":17,"column":47}},"id":16},"17":{"loc":{"start":{"line":17,"column":20},"end":{"line":17,"column":46}},"id":17},"18":{"loc":{"start":{"line":19,"column":4},"end":{"line":23,"column":7}},"id":18},"19":{"loc":{"start":{"line":19,"column":4},"end":{"line":23,"column":6}},"id":19},"20":{"loc":{"start":{"line":20,"column":8},"end":{"line":22,"column":11}},"id":20},"21":{"loc":{"start":{"line":20,"column":8},"end":{"line":22,"column":10}},"id":21},"22":{"loc":{"start":{"line":21,"column":12},"end":{"line":22,"column":8}},"id":22},"23":{"loc":{"start":{"line":21,"column":12},"end":{"line":21,"column":37}},"id":23},"24":{"loc":{"start":{"line":25,"column":4},"end":{"line":32,"column":7}},"id":24},"25":{"loc":{"start":{"line":25,"column":4},"end":{"line":32,"column":6}},"id":25},"26":{"loc":{"start":{"line":26,"column":8},"end":{"line":26,"column":40}},"id":26},"27":{"loc":{"start":{"line":26,"column":19},"end":{"line":26,"column":39}},"id":27},"28":{"loc":{"start":{"line":27,"column":8},"end":{"line":27,"column":41}},"id":28},"29":{"loc":{"start":{"line":27,"column":18},"end":{"line":27,"column":40}},"id":29},"30":{"loc":{"start":{"line":28,"column":13},"end":{"line":28,"column":76}},"id":30},"31":{"loc":{"start":{"line":29,"column":12},"end":{"line":29,"column":36}},"id":31},"32":{"loc":{"start":{"line":29,"column":18},"end":{"line":29,"column":35}},"id":32},"33":{"loc":{"start":{"line":30,"column":8},"end":{"line":30,"column":33}},"id":33},"34":{"loc":{"start":{"line":30,"column":8},"end":{"line":30,"column":32}},"id":34},"35":{"loc":{"start":{"line":31,"column":8},"end":{"line":31,"column":29}},"id":35},"36":{"loc":{"start":{"line":31,"column":8},"end":{"line":31,"column":28}},"id":36},"37":{"loc":{"start":{"line":34,"column":4},"end":{"line":35,"column":4}},"id":37},"38":{"loc":{"start":{"line":35,"column":4},"end":{"line":44,"column":4}},"id":38},"39":{"loc":{"start":{"line":36,"column":8},"end":{"line":36,"column":47}},"id":39},"40":{"loc":{"start":{"line":36,"column":23},"end":{"line":36,"column":46}},"id":40},"41":{"loc":{"start":{"line":37,"column":12},"end":{"line":37,"column":26}},"id":41},"42":{"loc":{"start":{"line":38,"column":12},"end":{"line":38,"column":45}},"id":42},"43":{"loc":{"start":{"line":39,"column":8},"end":{"line":39,"column":31}},"id":43},"44":{"loc":{"start":{"line":39,"column":23},"end":{"line":39,"column":30}},"id":44},"45":{"loc":{"start":{"line":40,"column":8},"end":{"line":40,"column":39}},"id":45},"46":{"loc":{"start":{"line":40,"column":8},"end":{"line":40,"column":38}},"id":46},"47":{"loc":{"start":{"line":41,"column":8},"end":{"line":41,"column":29}},"id":47},"48":{"loc":{"start":{"line":41,"column":8},"end":{"line":41,"column":28}},"id":48},"49":{"loc":{"start":{"line":42,"column":8},"end":{"line":42,"column":24}},"id":49},"50":{"loc":{"start":{"line":44,"column":4},"end":{"line":44,"column":16}},"id":50}}}},"/home/spion/Documents/ircee/lib/protocol.js":{"nodes":{"0":{"index":0,"count":1},"1":{"index":1,"count":1},"2":{"index":2,"count":1},"3":{"index":3,"count":1},"4":{"index":4,"count":1},"5":{"index":5,"count":4},"6":{"index":6,"count":4},"7":{"index":7,"count":4},"8":{"index":8,"count":2},"9":{"index":9,"count":2},"10":{"index":10,"count":2},"11":{"index":11,"count":4},"12":{"index":12,"count":2},"13":{"index":13,"count":2},"14":{"index":14,"count":4},"15":{"index":15,"count":2},"16":{"index":16,"count":2},"17":{"index":17,"count":2},"18":{"index":18,"count":4},"19":{"index":19,"count":2},"20":{"index":20,"count":2},"21":{"index":21,"count":1},"22":{"index":22,"count":7},"23":{"index":23,"count":7},"24":{"index":24,"count":7},"25":{"index":25,"count":7},"26":{"index":26,"count":7},"27":{"index":27,"count":6},"28":{"index":28,"count":6},"29":{"index":29,"count":1},"30":{"index":30,"count":7},"31":{"index":31,"count":7},"32":{"index":32,"count":7}},"blocks":{"0":{"index":0,"count":4},"1":{"index":1,"count":2},"2":{"index":2,"count":7},"3":{"index":3,"count":6},"4":{"index":4,"count":1}},"hash":"65aa9aee64f49c082b275b773f66b1b9","instrumentor":{"blockCounter":5,"nodeCounter":33,"source":"var split = require('split'),\nStream = require('stream'),\nduplex = require('duplexer');\n\nexports.parse = function protocol_parse(line) {\n    var m = line.match(/^(:(\\S+))?\\s*([^:]\\S+)\\s+([^:]+)?(\\s*:(.+))?/);\n    var raw = m[0], source = m[2], cmd = m[3], \n    params = m[4], text = m[6];\n    if (params) params = params.trim().split(' ');\n    var target = params ? params[0] : null;\n    var user = source ? source.match('(.+)!(.+)@(.+)') : null;\n    return {\n        raw: raw,\n        source: source,\n        cmd: cmd,\n        user: user ? { \n            address: user[0], \n            nick: user[1], \n            user: user[2], \n            host: user[3] \n        } : null,\n        params: params,\n        target: target,\n        text: text\n    }\n}\n\nexports.construct = function protocol_construct(args) {\n    args = [].slice.call(args);\n    var last = args.length - 1;\n    if (args[last] !== null)\n        args[last] = ':' + args[last];\n    else\n        delete args[last];\n    return args.join(' ') + '\\n';\n}","nodes":{"0":{"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":29}},"id":0},"1":{"loc":{"start":{"line":1,"column":12},"end":{"line":1,"column":28}},"id":1},"2":{"loc":{"start":{"line":2,"column":9},"end":{"line":2,"column":26}},"id":2},"3":{"loc":{"start":{"line":3,"column":9},"end":{"line":3,"column":28}},"id":3},"4":{"loc":{"start":{"line":5,"column":0},"end":{"line":28,"column":0}},"id":4},"5":{"loc":{"start":{"line":6,"column":4},"end":{"line":6,"column":71}},"id":5},"6":{"loc":{"start":{"line":6,"column":12},"end":{"line":6,"column":70}},"id":6},"7":{"loc":{"start":{"line":7,"column":4},"end":{"line":8,"column":31}},"id":7},"8":{"loc":{"start":{"line":9,"column":16},"end":{"line":9,"column":50}},"id":8},"9":{"loc":{"start":{"line":9,"column":25},"end":{"line":9,"column":49}},"id":9},"10":{"loc":{"start":{"line":9,"column":36},"end":{"line":9,"column":38}},"id":10},"11":{"loc":{"start":{"line":10,"column":4},"end":{"line":10,"column":43}},"id":11},"12":{"loc":{"start":{"line":10,"column":26},"end":{"line":10,"column":35}},"id":12},"13":{"loc":{"start":{"line":10,"column":38},"end":{"line":10,"column":42}},"id":13},"14":{"loc":{"start":{"line":11,"column":4},"end":{"line":11,"column":62}},"id":14},"15":{"loc":{"start":{"line":11,"column":24},"end":{"line":11,"column":54}},"id":17},"16":{"loc":{"start":{"line":11,"column":57},"end":{"line":11,"column":61}},"id":16},"17":{"loc":{"start":{"line":11,"column":24},"end":{"line":11,"column":54}},"id":17},"18":{"loc":{"start":{"line":12,"column":4},"end":{"line":26,"column":0}},"id":18},"19":{"loc":{"start":{"line":16,"column":21},"end":{"line":21,"column":9}},"id":19},"20":{"loc":{"start":{"line":21,"column":12},"end":{"line":21,"column":16}},"id":20},"21":{"loc":{"start":{"line":28,"column":0},"end":{"line":37,"column":0}},"id":21},"22":{"loc":{"start":{"line":29,"column":4},"end":{"line":29,"column":31}},"id":22},"23":{"loc":{"start":{"line":29,"column":11},"end":{"line":29,"column":30}},"id":23},"24":{"loc":{"start":{"line":30,"column":4},"end":{"line":30,"column":31}},"id":24},"25":{"loc":{"start":{"line":30,"column":15},"end":{"line":30,"column":30}},"id":25},"26":{"loc":{"start":{"line":31,"column":8},"end":{"line":31,"column":27}},"id":26},"27":{"loc":{"start":{"line":32,"column":8},"end":{"line":32,"column":38}},"id":27},"28":{"loc":{"start":{"line":32,"column":21},"end":{"line":32,"column":37}},"id":28},"29":{"loc":{"start":{"line":34,"column":8},"end":{"line":34,"column":26}},"id":29},"30":{"loc":{"start":{"line":35,"column":4},"end":{"line":35,"column":33}},"id":30},"31":{"loc":{"start":{"line":35,"column":11},"end":{"line":35,"column":32}},"id":31},"32":{"loc":{"start":{"line":35,"column":11},"end":{"line":35,"column":25}},"id":32}}}},"/home/spion/Documents/ircee/core.js":{"nodes":{"0":{"index":0,"count":1},"1":{"index":1,"count":1}},"blocks":{},"hash":"d41f479d87ffca14ea7d9f10f9842a23","instrumentor":{"blockCounter":0,"nodeCounter":2,"source":"module.exports = require('./lib/core');","nodes":{"0":{"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":39}},"id":0},"1":{"loc":{"start":{"line":1,"column":17},"end":{"line":1,"column":38}},"id":1}}}},"/home/spion/Documents/ircee/lib/core.js":{"nodes":{"0":{"index":0,"count":1},"1":{"index":1,"count":2},"2":{"index":2,"count":2},"3":{"index":3,"count":1},"4":{"index":4,"count":1},"5":{"index":5,"count":2},"6":{"index":6,"count":2},"7":{"index":7,"count":2},"8":{"index":8,"count":2},"9":{"index":9,"count":2},"10":{"index":10,"count":2},"11":{"index":11,"count":2}},"blocks":{"0":{"index":0,"count":2},"1":{"index":1,"count":1},"2":{"index":2,"count":2}},"hash":"28ccb11096c2b70dd9bb6494e9f23a56","instrumentor":{"blockCounter":3,"nodeCounter":12,"source":"module.exports = function(irc) {\n    irc.on('ping', function(e) {\n        irc.send('pong', e.text);\n    });\n    var self = {};\n    self.login = function login(params) {\n        irc.send('nick', params.nick);\n        irc.send('user', params.user, 0, '*', params.name);\n    }\n    return self;\n}","nodes":{"0":{"loc":{"start":{"line":1,"column":0},"end":{"line":12,"column":0}},"id":0},"1":{"loc":{"start":{"line":2,"column":4},"end":{"line":4,"column":7}},"id":1},"2":{"loc":{"start":{"line":2,"column":4},"end":{"line":4,"column":6}},"id":2},"3":{"loc":{"start":{"line":3,"column":8},"end":{"line":3,"column":33}},"id":3},"4":{"loc":{"start":{"line":3,"column":8},"end":{"line":3,"column":32}},"id":4},"5":{"loc":{"start":{"line":5,"column":4},"end":{"line":5,"column":18}},"id":5},"6":{"loc":{"start":{"line":6,"column":4},"end":{"line":10,"column":4}},"id":6},"7":{"loc":{"start":{"line":7,"column":8},"end":{"line":7,"column":38}},"id":7},"8":{"loc":{"start":{"line":7,"column":8},"end":{"line":7,"column":37}},"id":8},"9":{"loc":{"start":{"line":8,"column":8},"end":{"line":8,"column":59}},"id":9},"10":{"loc":{"start":{"line":8,"column":8},"end":{"line":8,"column":58}},"id":10},"11":{"loc":{"start":{"line":10,"column":4},"end":{"line":10,"column":16}},"id":11}}}},"/home/spion/Documents/ircee/test/modules.js":{"nodes":{"0":{"index":0,"count":1},"1":{"index":1,"count":1},"2":{"index":2,"count":1},"3":{"index":3,"count":1},"4":{"index":4,"count":1},"5":{"index":5,"count":1},"6":{"index":6,"count":1},"7":{"index":7,"count":1},"8":{"index":8,"count":1},"9":{"index":9,"count":1},"10":{"index":10,"count":1},"11":{"index":11,"count":1},"12":{"index":12,"count":1},"13":{"index":13,"count":1},"14":{"index":14,"count":1},"15":{"index":15,"count":1},"16":{"index":16,"count":1}},"blocks":{"0":{"index":0,"count":1},"1":{"index":1,"count":1}},"hash":"451211b60a70a3e2c1078ba9ac203c02","instrumentor":{"blockCounter":2,"nodeCounter":17,"source":"var ircee = require('../index');\n\nexports.caching = function(t) {\n    var counter = 0;\n    var mod = function() {\n        ++counter;\n    }\n    var irc = ircee();\n    irc.use(mod);\n    irc.use(mod);\n    t.equals(counter, 1, 'module called only once')\n    t.done();\n}","nodes":{"0":{"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":32}},"id":0},"1":{"loc":{"start":{"line":1,"column":12},"end":{"line":1,"column":31}},"id":1},"2":{"loc":{"start":{"line":3,"column":0},"end":{"line":14,"column":0}},"id":2},"3":{"loc":{"start":{"line":4,"column":4},"end":{"line":4,"column":20}},"id":3},"4":{"loc":{"start":{"line":5,"column":4},"end":{"line":8,"column":4}},"id":4},"5":{"loc":{"start":{"line":6,"column":8},"end":{"line":6,"column":18}},"id":5},"6":{"loc":{"start":{"line":6,"column":8},"end":{"line":6,"column":17}},"id":6},"7":{"loc":{"start":{"line":8,"column":4},"end":{"line":8,"column":22}},"id":7},"8":{"loc":{"start":{"line":8,"column":14},"end":{"line":8,"column":21}},"id":8},"9":{"loc":{"start":{"line":9,"column":4},"end":{"line":9,"column":17}},"id":9},"10":{"loc":{"start":{"line":9,"column":4},"end":{"line":9,"column":16}},"id":10},"11":{"loc":{"start":{"line":10,"column":4},"end":{"line":10,"column":17}},"id":11},"12":{"loc":{"start":{"line":10,"column":4},"end":{"line":10,"column":16}},"id":12},"13":{"loc":{"start":{"line":11,"column":4},"end":{"line":12,"column":4}},"id":13},"14":{"loc":{"start":{"line":11,"column":4},"end":{"line":11,"column":51}},"id":14},"15":{"loc":{"start":{"line":12,"column":4},"end":{"line":12,"column":13}},"id":15},"16":{"loc":{"start":{"line":12,"column":4},"end":{"line":12,"column":12}},"id":16}}}},"/home/spion/Documents/ircee/test/protocol.js":{"nodes":{"0":{"index":0,"count":1},"1":{"index":1,"count":1},"2":{"index":2,"count":1},"3":{"index":3,"count":1},"4":{"index":4,"count":1},"5":{"index":5,"count":1},"6":{"index":6,"count":1},"7":{"index":7,"count":1},"8":{"index":8,"count":1},"9":{"index":9,"count":1},"10":{"index":10,"count":1},"11":{"index":11,"count":1},"12":{"index":12,"count":1},"13":{"index":13,"count":1},"14":{"index":14,"count":1},"15":{"index":15,"count":1},"16":{"index":16,"count":1},"17":{"index":17,"count":1},"18":{"index":18,"count":1},"19":{"index":19,"count":1},"20":{"index":20,"count":1},"21":{"index":21,"count":1},"22":{"index":22,"count":1},"23":{"index":23,"count":1},"24":{"index":24,"count":1},"25":{"index":25,"count":1},"26":{"index":26,"count":1},"27":{"index":27,"count":1},"28":{"index":28,"count":1}},"blocks":{"0":{"index":0,"count":1},"1":{"index":1,"count":1},"2":{"index":2,"count":1}},"hash":"64f6734243f373e3d6fc0ef47d1134cf","instrumentor":{"blockCounter":3,"nodeCounter":29,"source":"var protocol = require('../lib/protocol.js');\n\nexports['parse privmsg'] = function(t) {\n    \n    var res = protocol.parse(':nick!user@host PRIVMSG #channel :text goes here')\n    t.deepEqual({ \n        raw: ':nick!user@host PRIVMSG #channel :text goes here',\n        source: 'nick!user@host',\n        cmd: 'PRIVMSG',\n        user: { address: 'nick!user@host',\n            nick: 'nick',\n            user: 'user',\n            host: 'host' \n        },\n        params: [ '#channel' ],\n        target: '#channel',\n        text: 'text goes here' \n    }, res, 'protocol parse success');                                             \n    t.done();\n}\n\n\nexports['last argument'] = function(t) {\n    var res = protocol.construct(['TOPIC','#channel','topic text']);\n    var hasLast = res.split(':').length > 1;\n    t.ok(hasLast);\n    t.done();\n}\n\nexports['no last argument'] = function(t) {\n    var res = protocol.construct(['TOPIC','#channel','topic text', null]);\n    var hasLast = res.split(':').length > 1;\n    t.ok(!hasLast);\n    t.done();\n}","nodes":{"0":{"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":45}},"id":0},"1":{"loc":{"start":{"line":1,"column":15},"end":{"line":1,"column":44}},"id":1},"2":{"loc":{"start":{"line":3,"column":0},"end":{"line":23,"column":0}},"id":2},"3":{"loc":{"start":{"line":5,"column":4},"end":{"line":6,"column":4}},"id":3},"4":{"loc":{"start":{"line":5,"column":14},"end":{"line":5,"column":80}},"id":4},"5":{"loc":{"start":{"line":6,"column":4},"end":{"line":18,"column":38}},"id":5},"6":{"loc":{"start":{"line":6,"column":4},"end":{"line":18,"column":37}},"id":6},"7":{"loc":{"start":{"line":19,"column":4},"end":{"line":19,"column":13}},"id":7},"8":{"loc":{"start":{"line":19,"column":4},"end":{"line":19,"column":12}},"id":8},"9":{"loc":{"start":{"line":23,"column":0},"end":{"line":30,"column":0}},"id":9},"10":{"loc":{"start":{"line":24,"column":4},"end":{"line":24,"column":68}},"id":10},"11":{"loc":{"start":{"line":24,"column":14},"end":{"line":24,"column":67}},"id":11},"12":{"loc":{"start":{"line":25,"column":4},"end":{"line":25,"column":44}},"id":12},"13":{"loc":{"start":{"line":25,"column":18},"end":{"line":25,"column":43}},"id":13},"14":{"loc":{"start":{"line":25,"column":27},"end":{"line":25,"column":32}},"id":14},"15":{"loc":{"start":{"line":26,"column":4},"end":{"line":26,"column":18}},"id":15},"16":{"loc":{"start":{"line":26,"column":4},"end":{"line":26,"column":17}},"id":16},"17":{"loc":{"start":{"line":27,"column":4},"end":{"line":27,"column":13}},"id":17},"18":{"loc":{"start":{"line":27,"column":4},"end":{"line":27,"column":12}},"id":18},"19":{"loc":{"start":{"line":30,"column":0},"end":{"line":36,"column":0}},"id":19},"20":{"loc":{"start":{"line":31,"column":4},"end":{"line":31,"column":74}},"id":20},"21":{"loc":{"start":{"line":31,"column":14},"end":{"line":31,"column":73}},"id":21},"22":{"loc":{"start":{"line":32,"column":4},"end":{"line":32,"column":44}},"id":22},"23":{"loc":{"start":{"line":32,"column":18},"end":{"line":32,"column":43}},"id":23},"24":{"loc":{"start":{"line":32,"column":27},"end":{"line":32,"column":32}},"id":24},"25":{"loc":{"start":{"line":33,"column":4},"end":{"line":33,"column":19}},"id":25},"26":{"loc":{"start":{"line":33,"column":4},"end":{"line":33,"column":18}},"id":26},"27":{"loc":{"start":{"line":34,"column":4},"end":{"line":34,"column":13}},"id":27},"28":{"loc":{"start":{"line":34,"column":4},"end":{"line":34,"column":12}},"id":28}}}}}}